fastapi 0.159.0__tar.gz → 0.159.1__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.
Files changed (1262) hide show
  1. {fastapi-0.159.0 → fastapi-0.159.1}/PKG-INFO +1 -1
  2. fastapi-0.159.1/docs_src/request_form_models/tutorial006_an_py310.py +23 -0
  3. fastapi-0.159.1/docs_src/request_form_models/tutorial006_py310.py +23 -0
  4. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/__init__.py +1 -1
  5. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/dependencies/utils.py +60 -34
  6. {fastapi-0.159.0 → fastapi-0.159.1}/pyproject.toml +1 -1
  7. fastapi-0.159.1/tests/test_forms_optional_unions.py +413 -0
  8. fastapi-0.159.1/tests/test_tutorial/test_request_form_models/test_tutorial006.py +49 -0
  9. {fastapi-0.159.0 → fastapi-0.159.1}/LICENSE +0 -0
  10. {fastapi-0.159.0 → fastapi-0.159.1}/README.md +0 -0
  11. {fastapi-0.159.0 → fastapi-0.159.1}/docs/en/docs/img/favicon.png +0 -0
  12. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_responses/__init__.py +0 -0
  13. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_responses/tutorial001_py310.py +0 -0
  14. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_responses/tutorial002_py310.py +0 -0
  15. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_responses/tutorial003_py310.py +0 -0
  16. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_responses/tutorial004_py310.py +0 -0
  17. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_status_codes/__init__.py +0 -0
  18. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_status_codes/tutorial001_an_py310.py +0 -0
  19. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/additional_status_codes/tutorial001_py310.py +0 -0
  20. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/advanced_middleware/__init__.py +0 -0
  21. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/advanced_middleware/tutorial001_py310.py +0 -0
  22. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/advanced_middleware/tutorial002_py310.py +0 -0
  23. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/advanced_middleware/tutorial003_py310.py +0 -0
  24. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/__init__.py +0 -0
  25. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_a_py310/__init__.py +0 -0
  26. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_a_py310/main.py +0 -0
  27. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_a_py310/test_main.py +0 -0
  28. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_b_an_py310/__init__.py +0 -0
  29. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_b_an_py310/main.py +0 -0
  30. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_b_an_py310/test_main.py +0 -0
  31. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_b_py310/__init__.py +0 -0
  32. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_b_py310/main.py +0 -0
  33. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/app_b_py310/test_main.py +0 -0
  34. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/tutorial001_py310.py +0 -0
  35. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/tutorial002_py310.py +0 -0
  36. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/tutorial003_py310.py +0 -0
  37. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/app_testing/tutorial004_py310.py +0 -0
  38. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/async_tests/__init__.py +0 -0
  39. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/async_tests/app_a_py310/__init__.py +0 -0
  40. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/async_tests/app_a_py310/main.py +0 -0
  41. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/async_tests/app_a_py310/test_main.py +0 -0
  42. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/authentication_error_status_code/__init__.py +0 -0
  43. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/authentication_error_status_code/tutorial001_an_py310.py +0 -0
  44. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/background_tasks/__init__.py +0 -0
  45. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/background_tasks/tutorial001_py310.py +0 -0
  46. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/background_tasks/tutorial002_an_py310.py +0 -0
  47. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/background_tasks/tutorial002_py310.py +0 -0
  48. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/behind_a_proxy/__init__.py +0 -0
  49. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/behind_a_proxy/tutorial001_01_py310.py +0 -0
  50. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/behind_a_proxy/tutorial001_py310.py +0 -0
  51. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/behind_a_proxy/tutorial002_py310.py +0 -0
  52. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/behind_a_proxy/tutorial003_py310.py +0 -0
  53. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/behind_a_proxy/tutorial004_py310.py +0 -0
  54. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/__init__.py +0 -0
  55. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/__init__.py +0 -0
  56. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/dependencies.py +0 -0
  57. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/internal/__init__.py +0 -0
  58. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/internal/admin.py +0 -0
  59. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/main.py +0 -0
  60. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/routers/__init__.py +0 -0
  61. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/routers/items.py +0 -0
  62. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/bigger_applications/app_an_py310/routers/users.py +0 -0
  63. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body/__init__.py +0 -0
  64. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body/tutorial001_py310.py +0 -0
  65. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body/tutorial002_py310.py +0 -0
  66. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body/tutorial003_py310.py +0 -0
  67. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body/tutorial004_py310.py +0 -0
  68. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_fields/__init__.py +0 -0
  69. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_fields/tutorial001_an_py310.py +0 -0
  70. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_fields/tutorial001_py310.py +0 -0
  71. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/__init__.py +0 -0
  72. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial001_an_py310.py +0 -0
  73. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial001_py310.py +0 -0
  74. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial002_py310.py +0 -0
  75. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial003_an_py310.py +0 -0
  76. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial003_py310.py +0 -0
  77. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial004_an_py310.py +0 -0
  78. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial004_py310.py +0 -0
  79. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial005_an_py310.py +0 -0
  80. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_multiple_params/tutorial005_py310.py +0 -0
  81. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/__init__.py +0 -0
  82. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial001_py310.py +0 -0
  83. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial002_py310.py +0 -0
  84. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial003_py310.py +0 -0
  85. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial004_py310.py +0 -0
  86. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial005_py310.py +0 -0
  87. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial006_py310.py +0 -0
  88. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial007_py310.py +0 -0
  89. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial008_py310.py +0 -0
  90. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_nested_models/tutorial009_py310.py +0 -0
  91. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_updates/__init__.py +0 -0
  92. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_updates/tutorial001_py310.py +0 -0
  93. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/body_updates/tutorial002_py310.py +0 -0
  94. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/conditional_openapi/__init__.py +0 -0
  95. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/conditional_openapi/tutorial001_py310.py +0 -0
  96. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/configure_swagger_ui/__init__.py +0 -0
  97. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/configure_swagger_ui/tutorial001_py310.py +0 -0
  98. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/configure_swagger_ui/tutorial002_py310.py +0 -0
  99. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/configure_swagger_ui/tutorial003_py310.py +0 -0
  100. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/__init__.py +0 -0
  101. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/tutorial001_an_py310.py +0 -0
  102. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/tutorial001_py310.py +0 -0
  103. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/tutorial002_an_py310.py +0 -0
  104. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/tutorial002_py310.py +0 -0
  105. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/tutorial003_an_py310.py +0 -0
  106. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_param_models/tutorial003_py310.py +0 -0
  107. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_params/__init__.py +0 -0
  108. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_params/tutorial001_an_py310.py +0 -0
  109. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cookie_params/tutorial001_py310.py +0 -0
  110. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cors/__init__.py +0 -0
  111. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/cors/tutorial001_py310.py +0 -0
  112. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_docs_ui/__init__.py +0 -0
  113. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_docs_ui/tutorial001_py310.py +0 -0
  114. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_docs_ui/tutorial002_py310.py +0 -0
  115. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_request_and_route/__init__.py +0 -0
  116. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_request_and_route/tutorial001_an_py310.py +0 -0
  117. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_request_and_route/tutorial001_py310.py +0 -0
  118. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_request_and_route/tutorial002_an_py310.py +0 -0
  119. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_request_and_route/tutorial002_py310.py +0 -0
  120. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_request_and_route/tutorial003_py310.py +0 -0
  121. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/__init__.py +0 -0
  122. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial001_py310.py +0 -0
  123. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial001b_py310.py +0 -0
  124. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial002_py310.py +0 -0
  125. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial003_py310.py +0 -0
  126. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial004_py310.py +0 -0
  127. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial005_py310.py +0 -0
  128. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial006_py310.py +0 -0
  129. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial006b_py310.py +0 -0
  130. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial006c_py310.py +0 -0
  131. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial007_py310.py +0 -0
  132. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial008_py310.py +0 -0
  133. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial009_py310.py +0 -0
  134. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial009b_py310.py +0 -0
  135. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial009c_py310.py +0 -0
  136. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/custom_response/tutorial010_py310.py +0 -0
  137. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dataclasses_/__init__.py +0 -0
  138. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dataclasses_/tutorial001_py310.py +0 -0
  139. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dataclasses_/tutorial002_py310.py +0 -0
  140. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dataclasses_/tutorial003_py310.py +0 -0
  141. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/debugging/__init__.py +0 -0
  142. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/debugging/tutorial001_py310.py +0 -0
  143. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/__init__.py +0 -0
  144. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial001_02_an_py310.py +0 -0
  145. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial001_an_py310.py +0 -0
  146. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial001_py310.py +0 -0
  147. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial002_an_py310.py +0 -0
  148. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial002_py310.py +0 -0
  149. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial003_an_py310.py +0 -0
  150. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial003_py310.py +0 -0
  151. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial004_an_py310.py +0 -0
  152. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial004_py310.py +0 -0
  153. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial005_an_py310.py +0 -0
  154. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial005_py310.py +0 -0
  155. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial006_an_py310.py +0 -0
  156. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial006_py310.py +0 -0
  157. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial007_py310.py +0 -0
  158. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008_an_py310.py +0 -0
  159. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008_py310.py +0 -0
  160. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008b_an_py310.py +0 -0
  161. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008b_py310.py +0 -0
  162. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008c_an_py310.py +0 -0
  163. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008c_py310.py +0 -0
  164. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008d_an_py310.py +0 -0
  165. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008d_py310.py +0 -0
  166. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008e_an_py310.py +0 -0
  167. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial008e_py310.py +0 -0
  168. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial010_py310.py +0 -0
  169. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial011_an_py310.py +0 -0
  170. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial011_py310.py +0 -0
  171. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial012_an_py310.py +0 -0
  172. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial012_py310.py +0 -0
  173. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial013_an_py310.py +0 -0
  174. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependencies/tutorial014_an_py310.py +0 -0
  175. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependency_testing/__init__.py +0 -0
  176. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependency_testing/tutorial001_an_py310.py +0 -0
  177. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/dependency_testing/tutorial001_py310.py +0 -0
  178. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/encoder/__init__.py +0 -0
  179. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/encoder/tutorial001_py310.py +0 -0
  180. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/events/__init__.py +0 -0
  181. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/events/tutorial001_py310.py +0 -0
  182. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/events/tutorial002_py310.py +0 -0
  183. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/events/tutorial003_py310.py +0 -0
  184. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extending_openapi/__init__.py +0 -0
  185. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extending_openapi/tutorial001_py310.py +0 -0
  186. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_data_types/__init__.py +0 -0
  187. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_data_types/tutorial001_an_py310.py +0 -0
  188. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_data_types/tutorial001_py310.py +0 -0
  189. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_models/__init__.py +0 -0
  190. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_models/tutorial001_py310.py +0 -0
  191. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_models/tutorial002_py310.py +0 -0
  192. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_models/tutorial003_py310.py +0 -0
  193. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_models/tutorial004_py310.py +0 -0
  194. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/extra_models/tutorial005_py310.py +0 -0
  195. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/first_steps/__init__.py +0 -0
  196. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/first_steps/tutorial001_py310.py +0 -0
  197. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/first_steps/tutorial003_py310.py +0 -0
  198. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/__init__.py +0 -0
  199. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/tutorial001_py310.py +0 -0
  200. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/tutorial002_py310.py +0 -0
  201. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/tutorial003_py310.py +0 -0
  202. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/tutorial004_py310.py +0 -0
  203. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/tutorial005_py310.py +0 -0
  204. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/frontend/tutorial006_py310.py +0 -0
  205. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/generate_clients/__init__.py +0 -0
  206. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/generate_clients/tutorial001_py310.py +0 -0
  207. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/generate_clients/tutorial002_py310.py +0 -0
  208. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/generate_clients/tutorial003_py310.py +0 -0
  209. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/generate_clients/tutorial004.js +0 -0
  210. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/generate_clients/tutorial004_py310.py +0 -0
  211. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/graphql_/__init__.py +0 -0
  212. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/graphql_/tutorial001_py310.py +0 -0
  213. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/__init__.py +0 -0
  214. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/tutorial001_py310.py +0 -0
  215. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/tutorial002_py310.py +0 -0
  216. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/tutorial003_py310.py +0 -0
  217. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/tutorial004_py310.py +0 -0
  218. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/tutorial005_py310.py +0 -0
  219. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/handling_errors/tutorial006_py310.py +0 -0
  220. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/__init__.py +0 -0
  221. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial001_an_py310.py +0 -0
  222. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial001_py310.py +0 -0
  223. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial002_an_py310.py +0 -0
  224. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial002_py310.py +0 -0
  225. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial003_an_py310.py +0 -0
  226. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial003_py310.py +0 -0
  227. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial004_an_py310.py +0 -0
  228. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_param_models/tutorial004_py310.py +0 -0
  229. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/__init__.py +0 -0
  230. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/tutorial001_an_py310.py +0 -0
  231. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/tutorial001_py310.py +0 -0
  232. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/tutorial002_an_py310.py +0 -0
  233. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/tutorial002_py310.py +0 -0
  234. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/tutorial003_an_py310.py +0 -0
  235. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/header_params/tutorial003_py310.py +0 -0
  236. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/json_base64_bytes/__init__.py +0 -0
  237. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/json_base64_bytes/tutorial001_py310.py +0 -0
  238. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/metadata/__init__.py +0 -0
  239. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/metadata/tutorial001_1_py310.py +0 -0
  240. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/metadata/tutorial001_py310.py +0 -0
  241. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/metadata/tutorial002_py310.py +0 -0
  242. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/metadata/tutorial003_py310.py +0 -0
  243. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/metadata/tutorial004_py310.py +0 -0
  244. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/middleware/__init__.py +0 -0
  245. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/middleware/tutorial001_py310.py +0 -0
  246. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/openapi_callbacks/__init__.py +0 -0
  247. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/openapi_callbacks/tutorial001_py310.py +0 -0
  248. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/openapi_webhooks/__init__.py +0 -0
  249. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/openapi_webhooks/tutorial001_py310.py +0 -0
  250. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/opentelemetry/tutorial001_py310.py +0 -0
  251. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/opentelemetry/tutorial002_py310.py +0 -0
  252. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/opentelemetry/tutorial003_py310.py +0 -0
  253. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/__init__.py +0 -0
  254. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial001_py310.py +0 -0
  255. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial002_py310.py +0 -0
  256. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial003_py310.py +0 -0
  257. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial004_py310.py +0 -0
  258. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial005_py310.py +0 -0
  259. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial006_py310.py +0 -0
  260. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_advanced_configuration/tutorial007_py310.py +0 -0
  261. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/__init__.py +0 -0
  262. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial001_py310.py +0 -0
  263. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial002_py310.py +0 -0
  264. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial002b_py310.py +0 -0
  265. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial003_py310.py +0 -0
  266. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial004_py310.py +0 -0
  267. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial005_py310.py +0 -0
  268. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_operation_configuration/tutorial006_py310.py +0 -0
  269. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/__init__.py +0 -0
  270. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/tutorial001_py310.py +0 -0
  271. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/tutorial002_py310.py +0 -0
  272. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/tutorial003_py310.py +0 -0
  273. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/tutorial003b_py310.py +0 -0
  274. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/tutorial004_py310.py +0 -0
  275. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params/tutorial005_py310.py +0 -0
  276. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/__init__.py +0 -0
  277. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial001_an_py310.py +0 -0
  278. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial001_py310.py +0 -0
  279. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial002_an_py310.py +0 -0
  280. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial002_py310.py +0 -0
  281. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial003_an_py310.py +0 -0
  282. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial003_py310.py +0 -0
  283. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial004_an_py310.py +0 -0
  284. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial004_py310.py +0 -0
  285. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial005_an_py310.py +0 -0
  286. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial005_py310.py +0 -0
  287. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial006_an_py310.py +0 -0
  288. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/path_params_numeric_validations/tutorial006_py310.py +0 -0
  289. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/pydantic_v1_in_v2/__init__.py +0 -0
  290. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/pydantic_v1_in_v2/tutorial001_an_py310.py +0 -0
  291. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/pydantic_v1_in_v2/tutorial002_an_py310.py +0 -0
  292. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/pydantic_v1_in_v2/tutorial003_an_py310.py +0 -0
  293. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/pydantic_v1_in_v2/tutorial004_an_py310.py +0 -0
  294. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/__init__.py +0 -0
  295. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial001_py310.py +0 -0
  296. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial002_py310.py +0 -0
  297. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial003_py310.py +0 -0
  298. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial004_py310.py +0 -0
  299. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial005_py310.py +0 -0
  300. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial006_py310.py +0 -0
  301. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial007_py310.py +0 -0
  302. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial008_py310.py +0 -0
  303. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial008b_py310.py +0 -0
  304. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial009_py310.py +0 -0
  305. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial010_py310.py +0 -0
  306. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial011_py310.py +0 -0
  307. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/python_types/tutorial013_py310.py +0 -0
  308. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/__init__.py +0 -0
  309. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial001_an_py310.py +0 -0
  310. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial001_py310.py +0 -0
  311. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial002_an_py310.py +0 -0
  312. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial002_py310.py +0 -0
  313. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial003_an_py310.py +0 -0
  314. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial003_py310.py +0 -0
  315. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial004_an_py310.py +0 -0
  316. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_param_models/tutorial004_py310.py +0 -0
  317. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/__init__.py +0 -0
  318. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/tutorial001_py310.py +0 -0
  319. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/tutorial002_py310.py +0 -0
  320. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/tutorial003_py310.py +0 -0
  321. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/tutorial004_py310.py +0 -0
  322. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/tutorial005_py310.py +0 -0
  323. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params/tutorial006_py310.py +0 -0
  324. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/__init__.py +0 -0
  325. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial001_py310.py +0 -0
  326. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial002_an_py310.py +0 -0
  327. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial002_py310.py +0 -0
  328. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial003_an_py310.py +0 -0
  329. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial003_py310.py +0 -0
  330. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial004_an_py310.py +0 -0
  331. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial004_py310.py +0 -0
  332. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial005_an_py310.py +0 -0
  333. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial005_py310.py +0 -0
  334. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial006_an_py310.py +0 -0
  335. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial006_py310.py +0 -0
  336. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial006c_an_py310.py +0 -0
  337. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial006c_py310.py +0 -0
  338. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial007_an_py310.py +0 -0
  339. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial007_py310.py +0 -0
  340. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial008_an_py310.py +0 -0
  341. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial008_py310.py +0 -0
  342. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial009_an_py310.py +0 -0
  343. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial009_py310.py +0 -0
  344. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial010_an_py310.py +0 -0
  345. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial010_py310.py +0 -0
  346. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial011_an_py310.py +0 -0
  347. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial011_py310.py +0 -0
  348. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial012_an_py310.py +0 -0
  349. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial012_py310.py +0 -0
  350. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial013_an_py310.py +0 -0
  351. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial013_py310.py +0 -0
  352. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial014_an_py310.py +0 -0
  353. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial014_py310.py +0 -0
  354. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/query_params_str_validations/tutorial015_an_py310.py +0 -0
  355. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/__init__.py +0 -0
  356. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial001_02_an_py310.py +0 -0
  357. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial001_02_py310.py +0 -0
  358. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial001_03_an_py310.py +0 -0
  359. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial001_03_py310.py +0 -0
  360. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial001_an_py310.py +0 -0
  361. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial001_py310.py +0 -0
  362. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial002_an_py310.py +0 -0
  363. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial002_py310.py +0 -0
  364. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial003_an_py310.py +0 -0
  365. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_files/tutorial003_py310.py +0 -0
  366. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/__init__.py +0 -0
  367. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial001_an_py310.py +0 -0
  368. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial001_py310.py +0 -0
  369. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial002_an_py310.py +0 -0
  370. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial002_py310.py +0 -0
  371. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial003_an_py310.py +0 -0
  372. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial003_py310.py +0 -0
  373. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial004_an_py310.py +0 -0
  374. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial004_py310.py +0 -0
  375. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial005_an_py310.py +0 -0
  376. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_form_models/tutorial005_py310.py +0 -0
  377. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_forms/__init__.py +0 -0
  378. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_forms/tutorial001_an_py310.py +0 -0
  379. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_forms/tutorial001_py310.py +0 -0
  380. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_forms_and_files/__init__.py +0 -0
  381. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_forms_and_files/tutorial001_an_py310.py +0 -0
  382. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/request_forms_and_files/tutorial001_py310.py +0 -0
  383. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_change_status_code/__init__.py +0 -0
  384. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_change_status_code/tutorial001_py310.py +0 -0
  385. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_cookies/__init__.py +0 -0
  386. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_cookies/tutorial001_py310.py +0 -0
  387. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_cookies/tutorial002_py310.py +0 -0
  388. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_directly/__init__.py +0 -0
  389. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_directly/tutorial001_py310.py +0 -0
  390. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_directly/tutorial002_py310.py +0 -0
  391. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_headers/__init__.py +0 -0
  392. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_headers/tutorial001_py310.py +0 -0
  393. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_headers/tutorial002_py310.py +0 -0
  394. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/__init__.py +0 -0
  395. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial001_01_py310.py +0 -0
  396. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial001_py310.py +0 -0
  397. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial002_py310.py +0 -0
  398. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial003_01_py310.py +0 -0
  399. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial003_02_py310.py +0 -0
  400. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial003_03_py310.py +0 -0
  401. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial003_04_py310.py +0 -0
  402. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial003_05_py310.py +0 -0
  403. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial003_py310.py +0 -0
  404. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial004_py310.py +0 -0
  405. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial005_py310.py +0 -0
  406. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_model/tutorial006_py310.py +0 -0
  407. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_status_code/__init__.py +0 -0
  408. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_status_code/tutorial001_py310.py +0 -0
  409. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/response_status_code/tutorial002_py310.py +0 -0
  410. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/__init__.py +0 -0
  411. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial001_py310.py +0 -0
  412. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial002_py310.py +0 -0
  413. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial003_an_py310.py +0 -0
  414. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial003_py310.py +0 -0
  415. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial004_an_py310.py +0 -0
  416. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial004_py310.py +0 -0
  417. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial005_an_py310.py +0 -0
  418. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/schema_extra_example/tutorial005_py310.py +0 -0
  419. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/__init__.py +0 -0
  420. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial001_an_py310.py +0 -0
  421. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial001_py310.py +0 -0
  422. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial002_an_py310.py +0 -0
  423. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial002_py310.py +0 -0
  424. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial003_an_py310.py +0 -0
  425. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial003_py310.py +0 -0
  426. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial004_an_py310.py +0 -0
  427. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial004_py310.py +0 -0
  428. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial005_an_py310.py +0 -0
  429. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial005_py310.py +0 -0
  430. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial006_an_py310.py +0 -0
  431. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial006_py310.py +0 -0
  432. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial007_an_py310.py +0 -0
  433. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/security/tutorial007_py310.py +0 -0
  434. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/separate_openapi_schemas/__init__.py +0 -0
  435. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/separate_openapi_schemas/tutorial001_py310.py +0 -0
  436. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/separate_openapi_schemas/tutorial002_py310.py +0 -0
  437. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/server_sent_events/__init__.py +0 -0
  438. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/server_sent_events/tutorial001_py310.py +0 -0
  439. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/server_sent_events/tutorial002_py310.py +0 -0
  440. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/server_sent_events/tutorial003_py310.py +0 -0
  441. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/server_sent_events/tutorial004_py310.py +0 -0
  442. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/server_sent_events/tutorial005_py310.py +0 -0
  443. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/__init__.py +0 -0
  444. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app01_py310/__init__.py +0 -0
  445. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app01_py310/config.py +0 -0
  446. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app01_py310/main.py +0 -0
  447. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_an_py310/__init__.py +0 -0
  448. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_an_py310/config.py +0 -0
  449. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_an_py310/main.py +0 -0
  450. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_an_py310/test_main.py +0 -0
  451. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_py310/__init__.py +0 -0
  452. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_py310/config.py +0 -0
  453. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_py310/main.py +0 -0
  454. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app02_py310/test_main.py +0 -0
  455. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app03_an_py310/__init__.py +0 -0
  456. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app03_an_py310/config.py +0 -0
  457. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app03_an_py310/main.py +0 -0
  458. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app03_py310/__init__.py +0 -0
  459. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app03_py310/config.py +0 -0
  460. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/app03_py310/main.py +0 -0
  461. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/settings/tutorial001_py310.py +0 -0
  462. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sql_databases/__init__.py +0 -0
  463. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sql_databases/tutorial001_an_py310.py +0 -0
  464. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sql_databases/tutorial001_py310.py +0 -0
  465. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sql_databases/tutorial002_an_py310.py +0 -0
  466. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sql_databases/tutorial002_py310.py +0 -0
  467. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/static_files/__init__.py +0 -0
  468. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/static_files/tutorial001_py310.py +0 -0
  469. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/stream_data/__init__.py +0 -0
  470. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/stream_data/tutorial001_py310.py +0 -0
  471. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/stream_data/tutorial002_py310.py +0 -0
  472. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/stream_json_lines/__init__.py +0 -0
  473. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/stream_json_lines/tutorial001_py310.py +0 -0
  474. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/strict_content_type/__init__.py +0 -0
  475. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/strict_content_type/tutorial001_py310.py +0 -0
  476. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sub_applications/__init__.py +0 -0
  477. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/sub_applications/tutorial001_py310.py +0 -0
  478. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/__init__.py +0 -0
  479. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/static/__init__.py +0 -0
  480. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/static/styles.css +0 -0
  481. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/templates/__init__.py +0 -0
  482. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/templates/item.html +0 -0
  483. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/templates/item_path.html +0 -0
  484. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/tutorial001_py310.py +0 -0
  485. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/templates/tutorial002_py310.py +0 -0
  486. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/using_request_directly/__init__.py +0 -0
  487. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/using_request_directly/tutorial001_py310.py +0 -0
  488. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/websockets_/__init__.py +0 -0
  489. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/websockets_/tutorial001_py310.py +0 -0
  490. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/websockets_/tutorial002_an_py310.py +0 -0
  491. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/websockets_/tutorial002_py310.py +0 -0
  492. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/websockets_/tutorial003_py310.py +0 -0
  493. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/wsgi/__init__.py +0 -0
  494. {fastapi-0.159.0 → fastapi-0.159.1}/docs_src/wsgi/tutorial001_py310.py +0 -0
  495. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/SKILL.md +0 -0
  496. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/references/dependencies.md +0 -0
  497. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/references/other-tools.md +0 -0
  498. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/references/path-operations.md +0 -0
  499. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/references/pydantic.md +0 -0
  500. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/references/responses.md +0 -0
  501. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/.agents/skills/fastapi/references/streaming.md +0 -0
  502. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/__main__.py +0 -0
  503. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/_compat/__init__.py +0 -0
  504. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/_compat/shared.py +0 -0
  505. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/_compat/v2.py +0 -0
  506. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/applications.py +0 -0
  507. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/background.py +0 -0
  508. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/cli.py +0 -0
  509. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/concurrency.py +0 -0
  510. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/datastructures.py +0 -0
  511. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/dependencies/__init__.py +0 -0
  512. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/dependencies/models.py +0 -0
  513. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/encoders.py +0 -0
  514. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/exception_handlers.py +0 -0
  515. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/exceptions.py +0 -0
  516. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/logger.py +0 -0
  517. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/__init__.py +0 -0
  518. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/asyncexitstack.py +0 -0
  519. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/cors.py +0 -0
  520. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/gzip.py +0 -0
  521. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/httpsredirect.py +0 -0
  522. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/trustedhost.py +0 -0
  523. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/middleware/wsgi.py +0 -0
  524. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/openapi/__init__.py +0 -0
  525. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/openapi/constants.py +0 -0
  526. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/openapi/docs.py +0 -0
  527. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/openapi/models.py +0 -0
  528. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/openapi/utils.py +0 -0
  529. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/param_functions.py +0 -0
  530. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/params.py +0 -0
  531. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/py.typed +0 -0
  532. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/requests.py +0 -0
  533. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/responses.py +0 -0
  534. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/routing.py +0 -0
  535. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/__init__.py +0 -0
  536. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/api_key.py +0 -0
  537. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/base.py +0 -0
  538. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/http.py +0 -0
  539. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/oauth2.py +0 -0
  540. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/open_id_connect_url.py +0 -0
  541. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/security/utils.py +0 -0
  542. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/sse.py +0 -0
  543. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/staticfiles.py +0 -0
  544. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/telemetry/__init__.py +0 -0
  545. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/telemetry/_api.py +0 -0
  546. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/telemetry/_asgi.py +0 -0
  547. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/telemetry/_runtime.py +0 -0
  548. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/templating.py +0 -0
  549. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/testclient.py +0 -0
  550. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/types.py +0 -0
  551. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/utils.py +0 -0
  552. {fastapi-0.159.0 → fastapi-0.159.1}/fastapi/websockets.py +0 -0
  553. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/add_latest_release_date.py +0 -0
  554. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/deploy_docs_status.py +0 -0
  555. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/doc_parsing_utils.py +0 -0
  556. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/docs.py +0 -0
  557. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/format.sh +0 -0
  558. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/general-llm-prompt.md +0 -0
  559. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/lint.sh +0 -0
  560. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/cookie_param_models/image01.py +0 -0
  561. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/header_param_models/image01.py +0 -0
  562. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/json_base64_bytes/image01.py +0 -0
  563. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/query_param_models/image01.py +0 -0
  564. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/request_form_models/image01.py +0 -0
  565. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/separate_openapi_schemas/image01.py +0 -0
  566. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/separate_openapi_schemas/image02.py +0 -0
  567. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/separate_openapi_schemas/image03.py +0 -0
  568. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/separate_openapi_schemas/image04.py +0 -0
  569. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/separate_openapi_schemas/image05.py +0 -0
  570. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/sql_databases/image01.py +0 -0
  571. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/playwright/sql_databases/image02.py +0 -0
  572. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/prepare_release.py +0 -0
  573. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/sponsors.py +0 -0
  574. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/test-cov-html.sh +0 -0
  575. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/test-cov.sh +0 -0
  576. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/test.sh +0 -0
  577. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/conftest.py +0 -0
  578. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/en_doc.md +0 -0
  579. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_lines_number_gt.md +0 -0
  580. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_lines_number_lt.md +0 -0
  581. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_mermaid_not_translated.md +0 -0
  582. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_mermaid_translated.md +0 -0
  583. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_number_gt.md +0 -0
  584. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_number_lt.md +0 -0
  585. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_wrong_lang_code.md +0 -0
  586. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/data/translated_doc_wrong_lang_code_2.md +0 -0
  587. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_lines_number_mismatch.py +0 -0
  588. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_mermaid.py +0 -0
  589. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_number_mismatch.py +0 -0
  590. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_blocks/test_code_blocks_wrong_lang_code.py +0 -0
  591. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_includes/data/en_doc.md +0 -0
  592. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_includes/data/translated_doc_number_gt.md +0 -0
  593. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_includes/data/translated_doc_number_lt.md +0 -0
  594. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_code_includes/test_number_mismatch.py +0 -0
  595. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_complex_doc/data/en_doc.md +0 -0
  596. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_complex_doc/data/translated_doc.md +0 -0
  597. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_complex_doc/data/translated_doc_expected.md +0 -0
  598. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_complex_doc/test_compex_doc.py +0 -0
  599. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/data/en_doc.md +0 -0
  600. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_level_mismatch_1.md +0 -0
  601. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_level_mismatch_2.md +0 -0
  602. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_number_gt.md +0 -0
  603. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/data/translated_doc_number_lt.md +0 -0
  604. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/test_header_level_mismatch.py +0 -0
  605. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_header_permalinks/test_header_number_mismatch.py +0 -0
  606. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_html_links/data/en_doc.md +0 -0
  607. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_html_links/data/translated_doc_number_gt.md +0 -0
  608. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_html_links/data/translated_doc_number_lt.md +0 -0
  609. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_html_links/test_html_links_number_mismatch.py +0 -0
  610. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_markdown_links/data/en_doc.md +0 -0
  611. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc.md +0 -0
  612. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc_number_gt.md +0 -0
  613. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_markdown_links/data/translated_doc_number_lt.md +0 -0
  614. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/tests/test_translation_fixer/test_markdown_links/test_mkd_links_number_mismatch.py +0 -0
  615. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/topic_repos.py +0 -0
  616. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/translate.py +0 -0
  617. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/translation_fixer.py +0 -0
  618. {fastapi-0.159.0 → fastapi-0.159.1}/scripts/translation_git.py +0 -0
  619. {fastapi-0.159.0 → fastapi-0.159.1}/tests/__init__.py +0 -0
  620. {fastapi-0.159.0 → fastapi-0.159.1}/tests/benchmarks/__init__.py +0 -0
  621. {fastapi-0.159.0 → fastapi-0.159.1}/tests/benchmarks/test_general_performance.py +0 -0
  622. {fastapi-0.159.0 → fastapi-0.159.1}/tests/benchmarks/test_openapi.py +0 -0
  623. {fastapi-0.159.0 → fastapi-0.159.1}/tests/benchmarks/utils.py +0 -0
  624. {fastapi-0.159.0 → fastapi-0.159.1}/tests/forward_reference_type.py +0 -0
  625. {fastapi-0.159.0 → fastapi-0.159.1}/tests/main.py +0 -0
  626. {fastapi-0.159.0 → fastapi-0.159.1}/tests/memory_benchmarks/__init__.py +0 -0
  627. {fastapi-0.159.0 → fastapi-0.159.1}/tests/memory_benchmarks/test_dependency_graph.py +0 -0
  628. {fastapi-0.159.0 → fastapi-0.159.1}/tests/memory_benchmarks/test_openapi.py +0 -0
  629. {fastapi-0.159.0 → fastapi-0.159.1}/tests/memory_benchmarks/test_route_dependency_graph.py +0 -0
  630. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_properties.py +0 -0
  631. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_properties_bool.py +0 -0
  632. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_response_extra.py +0 -0
  633. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_bad.py +0 -0
  634. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_custom_model_in_callback.py +0 -0
  635. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_custom_validationerror.py +0 -0
  636. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_default_validationerror.py +0 -0
  637. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_response_class.py +0 -0
  638. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_router.py +0 -0
  639. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_additional_responses_union_duplicate_anyof.py +0 -0
  640. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_allow_inf_nan_in_enforcing.py +0 -0
  641. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_ambiguous_params.py +0 -0
  642. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_annotated.py +0 -0
  643. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_application.py +0 -0
  644. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_arbitrary_types.py +0 -0
  645. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_body_alias_choices.py +0 -0
  646. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_callable_endpoint.py +0 -0
  647. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_compat.py +0 -0
  648. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_computed_fields.py +0 -0
  649. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_custom_middleware_exception.py +0 -0
  650. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_custom_route_class.py +0 -0
  651. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_custom_schema_fields.py +0 -0
  652. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_custom_swagger_ui_redirect.py +0 -0
  653. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_datastructures.py +0 -0
  654. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_datetime_custom_encoder.py +0 -0
  655. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_default_response_class.py +0 -0
  656. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_default_response_class_router.py +0 -0
  657. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependencies_utils.py +0 -0
  658. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_after_yield_raise.py +0 -0
  659. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_after_yield_streaming.py +0 -0
  660. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_after_yield_websockets.py +0 -0
  661. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_cache.py +0 -0
  662. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_class.py +0 -0
  663. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_contextmanager.py +0 -0
  664. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_contextvars.py +0 -0
  665. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_duplicates.py +0 -0
  666. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_models.py +0 -0
  667. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_overrides.py +0 -0
  668. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_paramless.py +0 -0
  669. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_partial.py +0 -0
  670. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_pep695.py +0 -0
  671. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_security_overrides.py +0 -0
  672. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_wrapped.py +0 -0
  673. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_yield_except_httpexception.py +0 -0
  674. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_yield_scope.py +0 -0
  675. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dependency_yield_scope_websockets.py +0 -0
  676. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_depends_hashable.py +0 -0
  677. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_deprecated_responses.py +0 -0
  678. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_dump_json_fast_path.py +0 -0
  679. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_duplicate_models_openapi.py +0 -0
  680. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_empty_router.py +0 -0
  681. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_enforce_once_required_parameter.py +0 -0
  682. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_exception_handlers.py +0 -0
  683. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_extra_routes.py +0 -0
  684. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_fastapi_cli.py +0 -0
  685. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_file_and_form_order_issue_9116.py +0 -0
  686. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_filter_pydantic_sub_model_pv2.py +0 -0
  687. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_form_default.py +0 -0
  688. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_forms_from_non_typing_sequences.py +0 -0
  689. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_forms_multiple_models.py +0 -0
  690. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_forms_optional_models.py +0 -0
  691. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_forms_single_model.py +0 -0
  692. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_forms_single_param.py +0 -0
  693. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_frontend.py +0 -0
  694. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_generate_unique_id_function.py +0 -0
  695. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_generic_parameterless_depends.py +0 -0
  696. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_get_model_definitions_formfeed_escape.py +0 -0
  697. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_get_request_body.py +0 -0
  698. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_header_cookie_alias_choices.py +0 -0
  699. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_header_cookie_optional_models.py +0 -0
  700. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_http_connection_injection.py +0 -0
  701. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_include_route.py +0 -0
  702. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_include_router_defaults_overrides.py +0 -0
  703. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_infer_param_optionality.py +0 -0
  704. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_inherited_custom_class.py +0 -0
  705. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_invalid_path_param.py +0 -0
  706. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_invalid_sequence_param.py +0 -0
  707. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_json_type.py +0 -0
  708. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_jsonable_encoder.py +0 -0
  709. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_list_bytes_file_order_preserved_issue_14811.py +0 -0
  710. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_local_docs.py +0 -0
  711. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_modules_same_name_body/__init__.py +0 -0
  712. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_modules_same_name_body/app/__init__.py +0 -0
  713. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_modules_same_name_body/app/a.py +0 -0
  714. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_modules_same_name_body/app/b.py +0 -0
  715. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_modules_same_name_body/app/main.py +0 -0
  716. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_modules_same_name_body/test_main.py +0 -0
  717. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_multi_body_errors.py +0 -0
  718. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_multi_query_errors.py +0 -0
  719. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_multipart_installation.py +0 -0
  720. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_multiple_parameter_models.py +0 -0
  721. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_nested_annotated_in_sequence.py +0 -0
  722. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_no_schema_split.py +0 -0
  723. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_no_swagger_ui_redirect.py +0 -0
  724. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_cache_root_path.py +0 -0
  725. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_examples.py +0 -0
  726. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_model_description_trim_on_formfeed.py +0 -0
  727. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_query_parameter_extension.py +0 -0
  728. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_route_extensions.py +0 -0
  729. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_schema_type.py +0 -0
  730. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_separate_input_output_schemas.py +0 -0
  731. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_openapi_servers.py +0 -0
  732. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_operations_signatures.py +0 -0
  733. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_optional_file_list.py +0 -0
  734. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_orjson_response_class.py +0 -0
  735. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_param_class.py +0 -0
  736. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_param_in_path_and_dependency.py +0 -0
  737. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_param_include_in_schema.py +0 -0
  738. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_params_repr.py +0 -0
  739. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_path.py +0 -0
  740. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_path_alias_choices.py +0 -0
  741. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_prepare_release.py +0 -0
  742. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_put_no_body.py +0 -0
  743. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_pydantic_v1_error.py +0 -0
  744. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_pydanticv2_dataclasses_uuid_stringified_annotations.py +0 -0
  745. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_query.py +0 -0
  746. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_query_alias_choices.py +0 -0
  747. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_query_cookie_header_model_extra_params.py +0 -0
  748. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_query_optional_models.py +0 -0
  749. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_read_with_orm_mode.py +0 -0
  750. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_regex_deprecated_body.py +0 -0
  751. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_regex_deprecated_params.py +0 -0
  752. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_repeated_cookie_headers.py +0 -0
  753. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_repeated_dependency_schema.py +0 -0
  754. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_repeated_parameter_alias.py +0 -0
  755. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_body_parameters_media_type.py +0 -0
  756. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_param_model_by_alias.py +0 -0
  757. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/__init__.py +0 -0
  758. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/__init__.py +0 -0
  759. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/test_list.py +0 -0
  760. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/test_nullable_and_defaults.py +0 -0
  761. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/test_optional_list.py +0 -0
  762. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/test_optional_str.py +0 -0
  763. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/test_required_str.py +0 -0
  764. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_body/utils.py +0 -0
  765. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_cookie/__init__.py +0 -0
  766. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_cookie/test_list.py +0 -0
  767. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_cookie/test_optional_list.py +0 -0
  768. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_cookie/test_optional_str.py +0 -0
  769. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_cookie/test_required_str.py +0 -0
  770. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_default_validation.py +0 -0
  771. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_field_metadata.py +0 -0
  772. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_field_options.py +0 -0
  773. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/__init__.py +0 -0
  774. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/test_list.py +0 -0
  775. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/test_nullable_and_defaults.py +0 -0
  776. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/test_optional.py +0 -0
  777. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/test_optional_list.py +0 -0
  778. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/test_required.py +0 -0
  779. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_file/utils.py +0 -0
  780. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/__init__.py +0 -0
  781. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/test_list.py +0 -0
  782. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/test_nullable_and_defaults.py +0 -0
  783. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/test_optional_list.py +0 -0
  784. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/test_optional_str.py +0 -0
  785. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/test_required_str.py +0 -0
  786. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_form/utils.py +0 -0
  787. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_header/__init__.py +0 -0
  788. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_header/test_list.py +0 -0
  789. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_header/test_nullable_and_defaults.py +0 -0
  790. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_header/test_optional_list.py +0 -0
  791. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_header/test_optional_str.py +0 -0
  792. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_header/test_required_str.py +0 -0
  793. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_nullable_and_defaults.py +0 -0
  794. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_path/__init__.py +0 -0
  795. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_path/test_list.py +0 -0
  796. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_path/test_optional_list.py +0 -0
  797. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_path/test_optional_str.py +0 -0
  798. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_path/test_required_str.py +0 -0
  799. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_query/__init__.py +0 -0
  800. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_query/test_list.py +0 -0
  801. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_query/test_optional_list.py +0 -0
  802. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_query/test_optional_str.py +0 -0
  803. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_request_params/test_query/test_required_str.py +0 -0
  804. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_required_noneable.py +0 -0
  805. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_by_alias.py +0 -0
  806. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_change_status_code.py +0 -0
  807. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_class_no_mediatype.py +0 -0
  808. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_code_no_body.py +0 -0
  809. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_dependency.py +0 -0
  810. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_as_return_annotation.py +0 -0
  811. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_data_filter.py +0 -0
  812. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_data_filter_no_inheritance.py +0 -0
  813. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_default_factory.py +0 -0
  814. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_include_exclude.py +0 -0
  815. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_invalid.py +0 -0
  816. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_model_sub_types.py +0 -0
  817. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_response_set_response_code_empty.py +0 -0
  818. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_return_none_stringified_annotations.py +0 -0
  819. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_route_handler_wrapping.py +0 -0
  820. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_route_scope.py +0 -0
  821. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_router_circular_import.py +0 -0
  822. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_router_events.py +0 -0
  823. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_router_include_context.py +0 -0
  824. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_router_prefix_with_template.py +0 -0
  825. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_router_redirect_slashes.py +0 -0
  826. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_schema_compat_pydantic_v2.py +0 -0
  827. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_schema_extra_examples.py +0 -0
  828. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_schema_ref_pydantic_v2.py +0 -0
  829. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_cookie.py +0 -0
  830. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_cookie_description.py +0 -0
  831. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_cookie_optional.py +0 -0
  832. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_header.py +0 -0
  833. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_header_description.py +0 -0
  834. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_header_optional.py +0 -0
  835. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_query.py +0 -0
  836. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_query_description.py +0 -0
  837. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_api_key_query_optional.py +0 -0
  838. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_base.py +0 -0
  839. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_base_description.py +0 -0
  840. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_base_optional.py +0 -0
  841. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_basic_optional.py +0 -0
  842. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_basic_realm.py +0 -0
  843. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_basic_realm_description.py +0 -0
  844. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_bearer.py +0 -0
  845. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_bearer_description.py +0 -0
  846. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_bearer_optional.py +0 -0
  847. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_digest.py +0 -0
  848. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_digest_description.py +0 -0
  849. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_http_digest_optional.py +0 -0
  850. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2.py +0 -0
  851. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_authorization_code_bearer.py +0 -0
  852. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_authorization_code_bearer_description.py +0 -0
  853. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_authorization_code_bearer_scopes_openapi.py +0 -0
  854. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_authorization_code_bearer_scopes_openapi_simple.py +0 -0
  855. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_optional.py +0 -0
  856. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_optional_description.py +0 -0
  857. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_password_bearer_optional.py +0 -0
  858. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_oauth2_password_bearer_optional_description.py +0 -0
  859. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_openid_connect.py +0 -0
  860. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_openid_connect_description.py +0 -0
  861. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_openid_connect_optional.py +0 -0
  862. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_scopes.py +0 -0
  863. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_scopes_dont_propagate.py +0 -0
  864. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_scopes_sub_dependency.py +0 -0
  865. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_security_websockets.py +0 -0
  866. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_serialize_response.py +0 -0
  867. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_serialize_response_dataclass.py +0 -0
  868. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_serialize_response_model.py +0 -0
  869. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_skip_defaults.py +0 -0
  870. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_sse.py +0 -0
  871. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_starlette_exception.py +0 -0
  872. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_starlette_urlconvertors.py +0 -0
  873. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stream_bare_type.py +0 -0
  874. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stream_cancellation.py +0 -0
  875. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stream_json_validation_error.py +0 -0
  876. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stream_non_finite_floats.py +0 -0
  877. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stream_status_code.py +0 -0
  878. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_strict_content_type_app_level.py +0 -0
  879. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_strict_content_type_nested.py +0 -0
  880. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_strict_content_type_router_level.py +0 -0
  881. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stringified_annotation_dependency.py +0 -0
  882. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stringified_annotation_dependency_py314.py +0 -0
  883. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_stringified_annotations_simple.py +0 -0
  884. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_sub_callbacks.py +0 -0
  885. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_swagger_ui_escape.py +0 -0
  886. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_swagger_ui_init_oauth.py +0 -0
  887. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/__init__.py +0 -0
  888. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/_otlp.py +0 -0
  889. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/_subprocess.py +0 -0
  890. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/conftest.py +0 -0
  891. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_background.py +0 -0
  892. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_data.py +0 -0
  893. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_environment_integrations.py +0 -0
  894. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_exceptions.py +0 -0
  895. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_http.py +0 -0
  896. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_integrations.py +0 -0
  897. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_native_integrations.py +0 -0
  898. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_operations.py +0 -0
  899. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_runtime.py +0 -0
  900. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_semantic_conventions.py +0 -0
  901. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_tracer.py +0 -0
  902. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_telemetry/test_websockets.py +0 -0
  903. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_top_level_security_scheme_in_openapi.py +0 -0
  904. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_translate.py +0 -0
  905. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tuples.py +0 -0
  906. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/__init__.py +0 -0
  907. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_responses/__init__.py +0 -0
  908. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_responses/test_tutorial001.py +0 -0
  909. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_responses/test_tutorial002.py +0 -0
  910. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_responses/test_tutorial003.py +0 -0
  911. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_responses/test_tutorial004.py +0 -0
  912. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_status_codes/__init__.py +0 -0
  913. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_additional_status_codes/test_tutorial001.py +0 -0
  914. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_advanced_middleware/__init__.py +0 -0
  915. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_advanced_middleware/test_tutorial001.py +0 -0
  916. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_advanced_middleware/test_tutorial002.py +0 -0
  917. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_advanced_middleware/test_tutorial003.py +0 -0
  918. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_async_tests/__init__.py +0 -0
  919. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_async_tests/test_main_a.py +0 -0
  920. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_authentication_error_status_code/__init__.py +0 -0
  921. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_authentication_error_status_code/test_tutorial001.py +0 -0
  922. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_background_tasks/__init__.py +0 -0
  923. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_background_tasks/test_tutorial001.py +0 -0
  924. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_background_tasks/test_tutorial002.py +0 -0
  925. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_behind_a_proxy/__init__.py +0 -0
  926. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001.py +0 -0
  927. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001_01.py +0 -0
  928. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_behind_a_proxy/test_tutorial002.py +0 -0
  929. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_behind_a_proxy/test_tutorial003.py +0 -0
  930. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_behind_a_proxy/test_tutorial004.py +0 -0
  931. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_bigger_applications/__init__.py +0 -0
  932. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_bigger_applications/test_main.py +0 -0
  933. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body/__init__.py +0 -0
  934. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body/test_tutorial001.py +0 -0
  935. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body/test_tutorial002.py +0 -0
  936. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body/test_tutorial003.py +0 -0
  937. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body/test_tutorial004.py +0 -0
  938. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_fields/__init__.py +0 -0
  939. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_fields/test_tutorial001.py +0 -0
  940. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_multiple_params/__init__.py +0 -0
  941. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py +0 -0
  942. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_multiple_params/test_tutorial002.py +0 -0
  943. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py +0 -0
  944. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_multiple_params/test_tutorial004.py +0 -0
  945. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_multiple_params/test_tutorial005.py +0 -0
  946. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/__init__.py +0 -0
  947. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial001_tutorial002_tutorial003.py +0 -0
  948. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial004.py +0 -0
  949. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial005.py +0 -0
  950. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial006.py +0 -0
  951. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial007.py +0 -0
  952. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial008.py +0 -0
  953. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_nested_models/test_tutorial009.py +0 -0
  954. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_updates/__init__.py +0 -0
  955. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_updates/test_tutorial001.py +0 -0
  956. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_body_updates/test_tutorial002.py +0 -0
  957. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_conditional_openapi/__init__.py +0 -0
  958. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_conditional_openapi/test_tutorial001.py +0 -0
  959. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_configure_swagger_ui/__init__.py +0 -0
  960. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial001.py +0 -0
  961. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial002.py +0 -0
  962. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial003.py +0 -0
  963. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cookie_param_models/__init__.py +0 -0
  964. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cookie_param_models/test_tutorial001.py +0 -0
  965. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cookie_param_models/test_tutorial002.py +0 -0
  966. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cookie_param_models/test_tutorial003.py +0 -0
  967. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cookie_params/__init__.py +0 -0
  968. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cookie_params/test_tutorial001.py +0 -0
  969. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cors/__init__.py +0 -0
  970. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_cors/test_tutorial001.py +0 -0
  971. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_docs_ui/__init__.py +0 -0
  972. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_docs_ui/test_tutorial001.py +0 -0
  973. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_docs_ui/test_tutorial002.py +0 -0
  974. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_request_and_route/__init__.py +0 -0
  975. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_request_and_route/test_tutorial001.py +0 -0
  976. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_request_and_route/test_tutorial002.py +0 -0
  977. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_request_and_route/test_tutorial003.py +0 -0
  978. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/__init__.py +0 -0
  979. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial001.py +0 -0
  980. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial001b.py +0 -0
  981. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial002_tutorial003_tutorial004.py +0 -0
  982. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial005.py +0 -0
  983. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial006.py +0 -0
  984. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial006b.py +0 -0
  985. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial006c.py +0 -0
  986. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial007.py +0 -0
  987. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial008.py +0 -0
  988. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial009.py +0 -0
  989. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial009b.py +0 -0
  990. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial009c.py +0 -0
  991. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_custom_response/test_tutorial010.py +0 -0
  992. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dataclasses/__init__.py +0 -0
  993. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dataclasses/test_tutorial001.py +0 -0
  994. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dataclasses/test_tutorial002.py +0 -0
  995. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dataclasses/test_tutorial003.py +0 -0
  996. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_debugging/__init__.py +0 -0
  997. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_debugging/test_tutorial001.py +0 -0
  998. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/__init__.py +0 -0
  999. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial001_tutorial001_02.py +0 -0
  1000. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial002_tutorial003_tutorial004.py +0 -0
  1001. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial005.py +0 -0
  1002. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial006.py +0 -0
  1003. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial007.py +0 -0
  1004. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial008.py +0 -0
  1005. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial008b.py +0 -0
  1006. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial008c.py +0 -0
  1007. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial008d.py +0 -0
  1008. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial008e.py +0 -0
  1009. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial010.py +0 -0
  1010. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial011.py +0 -0
  1011. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_dependencies/test_tutorial012.py +0 -0
  1012. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_encoder/__init__.py +0 -0
  1013. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_encoder/test_tutorial001.py +0 -0
  1014. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_events/__init__.py +0 -0
  1015. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_events/test_tutorial001.py +0 -0
  1016. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_events/test_tutorial002.py +0 -0
  1017. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_events/test_tutorial003.py +0 -0
  1018. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extending_openapi/__init__.py +0 -0
  1019. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extending_openapi/test_tutorial001.py +0 -0
  1020. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_data_types/__init__.py +0 -0
  1021. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_data_types/test_tutorial001.py +0 -0
  1022. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_models/__init__.py +0 -0
  1023. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_models/test_tutorial001_tutorial002.py +0 -0
  1024. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_models/test_tutorial003.py +0 -0
  1025. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_models/test_tutorial004.py +0 -0
  1026. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_extra_models/test_tutorial005.py +0 -0
  1027. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_first_steps/__init__.py +0 -0
  1028. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_first_steps/test_tutorial001_tutorial002_tutorial003.py +0 -0
  1029. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_generate_clients/__init__.py +0 -0
  1030. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_generate_clients/test_tutorial001.py +0 -0
  1031. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_generate_clients/test_tutorial002.py +0 -0
  1032. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_generate_clients/test_tutorial003.py +0 -0
  1033. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_generate_clients/test_tutorial004.py +0 -0
  1034. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_graphql/__init__.py +0 -0
  1035. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_graphql/test_tutorial001.py +0 -0
  1036. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/__init__.py +0 -0
  1037. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/test_tutorial001.py +0 -0
  1038. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/test_tutorial002.py +0 -0
  1039. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/test_tutorial003.py +0 -0
  1040. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/test_tutorial004.py +0 -0
  1041. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/test_tutorial005.py +0 -0
  1042. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_handling_errors/test_tutorial006.py +0 -0
  1043. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_param_models/__init__.py +0 -0
  1044. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_param_models/test_tutorial001.py +0 -0
  1045. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_param_models/test_tutorial002.py +0 -0
  1046. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_param_models/test_tutorial003.py +0 -0
  1047. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_param_models/test_tutorial004.py +0 -0
  1048. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_params/__init__.py +0 -0
  1049. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_params/test_tutorial001.py +0 -0
  1050. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_params/test_tutorial002.py +0 -0
  1051. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_header_params/test_tutorial003.py +0 -0
  1052. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_json_base64_bytes/__init__.py +0 -0
  1053. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_json_base64_bytes/test_tutorial001.py +0 -0
  1054. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_metadata/__init__.py +0 -0
  1055. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_metadata/test_tutorial001.py +0 -0
  1056. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_metadata/test_tutorial001_1.py +0 -0
  1057. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_metadata/test_tutorial002.py +0 -0
  1058. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_metadata/test_tutorial003.py +0 -0
  1059. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_metadata/test_tutorial004.py +0 -0
  1060. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_middleware/__init__.py +0 -0
  1061. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_middleware/test_tutorial001.py +0 -0
  1062. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_openapi_callbacks/__init__.py +0 -0
  1063. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py +0 -0
  1064. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_openapi_webhooks/__init__.py +0 -0
  1065. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_openapi_webhooks/test_tutorial001.py +0 -0
  1066. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_opentelemetry/__init__.py +0 -0
  1067. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_opentelemetry/conftest.py +0 -0
  1068. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_opentelemetry/test_tutorial001.py +0 -0
  1069. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_opentelemetry/test_tutorial002.py +0 -0
  1070. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_opentelemetry/test_tutorial003.py +0 -0
  1071. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/__init__.py +0 -0
  1072. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial001.py +0 -0
  1073. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial002.py +0 -0
  1074. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial003.py +0 -0
  1075. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py +0 -0
  1076. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial005.py +0 -0
  1077. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial006.py +0 -0
  1078. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial007.py +0 -0
  1079. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/__init__.py +0 -0
  1080. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/test_tutorial001.py +0 -0
  1081. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002.py +0 -0
  1082. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002b.py +0 -0
  1083. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/test_tutorial003_tutorial004.py +0 -0
  1084. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py +0 -0
  1085. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_operation_configurations/test_tutorial006.py +0 -0
  1086. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/__init__.py +0 -0
  1087. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/test_tutorial001.py +0 -0
  1088. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/test_tutorial002.py +0 -0
  1089. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/test_tutorial003.py +0 -0
  1090. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/test_tutorial003b.py +0 -0
  1091. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/test_tutorial004.py +0 -0
  1092. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params/test_tutorial005.py +0 -0
  1093. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params_numeric_validations/__init__.py +0 -0
  1094. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial001.py +0 -0
  1095. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial002_tutorial003.py +0 -0
  1096. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial004.py +0 -0
  1097. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial005.py +0 -0
  1098. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_path_params_numeric_validations/test_tutorial006.py +0 -0
  1099. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/__init__.py +0 -0
  1100. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial001_tutorial002.py +0 -0
  1101. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial003.py +0 -0
  1102. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial004.py +0 -0
  1103. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial005.py +0 -0
  1104. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial006.py +0 -0
  1105. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial007.py +0 -0
  1106. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial008.py +0 -0
  1107. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial008b.py +0 -0
  1108. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial009_tutorial009b.py +0 -0
  1109. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial010.py +0 -0
  1110. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial011.py +0 -0
  1111. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_python_types/test_tutorial013.py +0 -0
  1112. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_param_models/__init__.py +0 -0
  1113. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_param_models/test_tutorial001.py +0 -0
  1114. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_param_models/test_tutorial002.py +0 -0
  1115. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_param_models/test_tutorial003.py +0 -0
  1116. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_param_models/test_tutorial004.py +0 -0
  1117. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/__init__.py +0 -0
  1118. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/test_tutorial001.py +0 -0
  1119. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/test_tutorial002.py +0 -0
  1120. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/test_tutorial003.py +0 -0
  1121. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/test_tutorial004.py +0 -0
  1122. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/test_tutorial005.py +0 -0
  1123. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params/test_tutorial006.py +0 -0
  1124. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/__init__.py +0 -0
  1125. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py +0 -0
  1126. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial002.py +0 -0
  1127. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial003.py +0 -0
  1128. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial004.py +0 -0
  1129. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial005.py +0 -0
  1130. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial006.py +0 -0
  1131. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial006c.py +0 -0
  1132. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial007.py +0 -0
  1133. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial008.py +0 -0
  1134. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial009.py +0 -0
  1135. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010.py +0 -0
  1136. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py +0 -0
  1137. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py +0 -0
  1138. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py +0 -0
  1139. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py +0 -0
  1140. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_query_params_str_validations/test_tutorial015.py +0 -0
  1141. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_files/__init__.py +0 -0
  1142. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_files/test_tutorial001.py +0 -0
  1143. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_files/test_tutorial001_02.py +0 -0
  1144. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_files/test_tutorial001_03.py +0 -0
  1145. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_files/test_tutorial002.py +0 -0
  1146. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_files/test_tutorial003.py +0 -0
  1147. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_form_models/__init__.py +0 -0
  1148. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_form_models/test_tutorial001.py +0 -0
  1149. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_form_models/test_tutorial002.py +0 -0
  1150. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_form_models/test_tutorial003.py +0 -0
  1151. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_form_models/test_tutorial004.py +0 -0
  1152. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_form_models/test_tutorial005.py +0 -0
  1153. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_forms/__init__.py +0 -0
  1154. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_forms/test_tutorial001.py +0 -0
  1155. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_forms_and_files/__init__.py +0 -0
  1156. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py +0 -0
  1157. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_change_status_code/__init__.py +0 -0
  1158. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_change_status_code/test_tutorial001.py +0 -0
  1159. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_cookies/__init__.py +0 -0
  1160. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_cookies/test_tutorial001.py +0 -0
  1161. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_cookies/test_tutorial002.py +0 -0
  1162. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_directly/__init__.py +0 -0
  1163. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_directly/test_tutorial001.py +0 -0
  1164. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_directly/test_tutorial002.py +0 -0
  1165. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_headers/__init__.py +0 -0
  1166. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_headers/test_tutorial001.py +0 -0
  1167. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_headers/test_tutorial002.py +0 -0
  1168. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/__init__.py +0 -0
  1169. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial001_tutorial001_01.py +0 -0
  1170. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial002.py +0 -0
  1171. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial003.py +0 -0
  1172. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial003_01.py +0 -0
  1173. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial003_02.py +0 -0
  1174. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial003_03.py +0 -0
  1175. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial003_04.py +0 -0
  1176. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial003_05.py +0 -0
  1177. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial004.py +0 -0
  1178. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial005.py +0 -0
  1179. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_model/test_tutorial006.py +0 -0
  1180. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_status_code/__init__.py +0 -0
  1181. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_response_status_code/test_tutorial001_tutorial002.py +0 -0
  1182. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_schema_extra_example/__init__.py +0 -0
  1183. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_schema_extra_example/test_tutorial001.py +0 -0
  1184. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_schema_extra_example/test_tutorial002.py +0 -0
  1185. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_schema_extra_example/test_tutorial003.py +0 -0
  1186. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py +0 -0
  1187. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_schema_extra_example/test_tutorial005.py +0 -0
  1188. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/__init__.py +0 -0
  1189. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial001.py +0 -0
  1190. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial002.py +0 -0
  1191. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial003.py +0 -0
  1192. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial004.py +0 -0
  1193. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial005.py +0 -0
  1194. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial006.py +0 -0
  1195. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_security/test_tutorial007.py +0 -0
  1196. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_separate_openapi_schemas/__init__.py +0 -0
  1197. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial001.py +0 -0
  1198. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial002.py +0 -0
  1199. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_server_sent_events/__init__.py +0 -0
  1200. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_server_sent_events/test_tutorial001.py +0 -0
  1201. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_server_sent_events/test_tutorial002.py +0 -0
  1202. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_server_sent_events/test_tutorial003.py +0 -0
  1203. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_server_sent_events/test_tutorial004.py +0 -0
  1204. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_server_sent_events/test_tutorial005.py +0 -0
  1205. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_settings/__init__.py +0 -0
  1206. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_settings/test_app01.py +0 -0
  1207. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_settings/test_app02.py +0 -0
  1208. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_settings/test_app03.py +0 -0
  1209. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_settings/test_tutorial001.py +0 -0
  1210. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_sql_databases/__init__.py +0 -0
  1211. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_sql_databases/test_tutorial001.py +0 -0
  1212. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_sql_databases/test_tutorial002.py +0 -0
  1213. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_static_files/__init__.py +0 -0
  1214. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_static_files/test_tutorial001.py +0 -0
  1215. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_stream_data/__init__.py +0 -0
  1216. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_stream_data/test_tutorial001.py +0 -0
  1217. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_stream_data/test_tutorial002.py +0 -0
  1218. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_stream_json_lines/__init__.py +0 -0
  1219. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_stream_json_lines/test_tutorial001.py +0 -0
  1220. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_strict_content_type/__init__.py +0 -0
  1221. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_strict_content_type/test_tutorial001.py +0 -0
  1222. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_sub_applications/__init__.py +0 -0
  1223. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_sub_applications/test_tutorial001.py +0 -0
  1224. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_templates/__init__.py +0 -0
  1225. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_templates/test_tutorial001.py +0 -0
  1226. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_templates/test_tutorial002.py +0 -0
  1227. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/__init__.py +0 -0
  1228. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/test_main_a.py +0 -0
  1229. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/test_main_b.py +0 -0
  1230. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/test_tutorial001.py +0 -0
  1231. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/test_tutorial002.py +0 -0
  1232. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/test_tutorial003.py +0 -0
  1233. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing/test_tutorial004.py +0 -0
  1234. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing_dependencies/__init__.py +0 -0
  1235. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_testing_dependencies/test_tutorial001.py +0 -0
  1236. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_using_request_directly/__init__.py +0 -0
  1237. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_using_request_directly/test_tutorial001.py +0 -0
  1238. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_websockets/__init__.py +0 -0
  1239. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_websockets/test_tutorial001.py +0 -0
  1240. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_websockets/test_tutorial002.py +0 -0
  1241. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_websockets/test_tutorial003.py +0 -0
  1242. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_wsgi/__init__.py +0 -0
  1243. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_tutorial/test_wsgi/test_tutorial001.py +0 -0
  1244. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_typing_python39.py +0 -0
  1245. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_union_body.py +0 -0
  1246. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_union_body_discriminator.py +0 -0
  1247. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_union_body_discriminator_annotated.py +0 -0
  1248. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_union_form_normalization.py +0 -0
  1249. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_union_forms.py +0 -0
  1250. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_union_inherited_body.py +0 -0
  1251. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_upload_file_read_position.py +0 -0
  1252. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_validate_response.py +0 -0
  1253. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_validate_response_dataclass.py +0 -0
  1254. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_validate_response_recursive/__init__.py +0 -0
  1255. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_validate_response_recursive/app.py +0 -0
  1256. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_validate_response_recursive/test_validate_response_recursive.py +0 -0
  1257. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_validation_error_context.py +0 -0
  1258. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_webhooks_security.py +0 -0
  1259. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_wrapped_method_forward_reference.py +0 -0
  1260. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_ws_dependencies.py +0 -0
  1261. {fastapi-0.159.0 → fastapi-0.159.1}/tests/test_ws_router.py +0 -0
  1262. {fastapi-0.159.0 → fastapi-0.159.1}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi
