mirror of
https://github.com/evroon/bracket.git
synced 2026-01-27 15:40:39 -05:00
Prefly is much faster than mypy and a bit stricter Mypy will also still be checked on CI for now
190 lines
4.4 KiB
TOML
190 lines
4.4 KiB
TOML
[project]
|
|
name = "bracket-backend"
|
|
version = "0.0.1"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"aiofiles==25.1.0",
|
|
"aiohttp==3.13.2",
|
|
"aiopg==1.4.0",
|
|
"alembic==1.17.1",
|
|
"asyncpg==0.30.0",
|
|
"bcrypt==5.0.0",
|
|
"click==8.3.0",
|
|
"databases[asyncpg]==0.9.0",
|
|
"fastapi==0.121.1",
|
|
"fastapi-sso==0.18.0",
|
|
"gunicorn==23.0.0",
|
|
"heliclockter==3.0.1",
|
|
"parameterized==0.9.0",
|
|
"passlib==1.7.4",
|
|
"pydantic==2.12.4",
|
|
"pydantic_settings==2.1.0",
|
|
"pyjwt==2.10.1",
|
|
"python-dotenv==1.2.1",
|
|
"python-multipart==0.0.20",
|
|
"sentry-sdk==2.44.0",
|
|
"sqlalchemy==2.0.44",
|
|
"sqlalchemy-stubs==0.4",
|
|
"starlette==0.49.1",
|
|
"types-aiofiles==25.1.0.20251011",
|
|
"types-passlib==1.7.7.20241221",
|
|
"types-simplejson==3.20.0.20250218",
|
|
"uvicorn==0.38.0",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = [
|
|
'--junitxml=.junit_report.xml',
|
|
]
|
|
junit_family = 'xunit2'
|
|
asyncio_mode = 'auto'
|
|
filterwarnings = [
|
|
'error',
|
|
'ignore:The SelectBase.c and SelectBase.columns attributes are deprecated.*:DeprecationWarning',
|
|
'ignore:pkg_resources is deprecated as an API.*:DeprecationWarning',
|
|
'ignore:Deprecated call to `pkg_resources.declare_namespace(.*)`.*:DeprecationWarning',
|
|
'ignore:.*:pytest.PytestDeprecationWarning',
|
|
'ignore:.*pytest-asyncio detected an unclosed event loop.*:DeprecationWarning',
|
|
'ignore:.*The event_loop fixture provided by pytest-asyncio has been redefined.*:DeprecationWarning',
|
|
'ignore:.*Please use `import python_multipart` instead.*:PendingDeprecationWarning',
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"aioresponses==0.7.4",
|
|
"mypy==1.18.2",
|
|
"pluggy==1.6.0",
|
|
"pylint==4.0.2",
|
|
"pyrefly>=0.41.3",
|
|
"pytest-asyncio==1.3.0",
|
|
"pytest-cov==7.0.0",
|
|
"pytest-xdist==3.8.0",
|
|
"pytest==9.0.1",
|
|
"ruff==0.14.4",
|
|
"vulture==2.14",
|
|
]
|
|
|
|
[tool.mypy]
|
|
junit_xml = '.junit_report.xml'
|
|
follow_imports = 'silent'
|
|
disallow_any_explicit = false
|
|
disallow_any_generics = true
|
|
check_untyped_defs = true
|
|
disallow_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
disallow_untyped_decorators = false
|
|
warn_unused_configs = true
|
|
disallow_subclassing_any = false
|
|
disallow_untyped_calls = false
|
|
no_implicit_optional = true
|
|
warn_redundant_casts = true
|
|
warn_unused_ignores = true
|
|
warn_return_any = true
|
|
no_implicit_reexport = true
|
|
show_error_codes = true
|
|
|
|
[tool.uv]
|
|
package = false
|
|
|
|
[[tool.uv.index]]
|
|
name = "pypi"
|
|
url = "https://pypi.org/simple"
|
|
|
|
[tool.pydantic-mypy]
|
|
init_forbid_extra = true
|
|
init_typed = true
|
|
warn_required_dynamic_aliases = true
|
|
warn_untyped_fields = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = ['aioresponses.*']
|
|
disallow_any_explicit = false
|
|
disallow_any_generics = false
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = ['fastapi_sso.*']
|
|
ignore_missing_imports = true
|
|
|
|
[tool.pylint.'MESSAGES CONTROL']
|
|
disable = [
|
|
'broad-except',
|
|
'broad-exception-raised',
|
|
'consider-iterating-dictionary',
|
|
'contextmanager-generator-missing-cleanup', # Gives false positives.
|
|
'dangerous-default-value',
|
|
'duplicate-code',
|
|
'fixme',
|
|
'not-callable',
|
|
'import-outside-toplevel',
|
|
'invalid-name',
|
|
'logging-fstring-interpolation',
|
|
'missing-docstring',
|
|
'no-name-in-module', # Gives false positives.
|
|
'protected-access',
|
|
'too-few-public-methods',
|
|
'too-many-arguments',
|
|
'too-many-locals',
|
|
'too-many-nested-blocks',
|
|
'too-many-positional-arguments',
|
|
'unspecified-encoding',
|
|
'unused-argument', # Gives false positives.
|
|
'wrong-import-position',
|
|
]
|
|
|
|
[tool.bandit]
|
|
skips = [
|
|
'B101',
|
|
'B106',
|
|
'B108'
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
respect-gitignore = false
|
|
show-fixes = true
|
|
output-format = "full"
|
|
target-version = "py313"
|
|
exclude = [".venv", ".mypy_cache", ".pytest_cache", "__pycache__"]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E",
|
|
"EXE",
|
|
# "ERA", TODO
|
|
"F",
|
|
"FA",
|
|
"FIX",
|
|
"I",
|
|
"ISC",
|
|
"PGH",
|
|
"PIE",
|
|
"PLE",
|
|
"PLW",
|
|
"RUF100",
|
|
"T20",
|
|
"TCH",
|
|
"TD",
|
|
"TID",
|
|
"UP",
|
|
"W",
|
|
]
|
|
ignore = ["FIX002", "TD002", "TD003", "TC001", "TC002", "TC003", "ISC001"]
|
|
|
|
[tool.vulture]
|
|
min_confidence = 0
|
|
paths = ["."]
|
|
exclude = [".venv"]
|
|
ignore_decorators = ["@pytest.*", "@*router*", "@app.*", "@*validator*"]
|
|
ignore_names = [
|
|
"RestartableUvicornWorker",
|
|
"_generate_next_value_",
|
|
"downgrade",
|
|
"startup_and_shutdown_uvicorn_server",
|
|
"todo*",
|
|
"upgrade",
|
|
]
|
|
sort_by_size = true
|
|
|
|
[tool.pyrefly]
|
|
ignore-missing-imports = ["fastapi_sso.*"]
|