fastapi 0.115.7__tar.gz → 0.115.8__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.

Potentially problematic release.


This version of fastapi might be problematic. Click here for more details.

Files changed (1189) hide show
  1. {fastapi-0.115.7 → fastapi-0.115.8}/PKG-INFO +2 -1
  2. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial002.py +1 -1
  3. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial002_py310.py +1 -1
  4. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/__init__.py +1 -1
  5. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/api_key.py +12 -25
  6. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/oauth2.py +2 -2
  7. {fastapi-0.115.7 → fastapi-0.115.8}/pyproject.toml +3 -1
  8. {fastapi-0.115.7 → fastapi-0.115.8}/requirements-tests.txt +1 -1
  9. fastapi-0.115.8/scripts/notify_translations.py +432 -0
  10. fastapi-0.115.8/scripts/people.py +401 -0
  11. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2.py +17 -8
  12. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2_optional.py +17 -8
  13. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2_optional_description.py +17 -8
  14. fastapi-0.115.7/tests/test_tutorial/test_body_multiple_params/test_tutorial003_py310.py → fastapi-0.115.8/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py +16 -9
  15. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_an_py39.py → fastapi-0.115.8/tests/test_tutorial/test_request_files/test_tutorial001.py +13 -10
  16. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_02_an_py310.py → fastapi-0.115.8/tests/test_tutorial/test_request_files/test_tutorial001_02.py +15 -10
  17. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_03_an_py39.py → fastapi-0.115.8/tests/test_tutorial/test_request_files/test_tutorial001_03.py +13 -7
  18. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial002_py39.py → fastapi-0.115.8/tests/test_tutorial/test_request_files/test_tutorial002.py +14 -21
  19. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial003_an_py39.py → fastapi-0.115.8/tests/test_tutorial/test_request_files/test_tutorial003.py +14 -19
  20. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_security/test_tutorial003.py +2 -2
  21. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_security/test_tutorial005.py +2 -2
  22. fastapi-0.115.7/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py +0 -273
  23. fastapi-0.115.7/tests/test_tutorial/test_body_multiple_params/test_tutorial003_an.py +0 -273
  24. fastapi-0.115.7/tests/test_tutorial/test_body_multiple_params/test_tutorial003_an_py310.py +0 -279
  25. fastapi-0.115.7/tests/test_tutorial/test_body_multiple_params/test_tutorial003_an_py39.py +0 -279
  26. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001.py +0 -229
  27. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_02.py +0 -208
  28. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_02_an.py +0 -208
  29. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_02_an_py39.py +0 -220
  30. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_02_py310.py +0 -220
  31. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_03.py +0 -159
  32. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_03_an.py +0 -159
  33. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial001_an.py +0 -218
  34. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial002.py +0 -249
  35. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial002_an.py +0 -249
  36. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial002_an_py39.py +0 -268
  37. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial003.py +0 -194
  38. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial003_an.py +0 -194
  39. fastapi-0.115.7/tests/test_tutorial/test_request_files/test_tutorial003_py39.py +0 -222
  40. {fastapi-0.115.7 → fastapi-0.115.8}/LICENSE +0 -0
  41. {fastapi-0.115.7 → fastapi-0.115.8}/README.md +0 -0
  42. {fastapi-0.115.7 → fastapi-0.115.8}/docs/en/docs/img/favicon.png +0 -0
  43. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_responses/tutorial001.py +0 -0
  44. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_responses/tutorial002.py +0 -0
  45. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_responses/tutorial003.py +0 -0
  46. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_responses/tutorial004.py +0 -0
  47. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_status_codes/tutorial001.py +0 -0
  48. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_status_codes/tutorial001_an.py +0 -0
  49. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_status_codes/tutorial001_an_py310.py +0 -0
  50. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_status_codes/tutorial001_an_py39.py +0 -0
  51. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/additional_status_codes/tutorial001_py310.py +0 -0
  52. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/advanced_middleware/tutorial001.py +0 -0
  53. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/advanced_middleware/tutorial002.py +0 -0
  54. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/advanced_middleware/tutorial003.py +0 -0
  55. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/__init__.py +0 -0
  56. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b/__init__.py +0 -0
  57. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b/main.py +0 -0
  58. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b/test_main.py +0 -0
  59. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an/__init__.py +0 -0
  60. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an/main.py +0 -0
  61. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an/test_main.py +0 -0
  62. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an_py310/__init__.py +0 -0
  63. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an_py310/main.py +0 -0
  64. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an_py310/test_main.py +0 -0
  65. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an_py39/__init__.py +0 -0
  66. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an_py39/main.py +0 -0
  67. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_an_py39/test_main.py +0 -0
  68. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_py310/__init__.py +0 -0
  69. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_py310/main.py +0 -0
  70. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/app_b_py310/test_main.py +0 -0
  71. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/main.py +0 -0
  72. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/test_main.py +0 -0
  73. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/tutorial001.py +0 -0
  74. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/tutorial002.py +0 -0
  75. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/app_testing/tutorial003.py +0 -0
  76. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/async_tests/__init__.py +0 -0
  77. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/async_tests/main.py +0 -0
  78. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/async_tests/test_main.py +0 -0
  79. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/background_tasks/tutorial001.py +0 -0
  80. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/background_tasks/tutorial002.py +0 -0
  81. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/background_tasks/tutorial002_an.py +0 -0
  82. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/background_tasks/tutorial002_an_py310.py +0 -0
  83. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/background_tasks/tutorial002_an_py39.py +0 -0
  84. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/background_tasks/tutorial002_py310.py +0 -0
  85. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/behind_a_proxy/tutorial001.py +0 -0
  86. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/behind_a_proxy/tutorial002.py +0 -0
  87. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/behind_a_proxy/tutorial003.py +0 -0
  88. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/behind_a_proxy/tutorial004.py +0 -0
  89. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/__init__.py +0 -0
  90. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/__init__.py +0 -0
  91. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/dependencies.py +0 -0
  92. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/internal/__init__.py +0 -0
  93. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/internal/admin.py +0 -0
  94. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/main.py +0 -0
  95. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/routers/__init__.py +0 -0
  96. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/routers/items.py +0 -0
  97. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app/routers/users.py +0 -0
  98. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/__init__.py +0 -0
  99. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/dependencies.py +0 -0
  100. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/internal/__init__.py +0 -0
  101. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/internal/admin.py +0 -0
  102. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/main.py +0 -0
  103. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/routers/__init__.py +0 -0
  104. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/routers/items.py +0 -0
  105. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an/routers/users.py +0 -0
  106. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/__init__.py +0 -0
  107. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/dependencies.py +0 -0
  108. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/internal/__init__.py +0 -0
  109. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/internal/admin.py +0 -0
  110. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/main.py +0 -0
  111. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/routers/__init__.py +0 -0
  112. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/routers/items.py +0 -0
  113. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/bigger_applications/app_an_py39/routers/users.py +0 -0
  114. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial001.py +0 -0
  115. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial001_py310.py +0 -0
  116. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial003.py +0 -0
  117. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial003_py310.py +0 -0
  118. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial004.py +0 -0
  119. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body/tutorial004_py310.py +0 -0
  120. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_fields/tutorial001.py +0 -0
  121. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_fields/tutorial001_an.py +0 -0
  122. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_fields/tutorial001_an_py310.py +0 -0
  123. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_fields/tutorial001_an_py39.py +0 -0
  124. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_fields/tutorial001_py310.py +0 -0
  125. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial001.py +0 -0
  126. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial001_an.py +0 -0
  127. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial001_an_py310.py +0 -0
  128. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial001_an_py39.py +0 -0
  129. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial001_py310.py +0 -0
  130. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial002.py +0 -0
  131. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial002_py310.py +0 -0
  132. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial003.py +0 -0
  133. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial003_an.py +0 -0
  134. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial003_an_py310.py +0 -0
  135. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial003_an_py39.py +0 -0
  136. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial003_py310.py +0 -0
  137. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial004.py +0 -0
  138. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial004_an.py +0 -0
  139. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial004_an_py310.py +0 -0
  140. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial004_an_py39.py +0 -0
  141. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial004_py310.py +0 -0
  142. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial005.py +0 -0
  143. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial005_an.py +0 -0
  144. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial005_an_py310.py +0 -0
  145. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial005_an_py39.py +0 -0
  146. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_multiple_params/tutorial005_py310.py +0 -0
  147. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial001.py +0 -0
  148. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial001_py310.py +0 -0
  149. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial002.py +0 -0
  150. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial002_py310.py +0 -0
  151. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial002_py39.py +0 -0
  152. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial003.py +0 -0
  153. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial003_py310.py +0 -0
  154. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial003_py39.py +0 -0
  155. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial004.py +0 -0
  156. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial004_py310.py +0 -0
  157. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial004_py39.py +0 -0
  158. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial005.py +0 -0
  159. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial005_py310.py +0 -0
  160. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial005_py39.py +0 -0
  161. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial006.py +0 -0
  162. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial006_py310.py +0 -0
  163. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial006_py39.py +0 -0
  164. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial007.py +0 -0
  165. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial007_py310.py +0 -0
  166. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial007_py39.py +0 -0
  167. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial008.py +0 -0
  168. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial008_py39.py +0 -0
  169. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial009.py +0 -0
  170. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_nested_models/tutorial009_py39.py +0 -0
  171. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_updates/tutorial001.py +0 -0
  172. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_updates/tutorial001_py310.py +0 -0
  173. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_updates/tutorial001_py39.py +0 -0
  174. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_updates/tutorial002.py +0 -0
  175. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_updates/tutorial002_py310.py +0 -0
  176. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/body_updates/tutorial002_py39.py +0 -0
  177. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/conditional_openapi/tutorial001.py +0 -0
  178. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/configure_swagger_ui/tutorial001.py +0 -0
  179. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/configure_swagger_ui/tutorial002.py +0 -0
  180. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/configure_swagger_ui/tutorial003.py +0 -0
  181. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial001.py +0 -0
  182. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial001_an.py +0 -0
  183. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial001_an_py310.py +0 -0
  184. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial001_an_py39.py +0 -0
  185. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial001_py310.py +0 -0
  186. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002.py +0 -0
  187. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_an.py +0 -0
  188. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_an_py310.py +0 -0
  189. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_an_py39.py +0 -0
  190. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_pv1.py +0 -0
  191. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_pv1_an.py +0 -0
  192. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_pv1_an_py310.py +0 -0
  193. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_pv1_an_py39.py +0 -0
  194. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_pv1_py310.py +0 -0
  195. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_param_models/tutorial002_py310.py +0 -0
  196. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_params/tutorial001.py +0 -0
  197. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_params/tutorial001_an.py +0 -0
  198. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_params/tutorial001_an_py310.py +0 -0
  199. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_params/tutorial001_an_py39.py +0 -0
  200. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cookie_params/tutorial001_py310.py +0 -0
  201. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/cors/tutorial001.py +0 -0
  202. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_docs_ui/tutorial001.py +0 -0
  203. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_docs_ui/tutorial002.py +0 -0
  204. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_request_and_route/tutorial001.py +0 -0
  205. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_request_and_route/tutorial002.py +0 -0
  206. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_request_and_route/tutorial003.py +0 -0
  207. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial001.py +0 -0
  208. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial001b.py +0 -0
  209. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial002.py +0 -0
  210. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial003.py +0 -0
  211. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial004.py +0 -0
  212. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial005.py +0 -0
  213. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial006.py +0 -0
  214. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial006b.py +0 -0
  215. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial006c.py +0 -0
  216. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial007.py +0 -0
  217. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial008.py +0 -0
  218. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial009.py +0 -0
  219. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial009b.py +0 -0
  220. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial009c.py +0 -0
  221. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/custom_response/tutorial010.py +0 -0
  222. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dataclasses/tutorial001.py +0 -0
  223. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dataclasses/tutorial002.py +0 -0
  224. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dataclasses/tutorial003.py +0 -0
  225. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/debugging/tutorial001.py +0 -0
  226. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001.py +0 -0
  227. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_02_an.py +0 -0
  228. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_02_an_py310.py +0 -0
  229. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_02_an_py39.py +0 -0
  230. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_an.py +0 -0
  231. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_an_py310.py +0 -0
  232. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_an_py39.py +0 -0
  233. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial001_py310.py +0 -0
  234. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial002.py +0 -0
  235. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial002_an.py +0 -0
  236. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial002_an_py310.py +0 -0
  237. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial002_an_py39.py +0 -0
  238. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial002_py310.py +0 -0
  239. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial003.py +0 -0
  240. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial003_an.py +0 -0
  241. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial003_an_py310.py +0 -0
  242. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial003_an_py39.py +0 -0
  243. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial003_py310.py +0 -0
  244. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial004.py +0 -0
  245. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial004_an.py +0 -0
  246. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial004_an_py310.py +0 -0
  247. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial004_an_py39.py +0 -0
  248. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial004_py310.py +0 -0
  249. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial005.py +0 -0
  250. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial005_an.py +0 -0
  251. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial005_an_py310.py +0 -0
  252. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial005_an_py39.py +0 -0
  253. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial005_py310.py +0 -0
  254. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial006.py +0 -0
  255. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial006_an.py +0 -0
  256. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial006_an_py39.py +0 -0
  257. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial007.py +0 -0
  258. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008.py +0 -0
  259. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008_an.py +0 -0
  260. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008_an_py39.py +0 -0
  261. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008b.py +0 -0
  262. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008b_an.py +0 -0
  263. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008b_an_py39.py +0 -0
  264. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008c.py +0 -0
  265. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008c_an.py +0 -0
  266. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008c_an_py39.py +0 -0
  267. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008d.py +0 -0
  268. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008d_an.py +0 -0
  269. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial008d_an_py39.py +0 -0
  270. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial009.py +0 -0
  271. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial010.py +0 -0
  272. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial011.py +0 -0
  273. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial011_an.py +0 -0
  274. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial011_an_py39.py +0 -0
  275. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial012.py +0 -0
  276. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial012_an.py +0 -0
  277. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependencies/tutorial012_an_py39.py +0 -0
  278. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependency_testing/tutorial001.py +0 -0
  279. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependency_testing/tutorial001_an.py +0 -0
  280. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependency_testing/tutorial001_an_py310.py +0 -0
  281. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependency_testing/tutorial001_an_py39.py +0 -0
  282. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/dependency_testing/tutorial001_py310.py +0 -0
  283. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/encoder/tutorial001.py +0 -0
  284. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/encoder/tutorial001_py310.py +0 -0
  285. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/events/tutorial001.py +0 -0
  286. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/events/tutorial002.py +0 -0
  287. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/events/tutorial003.py +0 -0
  288. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extending_openapi/tutorial001.py +0 -0
  289. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_data_types/tutorial001.py +0 -0
  290. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_data_types/tutorial001_an.py +0 -0
  291. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_data_types/tutorial001_an_py310.py +0 -0
  292. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_data_types/tutorial001_an_py39.py +0 -0
  293. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_data_types/tutorial001_py310.py +0 -0
  294. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial001.py +0 -0
  295. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial001_py310.py +0 -0
  296. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial002.py +0 -0
  297. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial002_py310.py +0 -0
  298. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial003.py +0 -0
  299. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial003_py310.py +0 -0
  300. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial004.py +0 -0
  301. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial004_py39.py +0 -0
  302. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial005.py +0 -0
  303. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/extra_models/tutorial005_py39.py +0 -0
  304. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/first_steps/tutorial001.py +0 -0
  305. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/first_steps/tutorial002.py +0 -0
  306. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/first_steps/tutorial003.py +0 -0
  307. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial001.py +0 -0
  308. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial001_py39.py +0 -0
  309. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial002.py +0 -0
  310. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial002_py39.py +0 -0
  311. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial003.py +0 -0
  312. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial003_py39.py +0 -0
  313. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial004.js +0 -0
  314. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/generate_clients/tutorial004.py +0 -0
  315. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/graphql/tutorial001.py +0 -0
  316. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/handling_errors/tutorial001.py +0 -0
  317. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/handling_errors/tutorial002.py +0 -0
  318. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/handling_errors/tutorial003.py +0 -0
  319. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/handling_errors/tutorial004.py +0 -0
  320. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/handling_errors/tutorial005.py +0 -0
  321. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/handling_errors/tutorial006.py +0 -0
  322. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial001.py +0 -0
  323. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial001_an.py +0 -0
  324. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial001_an_py310.py +0 -0
  325. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial001_an_py39.py +0 -0
  326. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial001_py310.py +0 -0
  327. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial001_py39.py +0 -0
  328. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002.py +0 -0
  329. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_an.py +0 -0
  330. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_an_py310.py +0 -0
  331. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_an_py39.py +0 -0
  332. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_pv1.py +0 -0
  333. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_pv1_an.py +0 -0
  334. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_pv1_an_py310.py +0 -0
  335. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_pv1_an_py39.py +0 -0
  336. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_pv1_py310.py +0 -0
  337. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_pv1_py39.py +0 -0
  338. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_py310.py +0 -0
  339. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_param_models/tutorial002_py39.py +0 -0
  340. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial001.py +0 -0
  341. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial001_an.py +0 -0
  342. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial001_an_py310.py +0 -0
  343. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial001_an_py39.py +0 -0
  344. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial001_py310.py +0 -0
  345. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial002.py +0 -0
  346. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial002_an.py +0 -0
  347. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial002_an_py310.py +0 -0
  348. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial002_an_py39.py +0 -0
  349. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial002_py310.py +0 -0
  350. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial003.py +0 -0
  351. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial003_an.py +0 -0
  352. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial003_an_py310.py +0 -0
  353. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial003_an_py39.py +0 -0
  354. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial003_py310.py +0 -0
  355. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/header_params/tutorial003_py39.py +0 -0
  356. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/metadata/tutorial001.py +0 -0
  357. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/metadata/tutorial001_1.py +0 -0
  358. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/metadata/tutorial002.py +0 -0
  359. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/metadata/tutorial003.py +0 -0
  360. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/metadata/tutorial004.py +0 -0
  361. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/middleware/tutorial001.py +0 -0
  362. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/openapi_callbacks/tutorial001.py +0 -0
  363. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/openapi_webhooks/tutorial001.py +0 -0
  364. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial001.py +0 -0
  365. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial002.py +0 -0
  366. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial003.py +0 -0
  367. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial004.py +0 -0
  368. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial005.py +0 -0
  369. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial006.py +0 -0
  370. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial007.py +0 -0
  371. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_advanced_configuration/tutorial007_pv1.py +0 -0
  372. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial001.py +0 -0
  373. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial001_py310.py +0 -0
  374. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial001_py39.py +0 -0
  375. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial002.py +0 -0
  376. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial002_py310.py +0 -0
  377. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial002_py39.py +0 -0
  378. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial002b.py +0 -0
  379. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial003.py +0 -0
  380. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial003_py310.py +0 -0
  381. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial003_py39.py +0 -0
  382. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial004.py +0 -0
  383. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial004_py310.py +0 -0
  384. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial004_py39.py +0 -0
  385. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial005.py +0 -0
  386. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial005_py310.py +0 -0
  387. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial005_py39.py +0 -0
  388. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_operation_configuration/tutorial006.py +0 -0
  389. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params/tutorial001.py +0 -0
  390. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params/tutorial002.py +0 -0
  391. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params/tutorial003.py +0 -0
  392. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params/tutorial003b.py +0 -0
  393. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params/tutorial004.py +0 -0
  394. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params/tutorial005.py +0 -0
  395. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial001.py +0 -0
  396. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial001_an.py +0 -0
  397. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial001_an_py310.py +0 -0
  398. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial001_an_py39.py +0 -0
  399. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial001_py310.py +0 -0
  400. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial002.py +0 -0
  401. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial002_an.py +0 -0
  402. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial002_an_py39.py +0 -0
  403. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial003.py +0 -0
  404. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial003_an.py +0 -0
  405. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial003_an_py39.py +0 -0
  406. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial004.py +0 -0
  407. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial004_an.py +0 -0
  408. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial004_an_py39.py +0 -0
  409. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial005.py +0 -0
  410. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial005_an.py +0 -0
  411. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial005_an_py39.py +0 -0
  412. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial006.py +0 -0
  413. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial006_an.py +0 -0
  414. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/path_params_numeric_validations/tutorial006_an_py39.py +0 -0
  415. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial001.py +0 -0
  416. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial002.py +0 -0
  417. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial003.py +0 -0
  418. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial004.py +0 -0
  419. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial005.py +0 -0
  420. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial006.py +0 -0
  421. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial006_py39.py +0 -0
  422. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial007.py +0 -0
  423. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial007_py39.py +0 -0
  424. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial008.py +0 -0
  425. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial008_py39.py +0 -0
  426. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial008b.py +0 -0
  427. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial008b_py310.py +0 -0
  428. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial009.py +0 -0
  429. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial009_py310.py +0 -0
  430. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial009b.py +0 -0
  431. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial009c.py +0 -0
  432. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial009c_py310.py +0 -0
  433. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial010.py +0 -0
  434. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial011.py +0 -0
  435. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial011_py310.py +0 -0
  436. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial011_py39.py +0 -0
  437. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial012.py +0 -0
  438. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial013.py +0 -0
  439. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/python_types/tutorial013_py39.py +0 -0
  440. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial001.py +0 -0
  441. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial001_an.py +0 -0
  442. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial001_an_py310.py +0 -0
  443. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial001_an_py39.py +0 -0
  444. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial001_py310.py +0 -0
  445. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial001_py39.py +0 -0
  446. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002.py +0 -0
  447. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_an.py +0 -0
  448. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_an_py310.py +0 -0
  449. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_an_py39.py +0 -0
  450. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_pv1.py +0 -0
  451. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_pv1_an.py +0 -0
  452. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_pv1_an_py310.py +0 -0
  453. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_pv1_an_py39.py +0 -0
  454. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_pv1_py310.py +0 -0
  455. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_pv1_py39.py +0 -0
  456. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_py310.py +0 -0
  457. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_param_models/tutorial002_py39.py +0 -0
  458. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial001.py +0 -0
  459. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial002.py +0 -0
  460. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial002_py310.py +0 -0
  461. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial003.py +0 -0
  462. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial003_py310.py +0 -0
  463. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial004.py +0 -0
  464. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial004_py310.py +0 -0
  465. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial005.py +0 -0
  466. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial006.py +0 -0
  467. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial006_py310.py +0 -0
  468. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params/tutorial006b.py +0 -0
  469. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial001.py +0 -0
  470. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial001_py310.py +0 -0
  471. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial002.py +0 -0
  472. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial002_an.py +0 -0
  473. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial002_an_py310.py +0 -0
  474. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial002_py310.py +0 -0
  475. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial003.py +0 -0
  476. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial003_an.py +0 -0
  477. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial003_an_py310.py +0 -0
  478. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial003_an_py39.py +0 -0
  479. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial003_py310.py +0 -0
  480. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial004.py +0 -0
  481. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial004_an.py +0 -0
  482. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial004_an_py310.py +0 -0
  483. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial004_an_py39.py +0 -0
  484. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial004_py310.py +0 -0
  485. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial004_regex_an_py310.py +0 -0
  486. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial005.py +0 -0
  487. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial005_an.py +0 -0
  488. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial005_an_py39.py +0 -0
  489. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006.py +0 -0
  490. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006_an.py +0 -0
  491. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006_an_py39.py +0 -0
  492. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006b.py +0 -0
  493. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006b_an.py +0 -0
  494. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006b_an_py39.py +0 -0
  495. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006c.py +0 -0
  496. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006c_an.py +0 -0
  497. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006c_an_py310.py +0 -0
  498. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006c_an_py39.py +0 -0
  499. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006c_py310.py +0 -0
  500. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006d.py +0 -0
  501. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006d_an.py +0 -0
  502. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial006d_an_py39.py +0 -0
  503. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial007.py +0 -0
  504. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial007_an.py +0 -0
  505. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial007_an_py310.py +0 -0
  506. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial007_an_py39.py +0 -0
  507. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial007_py310.py +0 -0
  508. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial008.py +0 -0
  509. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial008_an.py +0 -0
  510. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial008_an_py310.py +0 -0
  511. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial008_an_py39.py +0 -0
  512. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial008_py310.py +0 -0
  513. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial009.py +0 -0
  514. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial009_an.py +0 -0
  515. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial009_an_py310.py +0 -0
  516. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial009_an_py39.py +0 -0
  517. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial009_py310.py +0 -0
  518. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial010.py +0 -0
  519. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial010_an.py +0 -0
  520. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial010_an_py310.py +0 -0
  521. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial010_an_py39.py +0 -0
  522. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial010_py310.py +0 -0
  523. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial011.py +0 -0
  524. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial011_an.py +0 -0
  525. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial011_an_py310.py +0 -0
  526. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial011_an_py39.py +0 -0
  527. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial011_py310.py +0 -0
  528. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial011_py39.py +0 -0
  529. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial012.py +0 -0
  530. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial012_an.py +0 -0
  531. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial012_an_py39.py +0 -0
  532. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial012_py39.py +0 -0
  533. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial013.py +0 -0
  534. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial013_an.py +0 -0
  535. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial013_an_py39.py +0 -0
  536. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial014.py +0 -0
  537. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial014_an.py +0 -0
  538. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial014_an_py310.py +0 -0
  539. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial014_an_py39.py +0 -0
  540. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/query_params_str_validations/tutorial014_py310.py +0 -0
  541. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001.py +0 -0
  542. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_02.py +0 -0
  543. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_02_an.py +0 -0
  544. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_02_an_py310.py +0 -0
  545. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_02_an_py39.py +0 -0
  546. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_02_py310.py +0 -0
  547. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_03.py +0 -0
  548. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_03_an.py +0 -0
  549. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_03_an_py39.py +0 -0
  550. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_an.py +0 -0
  551. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial001_an_py39.py +0 -0
  552. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial002.py +0 -0
  553. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial002_an.py +0 -0
  554. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial002_an_py39.py +0 -0
  555. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial002_py39.py +0 -0
  556. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial003.py +0 -0
  557. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial003_an.py +0 -0
  558. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial003_an_py39.py +0 -0
  559. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_files/tutorial003_py39.py +0 -0
  560. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial001.py +0 -0
  561. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial001_an.py +0 -0
  562. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial001_an_py39.py +0 -0
  563. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial002.py +0 -0
  564. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial002_an.py +0 -0
  565. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial002_an_py39.py +0 -0
  566. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial002_pv1.py +0 -0
  567. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial002_pv1_an.py +0 -0
  568. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_form_models/tutorial002_pv1_an_py39.py +0 -0
  569. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_forms/tutorial001.py +0 -0
  570. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_forms/tutorial001_an.py +0 -0
  571. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_forms/tutorial001_an_py39.py +0 -0
  572. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_forms_and_files/tutorial001.py +0 -0
  573. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_forms_and_files/tutorial001_an.py +0 -0
  574. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/request_forms_and_files/tutorial001_an_py39.py +0 -0
  575. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_change_status_code/tutorial001.py +0 -0
  576. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_cookies/tutorial001.py +0 -0
  577. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_cookies/tutorial002.py +0 -0
  578. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_directly/tutorial001.py +0 -0
  579. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_directly/tutorial002.py +0 -0
  580. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_headers/tutorial001.py +0 -0
  581. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_headers/tutorial002.py +0 -0
  582. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial001.py +0 -0
  583. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial001_01.py +0 -0
  584. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial001_01_py310.py +0 -0
  585. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial001_01_py39.py +0 -0
  586. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial001_py310.py +0 -0
  587. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial001_py39.py +0 -0
  588. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial002.py +0 -0
  589. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial002_py310.py +0 -0
  590. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003.py +0 -0
  591. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_01.py +0 -0
  592. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_01_py310.py +0 -0
  593. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_02.py +0 -0
  594. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_03.py +0 -0
  595. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_04.py +0 -0
  596. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_04_py310.py +0 -0
  597. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_05.py +0 -0
  598. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_05_py310.py +0 -0
  599. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial003_py310.py +0 -0
  600. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial004.py +0 -0
  601. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial004_py310.py +0 -0
  602. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial004_py39.py +0 -0
  603. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial005.py +0 -0
  604. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial005_py310.py +0 -0
  605. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial006.py +0 -0
  606. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_model/tutorial006_py310.py +0 -0
  607. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_status_code/tutorial001.py +0 -0
  608. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/response_status_code/tutorial002.py +0 -0
  609. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial001.py +0 -0
  610. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial001_pv1.py +0 -0
  611. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial001_pv1_py310.py +0 -0
  612. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial001_py310.py +0 -0
  613. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial002.py +0 -0
  614. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial002_py310.py +0 -0
  615. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial003.py +0 -0
  616. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial003_an.py +0 -0
  617. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial003_an_py310.py +0 -0
  618. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial003_an_py39.py +0 -0
  619. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial003_py310.py +0 -0
  620. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial004.py +0 -0
  621. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial004_an.py +0 -0
  622. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial004_an_py310.py +0 -0
  623. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial004_an_py39.py +0 -0
  624. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial004_py310.py +0 -0
  625. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial005.py +0 -0
  626. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial005_an.py +0 -0
  627. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial005_an_py310.py +0 -0
  628. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial005_an_py39.py +0 -0
  629. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/schema_extra_example/tutorial005_py310.py +0 -0
  630. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial001.py +0 -0
  631. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial001_an.py +0 -0
  632. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial001_an_py39.py +0 -0
  633. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial002.py +0 -0
  634. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial002_an.py +0 -0
  635. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial002_an_py310.py +0 -0
  636. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial002_an_py39.py +0 -0
  637. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial002_py310.py +0 -0
  638. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial003.py +0 -0
  639. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial003_an.py +0 -0
  640. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial003_an_py310.py +0 -0
  641. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial003_an_py39.py +0 -0
  642. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial003_py310.py +0 -0
  643. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial004.py +0 -0
  644. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial004_an.py +0 -0
  645. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial004_an_py310.py +0 -0
  646. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial004_an_py39.py +0 -0
  647. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial004_py310.py +0 -0
  648. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial005.py +0 -0
  649. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial005_an.py +0 -0
  650. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial005_an_py310.py +0 -0
  651. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial005_an_py39.py +0 -0
  652. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial005_py310.py +0 -0
  653. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial005_py39.py +0 -0
  654. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial006.py +0 -0
  655. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial006_an.py +0 -0
  656. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial006_an_py39.py +0 -0
  657. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial007.py +0 -0
  658. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial007_an.py +0 -0
  659. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/security/tutorial007_an_py39.py +0 -0
  660. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/separate_openapi_schemas/tutorial001.py +0 -0
  661. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/separate_openapi_schemas/tutorial001_py310.py +0 -0
  662. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/separate_openapi_schemas/tutorial001_py39.py +0 -0
  663. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/separate_openapi_schemas/tutorial002.py +0 -0
  664. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/separate_openapi_schemas/tutorial002_py310.py +0 -0
  665. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/separate_openapi_schemas/tutorial002_py39.py +0 -0
  666. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app01/__init__.py +0 -0
  667. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app01/config.py +0 -0
  668. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app01/main.py +0 -0
  669. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02/__init__.py +0 -0
  670. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02/config.py +0 -0
  671. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02/main.py +0 -0
  672. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02/test_main.py +0 -0
  673. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an/__init__.py +0 -0
  674. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an/config.py +0 -0
  675. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an/main.py +0 -0
  676. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an/test_main.py +0 -0
  677. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an_py39/__init__.py +0 -0
  678. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an_py39/config.py +0 -0
  679. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an_py39/main.py +0 -0
  680. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app02_an_py39/test_main.py +0 -0
  681. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03/__init__.py +0 -0
  682. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03/config.py +0 -0
  683. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03/main.py +0 -0
  684. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an/__init__.py +0 -0
  685. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an/config.py +0 -0
  686. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an/config_pv1.py +0 -0
  687. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an/main.py +0 -0
  688. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an_py39/__init__.py +0 -0
  689. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an_py39/config.py +0 -0
  690. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/app03_an_py39/main.py +0 -0
  691. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/tutorial001.py +0 -0
  692. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/settings/tutorial001_pv1.py +0 -0
  693. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/__init__.py +0 -0
  694. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial001.py +0 -0
  695. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial001_an.py +0 -0
  696. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial001_an_py310.py +0 -0
  697. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial001_an_py39.py +0 -0
  698. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial001_py310.py +0 -0
  699. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial001_py39.py +0 -0
  700. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial002.py +0 -0
  701. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial002_an.py +0 -0
  702. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial002_an_py310.py +0 -0
  703. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial002_an_py39.py +0 -0
  704. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial002_py310.py +0 -0
  705. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sql_databases/tutorial002_py39.py +0 -0
  706. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/static_files/tutorial001.py +0 -0
  707. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/sub_applications/tutorial001.py +0 -0
  708. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/templates/static/styles.css +0 -0
  709. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/templates/templates/item.html +0 -0
  710. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/templates/tutorial001.py +0 -0
  711. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/using_request_directly/tutorial001.py +0 -0
  712. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/__init__.py +0 -0
  713. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial001.py +0 -0
  714. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial002.py +0 -0
  715. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial002_an.py +0 -0
  716. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial002_an_py310.py +0 -0
  717. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial002_an_py39.py +0 -0
  718. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial002_py310.py +0 -0
  719. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial003.py +0 -0
  720. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/websockets/tutorial003_py39.py +0 -0
  721. {fastapi-0.115.7 → fastapi-0.115.8}/docs_src/wsgi/tutorial001.py +0 -0
  722. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/__main__.py +0 -0
  723. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/_compat.py +0 -0
  724. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/applications.py +0 -0
  725. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/background.py +0 -0
  726. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/cli.py +0 -0
  727. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/concurrency.py +0 -0
  728. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/datastructures.py +0 -0
  729. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/dependencies/__init__.py +0 -0
  730. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/dependencies/models.py +0 -0
  731. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/dependencies/utils.py +0 -0
  732. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/encoders.py +0 -0
  733. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/exception_handlers.py +0 -0
  734. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/exceptions.py +0 -0
  735. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/logger.py +0 -0
  736. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/middleware/__init__.py +0 -0
  737. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/middleware/cors.py +0 -0
  738. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/middleware/gzip.py +0 -0
  739. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/middleware/httpsredirect.py +0 -0
  740. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/middleware/trustedhost.py +0 -0
  741. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/middleware/wsgi.py +0 -0
  742. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/openapi/__init__.py +0 -0
  743. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/openapi/constants.py +0 -0
  744. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/openapi/docs.py +0 -0
  745. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/openapi/models.py +0 -0
  746. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/openapi/utils.py +0 -0
  747. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/param_functions.py +0 -0
  748. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/params.py +0 -0
  749. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/py.typed +0 -0
  750. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/requests.py +0 -0
  751. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/responses.py +0 -0
  752. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/routing.py +0 -0
  753. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/__init__.py +0 -0
  754. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/base.py +0 -0
  755. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/http.py +0 -0
  756. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/open_id_connect_url.py +0 -0
  757. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/security/utils.py +0 -0
  758. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/staticfiles.py +0 -0
  759. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/templating.py +0 -0
  760. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/testclient.py +0 -0
  761. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/types.py +0 -0
  762. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/utils.py +0 -0
  763. {fastapi-0.115.7 → fastapi-0.115.8}/fastapi/websockets.py +0 -0
  764. {fastapi-0.115.7 → fastapi-0.115.8}/pdm_build.py +0 -0
  765. {fastapi-0.115.7 → fastapi-0.115.8}/requirements-docs-insiders.txt +0 -0
  766. {fastapi-0.115.7 → fastapi-0.115.8}/requirements-docs-tests.txt +0 -0
  767. {fastapi-0.115.7 → fastapi-0.115.8}/requirements-docs.txt +0 -0
  768. {fastapi-0.115.7 → fastapi-0.115.8}/requirements-github-actions.txt +0 -0
  769. {fastapi-0.115.7 → fastapi-0.115.8}/requirements-translations.txt +0 -0
  770. {fastapi-0.115.7 → fastapi-0.115.8}/requirements.txt +0 -0
  771. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/contributors.py +0 -0
  772. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/deploy_docs_status.py +0 -0
  773. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/docs.py +0 -0
  774. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/format.sh +0 -0
  775. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/label_approved.py +0 -0
  776. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/lint.sh +0 -0
  777. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/mkdocs_hooks.py +0 -0
  778. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/cookie_param_models/image01.py +0 -0
  779. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/header_param_models/image01.py +0 -0
  780. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/query_param_models/image01.py +0 -0
  781. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/request_form_models/image01.py +0 -0
  782. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/separate_openapi_schemas/image01.py +0 -0
  783. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/separate_openapi_schemas/image02.py +0 -0
  784. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/separate_openapi_schemas/image03.py +0 -0
  785. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/separate_openapi_schemas/image04.py +0 -0
  786. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/separate_openapi_schemas/image05.py +0 -0
  787. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/sql_databases/image01.py +0 -0
  788. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/playwright/sql_databases/image02.py +0 -0
  789. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/sponsors.py +0 -0
  790. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/test-cov-html.sh +0 -0
  791. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/test.sh +0 -0
  792. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/topic_repos.py +0 -0
  793. {fastapi-0.115.7 → fastapi-0.115.8}/scripts/translate.py +0 -0
  794. {fastapi-0.115.7 → fastapi-0.115.8}/tests/__init__.py +0 -0
  795. {fastapi-0.115.7 → fastapi-0.115.8}/tests/main.py +0 -0
  796. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_properties.py +0 -0
  797. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_properties_bool.py +0 -0
  798. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_response_extra.py +0 -0
  799. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_responses_bad.py +0 -0
  800. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_responses_custom_model_in_callback.py +0 -0
  801. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_responses_custom_validationerror.py +0 -0
  802. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_responses_default_validationerror.py +0 -0
  803. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_responses_response_class.py +0 -0
  804. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_additional_responses_router.py +0 -0
  805. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_allow_inf_nan_in_enforcing.py +0 -0
  806. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_ambiguous_params.py +0 -0
  807. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_annotated.py +0 -0
  808. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_application.py +0 -0
  809. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_callable_endpoint.py +0 -0
  810. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_compat.py +0 -0
  811. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_computed_fields.py +0 -0
  812. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_custom_middleware_exception.py +0 -0
  813. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_custom_route_class.py +0 -0
  814. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_custom_schema_fields.py +0 -0
  815. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_custom_swagger_ui_redirect.py +0 -0
  816. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_datastructures.py +0 -0
  817. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_datetime_custom_encoder.py +0 -0
  818. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_default_response_class.py +0 -0
  819. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_default_response_class_router.py +0 -0
  820. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_cache.py +0 -0
  821. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_class.py +0 -0
  822. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_contextmanager.py +0 -0
  823. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_contextvars.py +0 -0
  824. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_duplicates.py +0 -0
  825. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_normal_exceptions.py +0 -0
  826. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_overrides.py +0 -0
  827. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_dependency_security_overrides.py +0 -0
  828. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_deprecated_openapi_prefix.py +0 -0
  829. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_duplicate_models_openapi.py +0 -0
  830. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_empty_router.py +0 -0
  831. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_enforce_once_required_parameter.py +0 -0
  832. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_exception_handlers.py +0 -0
  833. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_extra_routes.py +0 -0
  834. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_fastapi_cli.py +0 -0
  835. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_filter_pydantic_sub_model/__init__.py +0 -0
  836. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_filter_pydantic_sub_model/app_pv1.py +0 -0
  837. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_filter_pydantic_sub_model/test_filter_pydantic_sub_model_pv1.py +0 -0
  838. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_filter_pydantic_sub_model_pv2.py +0 -0
  839. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_forms_from_non_typing_sequences.py +0 -0
  840. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_forms_single_model.py +0 -0
  841. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_forms_single_param.py +0 -0
  842. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_generate_unique_id_function.py +0 -0
  843. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_generic_parameterless_depends.py +0 -0
  844. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_get_request_body.py +0 -0
  845. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_http_connection_injection.py +0 -0
  846. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_include_route.py +0 -0
  847. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_include_router_defaults_overrides.py +0 -0
  848. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_infer_param_optionality.py +0 -0
  849. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_inherited_custom_class.py +0 -0
  850. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_invalid_path_param.py +0 -0
  851. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_invalid_sequence_param.py +0 -0
  852. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_jsonable_encoder.py +0 -0
  853. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_local_docs.py +0 -0
  854. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_modules_same_name_body/__init__.py +0 -0
  855. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_modules_same_name_body/app/__init__.py +0 -0
  856. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_modules_same_name_body/app/a.py +0 -0
  857. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_modules_same_name_body/app/b.py +0 -0
  858. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_modules_same_name_body/app/main.py +0 -0
  859. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_modules_same_name_body/test_main.py +0 -0
  860. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_multi_body_errors.py +0 -0
  861. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_multi_query_errors.py +0 -0
  862. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_multipart_installation.py +0 -0
  863. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_no_swagger_ui_redirect.py +0 -0
  864. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_openapi_examples.py +0 -0
  865. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_openapi_query_parameter_extension.py +0 -0
  866. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_openapi_route_extensions.py +0 -0
  867. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_openapi_separate_input_output_schemas.py +0 -0
  868. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_openapi_servers.py +0 -0
  869. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_operations_signatures.py +0 -0
  870. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_orjson_response_class.py +0 -0
  871. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_param_class.py +0 -0
  872. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_param_in_path_and_dependency.py +0 -0
  873. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_param_include_in_schema.py +0 -0
  874. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_params_repr.py +0 -0
  875. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_path.py +0 -0
  876. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_put_no_body.py +0 -0
  877. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_query.py +0 -0
  878. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_read_with_orm_mode.py +0 -0
  879. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_regex_deprecated_body.py +0 -0
  880. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_regex_deprecated_params.py +0 -0
  881. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_repeated_cookie_headers.py +0 -0
  882. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_repeated_dependency_schema.py +0 -0
  883. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_repeated_parameter_alias.py +0 -0
  884. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_reponse_set_reponse_code_empty.py +0 -0
  885. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_request_body_parameters_media_type.py +0 -0
  886. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_required_noneable.py +0 -0
  887. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_by_alias.py +0 -0
  888. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_change_status_code.py +0 -0
  889. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_class_no_mediatype.py +0 -0
  890. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_code_no_body.py +0 -0
  891. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_model_as_return_annotation.py +0 -0
  892. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_model_data_filter.py +0 -0
  893. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_model_data_filter_no_inheritance.py +0 -0
  894. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_model_include_exclude.py +0 -0
  895. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_model_invalid.py +0 -0
  896. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_response_model_sub_types.py +0 -0
  897. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_route_scope.py +0 -0
  898. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_router_events.py +0 -0
  899. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_router_prefix_with_template.py +0 -0
  900. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_router_redirect_slashes.py +0 -0
  901. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_schema_extra_examples.py +0 -0
  902. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_cookie.py +0 -0
  903. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_cookie_description.py +0 -0
  904. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_cookie_optional.py +0 -0
  905. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_header.py +0 -0
  906. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_header_description.py +0 -0
  907. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_header_optional.py +0 -0
  908. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_query.py +0 -0
  909. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_query_description.py +0 -0
  910. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_api_key_query_optional.py +0 -0
  911. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_base.py +0 -0
  912. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_base_description.py +0 -0
  913. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_base_optional.py +0 -0
  914. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_basic_optional.py +0 -0
  915. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_basic_realm.py +0 -0
  916. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_basic_realm_description.py +0 -0
  917. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_bearer.py +0 -0
  918. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_bearer_description.py +0 -0
  919. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_bearer_optional.py +0 -0
  920. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_digest.py +0 -0
  921. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_digest_description.py +0 -0
  922. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_http_digest_optional.py +0 -0
  923. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2_authorization_code_bearer.py +0 -0
  924. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2_authorization_code_bearer_description.py +0 -0
  925. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2_password_bearer_optional.py +0 -0
  926. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_oauth2_password_bearer_optional_description.py +0 -0
  927. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_openid_connect.py +0 -0
  928. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_openid_connect_description.py +0 -0
  929. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_security_openid_connect_optional.py +0 -0
  930. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_serialize_response.py +0 -0
  931. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_serialize_response_dataclass.py +0 -0
  932. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_serialize_response_model.py +0 -0
  933. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_skip_defaults.py +0 -0
  934. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_starlette_exception.py +0 -0
  935. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_starlette_urlconvertors.py +0 -0
  936. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_sub_callbacks.py +0 -0
  937. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_swagger_ui_init_oauth.py +0 -0
  938. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tuples.py +0 -0
  939. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/__init__.py +0 -0
  940. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_responses/__init__.py +0 -0
  941. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_responses/test_tutorial001.py +0 -0
  942. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_responses/test_tutorial002.py +0 -0
  943. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_responses/test_tutorial003.py +0 -0
  944. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_responses/test_tutorial004.py +0 -0
  945. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_status_codes/__init__.py +0 -0
  946. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_additional_status_codes/test_tutorial001.py +0 -0
  947. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_advanced_middleware/__init__.py +0 -0
  948. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_advanced_middleware/test_tutorial001.py +0 -0
  949. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_advanced_middleware/test_tutorial002.py +0 -0
  950. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_advanced_middleware/test_tutorial003.py +0 -0
  951. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_async_tests/__init__.py +0 -0
  952. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_async_tests/test_main.py +0 -0
  953. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_background_tasks/__init__.py +0 -0
  954. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_background_tasks/test_tutorial001.py +0 -0
  955. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_background_tasks/test_tutorial002.py +0 -0
  956. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_behind_a_proxy/__init__.py +0 -0
  957. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_behind_a_proxy/test_tutorial001.py +0 -0
  958. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_behind_a_proxy/test_tutorial002.py +0 -0
  959. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_behind_a_proxy/test_tutorial003.py +0 -0
  960. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_behind_a_proxy/test_tutorial004.py +0 -0
  961. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_bigger_applications/__init__.py +0 -0
  962. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_bigger_applications/test_main.py +0 -0
  963. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body/__init__.py +0 -0
  964. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body/test_tutorial001.py +0 -0
  965. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_fields/__init__.py +0 -0
  966. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_fields/test_tutorial001.py +0 -0
  967. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_multiple_params/__init__.py +0 -0
  968. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py +0 -0
  969. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_nested_models/__init__.py +0 -0
  970. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_nested_models/test_tutorial009.py +0 -0
  971. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_updates/__init__.py +0 -0
  972. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_body_updates/test_tutorial001.py +0 -0
  973. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_conditional_openapi/__init__.py +0 -0
  974. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_conditional_openapi/test_tutorial001.py +0 -0
  975. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_configure_swagger_ui/__init__.py +0 -0
  976. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial001.py +0 -0
  977. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial002.py +0 -0
  978. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_configure_swagger_ui/test_tutorial003.py +0 -0
  979. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cookie_param_models/__init__.py +0 -0
  980. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cookie_param_models/test_tutorial001.py +0 -0
  981. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cookie_param_models/test_tutorial002.py +0 -0
  982. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cookie_params/__init__.py +0 -0
  983. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cookie_params/test_tutorial001.py +0 -0
  984. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cors/__init__.py +0 -0
  985. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_cors/test_tutorial001.py +0 -0
  986. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_docs_ui/__init__.py +0 -0
  987. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_docs_ui/test_tutorial001.py +0 -0
  988. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_docs_ui/test_tutorial002.py +0 -0
  989. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_request_and_route/__init__.py +0 -0
  990. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_request_and_route/test_tutorial001.py +0 -0
  991. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_request_and_route/test_tutorial002.py +0 -0
  992. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_request_and_route/test_tutorial003.py +0 -0
  993. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/__init__.py +0 -0
  994. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial001.py +0 -0
  995. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial001b.py +0 -0
  996. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial004.py +0 -0
  997. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial005.py +0 -0
  998. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial006.py +0 -0
  999. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial006b.py +0 -0
  1000. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial006c.py +0 -0
  1001. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial007.py +0 -0
  1002. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial008.py +0 -0
  1003. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial009.py +0 -0
  1004. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial009b.py +0 -0
  1005. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_custom_response/test_tutorial009c.py +0 -0
  1006. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dataclasses/__init__.py +0 -0
  1007. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dataclasses/test_tutorial001.py +0 -0
  1008. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dataclasses/test_tutorial002.py +0 -0
  1009. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dataclasses/test_tutorial003.py +0 -0
  1010. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/__init__.py +0 -0
  1011. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial001.py +0 -0
  1012. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial004.py +0 -0
  1013. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial006.py +0 -0
  1014. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial008b.py +0 -0
  1015. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial008c.py +0 -0
  1016. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial008d.py +0 -0
  1017. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_dependencies/test_tutorial012.py +0 -0
  1018. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_events/__init__.py +0 -0
  1019. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_events/test_tutorial001.py +0 -0
  1020. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_events/test_tutorial002.py +0 -0
  1021. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_events/test_tutorial003.py +0 -0
  1022. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extending_openapi/__init__.py +0 -0
  1023. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extending_openapi/test_tutorial001.py +0 -0
  1024. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extra_data_types/__init__.py +0 -0
  1025. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extra_data_types/test_tutorial001.py +0 -0
  1026. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extra_models/__init__.py +0 -0
  1027. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extra_models/test_tutorial003.py +0 -0
  1028. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extra_models/test_tutorial004.py +0 -0
  1029. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_extra_models/test_tutorial005.py +0 -0
  1030. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_first_steps/__init__.py +0 -0
  1031. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_first_steps/test_tutorial001.py +0 -0
  1032. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_generate_clients/__init__.py +0 -0
  1033. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_generate_clients/test_tutorial003.py +0 -0
  1034. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/__init__.py +0 -0
  1035. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/test_tutorial001.py +0 -0
  1036. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/test_tutorial002.py +0 -0
  1037. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/test_tutorial003.py +0 -0
  1038. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/test_tutorial004.py +0 -0
  1039. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/test_tutorial005.py +0 -0
  1040. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_handling_errors/test_tutorial006.py +0 -0
  1041. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_param_models/__init__.py +0 -0
  1042. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_param_models/test_tutorial001.py +0 -0
  1043. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_param_models/test_tutorial002.py +0 -0
  1044. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_params/__init__.py +0 -0
  1045. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_params/test_tutorial001.py +0 -0
  1046. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_params/test_tutorial002.py +0 -0
  1047. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_header_params/test_tutorial003.py +0 -0
  1048. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_metadata/__init__.py +0 -0
  1049. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_metadata/test_tutorial001.py +0 -0
  1050. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_metadata/test_tutorial001_1.py +0 -0
  1051. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_metadata/test_tutorial004.py +0 -0
  1052. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_openapi_callbacks/__init__.py +0 -0
  1053. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py +0 -0
  1054. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_openapi_webhooks/__init__.py +0 -0
  1055. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_openapi_webhooks/test_tutorial001.py +0 -0
  1056. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/__init__.py +0 -0
  1057. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial001.py +0 -0
  1058. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial002.py +0 -0
  1059. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial003.py +0 -0
  1060. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py +0 -0
  1061. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial005.py +0 -0
  1062. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial006.py +0 -0
  1063. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial007.py +0 -0
  1064. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial007_pv1.py +0 -0
  1065. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_configurations/__init__.py +0 -0
  1066. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_configurations/test_tutorial002b.py +0 -0
  1067. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py +0 -0
  1068. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_operation_configurations/test_tutorial006.py +0 -0
  1069. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_params/__init__.py +0 -0
  1070. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_params/test_tutorial004.py +0 -0
  1071. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_path_params/test_tutorial005.py +0 -0
  1072. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_param_models/__init__.py +0 -0
  1073. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_param_models/test_tutorial001.py +0 -0
  1074. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_param_models/test_tutorial002.py +0 -0
  1075. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params/__init__.py +0 -0
  1076. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params/test_tutorial005.py +0 -0
  1077. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params/test_tutorial006.py +0 -0
  1078. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/__init__.py +0 -0
  1079. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010.py +0 -0
  1080. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010_an.py +0 -0
  1081. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010_an_py310.py +0 -0
  1082. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010_an_py39.py +0 -0
  1083. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial010_py310.py +0 -0
  1084. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py +0 -0
  1085. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_an.py +0 -0
  1086. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_an_py310.py +0 -0
  1087. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_an_py39.py +0 -0
  1088. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py310.py +0 -0
  1089. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py39.py +0 -0
  1090. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py +0 -0
  1091. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_an.py +0 -0
  1092. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_an_py39.py +0 -0
  1093. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_py39.py +0 -0
  1094. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py +0 -0
  1095. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial013_an.py +0 -0
  1096. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial013_an_py39.py +0 -0
  1097. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py +0 -0
  1098. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_an.py +0 -0
  1099. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_an_py310.py +0 -0
  1100. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_an_py39.py +0 -0
  1101. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_py310.py +0 -0
  1102. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_files/__init__.py +0 -0
  1103. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_form_models/__init__.py +0 -0
  1104. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_form_models/test_tutorial001.py +0 -0
  1105. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_form_models/test_tutorial002.py +0 -0
  1106. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_form_models/test_tutorial002_pv1.py +0 -0
  1107. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_forms/__init__.py +0 -0
  1108. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_forms/test_tutorial001.py +0 -0
  1109. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_forms_and_files/__init__.py +0 -0
  1110. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py +0 -0
  1111. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_change_status_code/__init__.py +0 -0
  1112. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_change_status_code/test_tutorial001.py +0 -0
  1113. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_cookies/__init__.py +0 -0
  1114. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_cookies/test_tutorial001.py +0 -0
  1115. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_cookies/test_tutorial002.py +0 -0
  1116. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_headers/__init__.py +0 -0
  1117. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_headers/test_tutorial001.py +0 -0
  1118. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_headers/test_tutorial002.py +0 -0
  1119. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/__init__.py +0 -0
  1120. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003.py +0 -0
  1121. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_01.py +0 -0
  1122. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_02.py +0 -0
  1123. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_03.py +0 -0
  1124. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_04.py +0 -0
  1125. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_04_py310.py +0 -0
  1126. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_05.py +0 -0
  1127. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial003_py310.py +0 -0
  1128. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial004.py +0 -0
  1129. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial005.py +0 -0
  1130. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_response_model/test_tutorial006.py +0 -0
  1131. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_schema_extra_example/__init__.py +0 -0
  1132. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_schema_extra_example/test_tutorial001.py +0 -0
  1133. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_schema_extra_example/test_tutorial001_pv1.py +0 -0
  1134. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py +0 -0
  1135. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_schema_extra_example/test_tutorial005.py +0 -0
  1136. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_security/__init__.py +0 -0
  1137. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_security/test_tutorial001.py +0 -0
  1138. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_security/test_tutorial006.py +0 -0
  1139. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_separate_openapi_schemas/__init__.py +0 -0
  1140. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial001.py +0 -0
  1141. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_separate_openapi_schemas/test_tutorial002.py +0 -0
  1142. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_settings/__init__.py +0 -0
  1143. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_settings/test_app02.py +0 -0
  1144. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_settings/test_tutorial001.py +0 -0
  1145. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_settings/test_tutorial001_pv1.py +0 -0
  1146. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_sql_databases/__init__.py +0 -0
  1147. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_sql_databases/test_tutorial001.py +0 -0
  1148. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_sql_databases/test_tutorial002.py +0 -0
  1149. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_sub_applications/__init__.py +0 -0
  1150. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_sub_applications/test_tutorial001.py +0 -0
  1151. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_templates/__init__.py +0 -0
  1152. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_templates/test_tutorial001.py +0 -0
  1153. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/__init__.py +0 -0
  1154. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_main.py +0 -0
  1155. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_main_b.py +0 -0
  1156. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_main_b_an.py +0 -0
  1157. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_main_b_an_py310.py +0 -0
  1158. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_main_b_an_py39.py +0 -0
  1159. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_main_b_py310.py +0 -0
  1160. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_tutorial001.py +0 -0
  1161. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_tutorial002.py +0 -0
  1162. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing/test_tutorial003.py +0 -0
  1163. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing_dependencies/__init__.py +0 -0
  1164. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing_dependencies/test_tutorial001.py +0 -0
  1165. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing_dependencies/test_tutorial001_an.py +0 -0
  1166. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing_dependencies/test_tutorial001_an_py310.py +0 -0
  1167. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing_dependencies/test_tutorial001_an_py39.py +0 -0
  1168. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_testing_dependencies/test_tutorial001_py310.py +0 -0
  1169. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_websockets/__init__.py +0 -0
  1170. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_websockets/test_tutorial001.py +0 -0
  1171. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_websockets/test_tutorial002.py +0 -0
  1172. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_websockets/test_tutorial003.py +0 -0
  1173. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_websockets/test_tutorial003_py39.py +0 -0
  1174. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_wsgi/__init__.py +0 -0
  1175. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_tutorial/test_wsgi/test_tutorial001.py +0 -0
  1176. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_typing_python39.py +0 -0
  1177. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_union_body.py +0 -0
  1178. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_union_inherited_body.py +0 -0
  1179. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response.py +0 -0
  1180. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response_dataclass.py +0 -0
  1181. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response_recursive/__init__.py +0 -0
  1182. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response_recursive/app_pv1.py +0 -0
  1183. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response_recursive/app_pv2.py +0 -0
  1184. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response_recursive/test_validate_response_recursive_pv1.py +0 -0
  1185. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py +0 -0
  1186. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_webhooks_security.py +0 -0
  1187. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_ws_dependencies.py +0 -0
  1188. {fastapi-0.115.7 → fastapi-0.115.8}/tests/test_ws_router.py +0 -0
  1189. {fastapi-0.115.7 → fastapi-0.115.8}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastapi
