fastapi 0.149.0__tar.gz → 0.151.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastapi-0.149.0 → fastapi-0.151.0}/PKG-INFO +1 -1
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/__init__.py +1 -1
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/dependencies/utils.py +24 -13
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/routing.py +8 -6
- {fastapi-0.149.0 → fastapi-0.151.0}/pyproject.toml +1 -1
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/test_nullable_and_defaults.py +185 -48
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_default_validation.py +2 -18
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/test_nullable_and_defaults.py +115 -25
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_data.py +22 -1
- {fastapi-0.149.0 → fastapi-0.151.0}/LICENSE +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/README.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs/en/docs/img/favicon.png +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_responses/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_responses/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_responses/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_responses/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_responses/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_status_codes/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_status_codes/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/additional_status_codes/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/advanced_middleware/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/advanced_middleware/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/advanced_middleware/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/advanced_middleware/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_a_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_a_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_a_py310/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_b_an_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_b_an_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_b_an_py310/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_b_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_b_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/app_b_py310/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/app_testing/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/async_tests/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/async_tests/app_a_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/async_tests/app_a_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/async_tests/app_a_py310/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/authentication_error_status_code/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/authentication_error_status_code/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/background_tasks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/background_tasks/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/background_tasks/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/background_tasks/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/behind_a_proxy/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/behind_a_proxy/tutorial001_01_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/behind_a_proxy/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/behind_a_proxy/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/behind_a_proxy/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/behind_a_proxy/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/dependencies.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/internal/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/internal/admin.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/routers/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/routers/items.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/bigger_applications/app_an_py310/routers/users.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_fields/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_fields/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_fields/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial005_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_multiple_params/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial008_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_nested_models/tutorial009_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_updates/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_updates/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/body_updates/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/conditional_openapi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/conditional_openapi/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/configure_swagger_ui/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/configure_swagger_ui/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/configure_swagger_ui/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/configure_swagger_ui/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_param_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_param_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_param_models/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_param_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_param_models/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_params/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cookie_params/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cors/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/cors/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_docs_ui/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_docs_ui/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_docs_ui/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_request_and_route/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_request_and_route/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_request_and_route/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_request_and_route/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_request_and_route/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_request_and_route/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial001b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial006b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial006c_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial008_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial009_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial009b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial009c_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/custom_response/tutorial010_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dataclasses_/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dataclasses_/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dataclasses_/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dataclasses_/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/debugging/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/debugging/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial001_02_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial005_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial006_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008b_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008c_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008c_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008d_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008d_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008e_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial008e_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial010_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial011_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial011_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial012_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial012_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial013_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependencies/tutorial014_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependency_testing/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependency_testing/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/dependency_testing/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/encoder/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/encoder/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/events/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/events/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/events/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/events/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extending_openapi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extending_openapi/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_data_types/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_data_types/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_data_types/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_models/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_models/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_models/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_models/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/extra_models/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/first_steps/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/first_steps/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/first_steps/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/frontend/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/generate_clients/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/generate_clients/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/generate_clients/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/generate_clients/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/generate_clients/tutorial004.js +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/generate_clients/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/graphql_/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/graphql_/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/handling_errors/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_param_models/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/header_params/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/json_base64_bytes/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/json_base64_bytes/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/metadata/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/metadata/tutorial001_1_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/metadata/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/metadata/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/metadata/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/metadata/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/middleware/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/middleware/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/openapi_callbacks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/openapi_callbacks/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/openapi_webhooks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/openapi_webhooks/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/opentelemetry/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/opentelemetry/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/opentelemetry/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_advanced_configuration/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial002b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_operation_configuration/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/tutorial003b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial005_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial006_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/path_params_numeric_validations/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/pydantic_v1_in_v2/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/pydantic_v1_in_v2/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/pydantic_v1_in_v2/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/pydantic_v1_in_v2/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/pydantic_v1_in_v2/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial008_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial008b_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial009_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial010_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial011_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/python_types/tutorial013_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_param_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_param_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_param_models/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_param_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_param_models/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial005_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial006_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial006c_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial006c_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial007_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial008_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial008_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial009_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial009_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial010_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial010_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial011_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial011_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial012_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial012_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial013_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial013_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial014_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial014_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/query_params_str_validations/tutorial015_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial001_02_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial001_02_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial001_03_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial001_03_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_files/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_form_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_form_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_form_models/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_form_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_form_models/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_forms/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_forms/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_forms/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_forms_and_files/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_forms_and_files/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/request_forms_and_files/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_change_status_code/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_change_status_code/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_cookies/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_cookies/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_cookies/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_directly/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_directly/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_directly/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_headers/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_headers/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_headers/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial001_01_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial003_01_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial003_02_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial003_03_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial003_04_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial003_05_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_model/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_status_code/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_status_code/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/response_status_code/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial005_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/schema_extra_example/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial003_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial004_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial005_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial006_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial006_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial007_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/security/tutorial007_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/separate_openapi_schemas/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/separate_openapi_schemas/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/separate_openapi_schemas/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/server_sent_events/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/server_sent_events/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/server_sent_events/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/server_sent_events/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/server_sent_events/tutorial004_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/server_sent_events/tutorial005_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app01_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app01_py310/config.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app01_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_an_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_an_py310/config.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_an_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_an_py310/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_py310/config.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app02_py310/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app03_an_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app03_an_py310/config.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app03_an_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app03_py310/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app03_py310/config.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/app03_py310/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/settings/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sql_databases/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sql_databases/tutorial001_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sql_databases/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sql_databases/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sql_databases/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/static_files/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/static_files/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/stream_data/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/stream_data/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/stream_data/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/stream_json_lines/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/stream_json_lines/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/strict_content_type/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/strict_content_type/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sub_applications/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/sub_applications/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/static/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/static/styles.css +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/templates/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/templates/item.html +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/templates/item_path.html +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/templates/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/using_request_directly/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/using_request_directly/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/websockets_/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/websockets_/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/websockets_/tutorial002_an_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/websockets_/tutorial002_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/websockets_/tutorial003_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/wsgi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/docs_src/wsgi/tutorial001_py310.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/SKILL.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/references/dependencies.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/references/other-tools.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/references/path-operations.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/references/pydantic.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/references/responses.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/.agents/skills/fastapi/references/streaming.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/__main__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/_compat/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/_compat/shared.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/_compat/v2.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/applications.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/background.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/cli.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/concurrency.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/datastructures.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/dependencies/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/dependencies/models.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/encoders.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/exception_handlers.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/exceptions.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/logger.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/asyncexitstack.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/cors.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/gzip.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/httpsredirect.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/trustedhost.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/middleware/wsgi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/openapi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/openapi/constants.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/openapi/docs.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/openapi/models.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/openapi/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/param_functions.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/params.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/py.typed +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/requests.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/responses.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/api_key.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/base.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/http.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/oauth2.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/open_id_connect_url.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/security/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/sse.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/staticfiles.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/telemetry/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/telemetry/_api.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/telemetry/_asgi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/telemetry/_runtime.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/templating.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/testclient.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/types.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/fastapi/websockets.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/add_latest_release_date.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/deploy_docs_status.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/doc_parsing_utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/docs.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/format.sh +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/general-llm-prompt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/label_approved.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/lint.sh +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/notify_translations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/cookie_param_models/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/header_param_models/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/json_base64_bytes/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/query_param_models/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/request_form_models/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/separate_openapi_schemas/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/separate_openapi_schemas/image02.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/separate_openapi_schemas/image03.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/separate_openapi_schemas/image04.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/separate_openapi_schemas/image05.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/sql_databases/image01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/playwright/sql_databases/image02.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/prepare_release.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/sponsors.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/test-cov-html.sh +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/test-cov.sh +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/test.sh +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/conftest.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/en_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_lines_number_gt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_lines_number_lt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_mermaid_not_translated.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_mermaid_translated.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_wrong_lang_code.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_wrong_lang_code_2.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_lines_number_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_mermaid.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_number_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_wrong_lang_code.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_includes/data/en_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_includes/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_includes/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_code_includes/test_number_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_complex_doc/data/en_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_complex_doc/data/translated_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_complex_doc/data/translated_doc_expected.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_complex_doc/test_compex_doc.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/en_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_level_mismatch_1.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_level_mismatch_2.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/test_header_level_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_header_permalinks/test_header_number_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_html_links/data/en_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_html_links/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_html_links/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_html_links/test_html_links_number_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/en_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/tests/test_translation_fixer/test_markdown_links/test_mkd_links_number_mismatch.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/topic_repos.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/translate.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/translation_fixer.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/scripts/translation_git.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/benchmarks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/benchmarks/test_general_performance.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/benchmarks/test_openapi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/benchmarks/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/forward_reference_type.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/memory_benchmarks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/memory_benchmarks/test_dependency_graph.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/memory_benchmarks/test_openapi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/memory_benchmarks/test_route_dependency_graph.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_properties.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_properties_bool.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_response_extra.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_bad.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_custom_model_in_callback.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_custom_validationerror.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_default_validationerror.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_response_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_router.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_additional_responses_union_duplicate_anyof.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_allow_inf_nan_in_enforcing.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_ambiguous_params.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_annotated.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_application.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_arbitrary_types.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_callable_endpoint.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_compat.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_computed_fields.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_custom_middleware_exception.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_custom_route_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_custom_schema_fields.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_custom_swagger_ui_redirect.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_datastructures.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_datetime_custom_encoder.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_default_response_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_default_response_class_router.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependencies_utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_after_yield_raise.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_after_yield_streaming.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_after_yield_websockets.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_cache.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_contextmanager.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_contextvars.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_duplicates.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_models.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_overrides.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_paramless.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_partial.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_pep695.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_security_overrides.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_wrapped.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_yield_except_httpexception.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_yield_scope.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dependency_yield_scope_websockets.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_depends_hashable.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_deprecated_responses.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_dump_json_fast_path.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_duplicate_models_openapi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_empty_router.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_enforce_once_required_parameter.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_exception_handlers.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_extra_routes.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_fastapi_cli.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_file_and_form_order_issue_9116.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_filter_pydantic_sub_model_pv2.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_form_default.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_forms_from_non_typing_sequences.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_forms_single_model.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_forms_single_param.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_frontend.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_generate_unique_id_function.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_generic_parameterless_depends.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_get_model_definitions_formfeed_escape.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_get_request_body.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_http_connection_injection.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_include_route.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_include_router_defaults_overrides.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_infer_param_optionality.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_inherited_custom_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_invalid_path_param.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_invalid_sequence_param.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_json_type.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_jsonable_encoder.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_list_bytes_file_order_preserved_issue_14811.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_local_docs.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_modules_same_name_body/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_modules_same_name_body/app/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_modules_same_name_body/app/a.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_modules_same_name_body/app/b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_modules_same_name_body/app/main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_modules_same_name_body/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_multi_body_errors.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_multi_query_errors.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_multipart_installation.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_nested_annotated_in_sequence.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_no_schema_split.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_no_swagger_ui_redirect.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_cache_root_path.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_examples.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_model_description_trim_on_formfeed.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_query_parameter_extension.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_route_extensions.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_schema_type.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_separate_input_output_schemas.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_openapi_servers.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_operations_signatures.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_optional_file_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_orjson_response_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_param_class.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_param_in_path_and_dependency.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_param_include_in_schema.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_params_repr.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_path.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_prepare_release.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_put_no_body.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_pydantic_v1_error.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_pydanticv2_dataclasses_uuid_stringified_annotations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_query.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_query_cookie_header_model_extra_params.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_read_with_orm_mode.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_regex_deprecated_body.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_regex_deprecated_params.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_repeated_cookie_headers.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_repeated_dependency_schema.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_repeated_parameter_alias.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_body_parameters_media_type.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_param_model_by_alias.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/test_optional_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/test_required_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_body/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_cookie/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_cookie/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_cookie/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_cookie/test_optional_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_cookie/test_required_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/test_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/test_required.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_file/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/test_nullable_and_defaults.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/test_optional_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/test_required_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_form/utils.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_header/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_header/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_header/test_nullable_and_defaults.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_header/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_header/test_optional_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_header/test_required_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_nullable_and_defaults.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_path/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_path/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_path/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_path/test_optional_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_path/test_required_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_query/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_query/test_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_query/test_optional_list.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_query/test_optional_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_request_params/test_query/test_required_str.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_required_noneable.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_by_alias.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_change_status_code.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_class_no_mediatype.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_code_no_body.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_dependency.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_as_return_annotation.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_data_filter.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_data_filter_no_inheritance.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_default_factory.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_include_exclude.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_invalid.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_model_sub_types.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_response_set_response_code_empty.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_return_none_stringified_annotations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_route_handler_wrapping.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_route_scope.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_router_circular_import.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_router_events.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_router_include_context.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_router_prefix_with_template.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_router_redirect_slashes.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_schema_compat_pydantic_v2.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_schema_extra_examples.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_schema_ref_pydantic_v2.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_cookie.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_cookie_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_cookie_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_header.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_header_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_header_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_query.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_query_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_api_key_query_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_base.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_base_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_base_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_basic_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_basic_realm.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_basic_realm_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_bearer.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_bearer_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_bearer_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_digest.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_digest_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_http_digest_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_authorization_code_bearer.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_authorization_code_bearer_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_authorization_code_bearer_scopes_openapi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_authorization_code_bearer_scopes_openapi_simple.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_optional_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_password_bearer_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_oauth2_password_bearer_optional_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_openid_connect.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_openid_connect_description.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_openid_connect_optional.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_scopes.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_scopes_dont_propagate.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_scopes_sub_dependency.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_security_websockets.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_serialize_response.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_serialize_response_dataclass.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_serialize_response_model.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_skip_defaults.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_sse.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_starlette_exception.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_starlette_urlconvertors.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stream_bare_type.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stream_cancellation.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stream_json_validation_error.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stream_non_finite_floats.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stream_status_code.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_strict_content_type_app_level.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_strict_content_type_nested.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_strict_content_type_router_level.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stringified_annotation_dependency.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stringified_annotation_dependency_py314.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_stringified_annotations_simple.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_sub_callbacks.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_swagger_ui_escape.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_swagger_ui_init_oauth.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/_otlp.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/_subprocess.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/conftest.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_background.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_environment_integrations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_exceptions.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_http.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_integrations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_native_integrations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_operations.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_runtime.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_semantic_conventions.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_tracer.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_telemetry/test_websockets.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_top_level_security_scheme_in_openapi.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_translate.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tuples.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_responses/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_responses/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_responses/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_responses/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_responses/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_status_codes/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_additional_status_codes/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_advanced_middleware/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_advanced_middleware/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_advanced_middleware/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_advanced_middleware/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_async_tests/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_async_tests/test_main_a.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_authentication_error_status_code/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_authentication_error_status_code/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_background_tasks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_background_tasks/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_background_tasks/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_behind_a_proxy/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001_01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_bigger_applications/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_bigger_applications/test_main.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_fields/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_fields/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_multiple_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial001_tutorial002_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial008.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_nested_models/test_tutorial009.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_updates/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_updates/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_body_updates/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_conditional_openapi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_conditional_openapi/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_configure_swagger_ui/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cookie_param_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cookie_param_models/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cookie_param_models/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cookie_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cookie_params/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cors/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_cors/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_docs_ui/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_docs_ui/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_docs_ui/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_request_and_route/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_request_and_route/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_request_and_route/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_request_and_route/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial001b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial002_tutorial003_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial006b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial006c.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial008.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial009.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial009b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial009c.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_custom_response/test_tutorial010.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dataclasses/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dataclasses/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dataclasses/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dataclasses/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_debugging/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_debugging/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial001_tutorial001_02.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial002_tutorial003_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial008.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial008b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial008c.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial008d.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial008e.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial010.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial011.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_dependencies/test_tutorial012.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_encoder/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_encoder/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_events/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_events/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_events/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_events/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extending_openapi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extending_openapi/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_data_types/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_data_types/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_models/test_tutorial001_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_models/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_models/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_extra_models/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_first_steps/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_first_steps/test_tutorial001_tutorial002_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_generate_clients/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_generate_clients/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_generate_clients/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_generate_clients/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_generate_clients/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_graphql/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_graphql/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_handling_errors/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_param_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_param_models/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_param_models/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_param_models/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_params/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_params/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_header_params/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_json_base64_bytes/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_json_base64_bytes/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_metadata/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_metadata/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_metadata/test_tutorial001_1.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_metadata/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_metadata/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_metadata/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_middleware/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_middleware/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_openapi_callbacks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_openapi_webhooks/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_openapi_webhooks/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_opentelemetry/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_opentelemetry/conftest.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_opentelemetry/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_opentelemetry/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_opentelemetry/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial003_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/test_tutorial003b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params_numeric_validations/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial002_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial001_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial008.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial008b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial009_tutorial009b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial010.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial011.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_python_types/test_tutorial013.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_param_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_param_models/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_param_models/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial006c.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial008.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial009.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial015.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_files/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_files/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_files/test_tutorial001_02.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_files/test_tutorial001_03.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_files/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_files/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_form_models/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_form_models/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_form_models/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_forms/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_forms/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_forms_and_files/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_change_status_code/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_change_status_code/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_cookies/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_cookies/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_cookies/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_directly/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_directly/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_directly/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_headers/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_headers/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_headers/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial001_tutorial001_01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial003_01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial003_02.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial003_03.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial003_04.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial003_05.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_model/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_status_code/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_response_status_code/test_tutorial001_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_schema_extra_example/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial006.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_security/test_tutorial007.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_separate_openapi_schemas/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_server_sent_events/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_server_sent_events/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_server_sent_events/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_server_sent_events/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_server_sent_events/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_server_sent_events/test_tutorial005.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_settings/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_settings/test_app01.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_settings/test_app02.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_settings/test_app03.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_settings/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_sql_databases/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_sql_databases/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_sql_databases/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_static_files/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_static_files/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_stream_data/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_stream_data/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_stream_data/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_stream_json_lines/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_stream_json_lines/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_strict_content_type/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_strict_content_type/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_sub_applications/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_sub_applications/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_templates/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_templates/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_templates/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/test_main_a.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/test_main_b.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing/test_tutorial004.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing_dependencies/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_testing_dependencies/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_using_request_directly/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_using_request_directly/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_websockets/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_websockets/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_websockets/test_tutorial002.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_websockets/test_tutorial003.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_wsgi/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_tutorial/test_wsgi/test_tutorial001.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_typing_python39.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_union_body.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_union_body_discriminator.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_union_body_discriminator_annotated.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_union_forms.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_union_inherited_body.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_validate_response.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_validate_response_dataclass.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_validate_response_recursive/__init__.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_validate_response_recursive/app.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_validate_response_recursive/test_validate_response_recursive.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_validation_error_context.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_webhooks_security.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_wrapped_method_forward_reference.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_ws_dependencies.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/test_ws_router.py +0 -0
- {fastapi-0.149.0 → fastapi-0.151.0}/tests/utils.py +0 -0
|
@@ -587,7 +587,7 @@ async def solve_dependencies(
|
|
|
587
587
|
*,
|
|
588
588
|
request: Request | WebSocket,
|
|
589
589
|
dependant: Dependant,
|
|
590
|
-
body:
|
|
590
|
+
body: Any = Undefined,
|
|
591
591
|
background_tasks: StarletteBackgroundTasks | None = None,
|
|
592
592
|
response: Response | None = None,
|
|
593
593
|
dependency_overrides_provider: Any | None = None,
|
|
@@ -734,7 +734,7 @@ async def solve_dependencies(
|
|
|
734
734
|
def _validate_value_with_model_field(
|
|
735
735
|
*, field: ModelField, value: Any, values: dict[str, Any], loc: tuple[str, ...]
|
|
736
736
|
) -> tuple[Any, list[Any]]:
|
|
737
|
-
if value is
|
|
737
|
+
if value is Undefined:
|
|
738
738
|
if field.field_info.is_required():
|
|
739
739
|
return None, [get_missing_field_error(loc=loc)]
|
|
740
740
|
value = deepcopy(field.default)
|
|
@@ -747,6 +747,11 @@ def _is_json_field(field: ModelField) -> bool:
|
|
|
747
747
|
return any(type(item) is Json for item in field.field_info.metadata)
|
|
748
748
|
|
|
749
749
|
|
|
750
|
+
def _is_empty_file_input(value: Any) -> bool:
|
|
751
|
+
# Browsers send an empty filename and content when no file is selected.
|
|
752
|
+
return isinstance(value, UploadFile) and value.filename == "" and value.size == 0
|
|
753
|
+
|
|
754
|
+
|
|
750
755
|
def _get_multidict_value(
|
|
751
756
|
field: ModelField, values: Mapping[str, Any], alias: str | None = None
|
|
752
757
|
) -> Any:
|
|
@@ -757,14 +762,17 @@ def _get_multidict_value(
|
|
|
757
762
|
and isinstance(values, (ImmutableMultiDict, Headers))
|
|
758
763
|
):
|
|
759
764
|
value = values.getlist(alias)
|
|
765
|
+
if isinstance(values, FormData):
|
|
766
|
+
value = [item for item in value if not _is_empty_file_input(item)]
|
|
760
767
|
else:
|
|
761
768
|
value = values.get(alias, None)
|
|
762
769
|
if (
|
|
763
770
|
value is None
|
|
764
771
|
or (
|
|
765
772
|
isinstance(values, FormData)
|
|
766
|
-
and
|
|
767
|
-
|
|
773
|
+
and (
|
|
774
|
+
(isinstance(value, str) and value == "") or _is_empty_file_input(value)
|
|
775
|
+
)
|
|
768
776
|
)
|
|
769
777
|
or (
|
|
770
778
|
field_annotation_is_sequence(field.field_info.annotation)
|
|
@@ -772,7 +780,7 @@ def _get_multidict_value(
|
|
|
772
780
|
)
|
|
773
781
|
):
|
|
774
782
|
# Apply defaults during validation, not while extracting request data.
|
|
775
|
-
return
|
|
783
|
+
return Undefined
|
|
776
784
|
return value
|
|
777
785
|
|
|
778
786
|
|
|
@@ -818,7 +826,7 @@ def request_params_to_args(
|
|
|
818
826
|
if alias == field.name:
|
|
819
827
|
alias = alias.replace("_", "-")
|
|
820
828
|
value = _get_multidict_value(field, received_params, alias=alias)
|
|
821
|
-
if value is not
|
|
829
|
+
if value is not Undefined:
|
|
822
830
|
params_to_process[get_validation_alias(field)] = value
|
|
823
831
|
processed_keys.add(alias or get_validation_alias(field))
|
|
824
832
|
# For headers with convert_underscores=True, mark both the converted
|
|
@@ -942,7 +950,10 @@ async def _extract_form_body(
|
|
|
942
950
|
if field.config is None or infer_false_if_missing:
|
|
943
951
|
selected_alias = aliases[0]
|
|
944
952
|
for alias in aliases:
|
|
945
|
-
if
|
|
953
|
+
if (
|
|
954
|
+
_get_multidict_value(field, received_body, alias=alias)
|
|
955
|
+
is not Undefined
|
|
956
|
+
):
|
|
946
957
|
selected_alias = alias
|
|
947
958
|
break
|
|
948
959
|
aliases = [selected_alias]
|
|
@@ -977,7 +988,7 @@ async def _extract_form_body(
|
|
|
977
988
|
# Individual parameters are later looked up by their declared alias.
|
|
978
989
|
alias = get_validation_alias(field)
|
|
979
990
|
field_aliases.add(alias)
|
|
980
|
-
if value is not
|
|
991
|
+
if value is not Undefined:
|
|
981
992
|
values[alias] = value
|
|
982
993
|
for key in received_body.keys():
|
|
983
994
|
if key not in field_aliases:
|
|
@@ -991,7 +1002,7 @@ async def _extract_form_body(
|
|
|
991
1002
|
|
|
992
1003
|
async def request_body_to_args(
|
|
993
1004
|
body_fields: list[ModelField],
|
|
994
|
-
received_body:
|
|
1005
|
+
received_body: Any,
|
|
995
1006
|
embed_body_fields: bool,
|
|
996
1007
|
) -> tuple[dict[str, Any], list[dict[str, Any]]]:
|
|
997
1008
|
values: dict[str, Any] = {}
|
|
@@ -1021,11 +1032,11 @@ async def request_body_to_args(
|
|
|
1021
1032
|
return {first_field.name: v_}, errors_
|
|
1022
1033
|
for field in body_fields:
|
|
1023
1034
|
loc = ("body", get_validation_alias(field))
|
|
1024
|
-
value: Any
|
|
1025
|
-
if body_to_process is not
|
|
1035
|
+
value: Any = Undefined
|
|
1036
|
+
if body_to_process is not Undefined and not isinstance(body_to_process, bytes):
|
|
1026
1037
|
try:
|
|
1027
|
-
value = body_to_process.get(get_validation_alias(field))
|
|
1028
|
-
#
|
|
1038
|
+
value = body_to_process.get(get_validation_alias(field), Undefined)
|
|
1039
|
+
# Embedded fields require an object, not a list, scalar, or null.
|
|
1029
1040
|
except AttributeError:
|
|
1030
1041
|
errors.append(get_missing_field_error(loc))
|
|
1031
1042
|
continue
|
|
@@ -100,7 +100,7 @@ from starlette import routing
|
|
|
100
100
|
from starlette._exception_handler import wrap_app_handling_exceptions
|
|
101
101
|
from starlette._utils import get_route_path, is_async_callable
|
|
102
102
|
from starlette.concurrency import iterate_in_threadpool, run_in_threadpool
|
|
103
|
-
from starlette.datastructures import URL,
|
|
103
|
+
from starlette.datastructures import URL, URLPath
|
|
104
104
|
from starlette.exceptions import HTTPException
|
|
105
105
|
from starlette.requests import Request
|
|
106
106
|
from starlette.responses import (
|
|
@@ -449,7 +449,7 @@ def get_request_handler(
|
|
|
449
449
|
|
|
450
450
|
# Read body and auto-close files
|
|
451
451
|
try:
|
|
452
|
-
body: Any =
|
|
452
|
+
body: Any = Undefined
|
|
453
453
|
if body_field:
|
|
454
454
|
if is_body_form:
|
|
455
455
|
body = await request.form()
|
|
@@ -469,7 +469,7 @@ def get_request_handler(
|
|
|
469
469
|
subtype = message.get_content_subtype()
|
|
470
470
|
if subtype == "json" or subtype.endswith("+json"):
|
|
471
471
|
json_body = await request.json()
|
|
472
|
-
if json_body
|
|
472
|
+
if json_body is not Undefined:
|
|
473
473
|
body = json_body
|
|
474
474
|
else:
|
|
475
475
|
body = body_bytes
|
|
@@ -499,7 +499,7 @@ def get_request_handler(
|
|
|
499
499
|
raise http_error from e
|
|
500
500
|
|
|
501
501
|
if telemetry_data is not None:
|
|
502
|
-
telemetry_data.body = body
|
|
502
|
+
telemetry_data.body = None if body is Undefined else body
|
|
503
503
|
|
|
504
504
|
# Solve dependencies and run path operation function, auto-closing dependencies
|
|
505
505
|
errors: list[Any] = []
|
|
@@ -511,7 +511,7 @@ def get_request_handler(
|
|
|
511
511
|
solved_result = await solve_dependencies(
|
|
512
512
|
request=request,
|
|
513
513
|
dependant=dependant,
|
|
514
|
-
body=
|
|
514
|
+
body=body,
|
|
515
515
|
dependency_overrides_provider=dependency_overrides_provider,
|
|
516
516
|
async_exit_stack=async_exit_stack,
|
|
517
517
|
embed_body_fields=embed_body_fields,
|
|
@@ -790,7 +790,9 @@ def get_request_handler(
|
|
|
790
790
|
response.headers.raw.extend(solved_result.response.headers.raw)
|
|
791
791
|
if errors:
|
|
792
792
|
validation_error = RequestValidationError(
|
|
793
|
-
errors,
|
|
793
|
+
errors,
|
|
794
|
+
body=None if body is Undefined else body,
|
|
795
|
+
endpoint_ctx=endpoint_ctx,
|
|
794
796
|
)
|
|
795
797
|
_validation_failed(validation_error)
|
|
796
798
|
raise validation_error
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from typing import Annotated
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
-
from fastapi import Body, FastAPI
|
|
4
|
+
from fastapi import Body, Depends, FastAPI, Request
|
|
5
|
+
from fastapi.exceptions import RequestValidationError
|
|
6
|
+
from fastapi.responses import JSONResponse
|
|
5
7
|
from fastapi.testclient import TestClient
|
|
6
8
|
from pydantic import BaseModel
|
|
7
9
|
|
|
@@ -102,25 +104,11 @@ client = TestClient(app)
|
|
|
102
104
|
@pytest.mark.parametrize(
|
|
103
105
|
"path,fields_set",
|
|
104
106
|
[
|
|
105
|
-
|
|
106
|
-
"/required",
|
|
107
|
-
None,
|
|
108
|
-
marks=pytest.mark.xfail(
|
|
109
|
-
reason="Explicit null is treated as missing for a required Body parameter",
|
|
110
|
-
raises=AssertionError,
|
|
111
|
-
),
|
|
112
|
-
),
|
|
107
|
+
("/required", None),
|
|
113
108
|
("/required-model", ["value"]),
|
|
114
109
|
("/none-default", None),
|
|
115
110
|
("/none-default-model", ["value"]),
|
|
116
|
-
|
|
117
|
-
"/non-null-default",
|
|
118
|
-
None,
|
|
119
|
-
marks=pytest.mark.xfail(
|
|
120
|
-
reason="Explicit null is replaced with the Body parameter default",
|
|
121
|
-
raises=AssertionError,
|
|
122
|
-
),
|
|
123
|
-
),
|
|
111
|
+
("/non-null-default", None),
|
|
124
112
|
("/non-null-default-model", ["value"]),
|
|
125
113
|
],
|
|
126
114
|
)
|
|
@@ -192,19 +180,8 @@ def test_absent_bare_body_uses_default(path, expected):
|
|
|
192
180
|
"path",
|
|
193
181
|
[
|
|
194
182
|
"/bare-none-default",
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
marks=pytest.mark.xfail(
|
|
198
|
-
reason="Explicit null-body is treated as missing", raises=AssertionError
|
|
199
|
-
),
|
|
200
|
-
),
|
|
201
|
-
pytest.param(
|
|
202
|
-
"/bare-int-default",
|
|
203
|
-
marks=pytest.mark.xfail(
|
|
204
|
-
reason="Explicit null-body is replaced with the default",
|
|
205
|
-
raises=AssertionError,
|
|
206
|
-
),
|
|
207
|
-
),
|
|
183
|
+
"/bare-required",
|
|
184
|
+
"/bare-int-default",
|
|
208
185
|
],
|
|
209
186
|
)
|
|
210
187
|
def test_explicit_null_bare_body(path):
|
|
@@ -253,25 +230,9 @@ def test_omitted_non_nullable_field_uses_default(path):
|
|
|
253
230
|
@pytest.mark.parametrize(
|
|
254
231
|
"path,content,location",
|
|
255
232
|
[
|
|
256
|
-
|
|
257
|
-
"/non-nullable-default",
|
|
258
|
-
'{"value": null}',
|
|
259
|
-
["body", "value"],
|
|
260
|
-
marks=pytest.mark.xfail(
|
|
261
|
-
reason="Explicit null is replaced with the Body parameter default",
|
|
262
|
-
raises=AssertionError,
|
|
263
|
-
),
|
|
264
|
-
),
|
|
233
|
+
("/non-nullable-default", '{"value": null}', ["body", "value"]),
|
|
265
234
|
("/non-nullable-default-model", '{"value": null}', ["body", "value"]),
|
|
266
|
-
|
|
267
|
-
"/bare-non-nullable-default",
|
|
268
|
-
"null",
|
|
269
|
-
["body"],
|
|
270
|
-
marks=pytest.mark.xfail(
|
|
271
|
-
reason="Explicit null-body is replaced with the default",
|
|
272
|
-
raises=AssertionError,
|
|
273
|
-
),
|
|
274
|
-
),
|
|
235
|
+
("/bare-non-nullable-default", "null", ["body"]),
|
|
275
236
|
],
|
|
276
237
|
)
|
|
277
238
|
def test_explicit_null_for_non_nullable_body_with_default(path, content, location):
|
|
@@ -285,3 +246,179 @@ def test_explicit_null_for_non_nullable_body_with_default(path, content, locatio
|
|
|
285
246
|
] == [
|
|
286
247
|
("int_type", location, None),
|
|
287
248
|
]
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
@pytest.mark.parametrize(
|
|
252
|
+
"path",
|
|
253
|
+
["/required", "/none-default", "/non-null-default", "/non-nullable-default"],
|
|
254
|
+
)
|
|
255
|
+
def test_explicit_null_is_not_an_embedded_body_object(path):
|
|
256
|
+
response = client.post(
|
|
257
|
+
path, content="null", headers={"content-type": "application/json"}
|
|
258
|
+
)
|
|
259
|
+
assert response.status_code == 422
|
|
260
|
+
assert response.json() == {
|
|
261
|
+
"detail": [
|
|
262
|
+
{
|
|
263
|
+
"type": "missing",
|
|
264
|
+
"loc": ["body", "value"],
|
|
265
|
+
"msg": "Field required",
|
|
266
|
+
"input": None,
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def test_explicit_null_is_not_an_object_for_multiple_body_parameters():
|
|
273
|
+
app = FastAPI()
|
|
274
|
+
|
|
275
|
+
@app.post("/")
|
|
276
|
+
def read_values(
|
|
277
|
+
value: Annotated[int | None, Body()] = 10,
|
|
278
|
+
other: Annotated[int | None, Body()] = 20,
|
|
279
|
+
):
|
|
280
|
+
return {"value": value, "other": other}
|
|
281
|
+
|
|
282
|
+
client = TestClient(app)
|
|
283
|
+
response = client.post(
|
|
284
|
+
"/", content="null", headers={"content-type": "application/json"}
|
|
285
|
+
)
|
|
286
|
+
assert response.status_code == 422
|
|
287
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
288
|
+
("missing", ["body", "value"]),
|
|
289
|
+
("missing", ["body", "other"]),
|
|
290
|
+
]
|
|
291
|
+
|
|
292
|
+
response = client.post("/")
|
|
293
|
+
assert response.status_code == 200
|
|
294
|
+
assert response.json() == {"value": 10, "other": 20}
|
|
295
|
+
|
|
296
|
+
response = client.post("/", json={})
|
|
297
|
+
assert response.status_code == 200
|
|
298
|
+
assert response.json() == {"value": 10, "other": 20}
|
|
299
|
+
|
|
300
|
+
response = client.post("/", json={"value": None, "other": None})
|
|
301
|
+
assert response.status_code == 200
|
|
302
|
+
assert response.json() == {"value": None, "other": None}
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
@pytest.mark.parametrize(
|
|
306
|
+
"embed,null_content,missing_content",
|
|
307
|
+
[(False, "null", ""), (True, '{"value": null}', "{}")],
|
|
308
|
+
)
|
|
309
|
+
def test_explicit_null_does_not_call_default_factory(
|
|
310
|
+
embed, null_content, missing_content
|
|
311
|
+
):
|
|
312
|
+
app = FastAPI()
|
|
313
|
+
calls = 0
|
|
314
|
+
|
|
315
|
+
def default_factory():
|
|
316
|
+
nonlocal calls
|
|
317
|
+
calls += 1
|
|
318
|
+
return "10"
|
|
319
|
+
|
|
320
|
+
@app.post("/")
|
|
321
|
+
def read_value(
|
|
322
|
+
value: Annotated[
|
|
323
|
+
int | None,
|
|
324
|
+
Body(embed=embed, default_factory=default_factory, validate_default=True),
|
|
325
|
+
],
|
|
326
|
+
):
|
|
327
|
+
return value
|
|
328
|
+
|
|
329
|
+
client = TestClient(app)
|
|
330
|
+
response = client.post(
|
|
331
|
+
"/", content=null_content, headers={"content-type": "application/json"}
|
|
332
|
+
)
|
|
333
|
+
assert response.status_code == 200
|
|
334
|
+
assert response.json() is None
|
|
335
|
+
assert calls == 0
|
|
336
|
+
|
|
337
|
+
response = client.post(
|
|
338
|
+
"/", content=missing_content, headers={"content-type": "application/json"}
|
|
339
|
+
)
|
|
340
|
+
assert response.status_code == 200
|
|
341
|
+
assert response.json() == 10
|
|
342
|
+
assert calls == 1
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
def test_explicit_null_in_body_dependency_uses_alias():
|
|
346
|
+
app = FastAPI()
|
|
347
|
+
|
|
348
|
+
def dependency(value: Annotated[int | None, Body(alias="input")] = 10):
|
|
349
|
+
return value
|
|
350
|
+
|
|
351
|
+
@app.post("/")
|
|
352
|
+
def read_values(
|
|
353
|
+
value: Annotated[int | None, Depends(dependency)],
|
|
354
|
+
other: Annotated[int, Body()] = 20,
|
|
355
|
+
):
|
|
356
|
+
return {"value": value, "other": other}
|
|
357
|
+
|
|
358
|
+
client = TestClient(app)
|
|
359
|
+
response = client.post("/", json={"input": None})
|
|
360
|
+
assert response.status_code == 200
|
|
361
|
+
assert response.json() == {"value": None, "other": 20}
|
|
362
|
+
|
|
363
|
+
response = client.post("/", json={})
|
|
364
|
+
assert response.status_code == 200
|
|
365
|
+
assert response.json() == {"value": 10, "other": 20}
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
@pytest.mark.parametrize(
|
|
369
|
+
"embed,null_content,missing_content",
|
|
370
|
+
[(False, "null", ""), (True, '{"params": null}', "{}")],
|
|
371
|
+
)
|
|
372
|
+
def test_explicit_null_for_nullable_model_body(embed, null_content, missing_content):
|
|
373
|
+
app = FastAPI()
|
|
374
|
+
|
|
375
|
+
@app.post("/")
|
|
376
|
+
def read_model(
|
|
377
|
+
params: Annotated[RequiredModel | None, Body(embed=embed)] = RequiredModel(
|
|
378
|
+
value=10
|
|
379
|
+
),
|
|
380
|
+
):
|
|
381
|
+
return params
|
|
382
|
+
|
|
383
|
+
client = TestClient(app)
|
|
384
|
+
response = client.post(
|
|
385
|
+
"/", content=null_content, headers={"content-type": "application/json"}
|
|
386
|
+
)
|
|
387
|
+
assert response.status_code == 200
|
|
388
|
+
assert response.json() is None
|
|
389
|
+
|
|
390
|
+
response = client.post(
|
|
391
|
+
"/", content=missing_content, headers={"content-type": "application/json"}
|
|
392
|
+
)
|
|
393
|
+
assert response.status_code == 200
|
|
394
|
+
assert response.json() == {"value": 10}
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
@pytest.mark.parametrize("content,error_type", [("", "missing"), ("null", "int_type")])
|
|
398
|
+
def test_validation_error_body_for_missing_and_null(content, error_type):
|
|
399
|
+
app = FastAPI()
|
|
400
|
+
|
|
401
|
+
@app.post("/")
|
|
402
|
+
def read_value(value: Annotated[int, Body()]):
|
|
403
|
+
return value
|
|
404
|
+
|
|
405
|
+
@app.exception_handler(RequestValidationError)
|
|
406
|
+
def handle_error(request: Request, exc: RequestValidationError):
|
|
407
|
+
return JSONResponse(
|
|
408
|
+
status_code=422, content={"body": exc.body, "detail": exc.errors()}
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
client = TestClient(app)
|
|
412
|
+
response = client.post("/", json=1)
|
|
413
|
+
assert response.status_code == 200
|
|
414
|
+
assert response.json() == 1
|
|
415
|
+
|
|
416
|
+
response = client.post(
|
|
417
|
+
"/", content=content, headers={"content-type": "application/json"}
|
|
418
|
+
)
|
|
419
|
+
assert response.status_code == 422
|
|
420
|
+
assert response.json()["body"] is None
|
|
421
|
+
assert [
|
|
422
|
+
(error["type"], error["loc"], error["input"])
|
|
423
|
+
for error in response.json()["detail"]
|
|
424
|
+
] == [(error_type, ["body"], None)]
|
|
@@ -99,25 +99,12 @@ def test_explicit_value_equal_to_default_is_validated(parameter, path):
|
|
|
99
99
|
|
|
100
100
|
|
|
101
101
|
@pytest.mark.parametrize("default", [None, 10])
|
|
102
|
-
@pytest.mark.parametrize(
|
|
103
|
-
"path",
|
|
104
|
-
[
|
|
105
|
-
pytest.param(
|
|
106
|
-
"/parameter",
|
|
107
|
-
marks=pytest.mark.xfail(
|
|
108
|
-
reason="Explicit null is treated as missing for individual Body parameters",
|
|
109
|
-
raises=AssertionError,
|
|
110
|
-
),
|
|
111
|
-
),
|
|
112
|
-
"/model",
|
|
113
|
-
],
|
|
114
|
-
)
|
|
102
|
+
@pytest.mark.parametrize("path", ["/parameter", "/model"])
|
|
115
103
|
def test_explicit_null_is_validated(default, path):
|
|
116
104
|
app = FastAPI()
|
|
117
|
-
field = Body(embed=True)
|
|
118
105
|
|
|
119
106
|
@app.post("/parameter")
|
|
120
|
-
def read_parameter(value: Annotated[ValidatedInt,
|
|
107
|
+
def read_parameter(value: Annotated[ValidatedInt, Body(embed=True)] = default):
|
|
121
108
|
return value
|
|
122
109
|
|
|
123
110
|
class Model(BaseModel):
|
|
@@ -134,9 +121,6 @@ def test_explicit_null_is_validated(default, path):
|
|
|
134
121
|
|
|
135
122
|
|
|
136
123
|
@pytest.mark.parametrize("default", [None, 10])
|
|
137
|
-
@pytest.mark.xfail(
|
|
138
|
-
reason="Explicit null-body is treated as missing", raises=AssertionError
|
|
139
|
-
)
|
|
140
124
|
def test_explicit_null_body_is_validated(default):
|
|
141
125
|
app = FastAPI()
|
|
142
126
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
from typing import Annotated
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
-
from fastapi import FastAPI, File, UploadFile
|
|
4
|
+
from fastapi import FastAPI, File, Form, UploadFile
|
|
5
5
|
from fastapi.testclient import TestClient
|
|
6
6
|
from inline_snapshot import snapshot
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
7
8
|
|
|
8
9
|
app = FastAPI()
|
|
9
10
|
|
|
@@ -80,14 +81,7 @@ EMPTY_FILE_FORM = (
|
|
|
80
81
|
"content",
|
|
81
82
|
[
|
|
82
83
|
pytest.param(b"", id="omitted"),
|
|
83
|
-
pytest.param(
|
|
84
|
-
EMPTY_FILE_FORM,
|
|
85
|
-
id="no-selection",
|
|
86
|
-
marks=pytest.mark.xfail(
|
|
87
|
-
reason="A file with an empty filename and content is treated as supplied",
|
|
88
|
-
raises=AssertionError,
|
|
89
|
-
),
|
|
90
|
-
),
|
|
84
|
+
pytest.param(EMPTY_FILE_FORM, id="no-selection"),
|
|
91
85
|
],
|
|
92
86
|
)
|
|
93
87
|
def test_missing_required_nullable_files(path, content):
|
|
@@ -108,14 +102,7 @@ def test_missing_required_nullable_files(path, content):
|
|
|
108
102
|
"content",
|
|
109
103
|
[
|
|
110
104
|
pytest.param(b"", id="omitted"),
|
|
111
|
-
pytest.param(
|
|
112
|
-
EMPTY_FILE_FORM,
|
|
113
|
-
id="no-selection",
|
|
114
|
-
marks=pytest.mark.xfail(
|
|
115
|
-
reason="A file with an empty filename and content is treated as supplied",
|
|
116
|
-
raises=AssertionError,
|
|
117
|
-
),
|
|
118
|
-
),
|
|
105
|
+
pytest.param(EMPTY_FILE_FORM, id="no-selection"),
|
|
119
106
|
],
|
|
120
107
|
)
|
|
121
108
|
def test_missing_optional_nullable_files(path, content):
|
|
@@ -158,14 +145,7 @@ def test_named_file_is_supplied_even_when_empty(path, content):
|
|
|
158
145
|
"content",
|
|
159
146
|
[
|
|
160
147
|
pytest.param(b"", id="omitted"),
|
|
161
|
-
pytest.param(
|
|
162
|
-
EMPTY_FILE_FORM,
|
|
163
|
-
id="no-selection",
|
|
164
|
-
marks=pytest.mark.xfail(
|
|
165
|
-
reason="A file with an empty filename and content is treated as supplied",
|
|
166
|
-
raises=AssertionError,
|
|
167
|
-
),
|
|
168
|
-
),
|
|
148
|
+
pytest.param(EMPTY_FILE_FORM, id="no-selection"),
|
|
169
149
|
],
|
|
170
150
|
)
|
|
171
151
|
def test_missing_files_use_bytes_defaults(content):
|
|
@@ -191,6 +171,116 @@ def test_supplied_files_override_bytes_defaults(content, expected):
|
|
|
191
171
|
assert response.json() == {"file": expected, "files": [expected]}
|
|
192
172
|
|
|
193
173
|
|
|
174
|
+
@pytest.mark.parametrize("path", ["/required-bytes", "/required-uploadfile"])
|
|
175
|
+
def test_file_without_a_name_is_supplied_when_it_has_content(path):
|
|
176
|
+
response = client.post(
|
|
177
|
+
path,
|
|
178
|
+
content=(
|
|
179
|
+
b"--boundary\r\n"
|
|
180
|
+
b'Content-Disposition: form-data; name="file"; filename=""\r\n'
|
|
181
|
+
b"Content-Type: application/octet-stream\r\n\r\n"
|
|
182
|
+
b"hello\r\n--boundary\r\n"
|
|
183
|
+
b'Content-Disposition: form-data; name="files"; filename=""\r\n'
|
|
184
|
+
b"Content-Type: application/octet-stream\r\n\r\n"
|
|
185
|
+
b"hello\r\n--boundary--\r\n"
|
|
186
|
+
),
|
|
187
|
+
headers={"content-type": "multipart/form-data; boundary=boundary"},
|
|
188
|
+
)
|
|
189
|
+
assert response.status_code == 200
|
|
190
|
+
assert response.json() == {"file": 5, "files": [5]}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
@pytest.mark.parametrize("path", ["/required-bytes", "/required-uploadfile"])
|
|
194
|
+
def test_file_list_ignores_unselected_inputs(path):
|
|
195
|
+
response = client.post(
|
|
196
|
+
path,
|
|
197
|
+
content=(
|
|
198
|
+
b"--boundary\r\n"
|
|
199
|
+
b'Content-Disposition: form-data; name="file"; filename="empty.txt"\r\n'
|
|
200
|
+
b"Content-Type: application/octet-stream\r\n\r\n"
|
|
201
|
+
b"\r\n--boundary\r\n"
|
|
202
|
+
b'Content-Disposition: form-data; name="files"; filename="first.txt"\r\n'
|
|
203
|
+
b"Content-Type: application/octet-stream\r\n\r\n"
|
|
204
|
+
b"\r\n--boundary\r\n"
|
|
205
|
+
b'Content-Disposition: form-data; name="files"; filename=""\r\n'
|
|
206
|
+
b"Content-Type: application/octet-stream\r\n\r\n"
|
|
207
|
+
b"\r\n--boundary\r\n"
|
|
208
|
+
b'Content-Disposition: form-data; name="files"; filename="last.txt"\r\n'
|
|
209
|
+
b"Content-Type: application/octet-stream\r\n\r\n"
|
|
210
|
+
b"hello\r\n--boundary--\r\n"
|
|
211
|
+
),
|
|
212
|
+
headers={"content-type": "multipart/form-data; boundary=boundary"},
|
|
213
|
+
)
|
|
214
|
+
assert response.status_code == 200
|
|
215
|
+
assert response.json() == {"file": 0, "files": [0, 5]}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def test_multipart_text_items_in_bytes_list_are_preserved():
|
|
219
|
+
response = client.post(
|
|
220
|
+
"/required-bytes",
|
|
221
|
+
files=[
|
|
222
|
+
("file", ("empty.txt", b"")),
|
|
223
|
+
("files", (None, "")),
|
|
224
|
+
("files", (None, "text")),
|
|
225
|
+
("files", ("selected.txt", b"hello")),
|
|
226
|
+
],
|
|
227
|
+
)
|
|
228
|
+
assert response.status_code == 200
|
|
229
|
+
assert response.json() == {"file": 0, "files": [0, 4, 5]}
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def test_unselected_files_in_form_model_use_defaults_and_remain_unset():
|
|
233
|
+
app = FastAPI()
|
|
234
|
+
|
|
235
|
+
class FileModel(BaseModel):
|
|
236
|
+
file: UploadFile | None = None
|
|
237
|
+
files: Annotated[list[UploadFile], Field(default_factory=list)]
|
|
238
|
+
|
|
239
|
+
@app.post("/")
|
|
240
|
+
def upload(params: Annotated[FileModel, Form()]):
|
|
241
|
+
assert params.file is None
|
|
242
|
+
assert params.files == []
|
|
243
|
+
return params.model_dump(exclude_unset=True)
|
|
244
|
+
|
|
245
|
+
client = TestClient(app)
|
|
246
|
+
response = client.post(
|
|
247
|
+
"/",
|
|
248
|
+
content=EMPTY_FILE_FORM,
|
|
249
|
+
headers={"content-type": "multipart/form-data; boundary=boundary"},
|
|
250
|
+
)
|
|
251
|
+
assert response.status_code == 200
|
|
252
|
+
assert response.json() == {}
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def test_required_non_nullable_files():
|
|
256
|
+
app = FastAPI()
|
|
257
|
+
|
|
258
|
+
@app.post("/")
|
|
259
|
+
def upload(
|
|
260
|
+
file: Annotated[UploadFile, File()], files: Annotated[list[bytes], File()]
|
|
261
|
+
):
|
|
262
|
+
return {"file": file.size, "files": [len(value) for value in files]}
|
|
263
|
+
|
|
264
|
+
client = TestClient(app)
|
|
265
|
+
response = client.post(
|
|
266
|
+
"/",
|
|
267
|
+
content=EMPTY_FILE_FORM,
|
|
268
|
+
headers={"content-type": "multipart/form-data; boundary=boundary"},
|
|
269
|
+
)
|
|
270
|
+
assert response.status_code == 422
|
|
271
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
272
|
+
("missing", ["body", "file"]),
|
|
273
|
+
("missing", ["body", "files"]),
|
|
274
|
+
]
|
|
275
|
+
|
|
276
|
+
response = client.post(
|
|
277
|
+
"/",
|
|
278
|
+
files=[("file", ("empty.txt", b"")), ("files", ("empty.txt", b""))],
|
|
279
|
+
)
|
|
280
|
+
assert response.status_code == 200
|
|
281
|
+
assert response.json() == {"file": 0, "files": [0]}
|
|
282
|
+
|
|
283
|
+
|
|
194
284
|
def test_openapi_schema():
|
|
195
285
|
response = client.get("/openapi.json")
|
|
196
286
|
assert response.status_code == 200, response.text
|