3
- Version: 0.159.0
3
+ Version: 0.159.1
4
4
  Summary: FastAPI framework, high performance, easy to learn, fast to code, ready for production
5
5
  Author-Email: Sebastián Ramírez <tiangolo@gmail.com>
6
6
  License-Expression: MIT
@@ -0,0 +1,23 @@
1
+ from typing import Annotated, Literal
2
+
3
+ from fastapi import FastAPI, Form
4
+ from pydantic import BaseModel
5
+
6
+ app = FastAPI()
7
+
8
+
9
+ class Person(BaseModel):
10
+ kind: Literal["person"]
11
+ name: str
12
+
13
+
14
+ class Company(BaseModel):
15
+ kind: Literal["company"]
16
+ company_name: str
17
+
18
+
19
+ @app.post("/contacts/")
20
+ async def create_contact(
21
+ contact: Annotated[Person | Company | None, Form(discriminator="kind")] = None,
22
+ ):
23
+ return contact
@@ -0,0 +1,23 @@
1
+ from typing import Literal
2
+
3
+ from fastapi import FastAPI, Form
4
+ from pydantic import BaseModel
5
+
6
+ app = FastAPI()
7
+
8
+
9
+ class Person(BaseModel):
10
+ kind: Literal["person"]
11
+ name: str
12
+
13
+
14
+ class Company(BaseModel):
15
+ kind: Literal["company"]
16
+ company_name: str
17
+
18
+
19
+ @app.post("/contacts/")
20
+ async def create_contact(
21
+ contact: Person | Company | None = Form(default=None, discriminator="kind"),
22
+ ):
23
+ return contact
@@ -1,6 +1,6 @@
1
1
  """FastAPI framework, high performance, easy to learn, fast to code, ready for production"""
