Changelog = "https://fastapi.tiangolo.com/release-notes/"
[project.optional-dependencies]
-
standard = [
"fastapi-cli[standard] >=0.0.8",
# For the test client
disallow_untyped_defs = false
disallow_untyped_calls = false
-[tool.pytest.ini_options]
+[tool.pytest]
+minversion = "9.0"
addopts = [
"--strict-config",
"--strict-markers",
"--ignore=docs_src",
]
-xfail_strict = true
-junit_family = "xunit2"
+strict_xfail = true
filterwarnings = [
"error",
- # 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",
- # TODO: remove after upgrading SQLAlchemy to a version that includes the following changes
- # https://github.com/sqlalchemy/sqlalchemy/commit/59521abcc0676e936b31a523bd968fc157fef0c2
- 'ignore:datetime\.datetime\.utcfromtimestamp\(\) is deprecated and scheduled for removal in a future version\..*:DeprecationWarning:sqlalchemy',
- # Trio 24.1.0 raises a warning from attrs
- # Ref: https://github.com/python-trio/trio/pull/3054
- # Remove once there's a new version of Trio
- 'ignore:The `hash` argument is deprecated*:DeprecationWarning:trio',
]
[tool.coverage.run]
omit = [
"docs_src/response_model/tutorial003_04_py39.py",
"docs_src/response_model/tutorial003_04_py310.py",
- "docs_src/dependencies/tutorial008_an_py39.py", # difficult to mock
"docs_src/dependencies/tutorial013_an_py310.py", # temporary code example?
"docs_src/dependencies/tutorial014_an_py310.py", # temporary code example?
# Pydantic v1 migration, no longer tested
"docs_src/pydantic_v1_in_v2/tutorial002_an_py310.py",
"docs_src/pydantic_v1_in_v2/tutorial003_an_py310.py",
"docs_src/pydantic_v1_in_v2/tutorial004_an_py310.py",
- # TODO: remove all the ignores below when all translations use the new Python 3.10 files
- "docs_src/additional_responses/tutorial001_py39.py",
- "docs_src/additional_responses/tutorial003_py39.py",
- "docs_src/advanced_middleware/tutorial001_py39.py",
- "docs_src/advanced_middleware/tutorial002_py39.py",
- "docs_src/advanced_middleware/tutorial003_py39.py",
- "docs_src/app_testing/app_a_py39/main.py",
- "docs_src/app_testing/app_a_py39/test_main.py",
- "docs_src/app_testing/tutorial001_py39.py",
- "docs_src/app_testing/tutorial002_py39.py",
- "docs_src/app_testing/tutorial003_py39.py",
- "docs_src/app_testing/tutorial004_py39.py",
- "docs_src/async_tests/app_a_py39/main.py",
- "docs_src/async_tests/app_a_py39/test_main.py",
- "docs_src/authentication_error_status_code/tutorial001_an_py39.py",
- "docs_src/background_tasks/tutorial001_py39.py",
- "docs_src/behind_a_proxy/tutorial001_01_py39.py",
- "docs_src/behind_a_proxy/tutorial001_py39.py",
- "docs_src/behind_a_proxy/tutorial002_py39.py",
- "docs_src/behind_a_proxy/tutorial003_py39.py",
- "docs_src/behind_a_proxy/tutorial004_py39.py",
- "docs_src/bigger_applications/app_an_py39/dependencies.py",
- "docs_src/bigger_applications/app_an_py39/internal/admin.py",
- "docs_src/bigger_applications/app_an_py39/main.py",
- "docs_src/bigger_applications/app_an_py39/routers/items.py",
- "docs_src/bigger_applications/app_an_py39/routers/users.py",
- "docs_src/bigger_applications/app_py39/dependencies.py",
- "docs_src/bigger_applications/app_py39/main.py",
- "docs_src/body_nested_models/tutorial008_py39.py",
- "docs_src/body_nested_models/tutorial009_py39.py",
- "docs_src/conditional_openapi/tutorial001_py39.py",
- "docs_src/configure_swagger_ui/tutorial001_py39.py",
- "docs_src/configure_swagger_ui/tutorial002_py39.py",
- "docs_src/configure_swagger_ui/tutorial003_py39.py",
- "docs_src/cors/tutorial001_py39.py",
- "docs_src/custom_docs_ui/tutorial001_py39.py",
- "docs_src/custom_docs_ui/tutorial002_py39.py",
- "docs_src/custom_response/tutorial001_py39.py",
- "docs_src/custom_response/tutorial001b_py39.py",
- "docs_src/custom_response/tutorial002_py39.py",
- "docs_src/custom_response/tutorial003_py39.py",
- "docs_src/custom_response/tutorial004_py39.py",
- "docs_src/custom_response/tutorial005_py39.py",
- "docs_src/custom_response/tutorial006_py39.py",
- "docs_src/custom_response/tutorial006b_py39.py",
- "docs_src/custom_response/tutorial006c_py39.py",
- "docs_src/custom_response/tutorial007_py39.py",
- "docs_src/custom_response/tutorial008_py39.py",
- "docs_src/custom_response/tutorial009_py39.py",
- "docs_src/custom_response/tutorial009b_py39.py",
- "docs_src/custom_response/tutorial009c_py39.py",
- "docs_src/custom_response/tutorial010_py39.py",
- "docs_src/debugging/tutorial001_py39.py",
- "docs_src/dependencies/tutorial006_an_py39.py",
- "docs_src/dependencies/tutorial006_py39.py",
- "docs_src/dependencies/tutorial007_py39.py",
- "docs_src/dependencies/tutorial008_py39.py",
- "docs_src/dependencies/tutorial008b_an_py39.py",
- "docs_src/dependencies/tutorial008b_py39.py",
- "docs_src/dependencies/tutorial008c_an_py39.py",
- "docs_src/dependencies/tutorial008c_py39.py",
- "docs_src/dependencies/tutorial008d_an_py39.py",
- "docs_src/dependencies/tutorial008d_py39.py",
- "docs_src/dependencies/tutorial008e_an_py39.py",
- "docs_src/dependencies/tutorial008e_py39.py",
- "docs_src/dependencies/tutorial010_py39.py",
- "docs_src/dependencies/tutorial011_an_py39.py",
- "docs_src/dependencies/tutorial011_py39.py",
- "docs_src/dependencies/tutorial012_an_py39.py",
- "docs_src/dependencies/tutorial012_py39.py",
- "docs_src/events/tutorial001_py39.py",
- "docs_src/events/tutorial002_py39.py",
- "docs_src/events/tutorial003_py39.py",
- "docs_src/extending_openapi/tutorial001_py39.py",
- "docs_src/extra_models/tutorial004_py39.py",
- "docs_src/extra_models/tutorial005_py39.py",
- "docs_src/first_steps/tutorial001_py39.py",
- "docs_src/first_steps/tutorial003_py39.py",
- "docs_src/generate_clients/tutorial001_py39.py",
- "docs_src/generate_clients/tutorial002_py39.py",
- "docs_src/generate_clients/tutorial003_py39.py",
- "docs_src/generate_clients/tutorial004_py39.py",
- "docs_src/graphql_/tutorial001_py39.py",
- "docs_src/handling_errors/tutorial001_py39.py",
- "docs_src/handling_errors/tutorial002_py39.py",
- "docs_src/handling_errors/tutorial003_py39.py",
- "docs_src/handling_errors/tutorial004_py39.py",
- "docs_src/handling_errors/tutorial005_py39.py",
- "docs_src/handling_errors/tutorial006_py39.py",
- "docs_src/metadata/tutorial001_1_py39.py",
- "docs_src/metadata/tutorial001_py39.py",
- "docs_src/metadata/tutorial002_py39.py",
- "docs_src/metadata/tutorial003_py39.py",
- "docs_src/metadata/tutorial004_py39.py",
- "docs_src/middleware/tutorial001_py39.py",
- "docs_src/openapi_webhooks/tutorial001_py39.py",
- "docs_src/path_operation_advanced_configuration/tutorial001_py39.py",
- "docs_src/path_operation_advanced_configuration/tutorial002_py39.py",
- "docs_src/path_operation_advanced_configuration/tutorial003_py39.py",
- "docs_src/path_operation_advanced_configuration/tutorial005_py39.py",
- "docs_src/path_operation_advanced_configuration/tutorial006_py39.py",
- "docs_src/path_operation_advanced_configuration/tutorial007_py39.py",
- "docs_src/path_operation_configuration/tutorial002b_py39.py",
- "docs_src/path_operation_configuration/tutorial006_py39.py",
- "docs_src/path_params/tutorial001_py39.py",
- "docs_src/path_params/tutorial002_py39.py",
- "docs_src/path_params/tutorial003_py39.py",
- "docs_src/path_params/tutorial003b_py39.py",
- "docs_src/path_params/tutorial004_py39.py",
- "docs_src/path_params/tutorial005_py39.py",
- "docs_src/path_params_numeric_validations/tutorial002_an_py39.py",
- "docs_src/path_params_numeric_validations/tutorial002_py39.py",
- "docs_src/path_params_numeric_validations/tutorial003_an_py39.py",
- "docs_src/path_params_numeric_validations/tutorial003_py39.py",
- "docs_src/path_params_numeric_validations/tutorial004_an_py39.py",
- "docs_src/path_params_numeric_validations/tutorial004_py39.py",
- "docs_src/path_params_numeric_validations/tutorial005_an_py39.py",
- "docs_src/path_params_numeric_validations/tutorial005_py39.py",
- "docs_src/path_params_numeric_validations/tutorial006_an_py39.py",
- "docs_src/path_params_numeric_validations/tutorial006_py39.py",
- "docs_src/python_types/tutorial001_py39.py",
- "docs_src/python_types/tutorial002_py39.py",
- "docs_src/python_types/tutorial003_py39.py",
- "docs_src/python_types/tutorial004_py39.py",
- "docs_src/python_types/tutorial005_py39.py",
- "docs_src/python_types/tutorial006_py39.py",
- "docs_src/python_types/tutorial007_py39.py",
- "docs_src/python_types/tutorial008_py39.py",
- "docs_src/python_types/tutorial008b_py39.py",
- "docs_src/python_types/tutorial009_py39.py",
- "docs_src/python_types/tutorial009b_py39.py",
- "docs_src/python_types/tutorial009c_py39.py",
- "docs_src/python_types/tutorial010_py39.py",
- "docs_src/python_types/tutorial013_py39.py",
- "docs_src/query_params/tutorial001_py39.py",
- "docs_src/query_params/tutorial005_py39.py",
- "docs_src/query_params_str_validations/tutorial005_an_py39.py",
- "docs_src/query_params_str_validations/tutorial005_py39.py",
- "docs_src/query_params_str_validations/tutorial006_an_py39.py",
- "docs_src/query_params_str_validations/tutorial006_py39.py",
- "docs_src/query_params_str_validations/tutorial012_an_py39.py",
- "docs_src/query_params_str_validations/tutorial012_py39.py",
- "docs_src/query_params_str_validations/tutorial013_an_py39.py",
- "docs_src/query_params_str_validations/tutorial013_py39.py",
- "docs_src/request_files/tutorial001_03_an_py39.py",
- "docs_src/request_files/tutorial001_03_py39.py",
- "docs_src/request_files/tutorial001_an_py39.py",
- "docs_src/request_files/tutorial001_py39.py",
- "docs_src/request_files/tutorial002_an_py39.py",
- "docs_src/request_files/tutorial002_py39.py",
- "docs_src/request_files/tutorial003_an_py39.py",
- "docs_src/request_files/tutorial003_py39.py",
- "docs_src/request_form_models/tutorial001_an_py39.py",
- "docs_src/request_form_models/tutorial001_py39.py",
- "docs_src/request_form_models/tutorial002_an_py39.py",
- "docs_src/request_form_models/tutorial002_py39.py",
- "docs_src/request_forms/tutorial001_an_py39.py",
- "docs_src/request_forms/tutorial001_py39.py",
- "docs_src/request_forms_and_files/tutorial001_an_py39.py",
- "docs_src/request_forms_and_files/tutorial001_py39.py",
- "docs_src/response_change_status_code/tutorial001_py39.py",
- "docs_src/response_cookies/tutorial001_py39.py",
- "docs_src/response_cookies/tutorial002_py39.py",
- "docs_src/response_directly/tutorial002_py39.py",
- "docs_src/response_headers/tutorial001_py39.py",
- "docs_src/response_headers/tutorial002_py39.py",
- "docs_src/response_model/tutorial003_02_py39.py",
- "docs_src/response_model/tutorial003_03_py39.py",
- "docs_src/response_status_code/tutorial001_py39.py",
- "docs_src/response_status_code/tutorial002_py39.py",
- "docs_src/security/tutorial001_an_py39.py",
- "docs_src/security/tutorial001_py39.py",
- "docs_src/security/tutorial006_an_py39.py",
- "docs_src/security/tutorial006_py39.py",
- "docs_src/security/tutorial007_an_py39.py",
- "docs_src/security/tutorial007_py39.py",
- "docs_src/settings/app01_py39/config.py",
- "docs_src/settings/app01_py39/main.py",
- "docs_src/settings/app02_an_py39/config.py",
- "docs_src/settings/app02_an_py39/main.py",
- "docs_src/settings/app02_an_py39/test_main.py",
- "docs_src/settings/app02_py39/config.py",
- "docs_src/settings/app02_py39/main.py",
- "docs_src/settings/app02_py39/test_main.py",
- "docs_src/settings/app03_an_py39/config.py",
- "docs_src/settings/app03_an_py39/main.py",
- "docs_src/settings/app03_py39/config.py",
- "docs_src/settings/app03_py39/main.py",
- "docs_src/settings/tutorial001_py39.py",
- "docs_src/static_files/tutorial001_py39.py",
- "docs_src/sub_applications/tutorial001_py39.py",
- "docs_src/templates/tutorial001_py39.py",
- "docs_src/using_request_directly/tutorial001_py39.py",
- "docs_src/websockets/tutorial001_py39.py",
- "docs_src/websockets/tutorial003_py39.py",
- "docs_src/wsgi/tutorial001_py39.py",
]
[tool.coverage.report]