3
- Version: 0.115.7
3
+ Version: 0.115.8
4
4
  Summary: FastAPI framework, high performance, easy to learn, fast to code, ready for production
5
5
  Author-Email: =?utf-8?q?Sebasti=C3=A1n_Ram=C3=ADrez?= <tiangolo@gmail.com>
6
6
  Classifier: Intended Audience :: Information Technology
@@ -29,6 +29,7 @@ Classifier: Programming Language :: Python :: 3.9
29
29
  Classifier: Programming Language :: Python :: 3.10
30
30
  Classifier: Programming Language :: Python :: 3.11
31
31
  Classifier: Programming Language :: Python :: 3.12
32
+ Classifier: Programming Language :: Python :: 3.13
32
33
  Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
33
34
  Classifier: Topic :: Internet :: WWW/HTTP
34
35
  Project-URL: Homepage, https://github.com/fastapi/fastapi
@@ -17,7 +17,7 @@ app = FastAPI()
17
17
  @app.post("/items/")
18
18
  async def create_item(item: Item):
19
19
  item_dict = item.dict()
20
- if item.tax:
20
+ if item.tax is not None:
21
21
  price_with_tax = item.price + item.tax
22
22
  item_dict.update({"price_with_tax": price_with_tax})
23
23
  return item_dict