2
2
 
3
- __version__ = "0.159.0"
3
+ __version__ = "0.159.1"
4
4
 
5
5
  from starlette import status as status
6
6
 
@@ -619,7 +619,7 @@ def analyze_param(
619
619
  use_annotation_from_field_info = use_annotation
620
620
  if isinstance(field_info, params.Form):
621
621
  ensure_multipart_is_installed()
622
- if is_union_of_base_models(field_info.annotation):
622
+ if _get_form_union_models(field_info.annotation):
623
623
  field_info.annotation = _add_form_union_validators(
624
624
  field_info.annotation
625
625
  )
@@ -1038,28 +1038,28 @@ def request_params_to_args(
1038
1038
  return values, errors
1039
1039
 
1040
1040
 
1041
- def is_union_of_base_models(field_type: Any) -> bool:
1042
- """Check if field type is a Union where all members are BaseModel subclasses."""
1043
- origin = get_origin(field_type)
1044
-
1045
- # Check if it's a Union type (covers both typing.Union and types.UnionType in Python 3.10+)
1046
- if origin is not Union and origin is not UnionType:
1047
- return False
1048
-
1049
- union_args = get_args(field_type)
1050
-
1051
- for arg in union_args:
1041
+ def _get_form_union_models(annotation: Any) -> list[type[BaseModel]]:
1042
+ if get_origin(annotation) not in (Union, UnionType):
1043
+ return []
1044
+ models = []
1045
+ for arg in get_args(annotation):
1046
+ if arg is type(None):
1047
+ continue
1052
1048
  if get_origin(arg) is Annotated:
1053
1049
  arg = get_args(arg)[0]
1054
1050
  if not lenient_issubclass(arg, BaseModel):
1055
- return False
1056
-
1057
- return True
1051
+ return []
1052
+ models.append(arg)
1053
+ # A nullable single model uses the regular form model extraction.
1054
+ return models if len(models) > 1 else []
1058
1055
 
1059
1056
 
1060
1057
  def _add_form_union_validators(annotation: Any) -> Any:
1061
- choices = []
1058
+ choices: list[Any] = []
1062
1059
  for choice in get_args(annotation):
1060
+ if choice is type(None):
1061
+ choices.append(choice)
1062
+ continue
1063
1063
  model = choice
1064
1064
  metadata: Sequence[Any] = ()
1065
1065
  if get_origin(choice) is Annotated:
@@ -1134,7 +1134,7 @@ def _should_embed_body_fields(fields: list[ModelField]) -> bool:
1134
1134
  isinstance(first_field.field_info, params.Form)
1135
1135
  and not lenient_issubclass(first_field.field_info.annotation, BaseModel)
1136
1136
  and _get_form_model(first_field) is None
1137
- and not is_union_of_base_models(first_field.field_info.annotation)
1137
+ and not _get_form_union_models(first_field.field_info.annotation)
1138
1138
  ):
1139
1139
  return True
1140
1140
  return False
@@ -1223,28 +1223,40 @@ async def _extract_form_body(
1223
1223
  yield alias, value, field
1224
1224
 
1225
1225
 
1226
+ def _is_form_model_supplied(
1227
+ model: type[BaseModel],
1228
+ received_body: FormData,
1229
+ known_param_names: set[str] | None = None,
1230
+ ) -> bool:
1231
+ # Check raw keys before empty fields are removed or checkboxes inferred.
1232
+ own_names = {
1233
+ alias
1234
+ for item in get_cached_model_fields(model)
1235
+ for alias, _ in _get_param_aliases(item)
1236
+ }
1237
+ return bool(
1238
+ own_names.intersection(received_body)
1239
+ or (
1240
+ model.model_config.get("extra") in ("allow", "forbid")
1241
+ and received_body.keys() - (known_param_names or own_names)
1242
+ )
1243
+ )
1244
+
1245
+
1226
1246
  async def _extract_form_model(
1227
1247
  field: ModelField,
1228
1248
  model: type[BaseModel],
1229
1249
  received_body: FormData,
1230
1250
  known_param_names: set[str] | None,
1231
1251
  ) -> Any:
1232
- model_fields = get_cached_model_fields(model)
1233
- if field.field_info.annotation is not model:
1234
- # Check raw keys before empty fields are removed or checkboxes inferred.
1235
- own_names = {
1236
- alias for item in model_fields for alias, _ in _get_param_aliases(item)
1237
- }
1238
- supplied = own_names.intersection(received_body)
1239
- extras = received_body.keys() - (known_param_names or own_names)
1240
- if not supplied and (
1241
- model.model_config.get("extra") not in ("allow", "forbid") or not extras
1242
- ):
1243
- return Undefined
1252
+ if field.field_info.annotation is not model and not _is_form_model_supplied(
1253
+ model, received_body, known_param_names
1254
+ ):
1255
+ return Undefined
1244
1256
  return {
1245
1257
  alias: item
1246
1258
  async for alias, item, _ in _extract_form_body(
1247
- model_fields, received_body, known_param_names
1259
+ get_cached_model_fields(model), received_body, known_param_names
1248
1260
  )
1249
1261
  }
1250
1262
 
@@ -1267,14 +1279,18 @@ async def request_body_to_args(
1267
1279
  first_field = body_fields[0]
1268
1280
  body_to_process = received_body
1269
1281
  form_values: dict[str, tuple[str, Any]] = {}
1282
+ form_union_absent = False
1270
1283
 
1271
1284
  if isinstance(received_body, FormData):
1272
1285
  fields_to_extract = [
1273
1286
  field for field in body_fields if _get_form_model(field) is None
1274
1287
  ]
1275
- if single_not_embedded_field and is_union_of_base_models(
1276
- first_field.field_info.annotation
1277
- ):
1288
+ union_models = (
1289
+ _get_form_union_models(first_field.field_info.annotation)
1290
+ if single_not_embedded_field
1291
+ else []
1292
+ )
1293
+ if union_models:
1278
1294
  # Preserve all form values for validators around the union.
1279
1295
  # Each branch applies its own model field extraction afterward.
1280
1296
  fields_to_extract = []
@@ -1288,11 +1304,21 @@ async def request_body_to_args(
1288
1304
  elif field is not None:
1289
1305
  # Keep each parameter's selected alias and scalar/list shape.
1290
1306
  form_values[field.name] = (alias, value)
1307
+ form_union_absent = (
1308
+ bool(union_models)
1309
+ and type(None) in get_args(first_field.field_info.annotation)
1310
+ and not any(
1311
+ _is_form_model_supplied(model, received_body) for model in union_models
1312
+ )
1313
+ )
1291
1314
 
1292
1315
  if single_not_embedded_field:
1293
1316
  loc: tuple[str, ...] = ("body",)
1294
1317
  v_, errors_ = _validate_value_with_model_field(
1295
- field=first_field, value=body_to_process, values=values, loc=loc
1318
+ field=first_field,
1319
+ value=Undefined if form_union_absent else body_to_process,
1320
+ values=values,
1321
+ loc=loc,
1296
1322
  )
1297
1323
  return {first_field.name: v_}, errors_
1298
1324
  for field in body_fields:
@@ -53,7 +53,7 @@ dependencies = [
53
53
  "annotated-doc>=0.0.2",
54
54
  "opentelemetry-api>=1.44.0",
55
55
  ]
56
- version = "0.159.0"
56
+ version = "0.159.1"
57
57
 
58
58
  [project.urls]
59
59
  Homepage = "https://github.com/fastapi/fastapi"
@@ -0,0 +1,413 @@
1
+ from typing import Annotated, Literal, Optional
2
+
3
+ import pytest
4
+ from fastapi import Depends, FastAPI, Form
5
+ from fastapi.testclient import TestClient
6
+ from pydantic import (
7
+ AliasChoices,
8
+ BaseModel,
9
+ BeforeValidator,
10
+ ConfigDict,
11
+ Field,
12
+ Tag,
13
+ model_validator,
14
+ )
15
+
16
+ app = FastAPI()
17
+
18
+
19
+ class TextForm(BaseModel):
20
+ kind: Literal["text"]
21
+ value: str
22
+ enabled: bool = True
23
+
24
+
25
+ class ListForm(BaseModel):
26
+ kind: Literal["list"]
27
+ value: list[str]
28
+
29
+
30
+ @app.post("/union")
31
+ def read_union(data: Annotated[TextForm | ListForm | None, Form()] = None):
32
+ return data
33
+
34
+
35
+ @app.post("/discriminated")
36
+ def read_discriminated(
37
+ data: Annotated[TextForm | ListForm | None, Form(discriminator="kind")] = None,
38
+ ):
39
+ return data
40
+
41
+
42
+ client = TestClient(app)
43
+
44
+
45
+ @pytest.mark.parametrize("path", ["/union", "/discriminated"])
46
+ def test_absent_union(path):
47
+ response = client.post(path)
48
+ assert response.status_code == 200, response.text
49
+ assert response.json() is None
50
+ response = client.post(path, data={"unknown": "ignored"})
51
+ assert response.status_code == 200, response.text
52
+ assert response.json() is None
53
+
54
+
55
+ @pytest.mark.parametrize("path", ["/union", "/discriminated"])
56
+ def test_supplied_union(path):
57
+ response = client.post(path, data={"kind": "text", "value": "hello"})
58
+ assert response.status_code == 200, response.text
59
+ assert response.json() == {"kind": "text", "value": "hello", "enabled": False}
60
+ response = client.post(path, data={"kind": "list", "value": ["", "blue"]})
61
+ assert response.status_code == 200, response.text
62
+ assert response.json() == {"kind": "list", "value": ["", "blue"]}
63
+
64
+
65
+ @pytest.mark.parametrize(
66
+ "path,branch", [("/union", "TextForm"), ("/discriminated", "text")]
67
+ )
68
+ @pytest.mark.parametrize("data", [{"kind": "text"}, {"kind": "text", "value": ""}])
69
+ def test_partial_and_empty_fields(path, branch, data):
70
+ response = client.post(path, data=data)
71
+ assert response.status_code == 422
72
+ error = response.json()["detail"][0]
73
+ assert error["type"] == "missing"
74
+ assert error["loc"] == ["body", branch, "value"]
75
+
76
+
77
+ @pytest.mark.parametrize("path", ["/union", "/discriminated"])
78
+ def test_multipart_union(path):
79
+ response = client.post(path, files={"unknown": (None, "ignored")})
80
+ assert response.status_code == 200, response.text
81
+ assert response.json() is None
82
+ response = client.post(
83
+ path,
84
+ files=[
85
+ ("kind", (None, "list")),
86
+ ("value", (None, "")),
87
+ ("value", (None, "blue")),
88
+ ],
89
+ )
90
+ assert response.status_code == 200, response.text
91
+ assert response.json() == {"kind": "list", "value": ["", "blue"]}
92
+ response = client.post(path, files={"kind": (None, "text"), "value": (None, "")})
93
+ assert response.status_code == 422
94
+ assert response.json()["detail"][0]["type"] == "missing"
95
+
96
+
97
+ @pytest.mark.parametrize(
98
+ "data,error_type",
99
+ [
100
+ ({"value": "hello"}, "union_tag_not_found"),
101
+ ({"value": ""}, "union_tag_not_found"),
102
+ ({"enabled": "false"}, "union_tag_not_found"),
103
+ ({"kind": ""}, "union_tag_invalid"),
104
+ ({"kind": "unknown"}, "union_tag_invalid"),
105
+ ],
106
+ )
107
+ def test_discriminator_errors(data, error_type):
108
+ response = client.post("/discriminated", data=data)
109
+ assert response.status_code == 422
110
+ assert response.json()["detail"][0]["type"] == error_type
111
+ assert response.json()["detail"][0]["loc"] == ["body"]
112
+
113
+
114
+ def test_nullable_union_without_default_is_required():
115
+ app = FastAPI()
116
+
117
+ class Count(BaseModel):
118
+ count: int = 1
119
+
120
+ class Label(BaseModel):
121
+ label: str = "default"
122
+
123
+ @app.post("/")
124
+ def read(data: Annotated[Count | Label | None, Form()]):
125
+ return data
126
+
127
+ client = TestClient(app)
128
+ response = client.post("/")
129
+ assert response.status_code == 422
130
+ assert response.json()["detail"] == [
131
+ {"type": "missing", "loc": ["body"], "msg": "Field required", "input": None}
132
+ ]
133
+ response = client.post("/", data={"count": "2"})
134
+ assert response.status_code == 200, response.text
135
+ assert response.json() == {"count": 2}
136
+ assert app.openapi()["paths"]["/"]["post"]["requestBody"]["required"] is True
137
+
138
+
139
+ @pytest.mark.parametrize("extra", ["ignore", "allow", "forbid"])
140
+ def test_unknown_fields(extra):
141
+ app = FastAPI()
142
+
143
+ class Count(BaseModel):
144
+ model_config = ConfigDict(extra=extra)
145
+ count: int = 1
146
+
147
+ class Label(BaseModel):
148
+ model_config = ConfigDict(extra=extra)
149
+ label: str = "default"
150
+
151
+ @app.post("/")
152
+ def read(
153
+ data: Annotated[Count | Label | None, Form(union_mode="left_to_right")] = None,
154
+ ):
155
+ return data
156
+
157
+ client = TestClient(app)
158
+ response = client.post("/")
159
+ assert response.status_code == 200, response.text
160
+ assert response.json() is None
161
+ response = client.post("/", data={"unknown": ["a", "b"]})
162
+ if extra == "forbid":
163
+ assert response.status_code == 422
164
+ assert [error["loc"] for error in response.json()["detail"]] == [
165
+ ["body", "Count", "unknown"],
166
+ ["body", "Label", "unknown"],
167
+ ]
168
+ assert all(
169
+ error["type"] == "extra_forbidden" for error in response.json()["detail"]
170
+ )
171
+ else:
172
+ assert response.status_code == 200, response.text
173
+ assert response.json() == (
174
+ {"count": 1, "unknown": ["a", "b"]} if extra == "allow" else None
175
+ )
176
+
177
+
178
+ def test_mixed_extra_configurations_activate_union():
179
+ app = FastAPI()
180
+
181
+ class Ignored(BaseModel):
182
+ name: str
183
+
184
+ class Allowed(BaseModel):
185
+ model_config = ConfigDict(extra="allow")
186
+ count: int = 1
187
+
188
+ @app.post("/")
189
+ def read(data: Annotated[Ignored | Allowed | None, Form()] = None):
190
+ return data
191
+
192
+ response = TestClient(app).post("/", data={"unknown": "value"})
193
+ assert response.status_code == 200, response.text
194
+ assert response.json() == {"count": 1, "unknown": "value"}
195
+
196
+
197
+ @pytest.mark.parametrize("name", ["full_name", "name"])
198
+ def test_aliases_activate_union(name):
199
+ app = FastAPI()
200
+
201
+ class AliasedForm(BaseModel):
202
+ name: str = Field(validation_alias=AliasChoices("full_name", "name"))
203
+
204
+ @app.post("/")
205
+ def read(data: Annotated[AliasedForm | ListForm | None, Form()] = None):
206
+ return data
207
+
208
+ client = TestClient(app)
209
+ response = client.post("/", data={"unknown": "ignored"})
210
+ assert response.status_code == 200, response.text
211
+ assert response.json() is None
212
+ response = client.post("/", data={name: "Rick"})
213
+ assert response.status_code == 200, response.text
214
+ assert response.json() == {"name": "Rick"}
215
+
216
+
217
+ @pytest.mark.parametrize("name", ["full_name", "name"])
218
+ def test_aliases_and_forbidden_extras(name):
219
+ app = FastAPI()
220
+
221
+ class Person(BaseModel):
222
+ model_config = ConfigDict(extra="forbid")
223
+ kind: Literal["person"] = Field(alias="type")
224
+ name: str = Field(validation_alias=AliasChoices("full_name", "name"))
225
+
226
+ class Company(BaseModel):
227
+ model_config = ConfigDict(extra="forbid")
228
+ kind: Literal["company"] = Field(alias="type")
229
+ company_name: str
230
+
231
+ @app.post("/")
232
+ def read(
233
+ data: Annotated[Person | Company | None, Form(discriminator="kind")] = None,
234
+ ):
235
+ return data
236
+
237
+ client = TestClient(app)
238
+ response = client.post("/", data={name: "Rick"})
239
+ assert response.status_code == 422
240
+ assert response.json()["detail"][0]["type"] == "union_tag_not_found"
241
+ response = client.post("/", data={"type": "person", name: "Rick"})
242
+ assert response.status_code == 200, response.text
243
+ assert response.json() == {"type": "person", "name": "Rick"}
244
+ response = client.post(
245
+ "/", data={"type": "person", name: "Rick", "company_name": "Acme"}
246
+ )
247
+ assert response.status_code == 422
248
+ assert response.json()["detail"][0]["type"] == "extra_forbidden"
249
+ assert response.json()["detail"][0]["loc"] == ["body", "person", "company_name"]
250
+
251
+
252
+ def test_branch_tags_and_before_validator():
253
+ app = FastAPI()
254
+ calls = []
255
+
256
+ def copy_input(data):
257
+ calls.append(data.copy())
258
+ return data.copy()
259
+
260
+ @app.post("/")
261
+ def read(
262
+ data: Annotated[
263
+ Annotated[TextForm, Tag("text")] | Annotated[ListForm, Tag("list")] | None,
264
+ BeforeValidator(copy_input),
265
+ Form(),
266
+ ] = None,
267
+ ):
268
+ return data
269
+
270
+ client = TestClient(app)
271
+ response = client.post("/")
272
+ assert response.status_code == 200, response.text
273
+ assert response.json() is None
274
+ assert calls == []
275
+ response = client.post("/", data={"kind": "list", "value": ["", "blue"]})
276
+ assert response.status_code == 200, response.text
277
+ assert response.json() == {"kind": "list", "value": ["", "blue"]}
278
+ assert calls == [{"kind": "list", "value": ["", "blue"]}]
279
+ response = client.post("/", data={"kind": "text", "value": ""})
280
+ assert response.status_code == 422
281
+ assert [error["loc"] for error in response.json()["detail"]] == [
282
+ ["body", "text", "value"],
283
+ ["body", "list", "kind"],
284
+ ]
285
+
286
+
287
+ def test_defaults_factories_and_validators():
288
+ app = FastAPI()
289
+ calls = []
290
+
291
+ class Defaults(BaseModel):
292
+ kind: Literal["defaults"] = "defaults"
293
+ tags: list[str] = Field(default_factory=list)
294
+ enabled: bool = True
295
+
296
+ @model_validator(mode="after")
297
+ def record_validation(self):
298
+ calls.append("validated")
299
+ return self
300
+
301
+ default = Defaults()
302
+
303
+ def factory():
304
+ calls.append("factory")
305
+ return Defaults()
306
+
307
+ @app.post("/default")
308
+ def read_default(data: Annotated[Defaults | TextForm | None, Form()] = default):
309
+ assert isinstance(data, Defaults)
310
+ data.tags.append("new")
311
+ return data
312
+
313
+ @app.post("/factory")
314
+ def read_factory(
315
+ data: Annotated[Defaults | TextForm | None, Form(default_factory=factory)],
316
+ ):
317
+ return data
318
+
319
+ @app.post("/validated-default")
320
+ def read_validated_default(
321
+ data: Annotated[
322
+ Defaults | TextForm | None, Form(validate_default=True)
323
+ ] = default,
324
+ ):
325
+ return data
326
+
327
+ client = TestClient(app)
328
+ calls.clear()
329
+ for _ in range(2):
330
+ response = client.post("/default")
331
+ assert response.status_code == 200, response.text
332
+ assert response.json() == {"kind": "defaults", "tags": ["new"], "enabled": True}
333
+ assert default.tags == []
334
+ assert calls == []
335
+ response = client.post("/factory")
336
+ assert response.status_code == 200, response.text
337
+ assert response.json() == {"kind": "defaults", "tags": [], "enabled": True}
338
+ assert calls == ["factory", "validated"]
339
+ calls.clear()
340
+ response = client.post("/factory", data={"kind": "defaults"})
341
+ assert response.status_code == 200, response.text
342
+ assert response.json() == {"kind": "defaults", "tags": [], "enabled": False}
343
+ assert calls == ["validated"]
344
+ calls.clear()
345
+ response = client.post("/validated-default")
346
+ assert response.status_code == 200, response.text
347
+ assert calls == ["validated"]
348
+
349
+
350
+ def test_optional_union_in_dependency():
351
+ app = FastAPI()
352
+
353
+ def get_form(
354
+ data: Optional[TextForm | ListForm] = Form(default=None), # noqa: UP045
355
+ ):
356
+ return data
357
+
358
+ @app.post("/")
359
+ def read(data: Annotated[TextForm | ListForm | None, Depends(get_form)]):
360
+ return data
361
+
362
+ client = TestClient(app)
363
+ response = client.post("/")
364
+ assert response.status_code == 200, response.text
365
+ assert response.json() is None
366
+ response = client.post("/", data={"kind": "text", "value": "hello"})
367
+ assert response.status_code == 200, response.text
368
+ assert response.json() == {"kind": "text", "value": "hello", "enabled": False}
369
+
370
+
371
+ def test_openapi():
372
+ schema = app.openapi()
373
+ assert schema["paths"]["/union"]["post"]["requestBody"] == {
374
+ "content": {
375
+ "application/x-www-form-urlencoded": {
376
+ "schema": {
377
+ "anyOf": [
378
+ {"$ref": "#/components/schemas/TextForm"},
379
+ {"$ref": "#/components/schemas/ListForm"},
380
+ {"type": "null"},
381
+ ],
382
+ "title": "Data",
383
+ }
384
+ }
385
+ }
386
+ }
387
+ assert schema["paths"]["/discriminated"]["post"]["requestBody"] == {
388
+ "content": {
389
+ "application/x-www-form-urlencoded": {
390
+ "schema": {
391
+ "anyOf": [
392
+ {
393
+ "oneOf": [
394
+ {"$ref": "#/components/schemas/TextForm"},
395
+ {"$ref": "#/components/schemas/ListForm"},
396
+ ],
397
+ "discriminator": {
398
+ "propertyName": "kind",
399
+ "mapping": {
400
+ "text": "#/components/schemas/TextForm",
401
+ "list": "#/components/schemas/ListForm",
402
+ },
403
+ },
404
+ },
405
+ {"type": "null"},
406
+ ],
407
+ "title": "Data",
408
+ }
409
+ }
410
+ }
411
+ }
412
+ assert schema["components"]["schemas"]["TextForm"]["required"] == ["kind", "value"]
413
+ assert schema["components"]["schemas"]["ListForm"]["required"] == ["kind", "value"]