Files
bracket/backend/pyproject.toml
dependabot[bot] 7a1c2b0c4e Bump python-multipart from 0.0.26 to 0.0.27 in /backend (#1680)
Bumps [python-multipart](https://github.com/Kludex/python-multipart)
from 0.0.26 to 0.0.27.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/python-multipart/releases">python-multipart's
releases</a>.</em></p>
<blockquote>
<h2>0.0.27</h2>
<h2>What's Changed</h2>
<ul>
<li>Pass parse offsets via constructors by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/268">Kludex/python-multipart#268</a></li>
<li>Add multipart header limits by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/267">Kludex/python-multipart#267</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27">https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md">python-multipart's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.27 (2026-04-27)</h2>
<ul>
<li>Add multipart header limits <a
href="https://redirect.github.com/Kludex/python-multipart/pull/267">#267</a>.</li>
<li>Pass parse offsets via constructors <a
href="https://redirect.github.com/Kludex/python-multipart/pull/268">#268</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6d1d6892a6"><code>6d1d689</code></a>
Version 0.0.27 (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/272">#272</a>)</li>
<li><a
href="0b10220b15"><code>0b10220</code></a>
Run CI on main branch pull requests (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/271">#271</a>)</li>
<li><a
href="3e64f5f8ca"><code>3e64f5f</code></a>
Add multipart header limits (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/267">#267</a>)</li>
<li><a
href="eb109cc4eb"><code>eb109cc</code></a>
Pass parse offsets via constructors (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/268">#268</a>)</li>
<li><a
href="78e29abb9a"><code>78e29ab</code></a>
Bump pytest from 9.0.2 to 9.0.3 (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/266">#266</a>)</li>
<li><a
href="b2ddd0982b"><code>b2ddd09</code></a>
fuzz: Enhance fuzzing capabilities with new chunked and boundary tests
(<a
href="https://redirect.github.com/Kludex/python-multipart/issues/264">#264</a>)</li>
<li>See full diff in <a
href="https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=python-multipart&package-manager=uv&previous-version=0.0.26&new-version=0.0.27)](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 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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/evroon/bracket/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 12:45:46 +00:00

191 lines
4.5 KiB
TOML

[project]
name = "bracket-backend"
version = "0.0.1"
requires-python = ">=3.12"
dependencies = [
"aiofiles==25.1.0",
"aiohttp==3.13.4",
"aiopg==1.4.0",
"alembic==1.18.0",
"asyncpg==0.31.0",
"bcrypt==5.0.0",
"click==8.3.0",
"databases[asyncpg]==0.9.0",
"fastapi==0.135.3",
"fastapi-sso==0.21.0",
"gunicorn==25.3.0",
"heliclockter==3.0.1",
"parameterized==0.9.0",
"passlib==1.7.4",
"pydantic==2.12.4",
"pydantic_settings==2.13.0",
"pyjwt==2.12.0",
"python-dotenv==1.2.2",
"python-multipart==0.0.27",
"sentry-sdk==2.57.0",
"sqlalchemy==2.0.44",
"sqlalchemy-stubs==0.4",
"starlette==1.0.0",
"types-aiofiles==25.1.0.20251011",
"types-passlib==1.7.7.20241221",
"types-simplejson==3.20.0.20250218",
"uvicorn==0.44.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.20.0",
"pluggy==1.6.0",
"pylint==4.0.2",
"pyrefly==0.60.0",
"pytest-asyncio==1.3.0",
"pytest-cov==7.1.0",
"pytest-xdist==3.8.0",
"pytest==9.0.3",
"ruff==0.15.0",
"vulture==2.16",
]
[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',
'unused-import', # Ruff checks this
]
[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*", "@cli.command*"]
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.*"]