@@ -15,7 +15,7 @@ app = FastAPI()
15
15
  @app.post("/items/")
16
16
  async def create_item(item: Item):
17
17
  item_dict = item.dict()
18
- if item.tax:
18
+ if item.tax is not None:
19
19
  price_with_tax = item.price + item.tax
20
20
  item_dict.update({"price_with_tax": price_with_tax})
21
21
  return item_dict
@@ -1,6 +1,6 @@
1
1
  """FastAPI framework, high performance, easy to learn, fast to code, ready for production"""
2
2
 
3
- __version__ = "0.115.7"
3
+ __version__ = "0.115.8"
4
4
 
5
5
  from starlette import status as status
6
6
 
@@ -9,7 +9,15 @@ from typing_extensions import Annotated, Doc
9
9
 
10
10
 
11
11
  class APIKeyBase(SecurityBase):
12
- pass
12
+ @staticmethod
13
+ def check_api_key(api_key: Optional[str], auto_error: bool) -> Optional[str]:
14
+ if not api_key:
15
+ if auto_error:
16
+ raise HTTPException(
17
+ status_code=HTTP_403_FORBIDDEN, detail="Not authenticated"
18
+ )
19
+ return None
20
+ return api_key
13
21
 
14
22
 
15
23
  class APIKeyQuery(APIKeyBase):
