mirror of
https://github.com/fastapi/fastapi.git
synced 2026-01-27 07:21:42 -05:00
Set minimal hatchling version needed to build the package
Set the minimal hatchling version that is needed to build fastapi to
1.13.0. Older versions fail to build because they do not recognize
the trove classifiers used, e.g. 1.12.2 yields:
ValueError: Unknown classifier in field `project.classifiers`: Framework :: Pydantic
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
154 lines
5.0 KiB
TOML
154 lines
5.0 KiB
TOML
[build-system]
|
|
requires = ["hatchling >= 1.13.0"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "fastapi"
|
|
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
|
readme = "README.md"
|
|
requires-python = ">=3.7"
|
|
license = "MIT"
|
|
authors = [
|
|
{ name = "Sebastián Ramírez", email = "tiangolo@gmail.com" },
|
|
]
|
|
classifiers = [
|
|
"Intended Audience :: Information Technology",
|
|
"Intended Audience :: System Administrators",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python",
|
|
"Topic :: Internet",
|
|
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Software Development :: Libraries",
|
|
"Topic :: Software Development",
|
|
"Typing :: Typed",
|
|
"Development Status :: 4 - Beta",
|
|
"Environment :: Web Environment",
|
|
"Framework :: AsyncIO",
|
|
"Framework :: FastAPI",
|
|
"Framework :: Pydantic",
|
|
"Framework :: Pydantic :: 1",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
"Programming Language :: Python :: 3.7",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Topic :: Internet :: WWW/HTTP :: HTTP Servers",
|
|
"Topic :: Internet :: WWW/HTTP",
|
|
]
|
|
dependencies = [
|
|
"starlette>=0.27.0,<0.28.0",
|
|
"pydantic>=1.7.4,!=1.8,!=1.8.1,<2.0.0",
|
|
]
|
|
dynamic = ["version"]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/tiangolo/fastapi"
|
|
Documentation = "https://fastapi.tiangolo.com/"
|
|
Repository = "https://github.com/tiangolo/fastapi"
|
|
|
|
[project.optional-dependencies]
|
|
all = [
|
|
"httpx >=0.23.0",
|
|
"jinja2 >=2.11.2",
|
|
"python-multipart >=0.0.5",
|
|
"itsdangerous >=1.1.0",
|
|
"pyyaml >=5.3.1",
|
|
"ujson >=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0",
|
|
"orjson >=3.2.1",
|
|
"email_validator >=1.1.1",
|
|
"uvicorn[standard] >=0.12.0",
|
|
]
|
|
|
|
[tool.hatch.version]
|
|
path = "fastapi/__init__.py"
|
|
|
|
[tool.mypy]
|
|
strict = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = "fastapi.concurrency"
|
|
warn_unused_ignores = false
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = "fastapi.tests.*"
|
|
ignore_missing_imports = true
|
|
check_untyped_defs = true
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = [
|
|
"--strict-config",
|
|
"--strict-markers",
|
|
]
|
|
xfail_strict = true
|
|
junit_family = "xunit2"
|
|
filterwarnings = [
|
|
"error",
|
|
# TODO: needed by asyncio in Python 3.9.7 https://bugs.python.org/issue45097, try to remove on 3.9.8
|
|
'ignore:The loop argument is deprecated since Python 3\.8, and scheduled for removal in Python 3\.10:DeprecationWarning:asyncio',
|
|
'ignore:starlette.middleware.wsgi is deprecated and will be removed in a future release\..*:DeprecationWarning:starlette',
|
|
# TODO: remove after upgrading HTTPX to a version newer than 0.23.0
|
|
# Including PR: https://github.com/encode/httpx/pull/2309
|
|
"ignore:'cgi' is deprecated:DeprecationWarning",
|
|
# For passlib
|
|
"ignore:'crypt' is deprecated and slated for removal in Python 3.13:DeprecationWarning",
|
|
# see https://trio.readthedocs.io/en/stable/history.html#trio-0-22-0-2022-09-28
|
|
"ignore:You seem to already have a custom.*:RuntimeWarning:trio",
|
|
"ignore::trio.TrioDeprecationWarning",
|
|
# TODO remove pytest-cov
|
|
'ignore::pytest.PytestDeprecationWarning:pytest_cov',
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
parallel = true
|
|
source = [
|
|
"docs_src",
|
|
"tests",
|
|
"fastapi"
|
|
]
|
|
context = '${CONTEXT}'
|
|
omit = [
|
|
"docs_src/response_model/tutorial003_04.py",
|
|
"docs_src/response_model/tutorial003_04_py310.py",
|
|
]
|
|
|
|
[tool.ruff]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"C", # flake8-comprehensions
|
|
"B", # flake8-bugbear
|
|
]
|
|
ignore = [
|
|
"E501", # line too long, handled by black
|
|
"B008", # do not perform function calls in argument defaults
|
|
"C901", # too complex
|
|
]
|
|
|
|
[tool.ruff.per-file-ignores]
|
|
"__init__.py" = ["F401"]
|
|
"docs_src/dependencies/tutorial007.py" = ["F821"]
|
|
"docs_src/dependencies/tutorial008.py" = ["F821"]
|
|
"docs_src/dependencies/tutorial009.py" = ["F821"]
|
|
"docs_src/dependencies/tutorial010.py" = ["F821"]
|
|
"docs_src/custom_response/tutorial007.py" = ["B007"]
|
|
"docs_src/dataclasses/tutorial003.py" = ["I001"]
|
|
"docs_src/path_operation_advanced_configuration/tutorial007.py" = ["B904"]
|
|
"docs_src/custom_request_and_route/tutorial002.py" = ["B904"]
|
|
"docs_src/dependencies/tutorial008_an.py" = ["F821"]
|
|
"docs_src/dependencies/tutorial008_an_py39.py" = ["F821"]
|
|
"docs_src/query_params_str_validations/tutorial012_an.py" = ["B006"]
|
|
"docs_src/query_params_str_validations/tutorial012_an_py39.py" = ["B006"]
|
|
"docs_src/query_params_str_validations/tutorial013_an.py" = ["B006"]
|
|
"docs_src/query_params_str_validations/tutorial013_an_py39.py" = ["B006"]
|
|
|
|
[tool.ruff.isort]
|
|
known-third-party = ["fastapi", "pydantic", "starlette"]
|