fastapi 0.151.0__tar.gz → 0.153.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.151.0 → fastapi-0.153.0}/PKG-INFO +1 -1
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/__init__.py +1 -1
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/dependencies/utils.py +99 -28
- {fastapi-0.151.0 → fastapi-0.153.0}/pyproject.toml +1 -1
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_query_cookie_header_model_extra_params.py +1 -1
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/test_nullable_and_defaults.py +39 -2
- fastapi-0.153.0/tests/test_request_params/test_header/test_nullable_and_defaults.py +227 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_param_models/test_tutorial001.py +1 -1
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_param_models/test_tutorial002.py +1 -1
- fastapi-0.153.0/tests/test_union_form_normalization.py +762 -0
- fastapi-0.151.0/tests/test_request_params/test_header/test_nullable_and_defaults.py +0 -64
- {fastapi-0.151.0 → fastapi-0.153.0}/LICENSE +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/README.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs/en/docs/img/favicon.png +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_responses/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_responses/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_responses/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_responses/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_responses/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_status_codes/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_status_codes/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/additional_status_codes/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/advanced_middleware/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/advanced_middleware/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/advanced_middleware/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/advanced_middleware/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_a_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_a_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_a_py310/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_b_an_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_b_an_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_b_an_py310/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_b_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_b_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/app_b_py310/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/app_testing/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/async_tests/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/async_tests/app_a_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/async_tests/app_a_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/async_tests/app_a_py310/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/authentication_error_status_code/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/authentication_error_status_code/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/background_tasks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/background_tasks/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/background_tasks/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/background_tasks/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/behind_a_proxy/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/behind_a_proxy/tutorial001_01_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/behind_a_proxy/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/behind_a_proxy/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/behind_a_proxy/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/behind_a_proxy/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/dependencies.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/internal/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/internal/admin.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/routers/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/routers/items.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/bigger_applications/app_an_py310/routers/users.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_fields/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_fields/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_fields/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial005_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_multiple_params/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial008_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_nested_models/tutorial009_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_updates/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_updates/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/body_updates/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/conditional_openapi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/conditional_openapi/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/configure_swagger_ui/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/configure_swagger_ui/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/configure_swagger_ui/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/configure_swagger_ui/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_param_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_param_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_param_models/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_param_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_param_models/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_params/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cookie_params/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cors/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/cors/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_docs_ui/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_docs_ui/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_docs_ui/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_request_and_route/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_request_and_route/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_request_and_route/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_request_and_route/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_request_and_route/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_request_and_route/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial001b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial006b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial006c_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial008_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial009_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial009b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial009c_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/custom_response/tutorial010_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dataclasses_/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dataclasses_/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dataclasses_/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dataclasses_/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/debugging/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/debugging/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial001_02_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial005_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial006_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008b_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008c_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008c_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008d_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008d_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008e_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial008e_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial010_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial011_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial011_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial012_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial012_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial013_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependencies/tutorial014_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependency_testing/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependency_testing/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/dependency_testing/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/encoder/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/encoder/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/events/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/events/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/events/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/events/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extending_openapi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extending_openapi/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_data_types/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_data_types/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_data_types/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_models/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_models/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_models/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_models/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/extra_models/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/first_steps/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/first_steps/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/first_steps/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/frontend/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/generate_clients/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/generate_clients/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/generate_clients/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/generate_clients/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/generate_clients/tutorial004.js +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/generate_clients/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/graphql_/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/graphql_/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/handling_errors/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_param_models/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/header_params/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/json_base64_bytes/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/json_base64_bytes/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/metadata/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/metadata/tutorial001_1_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/metadata/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/metadata/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/metadata/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/metadata/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/middleware/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/middleware/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/openapi_callbacks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/openapi_callbacks/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/openapi_webhooks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/openapi_webhooks/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/opentelemetry/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/opentelemetry/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/opentelemetry/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_advanced_configuration/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial002b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_operation_configuration/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/tutorial003b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial005_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial006_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/path_params_numeric_validations/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/pydantic_v1_in_v2/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/pydantic_v1_in_v2/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/pydantic_v1_in_v2/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/pydantic_v1_in_v2/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/pydantic_v1_in_v2/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial008_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial008b_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial009_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial010_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial011_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/python_types/tutorial013_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_param_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_param_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_param_models/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_param_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_param_models/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial005_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial006_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial006c_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial006c_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial007_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial008_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial008_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial009_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial009_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial010_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial010_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial011_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial011_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial012_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial012_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial013_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial013_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial014_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial014_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/query_params_str_validations/tutorial015_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial001_02_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial001_02_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial001_03_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial001_03_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_files/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_form_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_form_models/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_form_models/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_form_models/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_form_models/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_forms/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_forms/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_forms/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_forms_and_files/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_forms_and_files/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/request_forms_and_files/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_change_status_code/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_change_status_code/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_cookies/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_cookies/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_cookies/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_directly/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_directly/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_directly/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_headers/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_headers/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_headers/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial001_01_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial003_01_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial003_02_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial003_03_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial003_04_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial003_05_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_model/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_status_code/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_status_code/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/response_status_code/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial005_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/schema_extra_example/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial003_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial004_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial005_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial006_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial006_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial007_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/security/tutorial007_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/separate_openapi_schemas/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/separate_openapi_schemas/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/separate_openapi_schemas/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/server_sent_events/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/server_sent_events/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/server_sent_events/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/server_sent_events/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/server_sent_events/tutorial004_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/server_sent_events/tutorial005_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app01_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app01_py310/config.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app01_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_an_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_an_py310/config.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_an_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_an_py310/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_py310/config.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app02_py310/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app03_an_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app03_an_py310/config.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app03_an_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app03_py310/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app03_py310/config.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/app03_py310/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/settings/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sql_databases/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sql_databases/tutorial001_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sql_databases/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sql_databases/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sql_databases/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/static_files/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/static_files/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/stream_data/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/stream_data/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/stream_data/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/stream_json_lines/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/stream_json_lines/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/strict_content_type/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/strict_content_type/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sub_applications/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/sub_applications/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/static/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/static/styles.css +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/templates/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/templates/item.html +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/templates/item_path.html +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/templates/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/using_request_directly/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/using_request_directly/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/websockets_/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/websockets_/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/websockets_/tutorial002_an_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/websockets_/tutorial002_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/websockets_/tutorial003_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/wsgi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/docs_src/wsgi/tutorial001_py310.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/SKILL.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/references/dependencies.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/references/other-tools.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/references/path-operations.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/references/pydantic.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/references/responses.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/.agents/skills/fastapi/references/streaming.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/__main__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/_compat/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/_compat/shared.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/_compat/v2.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/applications.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/background.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/cli.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/concurrency.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/datastructures.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/dependencies/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/dependencies/models.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/encoders.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/exception_handlers.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/exceptions.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/logger.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/asyncexitstack.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/cors.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/gzip.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/httpsredirect.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/trustedhost.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/middleware/wsgi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/openapi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/openapi/constants.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/openapi/docs.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/openapi/models.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/openapi/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/param_functions.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/params.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/py.typed +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/requests.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/responses.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/routing.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/api_key.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/base.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/http.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/oauth2.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/open_id_connect_url.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/security/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/sse.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/staticfiles.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/telemetry/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/telemetry/_api.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/telemetry/_asgi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/telemetry/_runtime.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/templating.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/testclient.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/types.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/fastapi/websockets.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/add_latest_release_date.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/deploy_docs_status.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/doc_parsing_utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/docs.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/format.sh +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/general-llm-prompt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/label_approved.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/lint.sh +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/notify_translations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/cookie_param_models/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/header_param_models/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/json_base64_bytes/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/query_param_models/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/request_form_models/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/separate_openapi_schemas/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/separate_openapi_schemas/image02.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/separate_openapi_schemas/image03.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/separate_openapi_schemas/image04.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/separate_openapi_schemas/image05.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/sql_databases/image01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/playwright/sql_databases/image02.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/prepare_release.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/sponsors.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/test-cov-html.sh +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/test-cov.sh +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/test.sh +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/conftest.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/en_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_lines_number_gt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_lines_number_lt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_mermaid_not_translated.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_mermaid_translated.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_wrong_lang_code.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_wrong_lang_code_2.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_lines_number_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_mermaid.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_number_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_wrong_lang_code.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_includes/data/en_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_includes/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_includes/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_code_includes/test_number_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_complex_doc/data/en_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_complex_doc/data/translated_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_complex_doc/data/translated_doc_expected.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_complex_doc/test_compex_doc.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/en_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_level_mismatch_1.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_level_mismatch_2.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/test_header_level_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_header_permalinks/test_header_number_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_html_links/data/en_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_html_links/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_html_links/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_html_links/test_html_links_number_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/en_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc_number_gt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc_number_lt.md +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/tests/test_translation_fixer/test_markdown_links/test_mkd_links_number_mismatch.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/topic_repos.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/translate.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/translation_fixer.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/scripts/translation_git.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/benchmarks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/benchmarks/test_general_performance.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/benchmarks/test_openapi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/benchmarks/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/forward_reference_type.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/memory_benchmarks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/memory_benchmarks/test_dependency_graph.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/memory_benchmarks/test_openapi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/memory_benchmarks/test_route_dependency_graph.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_properties.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_properties_bool.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_response_extra.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_bad.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_custom_model_in_callback.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_custom_validationerror.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_default_validationerror.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_response_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_router.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_additional_responses_union_duplicate_anyof.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_allow_inf_nan_in_enforcing.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_ambiguous_params.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_annotated.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_application.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_arbitrary_types.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_callable_endpoint.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_compat.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_computed_fields.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_custom_middleware_exception.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_custom_route_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_custom_schema_fields.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_custom_swagger_ui_redirect.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_datastructures.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_datetime_custom_encoder.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_default_response_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_default_response_class_router.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependencies_utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_after_yield_raise.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_after_yield_streaming.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_after_yield_websockets.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_cache.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_contextmanager.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_contextvars.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_duplicates.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_models.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_overrides.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_paramless.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_partial.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_pep695.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_security_overrides.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_wrapped.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_yield_except_httpexception.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_yield_scope.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dependency_yield_scope_websockets.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_depends_hashable.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_deprecated_responses.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_dump_json_fast_path.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_duplicate_models_openapi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_empty_router.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_enforce_once_required_parameter.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_exception_handlers.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_extra_routes.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_fastapi_cli.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_file_and_form_order_issue_9116.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_filter_pydantic_sub_model_pv2.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_form_default.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_forms_from_non_typing_sequences.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_forms_single_model.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_forms_single_param.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_frontend.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_generate_unique_id_function.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_generic_parameterless_depends.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_get_model_definitions_formfeed_escape.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_get_request_body.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_http_connection_injection.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_include_route.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_include_router_defaults_overrides.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_infer_param_optionality.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_inherited_custom_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_invalid_path_param.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_invalid_sequence_param.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_json_type.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_jsonable_encoder.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_list_bytes_file_order_preserved_issue_14811.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_local_docs.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_modules_same_name_body/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_modules_same_name_body/app/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_modules_same_name_body/app/a.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_modules_same_name_body/app/b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_modules_same_name_body/app/main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_modules_same_name_body/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_multi_body_errors.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_multi_query_errors.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_multipart_installation.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_nested_annotated_in_sequence.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_no_schema_split.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_no_swagger_ui_redirect.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_cache_root_path.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_examples.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_model_description_trim_on_formfeed.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_query_parameter_extension.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_route_extensions.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_schema_type.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_separate_input_output_schemas.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_openapi_servers.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_operations_signatures.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_optional_file_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_orjson_response_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_param_class.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_param_in_path_and_dependency.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_param_include_in_schema.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_params_repr.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_path.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_prepare_release.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_put_no_body.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_pydantic_v1_error.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_pydanticv2_dataclasses_uuid_stringified_annotations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_query.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_read_with_orm_mode.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_regex_deprecated_body.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_regex_deprecated_params.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_repeated_cookie_headers.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_repeated_dependency_schema.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_repeated_parameter_alias.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_body_parameters_media_type.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_param_model_by_alias.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/test_nullable_and_defaults.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/test_optional_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/test_required_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_body/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_cookie/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_cookie/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_cookie/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_cookie/test_optional_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_cookie/test_required_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_default_validation.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/test_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/test_required.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_file/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/test_nullable_and_defaults.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/test_optional_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/test_required_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_form/utils.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_header/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_header/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_header/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_header/test_optional_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_header/test_required_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_nullable_and_defaults.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_path/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_path/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_path/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_path/test_optional_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_path/test_required_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_query/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_query/test_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_query/test_optional_list.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_query/test_optional_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_request_params/test_query/test_required_str.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_required_noneable.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_by_alias.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_change_status_code.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_class_no_mediatype.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_code_no_body.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_dependency.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_as_return_annotation.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_data_filter.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_data_filter_no_inheritance.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_default_factory.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_include_exclude.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_invalid.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_model_sub_types.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_response_set_response_code_empty.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_return_none_stringified_annotations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_route_handler_wrapping.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_route_scope.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_router_circular_import.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_router_events.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_router_include_context.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_router_prefix_with_template.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_router_redirect_slashes.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_schema_compat_pydantic_v2.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_schema_extra_examples.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_schema_ref_pydantic_v2.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_cookie.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_cookie_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_cookie_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_header.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_header_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_header_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_query.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_query_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_api_key_query_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_base.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_base_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_base_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_basic_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_basic_realm.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_basic_realm_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_bearer.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_bearer_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_bearer_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_digest.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_digest_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_http_digest_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_authorization_code_bearer.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_authorization_code_bearer_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_authorization_code_bearer_scopes_openapi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_authorization_code_bearer_scopes_openapi_simple.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_optional_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_password_bearer_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_oauth2_password_bearer_optional_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_openid_connect.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_openid_connect_description.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_openid_connect_optional.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_scopes.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_scopes_dont_propagate.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_scopes_sub_dependency.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_security_websockets.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_serialize_response.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_serialize_response_dataclass.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_serialize_response_model.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_skip_defaults.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_sse.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_starlette_exception.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_starlette_urlconvertors.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stream_bare_type.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stream_cancellation.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stream_json_validation_error.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stream_non_finite_floats.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stream_status_code.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_strict_content_type_app_level.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_strict_content_type_nested.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_strict_content_type_router_level.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stringified_annotation_dependency.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stringified_annotation_dependency_py314.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_stringified_annotations_simple.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_sub_callbacks.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_swagger_ui_escape.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_swagger_ui_init_oauth.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/_otlp.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/_subprocess.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/conftest.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_background.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_data.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_environment_integrations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_exceptions.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_http.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_integrations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_native_integrations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_operations.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_runtime.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_semantic_conventions.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_tracer.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_telemetry/test_websockets.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_top_level_security_scheme_in_openapi.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_translate.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tuples.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_responses/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_responses/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_responses/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_responses/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_responses/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_status_codes/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_additional_status_codes/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_advanced_middleware/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_advanced_middleware/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_advanced_middleware/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_advanced_middleware/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_async_tests/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_async_tests/test_main_a.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_authentication_error_status_code/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_authentication_error_status_code/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_background_tasks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_background_tasks/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_background_tasks/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_behind_a_proxy/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001_01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_behind_a_proxy/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_bigger_applications/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_bigger_applications/test_main.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_fields/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_fields/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_multiple_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_multiple_params/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial001_tutorial002_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial008.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_nested_models/test_tutorial009.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_updates/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_updates/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_body_updates/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_conditional_openapi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_conditional_openapi/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_configure_swagger_ui/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cookie_param_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cookie_param_models/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cookie_param_models/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cookie_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cookie_params/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cors/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_cors/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_docs_ui/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_docs_ui/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_docs_ui/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_request_and_route/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_request_and_route/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_request_and_route/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_request_and_route/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial001b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial002_tutorial003_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial006b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial006c.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial008.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial009.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial009b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial009c.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_custom_response/test_tutorial010.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dataclasses/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dataclasses/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dataclasses/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dataclasses/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_debugging/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_debugging/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial001_tutorial001_02.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial002_tutorial003_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial008.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial008b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial008c.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial008d.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial008e.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial010.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial011.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_dependencies/test_tutorial012.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_encoder/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_encoder/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_events/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_events/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_events/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_events/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extending_openapi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extending_openapi/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_data_types/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_data_types/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_models/test_tutorial001_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_models/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_models/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_extra_models/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_first_steps/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_first_steps/test_tutorial001_tutorial002_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_generate_clients/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_generate_clients/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_generate_clients/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_generate_clients/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_generate_clients/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_graphql/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_graphql/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_handling_errors/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_param_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_param_models/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_params/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_params/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_header_params/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_json_base64_bytes/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_json_base64_bytes/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_metadata/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_metadata/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_metadata/test_tutorial001_1.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_metadata/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_metadata/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_metadata/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_middleware/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_middleware/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_openapi_callbacks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_openapi_webhooks/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_openapi_webhooks/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_opentelemetry/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_opentelemetry/conftest.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_opentelemetry/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_opentelemetry/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_opentelemetry/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial003_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_operation_configurations/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/test_tutorial003b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params_numeric_validations/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial002_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial001_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial008.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial008b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial009_tutorial009b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial010.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial011.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_python_types/test_tutorial013.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_param_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_param_models/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_param_models/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial006c.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial008.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial009.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_query_params_str_validations/test_tutorial015.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_files/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_files/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_files/test_tutorial001_02.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_files/test_tutorial001_03.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_files/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_files/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_form_models/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_form_models/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_form_models/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_forms/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_forms/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_forms_and_files/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_change_status_code/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_change_status_code/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_cookies/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_cookies/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_cookies/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_directly/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_directly/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_directly/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_headers/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_headers/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_headers/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial001_tutorial001_01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial003_01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial003_02.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial003_03.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial003_04.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial003_05.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_model/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_status_code/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_response_status_code/test_tutorial001_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_schema_extra_example/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_schema_extra_example/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial006.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_security/test_tutorial007.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_separate_openapi_schemas/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_server_sent_events/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_server_sent_events/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_server_sent_events/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_server_sent_events/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_server_sent_events/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_server_sent_events/test_tutorial005.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_settings/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_settings/test_app01.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_settings/test_app02.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_settings/test_app03.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_settings/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_sql_databases/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_sql_databases/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_sql_databases/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_static_files/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_static_files/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_stream_data/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_stream_data/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_stream_data/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_stream_json_lines/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_stream_json_lines/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_strict_content_type/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_strict_content_type/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_sub_applications/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_sub_applications/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_templates/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_templates/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_templates/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/test_main_a.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/test_main_b.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing/test_tutorial004.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing_dependencies/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_testing_dependencies/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_using_request_directly/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_using_request_directly/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_websockets/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_websockets/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_websockets/test_tutorial002.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_websockets/test_tutorial003.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_wsgi/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_tutorial/test_wsgi/test_tutorial001.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_typing_python39.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_union_body.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_union_body_discriminator.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_union_body_discriminator_annotated.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_union_forms.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_union_inherited_body.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_validate_response.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_validate_response_dataclass.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_validate_response_recursive/__init__.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_validate_response_recursive/app.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_validate_response_recursive/test_validate_response_recursive.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_validation_error_context.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_webhooks_security.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_wrapped_method_forward_reference.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_ws_dependencies.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/test_ws_router.py +0 -0
- {fastapi-0.151.0 → fastapi-0.153.0}/tests/utils.py +0 -0
|
@@ -15,6 +15,7 @@ from collections.abc import (
|
|
|
15
15
|
from contextlib import AsyncExitStack, contextmanager
|
|
16
16
|
from copy import copy, deepcopy
|
|
17
17
|
from dataclasses import dataclass
|
|
18
|
+
from functools import partial
|
|
18
19
|
from typing import (
|
|
19
20
|
Annotated,
|
|
20
21
|
Any,
|
|
@@ -69,7 +70,7 @@ from fastapi.logger import logger
|
|
|
69
70
|
from fastapi.security.oauth2 import SecurityScopes
|
|
70
71
|
from fastapi.types import DependencyCacheKey
|
|
71
72
|
from fastapi.utils import create_model_field, get_path_param_names
|
|
72
|
-
from pydantic import AliasChoices, AliasPath, BaseModel, Json
|
|
73
|
+
from pydantic import AliasChoices, AliasPath, BaseModel, BeforeValidator, Json, Tag
|
|
73
74
|
from pydantic.fields import FieldInfo
|
|
74
75
|
from starlette.background import BackgroundTasks as StarletteBackgroundTasks
|
|
75
76
|
from starlette.concurrency import run_in_threadpool
|
|
@@ -521,6 +522,10 @@ def analyze_param(
|
|
|
521
522
|
use_annotation_from_field_info = use_annotation
|
|
522
523
|
if isinstance(field_info, params.Form):
|
|
523
524
|
ensure_multipart_is_installed()
|
|
525
|
+
if is_union_of_base_models(field_info.annotation):
|
|
526
|
+
field_info.annotation = _add_form_union_validators(
|
|
527
|
+
field_info.annotation
|
|
528
|
+
)
|
|
524
529
|
if not field_info.alias and getattr(field_info, "convert_underscores", None):
|
|
525
530
|
alias = param_name.replace("_", "-")
|
|
526
531
|
else:
|
|
@@ -810,6 +815,7 @@ def request_params_to_args(
|
|
|
810
815
|
)
|
|
811
816
|
|
|
812
817
|
params_to_process: dict[str, Any] = {}
|
|
818
|
+
header_aliases: dict[str, str] = {}
|
|
813
819
|
|
|
814
820
|
processed_keys = set()
|
|
815
821
|
|
|
@@ -825,6 +831,7 @@ def request_params_to_args(
|
|
|
825
831
|
alias = get_validation_alias(field)
|
|
826
832
|
if alias == field.name:
|
|
827
833
|
alias = alias.replace("_", "-")
|
|
834
|
+
header_aliases[field.name] = alias
|
|
828
835
|
value = _get_multidict_value(field, received_params, alias=alias)
|
|
829
836
|
if value is not Undefined:
|
|
830
837
|
params_to_process[get_validation_alias(field)] = value
|
|
@@ -854,6 +861,18 @@ def request_params_to_args(
|
|
|
854
861
|
v_, errors_ = _validate_value_with_model_field(
|
|
855
862
|
field=first_field, value=params_to_process, values=values, loc=loc
|
|
856
863
|
)
|
|
864
|
+
if header_aliases and cast(
|
|
865
|
+
type[BaseModel], first_field.field_info.annotation
|
|
866
|
+
).model_config.get("loc_by_alias", True):
|
|
867
|
+
# Report the header names without changing model aliases or schema.
|
|
868
|
+
for error in errors_:
|
|
869
|
+
error_loc = error["loc"]
|
|
870
|
+
if len(error_loc) > 1 and error_loc[1] in header_aliases:
|
|
871
|
+
error["loc"] = (
|
|
872
|
+
error_loc[0],
|
|
873
|
+
header_aliases[error_loc[1]],
|
|
874
|
+
*error_loc[2:],
|
|
875
|
+
)
|
|
857
876
|
return {first_field.name: v_}, errors_
|
|
858
877
|
|
|
859
878
|
for field in fields:
|
|
@@ -886,12 +905,55 @@ def is_union_of_base_models(field_type: Any) -> bool:
|
|
|
886
905
|
union_args = get_args(field_type)
|
|
887
906
|
|
|
888
907
|
for arg in union_args:
|
|
908
|
+
if get_origin(arg) is Annotated:
|
|
909
|
+
arg = get_args(arg)[0]
|
|
889
910
|
if not lenient_issubclass(arg, BaseModel):
|
|
890
911
|
return False
|
|
891
912
|
|
|
892
913
|
return True
|
|
893
914
|
|
|
894
915
|
|
|
916
|
+
def _add_form_union_validators(annotation: Any) -> Any:
|
|
917
|
+
choices = []
|
|
918
|
+
for choice in get_args(annotation):
|
|
919
|
+
model = choice
|
|
920
|
+
metadata: Sequence[Any] = ()
|
|
921
|
+
if get_origin(choice) is Annotated:
|
|
922
|
+
model, *metadata = get_args(choice)
|
|
923
|
+
validator = BeforeValidator(partial(_normalize_form_model, model=model))
|
|
924
|
+
# Keep existing discriminator tags or model names in union errors.
|
|
925
|
+
tag = next(
|
|
926
|
+
(item for item in reversed(metadata) if isinstance(item, Tag)),
|
|
927
|
+
Tag(model.__name__),
|
|
928
|
+
)
|
|
929
|
+
choices.append(Annotated[choice, validator, tag])
|
|
930
|
+
return Union[tuple(choices)] # noqa: UP007
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
def _normalize_form_model(value: Any, *, model: type[BaseModel]) -> Any:
|
|
934
|
+
if isinstance(value, dict):
|
|
935
|
+
# Repeated form values must be interpreted separately by each union branch.
|
|
936
|
+
form_data = FormData(
|
|
937
|
+
[
|
|
938
|
+
(key, item)
|
|
939
|
+
for key, items in value.items()
|
|
940
|
+
for item in (items if isinstance(items, list) else [items])
|
|
941
|
+
]
|
|
942
|
+
)
|
|
943
|
+
normalized = {
|
|
944
|
+
alias: item
|
|
945
|
+
for alias, item, _ in _extract_form_items(
|
|
946
|
+
get_cached_model_fields(model), form_data
|
|
947
|
+
)
|
|
948
|
+
}
|
|
949
|
+
# These cannot come from browser form entries, but a validator can supply them.
|
|
950
|
+
for key, item in value.items():
|
|
951
|
+
if item is None or (isinstance(item, list) and not item):
|
|
952
|
+
normalized[key] = item
|
|
953
|
+
return normalized
|
|
954
|
+
return value
|
|
955
|
+
|
|
956
|
+
|
|
895
957
|
def _should_embed_body_fields(fields: list[ModelField]) -> bool:
|
|
896
958
|
if not fields:
|
|
897
959
|
return False
|
|
@@ -916,11 +978,10 @@ def _should_embed_body_fields(fields: list[ModelField]) -> bool:
|
|
|
916
978
|
return False
|
|
917
979
|
|
|
918
980
|
|
|
919
|
-
|
|
981
|
+
def _extract_form_items(
|
|
920
982
|
body_fields: list[ModelField],
|
|
921
983
|
received_body: FormData,
|
|
922
|
-
) ->
|
|
923
|
-
values: dict[str, Any] = {}
|
|
984
|
+
) -> Iterator[tuple[str, Any, ModelField | None]]:
|
|
924
985
|
field_aliases: set[str] = set()
|
|
925
986
|
|
|
926
987
|
for field in body_fields:
|
|
@@ -963,40 +1024,44 @@ async def _extract_form_body(
|
|
|
963
1024
|
value: Any = False
|
|
964
1025
|
else:
|
|
965
1026
|
value = _get_multidict_value(field, received_body, alias=alias)
|
|
966
|
-
field_info = field.field_info
|
|
967
|
-
if (
|
|
968
|
-
isinstance(field_info, params.File)
|
|
969
|
-
and is_bytes_or_nonable_bytes_annotation(field.field_info.annotation)
|
|
970
|
-
and isinstance(value, UploadFile)
|
|
971
|
-
):
|
|
972
|
-
value = await value.read()
|
|
973
|
-
elif (
|
|
974
|
-
is_bytes_sequence_annotation(field.field_info.annotation)
|
|
975
|
-
and isinstance(field_info, params.File)
|
|
976
|
-
and value_is_sequence(value)
|
|
977
|
-
):
|
|
978
|
-
# For types
|
|
979
|
-
assert isinstance(value, sequence_types)
|
|
980
|
-
results: list[bytes | str] = []
|
|
981
|
-
for sub_value in value:
|
|
982
|
-
if isinstance(sub_value, UploadFile):
|
|
983
|
-
results.append(await sub_value.read())
|
|
984
|
-
else:
|
|
985
|
-
results.append(sub_value)
|
|
986
|
-
value = serialize_sequence_value(field=field, value=results)
|
|
987
1027
|
if field.config is None:
|
|
988
1028
|
# Individual parameters are later looked up by their declared alias.
|
|
989
1029
|
alias = get_validation_alias(field)
|
|
990
1030
|
field_aliases.add(alias)
|
|
991
1031
|
if value is not Undefined:
|
|
992
|
-
|
|
1032
|
+
yield alias, value, field
|
|
993
1033
|
for key in received_body.keys():
|
|
994
1034
|
if key not in field_aliases:
|
|
995
1035
|
param_values = received_body.getlist(key)
|
|
996
1036
|
if len(param_values) == 1:
|
|
997
|
-
|
|
1037
|
+
yield key, param_values[0], None
|
|
998
1038
|
else:
|
|
999
|
-
|
|
1039
|
+
yield key, param_values, None
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
async def _extract_form_body(
|
|
1043
|
+
body_fields: list[ModelField],
|
|
1044
|
+
received_body: FormData,
|
|
1045
|
+
) -> dict[str, Any]:
|
|
1046
|
+
values: dict[str, Any] = {}
|
|
1047
|
+
for alias, value, field in _extract_form_items(body_fields, received_body):
|
|
1048
|
+
if field is not None and isinstance(field.field_info, params.File):
|
|
1049
|
+
if is_bytes_or_nonable_bytes_annotation(
|
|
1050
|
+
field.field_info.annotation
|
|
1051
|
+
) and isinstance(value, UploadFile):
|
|
1052
|
+
value = await value.read()
|
|
1053
|
+
elif is_bytes_sequence_annotation(
|
|
1054
|
+
field.field_info.annotation
|
|
1055
|
+
) and value_is_sequence(value):
|
|
1056
|
+
assert isinstance(value, sequence_types)
|
|
1057
|
+
results: list[bytes | str] = []
|
|
1058
|
+
for sub_value in value:
|
|
1059
|
+
if isinstance(sub_value, UploadFile):
|
|
1060
|
+
results.append(await sub_value.read())
|
|
1061
|
+
else:
|
|
1062
|
+
results.append(sub_value)
|
|
1063
|
+
value = serialize_sequence_value(field=field, value=results)
|
|
1064
|
+
values[alias] = value
|
|
1000
1065
|
return values
|
|
1001
1066
|
|
|
1002
1067
|
|
|
@@ -1022,6 +1087,12 @@ async def request_body_to_args(
|
|
|
1022
1087
|
fields_to_extract = get_cached_model_fields(first_field.field_info.annotation)
|
|
1023
1088
|
|
|
1024
1089
|
if isinstance(received_body, FormData):
|
|
1090
|
+
if single_not_embedded_field and is_union_of_base_models(
|
|
1091
|
+
first_field.field_info.annotation
|
|
1092
|
+
):
|
|
1093
|
+
# Preserve all form values for validators around the union.
|
|
1094
|
+
# Each branch applies its own model field extraction afterward.
|
|
1095
|
+
fields_to_extract = []
|
|
1025
1096
|
body_to_process = await _extract_form_body(fields_to_extract, received_body)
|
|
1026
1097
|
|
|
1027
1098
|
if single_not_embedded_field:
|
|
@@ -123,7 +123,7 @@ def test_header_model_rejects_underscore_header_with_convert_underscores():
|
|
|
123
123
|
)
|
|
124
124
|
|
|
125
125
|
assert resp.status_code == 422
|
|
126
|
-
assert resp.json()["detail"][0]["loc"] == ["header", "
|
|
126
|
+
assert resp.json()["detail"][0]["loc"] == ["header", "x-user-id"]
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
def test_cookie_pass_extra_list():
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from typing import Annotated
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
-
from fastapi import FastAPI, File, Form, UploadFile
|
|
4
|
+
from fastapi import FastAPI, File, Form, UploadFile, params
|
|
5
5
|
from fastapi.testclient import TestClient
|
|
6
6
|
from inline_snapshot import snapshot
|
|
7
|
-
from pydantic import BaseModel, Field
|
|
7
|
+
from pydantic import AliasChoices, BaseModel, ConfigDict, Field
|
|
8
8
|
|
|
9
9
|
app = FastAPI()
|
|
10
10
|
|
|
@@ -281,6 +281,43 @@ def test_required_non_nullable_files():
|
|
|
281
281
|
assert response.json() == {"file": 0, "files": [0]}
|
|
282
282
|
|
|
283
283
|
|
|
284
|
+
@pytest.mark.parametrize(
|
|
285
|
+
"file_alias,files_alias",
|
|
286
|
+
[("primary", "primary-files"), ("secondary", "secondary-files"), ("file", "files")],
|
|
287
|
+
)
|
|
288
|
+
def test_model_bytes_files_use_validation_aliases(file_alias, files_alias):
|
|
289
|
+
app = FastAPI()
|
|
290
|
+
|
|
291
|
+
class FileModel(BaseModel):
|
|
292
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
293
|
+
file: Annotated[
|
|
294
|
+
bytes, File(validation_alias=AliasChoices("primary", "secondary"))
|
|
295
|
+
]
|
|
296
|
+
files: Annotated[
|
|
297
|
+
list[bytes],
|
|
298
|
+
File(validation_alias=AliasChoices("primary-files", "secondary-files")),
|
|
299
|
+
]
|
|
300
|
+
|
|
301
|
+
if not isinstance(FileModel.model_fields["file"], params.File):
|
|
302
|
+
pytest.skip("This Pydantic version does not preserve File metadata in models")
|
|
303
|
+
|
|
304
|
+
@app.post("/")
|
|
305
|
+
def read_form(data: Annotated[FileModel, Form()]):
|
|
306
|
+
return data
|
|
307
|
+
|
|
308
|
+
client = TestClient(app)
|
|
309
|
+
response = client.post(
|
|
310
|
+
"/",
|
|
311
|
+
files=[
|
|
312
|
+
(file_alias, ("one.txt", b"one")),
|
|
313
|
+
(files_alias, ("two.txt", b"two")),
|
|
314
|
+
(files_alias, ("three.txt", b"three")),
|
|
315
|
+
],
|
|
316
|
+
)
|
|
317
|
+
assert response.status_code == 200
|
|
318
|
+
assert response.json() == {"file": "one", "files": ["two", "three"]}
|
|
319
|
+
|
|
320
|
+
|
|
284
321
|
def test_openapi_schema():
|
|
285
322
|
response = client.get("/openapi.json")
|
|
286
323
|
assert response.status_code == 200, response.text
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
from typing import Annotated
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
from fastapi import FastAPI, Header
|
|
5
|
+
from fastapi.testclient import TestClient
|
|
6
|
+
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
7
|
+
|
|
8
|
+
app = FastAPI()
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@app.get("/parameter")
|
|
12
|
+
def read_parameter(int_val: Annotated[int | None, Header()]):
|
|
13
|
+
return int_val
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Model(BaseModel):
|
|
17
|
+
int_val: int | None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@app.get("/model")
|
|
21
|
+
def read_model(params: Annotated[Model, Header()]):
|
|
22
|
+
return params.int_val
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
client = TestClient(app)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@pytest.mark.parametrize(
|
|
29
|
+
"path,title", [("/parameter", "Int-Val"), ("/model", "Int Val")]
|
|
30
|
+
)
|
|
31
|
+
def test_nullable_header_uses_hyphenated_name(path, title):
|
|
32
|
+
response = client.get(path, headers={"int-val": "0"})
|
|
33
|
+
assert response.status_code == 200
|
|
34
|
+
assert response.json() == 0
|
|
35
|
+
response = client.get("/openapi.json")
|
|
36
|
+
assert response.status_code == 200, response.text
|
|
37
|
+
field = response.json()["paths"][path]["get"]["parameters"][0]
|
|
38
|
+
assert field["name"] == "int-val"
|
|
39
|
+
assert field["in"] == "header"
|
|
40
|
+
assert field["required"] is True
|
|
41
|
+
assert field["schema"]["title"] == title
|
|
42
|
+
assert field["schema"]["anyOf"] == [{"type": "integer"}, {"type": "null"}]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@pytest.mark.parametrize("path", ["/parameter", "/model"])
|
|
46
|
+
@pytest.mark.parametrize(
|
|
47
|
+
"headers,error_type",
|
|
48
|
+
[({}, "missing"), ({"int-val": "invalid"}, "int_parsing")],
|
|
49
|
+
)
|
|
50
|
+
def test_nullable_header_error_uses_hyphenated_name(path, headers, error_type):
|
|
51
|
+
response = client.get(path, headers=headers)
|
|
52
|
+
assert response.status_code == 422
|
|
53
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
54
|
+
(error_type, ["header", "int-val"]),
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@pytest.mark.parametrize(
|
|
59
|
+
"headers,error_type",
|
|
60
|
+
[({}, "missing"), ({"int_val": "invalid"}, "int_parsing")],
|
|
61
|
+
)
|
|
62
|
+
def test_header_model_without_underscore_conversion(headers, error_type):
|
|
63
|
+
app = FastAPI()
|
|
64
|
+
|
|
65
|
+
@app.get("/")
|
|
66
|
+
def read_model(params: Annotated[Model, Header(convert_underscores=False)]):
|
|
67
|
+
return params.int_val
|
|
68
|
+
|
|
69
|
+
client = TestClient(app)
|
|
70
|
+
response = client.get("/", headers={"int_val": "1"})
|
|
71
|
+
assert response.status_code == 200
|
|
72
|
+
assert response.json() == 1
|
|
73
|
+
|
|
74
|
+
response = client.get("/", headers=headers)
|
|
75
|
+
assert response.status_code == 422
|
|
76
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
77
|
+
(error_type, ["header", "int_val"]),
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@pytest.mark.parametrize(
|
|
82
|
+
"headers,error_type",
|
|
83
|
+
[
|
|
84
|
+
({}, "missing"),
|
|
85
|
+
(
|
|
86
|
+
{"int-val": "invalid", "x_count": "invalid", "x_total": "invalid"},
|
|
87
|
+
"int_parsing",
|
|
88
|
+
),
|
|
89
|
+
],
|
|
90
|
+
)
|
|
91
|
+
def test_header_model_preserves_explicit_aliases(headers, error_type):
|
|
92
|
+
app = FastAPI()
|
|
93
|
+
|
|
94
|
+
class AliasHeaders(BaseModel):
|
|
95
|
+
int_val: int
|
|
96
|
+
count: Annotated[int, Field(alias="x_count")]
|
|
97
|
+
total: Annotated[int, Field(alias="unused", validation_alias="x_total")]
|
|
98
|
+
|
|
99
|
+
@app.get("/")
|
|
100
|
+
def read_model(params: Annotated[AliasHeaders, Header()]):
|
|
101
|
+
return params
|
|
102
|
+
|
|
103
|
+
client = TestClient(app)
|
|
104
|
+
response = client.get("/", headers={"int-val": "1", "x_count": "2", "x_total": "3"})
|
|
105
|
+
assert response.status_code == 200
|
|
106
|
+
assert response.json() == {"int_val": 1, "x_count": 2, "unused": 3}
|
|
107
|
+
|
|
108
|
+
response = client.get("/", headers=headers)
|
|
109
|
+
assert response.status_code == 422
|
|
110
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
111
|
+
(error_type, ["header", "int-val"]),
|
|
112
|
+
(error_type, ["header", "x_count"]),
|
|
113
|
+
(error_type, ["header", "x_total"]),
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
@pytest.mark.parametrize(
|
|
118
|
+
"headers,error_type",
|
|
119
|
+
[({}, "missing"), ({"int-val": "invalid", "x_count": "invalid"}, "int_parsing")],
|
|
120
|
+
)
|
|
121
|
+
def test_header_model_can_report_python_field_names(headers, error_type):
|
|
122
|
+
app = FastAPI()
|
|
123
|
+
|
|
124
|
+
class NameLocationHeaders(BaseModel):
|
|
125
|
+
model_config = ConfigDict(loc_by_alias=False)
|
|
126
|
+
int_val: int
|
|
127
|
+
item_count: Annotated[int, Field(alias="x_count")]
|
|
128
|
+
|
|
129
|
+
@app.get("/")
|
|
130
|
+
def read_model(params: Annotated[NameLocationHeaders, Header()]):
|
|
131
|
+
return params
|
|
132
|
+
|
|
133
|
+
client = TestClient(app)
|
|
134
|
+
response = client.get("/", headers={"int-val": "1", "x_count": "2"})
|
|
135
|
+
assert response.status_code == 200
|
|
136
|
+
assert response.json() == {"int_val": 1, "x_count": 2}
|
|
137
|
+
|
|
138
|
+
response = client.get("/", headers=headers)
|
|
139
|
+
assert response.status_code == 422
|
|
140
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
141
|
+
(error_type, ["header", "int_val"]),
|
|
142
|
+
(error_type, ["header", "item_count"]),
|
|
143
|
+
]
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def test_header_model_list_error_preserves_item_index():
|
|
147
|
+
app = FastAPI()
|
|
148
|
+
|
|
149
|
+
class ListHeaders(BaseModel):
|
|
150
|
+
item_ids: list[int]
|
|
151
|
+
|
|
152
|
+
@app.get("/")
|
|
153
|
+
def read_model(params: Annotated[ListHeaders, Header()]):
|
|
154
|
+
return params.item_ids
|
|
155
|
+
|
|
156
|
+
client = TestClient(app)
|
|
157
|
+
response = client.get("/", headers=[("item-ids", "1"), ("item-ids", "2")])
|
|
158
|
+
assert response.status_code == 200
|
|
159
|
+
assert response.json() == [1, 2]
|
|
160
|
+
|
|
161
|
+
response = client.get("/", headers=[("item-ids", "1"), ("item-ids", "invalid")])
|
|
162
|
+
assert response.status_code == 422
|
|
163
|
+
assert response.json() == {
|
|
164
|
+
"detail": [
|
|
165
|
+
{
|
|
166
|
+
"type": "int_parsing",
|
|
167
|
+
"loc": ["header", "item-ids", 1],
|
|
168
|
+
"msg": "Input should be a valid integer, unable to parse string as an integer",
|
|
169
|
+
"input": "invalid",
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def test_header_model_validation_error_has_no_field_location():
|
|
176
|
+
app = FastAPI()
|
|
177
|
+
|
|
178
|
+
class RangeHeaders(BaseModel):
|
|
179
|
+
range_start: int
|
|
180
|
+
range_end: int
|
|
181
|
+
|
|
182
|
+
@model_validator(mode="after")
|
|
183
|
+
def validate_range(self):
|
|
184
|
+
if self.range_start > self.range_end:
|
|
185
|
+
raise ValueError("range_start must not exceed range_end")
|
|
186
|
+
return self
|
|
187
|
+
|
|
188
|
+
@app.get("/")
|
|
189
|
+
def read_model(params: Annotated[RangeHeaders, Header()]):
|
|
190
|
+
return params
|
|
191
|
+
|
|
192
|
+
client = TestClient(app)
|
|
193
|
+
response = client.get("/", headers={"range-start": "1", "range-end": "2"})
|
|
194
|
+
assert response.status_code == 200
|
|
195
|
+
assert response.json() == {"range_start": 1, "range_end": 2}
|
|
196
|
+
|
|
197
|
+
response = client.get("/", headers={"range-start": "2", "range-end": "1"})
|
|
198
|
+
assert response.status_code == 422
|
|
199
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
200
|
+
("value_error", ["header"]),
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def test_header_model_extra_error_preserves_header_name():
|
|
205
|
+
app = FastAPI()
|
|
206
|
+
|
|
207
|
+
class StrictHeaders(BaseModel):
|
|
208
|
+
model_config = ConfigDict(extra="forbid")
|
|
209
|
+
host: str
|
|
210
|
+
int_val: int
|
|
211
|
+
|
|
212
|
+
@app.get("/")
|
|
213
|
+
def read_model(params: Annotated[StrictHeaders, Header()]):
|
|
214
|
+
return params.int_val
|
|
215
|
+
|
|
216
|
+
client = TestClient(app)
|
|
217
|
+
client.headers.clear()
|
|
218
|
+
response = client.get("/", headers={"int-val": "1"})
|
|
219
|
+
assert response.status_code == 200
|
|
220
|
+
assert response.json() == 1
|
|
221
|
+
|
|
222
|
+
response = client.get("/", headers={"int-val": "invalid", "extra_header": "value"})
|
|
223
|
+
assert response.status_code == 422
|
|
224
|
+
assert [(error["type"], error["loc"]) for error in response.json()["detail"]] == [
|
|
225
|
+
("int_parsing", ["header", "int-val"]),
|
|
226
|
+
("extra_forbidden", ["header", "extra_header"]),
|
|
227
|
+
]
|