@@ -101,14 +109,7 @@ class APIKeyQuery(APIKeyBase):
101
109
 
102
110
  async def __call__(self, request: Request) -> Optional[str]:
103
111
  api_key = request.query_params.get(self.model.name)
104
- if not api_key:
105
- if self.auto_error:
106
- raise HTTPException(
107
- status_code=HTTP_403_FORBIDDEN, detail="Not authenticated"
108
- )
109
- else:
110
- return None
111
- return api_key
112
+ return self.check_api_key(api_key, self.auto_error)
112
113
 
113
114
 
114
115
  class APIKeyHeader(APIKeyBase):
@@ -196,14 +197,7 @@ class APIKeyHeader(APIKeyBase):
196
197
 
197
198
  async def __call__(self, request: Request) -> Optional[str]:
198
199
  api_key = request.headers.get(self.model.name)
199
- if not api_key:
200
- if self.auto_error:
201
- raise HTTPException(
202
- status_code=HTTP_403_FORBIDDEN, detail="Not authenticated"
203
- )
204
- else:
205
- return None
206
- return api_key
200
+ return self.check_api_key(api_key, self.auto_error)
207
201
 
208
202
 
209
203
  class APIKeyCookie(APIKeyBase):
@@ -291,11 +285,4 @@ class APIKeyCookie(APIKeyBase):
291
285
 
