mirror of
https://github.com/evroon/bracket.git
synced 2026-04-18 14:27:04 -04:00
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.4.54 to 2.0.44. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sqlalchemy/sqlalchemy/releases">sqlalchemy's releases</a>.</em></p> <blockquote> <h1>2.0.44</h1> <p>Released: October 10, 2025</p> <h2>platform</h2> <ul> <li><strong>[platform] [bug]</strong> Unblocked automatic greenlet installation for Python 3.14 now that there are greenlet wheels on pypi for python 3.14.</li> </ul> <h2>orm</h2> <ul> <li> <p><strong>[orm] [usecase]</strong> The way ORM Annotated Declarative interprets Python <a href="https://peps.python.org/pep-0695">PEP 695</a> type aliases in <code>Mapped[]</code> annotations has been refined to expand the lookup scheme. A <a href="https://peps.python.org/pep-0695">PEP 695</a> type can now be resolved based on either its direct presence in <code>_orm.registry.type_annotation_map</code> or its immediate resolved value, as long as a recursive lookup across multiple <a href="https://peps.python.org/pep-0695">PEP 695</a> types is not required for it to resolve. This change reverses part of the restrictions introduced in 2.0.37 as part of <a href="https://www.sqlalchemy.org/trac/ticket/11955">#11955</a>, which deprecated (and disallowed in 2.1) the ability to resolve any <a href="https://peps.python.org/pep-0695">PEP 695</a> type that was not explicitly present in <code>_orm.registry.type_annotation_map</code>. Recursive lookups of <a href="https://peps.python.org/pep-0695">PEP 695</a> types remains deprecated in 2.0 and disallowed in version 2.1, as do implicit lookups of <code>NewType</code> types without an entry in <code>_orm.registry.type_annotation_map</code>.</p> <p>Additionally, new support has been added for generic <a href="https://peps.python.org/pep-0695">PEP 695</a> aliases that refer to <a href="https://peps.python.org/pep-0593">PEP 593</a> <code>Annotated</code> constructs containing <code>_orm.mapped_column()</code> configurations. See the sections below for examples.</p> <p>References: <a href="https://www.sqlalchemy.org/trac/ticket/12829">#12829</a></p> </li> <li> <p><strong>[orm] [bug]</strong> Fixed a caching issue where <code>_orm.with_loader_criteria()</code> would incorrectly reuse cached bound parameter values when used with <code>_sql.CompoundSelect</code> constructs such as <code>_sql.union()</code>. The issue was caused by the cache key for compound selects not including the execution options that are part of the <code>_sql.Executable</code> base class, which <code>_orm.with_loader_criteria()</code> uses to apply its criteria dynamically. The fix ensures that compound selects and other executable constructs properly include execution options in their cache key traversal.</p> <p>References: <a href="https://www.sqlalchemy.org/trac/ticket/12905">#12905</a></p> </li> </ul> <h2>engine</h2> <ul> <li><strong>[engine] [bug]</strong> Implemented initial support for free-threaded Python by adding new tests and reworking the test harness to include Python 3.13t and Python 3.14t in</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/sqlalchemy/sqlalchemy/commits">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Erik Vroon <erik.vroon@channable.com>
186 lines
4.3 KiB
TOML
186 lines
4.3 KiB
TOML
[project]
|
|
name = "bracket-backend"
|
|
version = "0.0.1"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"aiofiles==24.1.0",
|
|
"aiohttp==3.13.2",
|
|
"aiopg==1.4.0",
|
|
"alembic==1.16.1",
|
|
"asyncpg==0.30.0",
|
|
"bcrypt==5.0.0",
|
|
"click==8.2.0",
|
|
"databases[asyncpg]==0.9.0",
|
|
"fastapi==0.121.1",
|
|
"fastapi-sso==0.18.0",
|
|
"gunicorn==23.0.0",
|
|
"heliclockter==2.0.0",
|
|
"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.35.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.35.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",
|
|
"pytest==8.4.0",
|
|
"pytest-asyncio==1.3.0",
|
|
"pytest-cov==6.2.0",
|
|
"pytest-xdist==3.8.0",
|
|
"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 = "py311"
|
|
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
|