292
286
  async def __call__(self, request: Request) -> Optional[str]:
293
287
  api_key = request.cookies.get(self.model.name)
294
- if not api_key:
295
- if self.auto_error:
296
- raise HTTPException(
297
- status_code=HTTP_403_FORBIDDEN, detail="Not authenticated"
298
- )
299
- else:
300
- return None
301
- return api_key
288
+ return self.check_api_key(api_key, self.auto_error)
@@ -63,7 +63,7 @@ class OAuth2PasswordRequestForm:
63
63
  *,
64
64
  grant_type: Annotated[
65
65
  Union[str, None],
66
- Form(pattern="password"),
66
+ Form(pattern="^password$"),
67
67
  Doc(
68
68
  """
69
69
  The OAuth2 spec says it is required and MUST be the fixed string
@@ -217,7 +217,7 @@ class OAuth2PasswordRequestFormStrict(OAuth2PasswordRequestForm):
217
217
  self,
218
218
  grant_type: Annotated[
219
219
  str,
220
- Form(pattern="password"),
220
+ Form(pattern="^password$"),
221
221
  Doc(
222
222
  """
223
223
  The OAuth2 spec says it is required and MUST be the fixed string
@@ -40,6 +40,7 @@ classifiers = [
40
40
  "Programming Language :: Python :: 3.10",
41
41
  "Programming Language :: Python :: 3.11",
42
42
  "Programming Language :: Python :: 3.12",
43
+ "Programming Language :: Python :: 3.13",
43
44
  "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
44
45
  "Topic :: Internet :: WWW/HTTP",
45
46
  ]
@@ -48,7 +49,7 @@ dependencies = [
48
49
  "pydantic>=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0",
49
50
  "typing-extensions>=4.8.0",
50
51
  ]
51
- version = "0.115.7"
52
+ version = "0.115.8"
52
53
 
53
54
  [project.urls]
54
55
  Homepage = "https://github.com/fastapi/fastapi"
@@ -137,6 +138,7 @@ filterwarnings = [
137
138
  "ignore:You seem to already have a custom.*:RuntimeWarning:trio",
138
139
  "ignore:datetime\\.datetime\\.utcfromtimestamp\\(\\) is deprecated and scheduled for removal in a future version\\..*:DeprecationWarning:sqlalchemy",
139
140
  "ignore:The `hash` argument is deprecated*:DeprecationWarning:trio",
141
+ "ignore:Exception ignored in. <sqlite3\\.Connection object.*:pytest.PytestUnraisableExceptionWarning",
140
142
  ]
141
143
 
142
144
  [tool.coverage.run]
@@ -6,7 +6,7 @@ mypy ==1.8.0
6
6
  dirty-equals ==0.8.0
7
7
  sqlmodel==0.0.22
8
8
  flask >=1.1.2,<4.0.0
9
- anyio[trio] >=3.2.1,<4.0.0
9
+ anyio[trio] >=3.2.1,<5.0.0
10
10
  PyJWT==2.8.0
11
11
  pyyaml >=5.3.1,<7.0.0
12
12
  passlib[bcrypt] >=1.7.2,<2.0.0
@@ -0,0 +1,432 @@
1
+ import logging
2
+ import random
3
+ import sys
4
+ import time
5
+ from pathlib import Path
6
+ from typing import Any, Dict, List, Union, cast
7
+
8
+ import httpx
9
+ from github import Github
10
+ from pydantic import BaseModel, SecretStr
11
+ from pydantic_settings import BaseSettings
12
+
13
+ awaiting_label = "awaiting-review"
14
+ lang_all_label = "lang-all"
15
+ approved_label = "approved-1"
16
+
17
+
18
+ github_graphql_url = "https://api.github.com/graphql"
19
+ questions_translations_category_id = "DIC_kwDOCZduT84CT5P9"
20
+
21
+ all_discussions_query = """
22
+ query Q($category_id: ID) {
23
+ repository(name: "fastapi", owner: "fastapi") {
24
+ discussions(categoryId: $category_id, first: 100) {
25
+ nodes {
26
+ title
27
+ id
28
+ number
29
+ labels(first: 10) {
30
+ edges {
31
+ node {
32
+ id
33
+ name
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ """
42
+
43
+ translation_discussion_query = """
44
+ query Q($after: String, $discussion_number: Int!) {
45
+ repository(name: "fastapi", owner: "fastapi") {
46
+ discussion(number: $discussion_number) {
47
+ comments(first: 100, after: $after) {
48
+ edges {
49
+ cursor
50
+ node {
51
+ id
52
+ url
53
+ body
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ """
61
+
62
+ add_comment_mutation = """
63
+ mutation Q($discussion_id: ID!, $body: String!) {
64
+ addDiscussionComment(input: {discussionId: $discussion_id, body: $body}) {
65
+ comment {
66
+ id
67
+ url
68
+ body
69
+ }
70
+ }
71
+ }
72
+ """
73
+
74
+ update_comment_mutation = """
75
+ mutation Q($comment_id: ID!, $body: String!) {
76
+ updateDiscussionComment(input: {commentId: $comment_id, body: $body}) {
77
+ comment {
78
+ id
79
+ url
80
+ body
81
+ }
82
+ }
83
+ }
84
+ """
85
+
86
+
87
+ class Comment(BaseModel):
88
+ id: str
89
+ url: str
90
+ body: str
91
+
92
+
93
+ class UpdateDiscussionComment(BaseModel):
94
+ comment: Comment
95
+
96
+
97
+ class UpdateCommentData(BaseModel):
98
+ updateDiscussionComment: UpdateDiscussionComment
99
+
100
+
101
+ class UpdateCommentResponse(BaseModel):
102
+ data: UpdateCommentData
103
+
104
+
105
+ class AddDiscussionComment(BaseModel):
106
+ comment: Comment
107
+
108
+
109
+ class AddCommentData(BaseModel):
110
+ addDiscussionComment: AddDiscussionComment
111
+
112
+
113
+ class AddCommentResponse(BaseModel):
114
+ data: AddCommentData
115
+
116
+
117
+ class CommentsEdge(BaseModel):
118
+ node: Comment
119
+ cursor: str
120
+
121
+
122
+ class Comments(BaseModel):
123
+ edges: List[CommentsEdge]
124
+
125
+
126
+ class CommentsDiscussion(BaseModel):
127
+ comments: Comments
128
+
129
+
130
+ class CommentsRepository(BaseModel):
131
+ discussion: CommentsDiscussion
132
+
133
+
134
+ class CommentsData(BaseModel):
135
+ repository: CommentsRepository
136
+
137
+
138
+ class CommentsResponse(BaseModel):
139
+ data: CommentsData
140
+
141
+
142
+ class AllDiscussionsLabelNode(BaseModel):
143
+ id: str
144
+ name: str
145
+
146
+
147
+ class AllDiscussionsLabelsEdge(BaseModel):
148
+ node: AllDiscussionsLabelNode
149
+
150
+
151
+ class AllDiscussionsDiscussionLabels(BaseModel):
152
+ edges: List[AllDiscussionsLabelsEdge]
153
+
154
+
155
+ class AllDiscussionsDiscussionNode(BaseModel):
156
+ title: str
157
+ id: str
158
+ number: int
159
+ labels: AllDiscussionsDiscussionLabels
160
+
161
+
162
+ class AllDiscussionsDiscussions(BaseModel):
163
+ nodes: List[AllDiscussionsDiscussionNode]
164
+
165
+
166
+ class AllDiscussionsRepository(BaseModel):
167
+ discussions: AllDiscussionsDiscussions
168
+
169
+
170
+ class AllDiscussionsData(BaseModel):
171
+ repository: AllDiscussionsRepository
172
+
173
+
174
+ class AllDiscussionsResponse(BaseModel):
175
+ data: AllDiscussionsData
176
+
177
+
178
+ class Settings(BaseSettings):
179
+ model_config = {"env_ignore_empty": True}
180
+
181
+ github_repository: str
182
+ github_token: SecretStr
183
+ github_event_path: Path
184
+ github_event_name: Union[str, None] = None
185
+ httpx_timeout: int = 30
186
+ debug: Union[bool, None] = False
187
+ number: int | None = None
188
+
189
+
190
+ class PartialGitHubEventIssue(BaseModel):
191
+ number: int | None = None
192
+
193
+
194
+ class PartialGitHubEvent(BaseModel):
195
+ pull_request: PartialGitHubEventIssue | None = None
196
+
197
+
198
+ def get_graphql_response(
199
+ *,
200
+ settings: Settings,
201
+ query: str,
202
+ after: Union[str, None] = None,
203
+ category_id: Union[str, None] = None,
204
+ discussion_number: Union[int, None] = None,
205
+ discussion_id: Union[str, None] = None,
206
+ comment_id: Union[str, None] = None,
207
+ body: Union[str, None] = None,
208
+ ) -> Dict[str, Any]:
209
+ headers = {"Authorization": f"token {settings.github_token.get_secret_value()}"}
210
+ variables = {
211
+ "after": after,
212
+ "category_id": category_id,
213
+ "discussion_number": discussion_number,
214
+ "discussion_id": discussion_id,
215
+ "comment_id": comment_id,
216
+ "body": body,
217
+ }
218
+ response = httpx.post(
219
+ github_graphql_url,
220
+ headers=headers,
221
+ timeout=settings.httpx_timeout,
222
+ json={"query": query, "variables": variables, "operationName": "Q"},
223
+ )
224
+ if response.status_code != 200:
225
+ logging.error(
226
+ f"Response was not 200, after: {after}, category_id: {category_id}"
227
+ )
228
+ logging.error(response.text)
229
+ raise RuntimeError(response.text)
230
+ data = response.json()
231
+ if "errors" in data:
232
+ logging.error(f"Errors in response, after: {after}, category_id: {category_id}")
233
+ logging.error(data["errors"])
234
+ logging.error(response.text)
235
+ raise RuntimeError(response.text)
236
+ return cast(Dict[str, Any], data)
237
+
238
+
239
+ def get_graphql_translation_discussions(
240
+ *, settings: Settings
241
+ ) -> List[AllDiscussionsDiscussionNode]:
242
+ data = get_graphql_response(
243
+ settings=settings,
244
+ query=all_discussions_query,
245
+ category_id=questions_translations_category_id,
246
+ )
247
+ graphql_response = AllDiscussionsResponse.model_validate(data)
248
+ return graphql_response.data.repository.discussions.nodes
249
+
250
+
251
+ def get_graphql_translation_discussion_comments_edges(
252
+ *, settings: Settings, discussion_number: int, after: Union[str, None] = None
253
+ ) -> List[CommentsEdge]:
254
+ data = get_graphql_response(
255
+ settings=settings,
256
+ query=translation_discussion_query,
257
+ discussion_number=discussion_number,
258
+ after=after,
259
+ )
260
+ graphql_response = CommentsResponse.model_validate(data)
261
+ return graphql_response.data.repository.discussion.comments.edges
262
+
263
+
264
+ def get_graphql_translation_discussion_comments(
265
+ *, settings: Settings, discussion_number: int
266
+ ) -> list[Comment]:
267
+ comment_nodes: List[Comment] = []
268
+ discussion_edges = get_graphql_translation_discussion_comments_edges(
269
+ settings=settings, discussion_number=discussion_number
270
+ )
271
+
272
+ while discussion_edges:
273
+ for discussion_edge in discussion_edges:
274
+ comment_nodes.append(discussion_edge.node)
275
+ last_edge = discussion_edges[-1]
276
+ discussion_edges = get_graphql_translation_discussion_comments_edges(
277
+ settings=settings,
278
+ discussion_number=discussion_number,
279
+ after=last_edge.cursor,
280
+ )
281
+ return comment_nodes
282
+
283
+
284
+ def create_comment(*, settings: Settings, discussion_id: str, body: str) -> Comment:
285
+ data = get_graphql_response(
286
+ settings=settings,
287
+ query=add_comment_mutation,
288
+ discussion_id=discussion_id,
289
+ body=body,
290
+ )
291
+ response = AddCommentResponse.model_validate(data)
292
+ return response.data.addDiscussionComment.comment
293
+
294
+
295
+ def update_comment(*, settings: Settings, comment_id: str, body: str) -> Comment:
296
+ data = get_graphql_response(
297
+ settings=settings,
298
+ query=update_comment_mutation,
299
+ comment_id=comment_id,
300
+ body=body,
301
+ )
302
+ response = UpdateCommentResponse.model_validate(data)
303
+ return response.data.updateDiscussionComment.comment
304
+
305
+
306
+ def main() -> None:
307
+ settings = Settings()
308
+ if settings.debug:
309
+ logging.basicConfig(level=logging.DEBUG)
310
+ else:
311
+ logging.basicConfig(level=logging.INFO)
312
+ logging.debug(f"Using config: {settings.model_dump_json()}")
313
+ g = Github(settings.github_token.get_secret_value())
314
+ repo = g.get_repo(settings.github_repository)
315
+ if not settings.github_event_path.is_file():
316
+ raise RuntimeError(
317
+ f"No github event file available at: {settings.github_event_path}"
318
+ )
319
+ contents = settings.github_event_path.read_text()
320
+ github_event = PartialGitHubEvent.model_validate_json(contents)
321
+ logging.info(f"Using GitHub event: {github_event}")
322
+ number = (
323
+ github_event.pull_request and github_event.pull_request.number
324
+ ) or settings.number
325
+ if number is None:
326
+ raise RuntimeError("No PR number available")
327
+
328
+ # Avoid race conditions with multiple labels
329
+ sleep_time = random.random() * 10 # random number between 0 and 10 seconds
330
+ logging.info(
331
+ f"Sleeping for {sleep_time} seconds to avoid "
332
+ "race conditions and multiple comments"
333
+ )
334
+ time.sleep(sleep_time)
335
+
336
+ # Get PR
337
+ logging.debug(f"Processing PR: #{number}")
338
+ pr = repo.get_pull(number)
339
+ label_strs = {label.name for label in pr.get_labels()}
340
+ langs = []
341
+ for label in label_strs:
342
+ if label.startswith("lang-") and not label == lang_all_label:
343
+ langs.append(label[5:])
344
+ logging.info(f"PR #{pr.number} has labels: {label_strs}")
345
+ if not langs or lang_all_label not in label_strs:
346
+ logging.info(f"PR #{pr.number} doesn't seem to be a translation PR, skipping")
347
+ sys.exit(0)
348
+
349
+ # Generate translation map, lang ID to discussion
350
+ discussions = get_graphql_translation_discussions(settings=settings)
351
+ lang_to_discussion_map: Dict[str, AllDiscussionsDiscussionNode] = {}
352
+ for discussion in discussions:
353
+ for edge in discussion.labels.edges:
354
+ label = edge.node.name
355
+ if label.startswith("lang-") and not label == lang_all_label:
356
+ lang = label[5:]
357
+ lang_to_discussion_map[lang] = discussion
358
+ logging.debug(f"Using translations map: {lang_to_discussion_map}")
359
+
360
+ # Messages to create or check
361
+ new_translation_message = f"Good news everyone! 😉 There's a new translation PR to be reviewed: #{pr.number} by @{pr.user.login}. 🎉 This requires 2 approvals from native speakers to be merged. 🤓"
362
+ done_translation_message = f"~There's a new translation PR to be reviewed: #{pr.number} by @{pr.user.login}~ Good job! This is done. 🍰☕"
363
+
364
+ # Normally only one language, but still
365
+ for lang in langs:
366
+ if lang not in lang_to_discussion_map:
367
+ log_message = f"Could not find discussion for language: {lang}"
368
+ logging.error(log_message)
369
+ raise RuntimeError(log_message)
370
+ discussion = lang_to_discussion_map[lang]
371
+ logging.info(
372
+ f"Found a translation discussion for language: {lang} in discussion: #{discussion.number}"
373
+ )
374
+
375
+ already_notified_comment: Union[Comment, None] = None
376
+ already_done_comment: Union[Comment, None] = None
377
+
378
+ logging.info(
379
+ f"Checking current comments in discussion: #{discussion.number} to see if already notified about this PR: #{pr.number}"
380
+ )
381
+ comments = get_graphql_translation_discussion_comments(
382
+ settings=settings, discussion_number=discussion.number
383
+ )
384
+ for comment in comments:
385
+ if new_translation_message in comment.body:
386
+ already_notified_comment = comment
387
+ elif done_translation_message in comment.body:
388
+ already_done_comment = comment
389
+ logging.info(
390
+ f"Already notified comment: {already_notified_comment}, already done comment: {already_done_comment}"
391
+ )
392
+
393
+ if pr.state == "open" and awaiting_label in label_strs:
394
+ logging.info(
395
+ f"This PR seems to be a language translation and awaiting reviews: #{pr.number}"
396
+ )
397
+ if already_notified_comment:
398
+ logging.info(
399
+ f"This PR #{pr.number} was already notified in comment: {already_notified_comment.url}"
400
+ )
401
+ else:
402
+ logging.info(
403
+ f"Writing notification comment about PR #{pr.number} in Discussion: #{discussion.number}"
404
+ )
405
+ comment = create_comment(
406
+ settings=settings,
407
+ discussion_id=discussion.id,
408
+ body=new_translation_message,
409
+ )
410
+ logging.info(f"Notified in comment: {comment.url}")
411
+ elif pr.state == "closed" or approved_label in label_strs:
412
+ logging.info(f"Already approved or closed PR #{pr.number}")
413
+ if already_done_comment:
414
+ logging.info(
415
+ f"This PR #{pr.number} was already marked as done in comment: {already_done_comment.url}"
416
+ )
417
+ elif already_notified_comment:
418
+ updated_comment = update_comment(
419
+ settings=settings,
420
+ comment_id=already_notified_comment.id,
421
+ body=done_translation_message,
422
+ )
423
+ logging.info(f"Marked as done in comment: {updated_comment.url}")
424
+ else:
425
+ logging.info(
426
+ f"There doesn't seem to be anything to be done about PR #{pr.number}"
427
+ )
428
+ logging.info("Finished")
429
+
430
+
431
+ if __name__ == "__main__":
432
+ main()