sqlmodel 0.0.34__tar.gz → 0.0.36__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/PKG-INFO +2 -3
  2. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/pyproject.toml +3 -26
  3. sqlmodel-0.0.36/scripts/docs.py +384 -0
  4. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/scripts/mkdocs_hooks.py +4 -4
  5. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/__init__.py +1 -1
  6. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/_compat.py +15 -14
  7. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/ext/asyncio/session.py +25 -31
  8. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/main.py +186 -186
  9. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/orm/session.py +25 -31
  10. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/sql/_expression_select_cls.py +2 -3
  11. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/sql/_expression_select_gen.py +2 -7
  12. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/sql/_expression_select_gen.py.jinja2 +2 -7
  13. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/sql/expression.py +38 -47
  14. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/conftest.py +4 -4
  15. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_advanced/test_decimal/test_tutorial001.py +0 -1
  16. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_advanced/test_uuid/test_tutorial001.py +0 -1
  17. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_advanced/test_uuid/test_tutorial002.py +0 -1
  18. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_aliases.py +12 -16
  19. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_annotated_uuid.py +1 -2
  20. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_field_sa_args_kwargs.py +4 -6
  21. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_field_sa_column.py +14 -14
  22. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_field_sa_relationship.py +10 -12
  23. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_future_annotations.py +6 -6
  24. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_instance_no_args.py +4 -6
  25. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_main.py +11 -11
  26. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_missing_type.py +1 -3
  27. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_nullable.py +15 -17
  28. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_ondelete_raises.py +5 -5
  29. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_pydantic/test_field.py +3 -3
  30. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_query.py +2 -4
  31. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_select_typing.py +3 -5
  32. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_sqlalchemy_type_errors.py +5 -5
  33. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_automatic_id_none_refresh/test_tutorial001_tutorial002.py +2 -4
  34. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_code_structure/test_tutorial001.py +0 -1
  35. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_code_structure/test_tutorial002.py +0 -1
  36. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_create_connected_tables/test_tutorial001.py +0 -1
  37. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_delete/test_tutorial001.py +0 -1
  38. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_insert/test_tutorial001.py +0 -1
  39. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_select/test_tutorial001_tutorial002.py +0 -2
  40. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_select/test_tutorial003.py +0 -1
  41. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_select/test_tutorial004.py +0 -1
  42. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_select/test_tutorial005.py +0 -1
  43. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_connect/test_update/test_tutorial001.py +0 -1
  44. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_create_db_and_table/test_tutorial001.py +0 -1
  45. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_create_db_and_table/test_tutorial002.py +0 -1
  46. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_create_db_and_table/test_tutorial003.py +0 -1
  47. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_delete/test_tutorial001_tutorial002.py +0 -2
  48. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests001.py +0 -1
  49. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests002.py +0 -1
  50. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests003.py +0 -1
  51. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests004.py +0 -1
  52. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests005.py +3 -3
  53. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests006.py +3 -3
  54. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests_main.py +0 -1
  55. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py +0 -1
  56. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py +0 -1
  57. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py +0 -1
  58. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py +0 -1
  59. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py +0 -1
  60. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py +0 -1
  61. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_response_model/test_tutorial001.py +0 -1
  62. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py +0 -1
  63. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_simple_hero_api/test_tutorial001.py +0 -1
  64. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py +0 -1
  65. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py +0 -1
  66. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py +0 -1
  67. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_indexes/test_tutorial001.py +0 -1
  68. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_indexes/test_tutorial002.py +0 -1
  69. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_insert/test_tutorial001.py +0 -1
  70. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_insert/test_tutorial002.py +0 -1
  71. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_insert/test_tutorial003.py +0 -1
  72. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_limit_and_offset/test_tutorial001.py +0 -1
  73. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_limit_and_offset/test_tutorial002.py +0 -1
  74. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_limit_and_offset/test_tutorial003.py +0 -1
  75. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_limit_and_offset/test_tutorial004.py +0 -1
  76. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_many_to_many/test_tutorial001.py +0 -1
  77. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_many_to_many/test_tutorial002.py +0 -1
  78. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_many_to_many/test_tutorial003.py +0 -1
  79. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial001.py +0 -1
  80. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial002.py +0 -1
  81. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial003.py +0 -1
  82. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial004.py +0 -1
  83. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial005.py +0 -1
  84. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial006.py +0 -1
  85. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial007.py +0 -1
  86. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial008.py +0 -1
  87. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_one/test_tutorial009.py +0 -1
  88. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial001.py +0 -1
  89. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial002.py +0 -1
  90. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial003.py +0 -1
  91. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships/test_tutorial001.py +0 -1
  92. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes/test_tutorial001.py +0 -1
  93. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial001.py +0 -1
  94. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial002.py +0 -1
  95. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial003.py +0 -1
  96. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial004.py +0 -1
  97. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial005.py +0 -1
  98. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/test_tutorial001.py +0 -1
  99. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/test_tutorial002.py +0 -1
  100. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_select/test_tutorial001_tutorial002.py +2 -4
  101. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_select/test_tutorial003_tutorial004.py +2 -4
  102. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_update/test_tutorial001_tutorial002.py +0 -2
  103. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_update/test_tutorial003_tutorial004.py +0 -2
  104. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial001.py +0 -1
  105. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial002.py +0 -1
  106. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial003.py +0 -1
  107. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial004.py +0 -1
  108. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial005.py +0 -1
  109. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial006.py +0 -1
  110. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial007.py +0 -1
  111. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial008.py +0 -1
  112. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial009.py +0 -1
  113. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_tutorial/test_where/test_tutorial011.py +0 -1
  114. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_validation.py +3 -5
  115. sqlmodel-0.0.34/docs_src/advanced/decimal/tutorial001_py39.py +0 -61
  116. sqlmodel-0.0.34/docs_src/advanced/uuid/tutorial001_py39.py +0 -65
  117. sqlmodel-0.0.34/docs_src/advanced/uuid/tutorial002_py39.py +0 -64
  118. sqlmodel-0.0.34/docs_src/tutorial/automatic_id_none_refresh/tutorial001_py39.py +0 -81
  119. sqlmodel-0.0.34/docs_src/tutorial/automatic_id_none_refresh/tutorial002_py39.py +0 -82
  120. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial001_py39/app.py +0 -29
  121. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial001_py39/models.py +0 -21
  122. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py310/database.py +0 -10
  123. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py39/app.py +0 -30
  124. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py39/database.py +0 -10
  125. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py39/hero_model.py +0 -16
  126. sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py39/team_model.py +0 -14
  127. sqlmodel-0.0.34/docs_src/tutorial/connect/create_tables/tutorial001_py39.py +0 -36
  128. sqlmodel-0.0.34/docs_src/tutorial/connect/delete/tutorial001_py39.py +0 -81
  129. sqlmodel-0.0.34/docs_src/tutorial/connect/insert/tutorial001_py39.py +0 -69
  130. sqlmodel-0.0.34/docs_src/tutorial/connect/select/tutorial001_py39.py +0 -78
  131. sqlmodel-0.0.34/docs_src/tutorial/connect/select/tutorial002_py39.py +0 -78
  132. sqlmodel-0.0.34/docs_src/tutorial/connect/select/tutorial003_py39.py +0 -78
  133. sqlmodel-0.0.34/docs_src/tutorial/connect/select/tutorial004_py39.py +0 -78
  134. sqlmodel-0.0.34/docs_src/tutorial/connect/select/tutorial005_py39.py +0 -78
  135. sqlmodel-0.0.34/docs_src/tutorial/connect/update/tutorial001_py39.py +0 -75
  136. sqlmodel-0.0.34/docs_src/tutorial/create_db_and_table/tutorial001_py39.py +0 -18
  137. sqlmodel-0.0.34/docs_src/tutorial/create_db_and_table/tutorial002_py39.py +0 -24
  138. sqlmodel-0.0.34/docs_src/tutorial/create_db_and_table/tutorial003_py39.py +0 -24
  139. sqlmodel-0.0.34/docs_src/tutorial/delete/tutorial001_py39.py +0 -100
  140. sqlmodel-0.0.34/docs_src/tutorial/delete/tutorial002_py39.py +0 -101
  141. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_001.md +0 -17
  142. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_002.md +0 -25
  143. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_003.md +0 -37
  144. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_004.md +0 -29
  145. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_005.md +0 -41
  146. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_006.md +0 -23
  147. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py +0 -105
  148. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_extra_coverage.py +0 -38
  149. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main.py +0 -125
  150. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_001.py +0 -32
  151. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_002.py +0 -32
  152. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_003.py +0 -33
  153. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_004.py +0 -35
  154. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_005.py +0 -37
  155. sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_006.py +0 -41
  156. sqlmodel-0.0.34/docs_src/tutorial/fastapi/delete/tutorial001_py39.py +0 -98
  157. sqlmodel-0.0.34/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py +0 -67
  158. sqlmodel-0.0.34/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py +0 -60
  159. sqlmodel-0.0.34/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py +0 -58
  160. sqlmodel-0.0.34/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py +0 -67
  161. sqlmodel-0.0.34/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py +0 -199
  162. sqlmodel-0.0.34/docs_src/tutorial/fastapi/response_model/tutorial001_py39.py +0 -46
  163. sqlmodel-0.0.34/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py +0 -105
  164. sqlmodel-0.0.34/docs_src/tutorial/fastapi/simple_hero_api/tutorial001_py39.py +0 -46
  165. sqlmodel-0.0.34/docs_src/tutorial/fastapi/teams/tutorial001_py39.py +0 -190
  166. sqlmodel-0.0.34/docs_src/tutorial/fastapi/update/tutorial001_py39.py +0 -87
  167. sqlmodel-0.0.34/docs_src/tutorial/fastapi/update/tutorial002_py39.py +0 -101
  168. sqlmodel-0.0.34/docs_src/tutorial/indexes/tutorial001_py39.py +0 -51
  169. sqlmodel-0.0.34/docs_src/tutorial/indexes/tutorial002_py39.py +0 -59
  170. sqlmodel-0.0.34/docs_src/tutorial/insert/tutorial001_py39.py +0 -45
  171. sqlmodel-0.0.34/docs_src/tutorial/insert/tutorial002_py39.py +0 -42
  172. sqlmodel-0.0.34/docs_src/tutorial/insert/tutorial003_py39.py +0 -43
  173. sqlmodel-0.0.34/docs_src/tutorial/many_to_many/tutorial001_py39.py +0 -84
  174. sqlmodel-0.0.34/docs_src/tutorial/many_to_many/tutorial002_py39.py +0 -107
  175. sqlmodel-0.0.34/docs_src/tutorial/many_to_many/tutorial003_py39.py +0 -123
  176. sqlmodel-0.0.34/docs_src/tutorial/offset_and_limit/tutorial001_py39.py +0 -59
  177. sqlmodel-0.0.34/docs_src/tutorial/offset_and_limit/tutorial002_py39.py +0 -59
  178. sqlmodel-0.0.34/docs_src/tutorial/offset_and_limit/tutorial003_py39.py +0 -59
  179. sqlmodel-0.0.34/docs_src/tutorial/offset_and_limit/tutorial004_py39.py +0 -59
  180. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial001_py39.py +0 -59
  181. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial002_py39.py +0 -59
  182. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial003_py39.py +0 -59
  183. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial004_py39.py +0 -59
  184. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial005_py39.py +0 -59
  185. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial006_py39.py +0 -57
  186. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial007_py39.py +0 -59
  187. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial008_py39.py +0 -57
  188. sqlmodel-0.0.34/docs_src/tutorial/one/tutorial009_py39.py +0 -57
  189. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/back_populates/tutorial001_py39.py +0 -143
  190. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/back_populates/tutorial002_py39.py +0 -143
  191. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/back_populates/tutorial003_py39.py +0 -59
  192. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial001_py39.py +0 -110
  193. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial002_py39.py +0 -110
  194. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial003_py39.py +0 -112
  195. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial004_py39.py +0 -111
  196. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial005_py39.py +0 -124
  197. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/create_and_update_relationships/tutorial001_py39.py +0 -102
  198. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/define_relationship_attributes/tutorial001_py39.py +0 -70
  199. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/read_relationships/tutorial001_py39.py +0 -117
  200. sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/read_relationships/tutorial002_py39.py +0 -127
  201. sqlmodel-0.0.34/docs_src/tutorial/select/tutorial001_py39.py +0 -51
  202. sqlmodel-0.0.34/docs_src/tutorial/select/tutorial002_py39.py +0 -52
  203. sqlmodel-0.0.34/docs_src/tutorial/select/tutorial003_py39.py +0 -51
  204. sqlmodel-0.0.34/docs_src/tutorial/select/tutorial004_py39.py +0 -49
  205. sqlmodel-0.0.34/docs_src/tutorial/update/tutorial001_py39.py +0 -65
  206. sqlmodel-0.0.34/docs_src/tutorial/update/tutorial002_py39.py +0 -65
  207. sqlmodel-0.0.34/docs_src/tutorial/update/tutorial003_py39.py +0 -79
  208. sqlmodel-0.0.34/docs_src/tutorial/update/tutorial004_py39.py +0 -80
  209. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial001_py39.py +0 -51
  210. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial002_py39.py +0 -51
  211. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial003_py39.py +0 -59
  212. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial004_py39.py +0 -59
  213. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial005_py39.py +0 -59
  214. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial006_py39.py +0 -59
  215. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial007_py39.py +0 -59
  216. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial008_py39.py +0 -59
  217. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial009_py39.py +0 -59
  218. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial010_py310.py +0 -57
  219. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial010_py39.py +0 -59
  220. sqlmodel-0.0.34/docs_src/tutorial/where/tutorial011_py39.py +0 -59
  221. sqlmodel-0.0.34/pdm_build.py +0 -40
  222. sqlmodel-0.0.34/scripts/docs.py +0 -147
  223. sqlmodel-0.0.34/tests/test_tutorial/test_select/__init__.py +0 -0
  224. sqlmodel-0.0.34/tests/test_tutorial/test_update/__init__.py +0 -0
  225. sqlmodel-0.0.34/tests/test_tutorial/test_where/__init__.py +0 -0
  226. sqlmodel-0.0.34/tests/test_tutorial/test_where/test_tutorial010.py +0 -37
  227. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/LICENSE +0 -0
  228. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/README.md +0 -0
  229. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/__init__.py +0 -0
  230. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/advanced/__init__.py +0 -0
  231. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/advanced/decimal/__init__.py +0 -0
  232. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/advanced/decimal/tutorial001_py310.py +0 -0
  233. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/advanced/uuid/__init__.py +0 -0
  234. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/advanced/uuid/tutorial001_py310.py +0 -0
  235. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/advanced/uuid/tutorial002_py310.py +0 -0
  236. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/__init__.py +0 -0
  237. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/automatic_id_none_refresh/__init__.py +0 -0
  238. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/automatic_id_none_refresh/annotations/en/tutorial002.md +0 -0
  239. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/automatic_id_none_refresh/tutorial001_py310.py +0 -0
  240. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/automatic_id_none_refresh/tutorial002_py310.py +0 -0
  241. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/__init__.py +0 -0
  242. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial001_py310/__init__.py +0 -0
  243. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial001_py310/app.py +0 -0
  244. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial001_py310/database.py +0 -0
  245. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial001_py310/models.py +0 -0
  246. {sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial001_py39 → sqlmodel-0.0.36/docs_src/tutorial/code_structure/tutorial002_py310}/__init__.py +0 -0
  247. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial002_py310/app.py +0 -0
  248. {sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial001_py39 → sqlmodel-0.0.36/docs_src/tutorial/code_structure/tutorial002_py310}/database.py +0 -0
  249. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial002_py310/hero_model.py +0 -0
  250. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/code_structure/tutorial002_py310/team_model.py +0 -0
  251. {sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py310 → sqlmodel-0.0.36/docs_src/tutorial/connect}/__init__.py +0 -0
  252. {sqlmodel-0.0.34/docs_src/tutorial/code_structure/tutorial002_py39 → sqlmodel-0.0.36/docs_src/tutorial/connect/create_tables}/__init__.py +0 -0
  253. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/create_tables/tutorial001_py310.py +0 -0
  254. {sqlmodel-0.0.34/docs_src/tutorial/connect → sqlmodel-0.0.36/docs_src/tutorial/connect/delete}/__init__.py +0 -0
  255. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/delete/tutorial001_py310.py +0 -0
  256. {sqlmodel-0.0.34/docs_src/tutorial/connect/create_tables → sqlmodel-0.0.36/docs_src/tutorial/connect/insert}/__init__.py +0 -0
  257. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/insert/tutorial001_py310.py +0 -0
  258. {sqlmodel-0.0.34/docs_src/tutorial/connect/delete → sqlmodel-0.0.36/docs_src/tutorial/connect/select}/__init__.py +0 -0
  259. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/select/tutorial001_py310.py +0 -0
  260. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/select/tutorial002_py310.py +0 -0
  261. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/select/tutorial003_py310.py +0 -0
  262. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/select/tutorial004_py310.py +0 -0
  263. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/select/tutorial005_py310.py +0 -0
  264. {sqlmodel-0.0.34/docs_src/tutorial/connect/insert → sqlmodel-0.0.36/docs_src/tutorial/connect/update}/__init__.py +0 -0
  265. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/connect/update/tutorial001_py310.py +0 -0
  266. {sqlmodel-0.0.34/docs_src/tutorial/connect/select → sqlmodel-0.0.36/docs_src/tutorial/create_db_and_table}/__init__.py +0 -0
  267. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/create_db_and_table/annotations/en/tutorial003.md +0 -0
  268. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/create_db_and_table/tutorial001_py310.py +0 -0
  269. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/create_db_and_table/tutorial002_py310.py +0 -0
  270. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/create_db_and_table/tutorial003_py310.py +0 -0
  271. {sqlmodel-0.0.34/docs_src/tutorial/connect/update → sqlmodel-0.0.36/docs_src/tutorial/delete}/__init__.py +0 -0
  272. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/delete/annotations/en/tutorial002.md +0 -0
  273. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/delete/tutorial001_py310.py +0 -0
  274. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/delete/tutorial002_py310.py +0 -0
  275. {sqlmodel-0.0.34/docs_src/tutorial/create_db_and_table → sqlmodel-0.0.36/docs_src/tutorial/fastapi}/__init__.py +0 -0
  276. {sqlmodel-0.0.34/docs_src/tutorial/delete → sqlmodel-0.0.36/docs_src/tutorial/fastapi/app_testing}/__init__.py +0 -0
  277. {sqlmodel-0.0.34/docs_src/tutorial/fastapi → sqlmodel-0.0.36/docs_src/tutorial/fastapi/app_testing/tutorial001_py310}/__init__.py +0 -0
  278. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_001.md +0 -0
  279. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_002.md +0 -0
  280. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_003.md +0 -0
  281. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_004.md +0 -0
  282. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_005.md +0 -0
  283. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_006.md +0 -0
  284. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py +0 -0
  285. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_extra_coverage.py +0 -0
  286. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main.py +0 -0
  287. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_001.py +0 -0
  288. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_002.py +0 -0
  289. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_003.py +0 -0
  290. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_004.py +0 -0
  291. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_005.py +0 -0
  292. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_006.py +0 -0
  293. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing → sqlmodel-0.0.36/docs_src/tutorial/fastapi/delete}/__init__.py +0 -0
  294. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/delete/tutorial001_py310.py +0 -0
  295. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py310 → sqlmodel-0.0.36/docs_src/tutorial/fastapi/limit_and_offset}/__init__.py +0 -0
  296. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py +0 -0
  297. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/app_testing/tutorial001_py39 → sqlmodel-0.0.36/docs_src/tutorial/fastapi/multiple_models}/__init__.py +0 -0
  298. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py +0 -0
  299. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py +0 -0
  300. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/delete → sqlmodel-0.0.36/docs_src/tutorial/fastapi/read_one}/__init__.py +0 -0
  301. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py +0 -0
  302. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/limit_and_offset → sqlmodel-0.0.36/docs_src/tutorial/fastapi/relationships}/__init__.py +0 -0
  303. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py +0 -0
  304. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/multiple_models → sqlmodel-0.0.36/docs_src/tutorial/fastapi/response_model}/__init__.py +0 -0
  305. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/response_model/tutorial001_py310.py +0 -0
  306. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/read_one → sqlmodel-0.0.36/docs_src/tutorial/fastapi/session_with_dependency}/__init__.py +0 -0
  307. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py +0 -0
  308. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/relationships → sqlmodel-0.0.36/docs_src/tutorial/fastapi/simple_hero_api}/__init__.py +0 -0
  309. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/simple_hero_api/tutorial001_py310.py +0 -0
  310. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/response_model → sqlmodel-0.0.36/docs_src/tutorial/fastapi/teams}/__init__.py +0 -0
  311. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/teams/tutorial001_py310.py +0 -0
  312. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/session_with_dependency → sqlmodel-0.0.36/docs_src/tutorial/fastapi/update}/__init__.py +0 -0
  313. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/update/tutorial001_py310.py +0 -0
  314. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/fastapi/update/tutorial002_py310.py +0 -0
  315. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/simple_hero_api → sqlmodel-0.0.36/docs_src/tutorial/indexes}/__init__.py +0 -0
  316. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/indexes/tutorial001_py310.py +0 -0
  317. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/indexes/tutorial002_py310.py +0 -0
  318. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/teams → sqlmodel-0.0.36/docs_src/tutorial/insert}/__init__.py +0 -0
  319. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/insert/annotations/en/tutorial003.md +0 -0
  320. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/insert/tutorial001_py310.py +0 -0
  321. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/insert/tutorial002_py310.py +0 -0
  322. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/insert/tutorial003_py310.py +0 -0
  323. {sqlmodel-0.0.34/docs_src/tutorial/fastapi/update → sqlmodel-0.0.36/docs_src/tutorial/many_to_many}/__init__.py +0 -0
  324. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/many_to_many/tutorial001_py310.py +0 -0
  325. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/many_to_many/tutorial002_py310.py +0 -0
  326. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/many_to_many/tutorial003_py310.py +0 -0
  327. {sqlmodel-0.0.34/docs_src/tutorial/indexes → sqlmodel-0.0.36/docs_src/tutorial/offset_and_limit}/__init__.py +0 -0
  328. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/offset_and_limit/tutorial001_py310.py +0 -0
  329. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/offset_and_limit/tutorial002_py310.py +0 -0
  330. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/offset_and_limit/tutorial003_py310.py +0 -0
  331. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/offset_and_limit/tutorial004_py310.py +0 -0
  332. {sqlmodel-0.0.34/docs_src/tutorial/insert → sqlmodel-0.0.36/docs_src/tutorial/one}/__init__.py +0 -0
  333. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial001_py310.py +0 -0
  334. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial002_py310.py +0 -0
  335. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial003_py310.py +0 -0
  336. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial004_py310.py +0 -0
  337. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial005_py310.py +0 -0
  338. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial006_py310.py +0 -0
  339. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial007_py310.py +0 -0
  340. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial008_py310.py +0 -0
  341. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/one/tutorial009_py310.py +0 -0
  342. {sqlmodel-0.0.34/docs_src/tutorial/many_to_many → sqlmodel-0.0.36/docs_src/tutorial/relationship_attributes}/__init__.py +0 -0
  343. {sqlmodel-0.0.34/docs_src/tutorial/offset_and_limit → sqlmodel-0.0.36/docs_src/tutorial/relationship_attributes/back_populates}/__init__.py +0 -0
  344. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/back_populates/tutorial001_py310.py +0 -0
  345. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/back_populates/tutorial002_py310.py +0 -0
  346. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/back_populates/tutorial003_py310.py +0 -0
  347. {sqlmodel-0.0.34/docs_src/tutorial/one → sqlmodel-0.0.36/docs_src/tutorial/relationship_attributes/cascade_delete_relationships}/__init__.py +0 -0
  348. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial001_py310.py +0 -0
  349. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial002_py310.py +0 -0
  350. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial003_py310.py +0 -0
  351. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial004_py310.py +0 -0
  352. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial005_py310.py +0 -0
  353. {sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes → sqlmodel-0.0.36/docs_src/tutorial/relationship_attributes/create_and_update_relationships}/__init__.py +0 -0
  354. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/create_and_update_relationships/tutorial001_py310.py +0 -0
  355. {sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/back_populates → sqlmodel-0.0.36/docs_src/tutorial/relationship_attributes/define_relationship_attributes}/__init__.py +0 -0
  356. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/define_relationship_attributes/tutorial001_py310.py +0 -0
  357. {sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/cascade_delete_relationships → sqlmodel-0.0.36/docs_src/tutorial/relationship_attributes/read_relationships}/__init__.py +0 -0
  358. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial001_py310.py +0 -0
  359. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial002_py310.py +0 -0
  360. {sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/create_and_update_relationships → sqlmodel-0.0.36/docs_src/tutorial/select}/__init__.py +0 -0
  361. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/select/annotations/en/tutorial002.md +0 -0
  362. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/select/tutorial001_py310.py +0 -0
  363. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/select/tutorial002_py310.py +0 -0
  364. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/select/tutorial003_py310.py +0 -0
  365. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/select/tutorial004_py310.py +0 -0
  366. {sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/define_relationship_attributes → sqlmodel-0.0.36/docs_src/tutorial/update}/__init__.py +0 -0
  367. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/update/annotations/en/tutorial002.md +0 -0
  368. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/update/annotations/en/tutorial004.md +0 -0
  369. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/update/tutorial001_py310.py +0 -0
  370. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/update/tutorial002_py310.py +0 -0
  371. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/update/tutorial003_py310.py +0 -0
  372. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/update/tutorial004_py310.py +0 -0
  373. {sqlmodel-0.0.34/docs_src/tutorial/relationship_attributes/read_relationships → sqlmodel-0.0.36/docs_src/tutorial/where}/__init__.py +0 -0
  374. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial001_py310.py +0 -0
  375. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial002_py310.py +0 -0
  376. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial003_py310.py +0 -0
  377. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial004_py310.py +0 -0
  378. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial005_py310.py +0 -0
  379. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial006_py310.py +0 -0
  380. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial007_py310.py +0 -0
  381. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial008_py310.py +0 -0
  382. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial009_py310.py +0 -0
  383. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/docs_src/tutorial/where/tutorial011_py310.py +0 -0
  384. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/scripts/deploy_docs_status.py +0 -0
  385. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/scripts/format.sh +0 -0
  386. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/scripts/generate_select.py +0 -0
  387. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/scripts/lint.sh +0 -0
  388. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/scripts/test.sh +0 -0
  389. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/default.py +0 -0
  390. {sqlmodel-0.0.34/docs_src/tutorial/select → sqlmodel-0.0.36/sqlmodel/ext}/__init__.py +0 -0
  391. {sqlmodel-0.0.34/docs_src/tutorial/update → sqlmodel-0.0.36/sqlmodel/ext/asyncio}/__init__.py +0 -0
  392. {sqlmodel-0.0.34/docs_src/tutorial/where → sqlmodel-0.0.36/sqlmodel/orm}/__init__.py +0 -0
  393. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/pool/__init__.py +0 -0
  394. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/py.typed +0 -0
  395. {sqlmodel-0.0.34/sqlmodel/ext → sqlmodel-0.0.36/sqlmodel/sql}/__init__.py +0 -0
  396. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/sql/base.py +0 -0
  397. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/sqlmodel/sql/sqltypes.py +0 -0
  398. {sqlmodel-0.0.34/sqlmodel/ext/asyncio → sqlmodel-0.0.36/tests}/__init__.py +0 -0
  399. {sqlmodel-0.0.34/sqlmodel/orm → sqlmodel-0.0.36/tests/test_advanced}/__init__.py +0 -0
  400. {sqlmodel-0.0.34/sqlmodel/sql → sqlmodel-0.0.36/tests/test_advanced/test_decimal}/__init__.py +0 -0
  401. {sqlmodel-0.0.34/tests → sqlmodel-0.0.36/tests/test_advanced/test_uuid}/__init__.py +0 -0
  402. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_default.py +0 -0
  403. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_deprecations.py +0 -0
  404. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_enums.py +0 -0
  405. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_enums_models.py +0 -0
  406. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_fields_set.py +0 -0
  407. {sqlmodel-0.0.34/tests/test_advanced → sqlmodel-0.0.36/tests/test_pydantic}/__init__.py +0 -0
  408. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_select_gen.py +0 -0
  409. {sqlmodel-0.0.34/tests/test_advanced/test_decimal → sqlmodel-0.0.36/tests/test_tutorial}/__init__.py +0 -0
  410. {sqlmodel-0.0.34/tests/test_advanced/test_uuid → sqlmodel-0.0.36/tests/test_tutorial/test_automatic_id_none_refresh}/__init__.py +0 -0
  411. {sqlmodel-0.0.34/tests/test_pydantic → sqlmodel-0.0.36/tests/test_tutorial/test_code_structure}/__init__.py +0 -0
  412. {sqlmodel-0.0.34/tests/test_tutorial → sqlmodel-0.0.36/tests/test_tutorial/test_connect}/__init__.py +0 -0
  413. {sqlmodel-0.0.34/tests/test_tutorial/test_automatic_id_none_refresh → sqlmodel-0.0.36/tests/test_tutorial/test_connect/test_create_connected_tables}/__init__.py +0 -0
  414. {sqlmodel-0.0.34/tests/test_tutorial/test_code_structure → sqlmodel-0.0.36/tests/test_tutorial/test_connect/test_delete}/__init__.py +0 -0
  415. {sqlmodel-0.0.34/tests/test_tutorial/test_connect → sqlmodel-0.0.36/tests/test_tutorial/test_connect/test_insert}/__init__.py +0 -0
  416. {sqlmodel-0.0.34/tests/test_tutorial/test_connect/test_create_connected_tables → sqlmodel-0.0.36/tests/test_tutorial/test_connect/test_select}/__init__.py +0 -0
  417. {sqlmodel-0.0.34/tests/test_tutorial/test_connect/test_delete → sqlmodel-0.0.36/tests/test_tutorial/test_connect/test_update}/__init__.py +0 -0
  418. {sqlmodel-0.0.34/tests/test_tutorial/test_connect/test_insert → sqlmodel-0.0.36/tests/test_tutorial/test_create_db_and_table}/__init__.py +0 -0
  419. {sqlmodel-0.0.34/tests/test_tutorial/test_connect/test_select → sqlmodel-0.0.36/tests/test_tutorial/test_delete}/__init__.py +0 -0
  420. {sqlmodel-0.0.34/tests/test_tutorial/test_connect/test_update → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi}/__init__.py +0 -0
  421. {sqlmodel-0.0.34/tests/test_tutorial/test_create_db_and_table → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_app_testing}/__init__.py +0 -0
  422. {sqlmodel-0.0.34/tests/test_tutorial → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi}/test_delete/__init__.py +0 -0
  423. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_limit_and_offset}/__init__.py +0 -0
  424. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_app_testing → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_multiple_models}/__init__.py +0 -0
  425. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_delete → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_read_one}/__init__.py +0 -0
  426. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_limit_and_offset → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_relationships}/__init__.py +0 -0
  427. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_multiple_models → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_response_model}/__init__.py +0 -0
  428. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_read_one → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_session_with_dependency}/__init__.py +0 -0
  429. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_relationships → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_simple_hero_api}/__init__.py +0 -0
  430. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_response_model → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_teams}/__init__.py +0 -0
  431. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_session_with_dependency → sqlmodel-0.0.36/tests/test_tutorial/test_fastapi/test_update}/__init__.py +0 -0
  432. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_simple_hero_api → sqlmodel-0.0.36/tests/test_tutorial/test_indexes}/__init__.py +0 -0
  433. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_teams → sqlmodel-0.0.36/tests/test_tutorial/test_insert}/__init__.py +0 -0
  434. {sqlmodel-0.0.34/tests/test_tutorial/test_fastapi/test_update → sqlmodel-0.0.36/tests/test_tutorial/test_limit_and_offset}/__init__.py +0 -0
  435. {sqlmodel-0.0.34/tests/test_tutorial/test_indexes → sqlmodel-0.0.36/tests/test_tutorial/test_many_to_many}/__init__.py +0 -0
  436. {sqlmodel-0.0.34/tests/test_tutorial/test_insert → sqlmodel-0.0.36/tests/test_tutorial/test_one}/__init__.py +0 -0
  437. {sqlmodel-0.0.34/tests/test_tutorial/test_limit_and_offset → sqlmodel-0.0.36/tests/test_tutorial/test_relationship_attributes}/__init__.py +0 -0
  438. {sqlmodel-0.0.34/tests/test_tutorial/test_many_to_many → sqlmodel-0.0.36/tests/test_tutorial/test_relationship_attributes/test_back_populates}/__init__.py +0 -0
  439. {sqlmodel-0.0.34/tests/test_tutorial/test_one → sqlmodel-0.0.36/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships}/__init__.py +0 -0
  440. {sqlmodel-0.0.34/tests/test_tutorial/test_relationship_attributes → sqlmodel-0.0.36/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes}/__init__.py +0 -0
  441. {sqlmodel-0.0.34/tests/test_tutorial/test_relationship_attributes/test_back_populates → sqlmodel-0.0.36/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship}/__init__.py +0 -0
  442. {sqlmodel-0.0.34/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships → sqlmodel-0.0.36/tests/test_tutorial/test_relationship_attributes/test_read_relationships}/__init__.py +0 -0
  443. {sqlmodel-0.0.34/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes → sqlmodel-0.0.36/tests/test_tutorial/test_select}/__init__.py +0 -0
  444. {sqlmodel-0.0.34/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship → sqlmodel-0.0.36/tests/test_tutorial/test_update}/__init__.py +0 -0
  445. {sqlmodel-0.0.34/tests/test_tutorial/test_relationship_attributes/test_read_relationships → sqlmodel-0.0.36/tests/test_tutorial/test_where}/__init__.py +0 -0
  446. {sqlmodel-0.0.34 → sqlmodel-0.0.36}/tests/test_update.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmodel
3
- Version: 0.0.34
3
+ Version: 0.0.36
4
4
  Summary: SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness.
5
5
  Author-Email: =?utf-8?q?Sebasti=C3=A1n_Ram=C3=ADrez?= <tiangolo@gmail.com>
6
6
  License-Expression: MIT
@@ -11,7 +11,6 @@ Classifier: Intended Audience :: Developers
11
11
  Classifier: Intended Audience :: Science/Research
12
12
  Classifier: Intended Audience :: System Administrators
13
13
  Classifier: Programming Language :: Python :: 3 :: Only
14
- Classifier: Programming Language :: Python :: 3.9
15
14
  Classifier: Programming Language :: Python :: 3.10
16
15
  Classifier: Programming Language :: Python :: 3.11
17
16
  Classifier: Programming Language :: Python :: 3.12
@@ -28,7 +27,7 @@ Project-URL: Documentation, https://sqlmodel.tiangolo.com
28
27
  Project-URL: Repository, https://github.com/fastapi/sqlmodel
29
28
  Project-URL: Issues, https://github.com/fastapi/sqlmodel/issues
30
29
  Project-URL: Changelog, https://sqlmodel.tiangolo.com/release-notes/
31
- Requires-Python: >=3.9
30
+ Requires-Python: >=3.10
32
31
  Requires-Dist: SQLAlchemy<2.1.0,>=2.0.14
33
32
  Requires-Dist: pydantic>=2.11.0
34
33
  Description-Content-Type: text/markdown
@@ -9,7 +9,7 @@ name = "sqlmodel"
9
9
  dynamic = []
10
10
  description = "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness."
11
11
  readme = "README.md"
12
- requires-python = ">=3.9"
12
+ requires-python = ">=3.10"
13
13
  authors = [
14
14
  { name = "Sebastián Ramírez", email = "tiangolo@gmail.com" },
15
15
  ]
@@ -24,7 +24,6 @@ classifiers = [
24
24
  "Intended Audience :: Science/Research",
25
25
  "Intended Audience :: System Administrators",
26
26
  "Programming Language :: Python :: 3 :: Only",
27
- "Programming Language :: Python :: 3.9",
28
27
  "Programming Language :: Python :: 3.10",
29
28
  "Programming Language :: Python :: 3.11",
30
29
  "Programming Language :: Python :: 3.12",
@@ -41,7 +40,7 @@ dependencies = [
41
40
  "SQLAlchemy >=2.0.14,<2.1.0",
42
41
  "pydantic>=2.11.0",
43
42
  ]
44
- version = "0.0.34"
43
+ version = "0.0.36"
45
44
 
46
45
  [project.urls]
47
46
  Homepage = "https://github.com/fastapi/sqlmodel"
@@ -69,7 +68,7 @@ docs = [
69
68
  "mkdocstrings[python]==0.30.1",
70
69
  "pillow==11.3.0",
71
70
  "pyyaml>=5.3.1,<7.0.0",
72
- "typer==0.23.1",
71
+ "typer==0.23.2",
73
72
  ]
74
73
  github-actions = [
75
74
  "httpx>=0.27.0,<0.29.0",
@@ -107,28 +106,6 @@ source-includes = [
107
106
  "sqlmodel/sql/expression.py.jinja2",
108
107
  ]
109
108
 
110
- [tool.tiangolo._internal-slim-build.packages.sqlmodel-slim.project]
111
- name = "sqlmodel-slim"
112
- readme = "sqlmodel-slim/README.md"
113
- dependencies = [
114
- "sqlmodel",
115
- ]
116
-
117
- [tool.tiangolo._internal-slim-build.packages.sqlmodel-slim.project.optional-dependencies]
118
-
119
- [tool.tiangolo._internal-slim-build.packages.sqlmodel-slim.project.scripts]
120
-
121
- [tool.tiangolo._internal-slim-build.packages.sqlmodel-slim.tool.pdm.build]
122
- excludes = [
123
- "sqlmodel",
124
- "docs_src",
125
- "tests",
126
- "pdm_build.py",
127
- ]
128
- source-includes = [
129
- "",
130
- ]
131
-
132
109
  [tool.coverage.run]
133
110
  parallel = true
134
111
  data_file = "coverage/.coverage"
@@ -0,0 +1,384 @@
1
+ import logging
2
+ import os
3
+ import re
4
+ import shutil
5
+ import subprocess
6
+ from http.server import HTTPServer, SimpleHTTPRequestHandler
7
+ from pathlib import Path
8
+
9
+ import mkdocs.utils
10
+ import typer
11
+ from jinja2 import Template
12
+ from ruff.__main__ import find_ruff_bin
13
+
14
+ logging.basicConfig(level=logging.INFO)
15
+
16
+ mkdocs_name = "mkdocs.yml"
17
+ docs_path = Path("docs")
18
+ en_docs_path = Path("")
19
+
20
+ app = typer.Typer()
21
+
22
+
23
+ @app.callback()
24
+ def callback() -> None:
25
+ # For MacOS with Cairo
26
+ os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = "/opt/homebrew/lib"
27
+
28
+
29
+ index_sponsors_template = """
30
+ {% if sponsors %}
31
+ {% for sponsor in sponsors.gold -%}
32
+ <a href="{{ sponsor.url }}" target="_blank" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}"></a>
33
+ {% endfor -%}
34
+ {%- for sponsor in sponsors.silver -%}
35
+ <a href="{{ sponsor.url }}" target="_blank" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}"></a>
36
+ {% endfor %}
37
+ {% endif %}
38
+ """
39
+
40
+
41
+ def generate_readme_content() -> str:
42
+ en_index = en_docs_path / "docs" / "index.md"
43
+ content = en_index.read_text("utf-8")
44
+ match_pre = re.search(r"</style>\n\n", content)
45
+ match_start = re.search(r"<!-- sponsors -->", content)
46
+ match_end = re.search(r"<!-- /sponsors -->", content)
47
+ sponsors_data_path = en_docs_path / "data" / "sponsors.yml"
48
+ sponsors = mkdocs.utils.yaml_load(sponsors_data_path.read_text(encoding="utf-8"))
49
+ if not (match_start and match_end):
50
+ raise RuntimeError("Couldn't auto-generate sponsors section")
51
+ if not match_pre:
52
+ raise RuntimeError("Couldn't find pre section (<style>) in index.md")
53
+ frontmatter_end = match_pre.end()
54
+ pre_end = match_start.end()
55
+ post_start = match_end.start()
56
+ template = Template(index_sponsors_template)
57
+ message = template.render(sponsors=sponsors)
58
+ pre_content = content[frontmatter_end:pre_end]
59
+ post_content = content[post_start:]
60
+ new_content = pre_content + message + post_content
61
+ # Remove content between <!-- only-mkdocs --> and <!-- /only-mkdocs -->
62
+ new_content = re.sub(
63
+ r"<!-- only-mkdocs -->.*?<!-- /only-mkdocs -->",
64
+ "",
65
+ new_content,
66
+ flags=re.DOTALL,
67
+ )
68
+ return new_content
69
+
70
+
71
+ @app.command()
72
+ def generate_readme() -> None:
73
+ """
74
+ Generate README.md content from main index.md
75
+ """
76
+ typer.echo("Generating README")
77
+ readme_path = Path("README.md")
78
+ new_content = generate_readme_content()
79
+ readme_path.write_text(new_content, encoding="utf-8")
80
+
81
+
82
+ @app.command()
83
+ def verify_readme() -> None:
84
+ """
85
+ Verify README.md content from main index.md
86
+ """
87
+ typer.echo("Verifying README")
88
+ readme_path = Path("README.md")
89
+ generated_content = generate_readme_content()
90
+ readme_content = readme_path.read_text("utf-8")
91
+ if generated_content != readme_content:
92
+ typer.secho(
93
+ "README.md outdated from the latest index.md", color=typer.colors.RED
94
+ )
95
+ raise typer.Abort()
96
+ typer.echo("Valid README ✅")
97
+
98
+
99
+ @app.command()
100
+ def live(dirty: bool = False) -> None:
101
+ """
102
+ Serve with livereload a docs site for a specific language.
103
+
104
+ This only shows the actual translated files, not the placeholders created with
105
+ build-all.
106
+
107
+ Takes an optional LANG argument with the name of the language to serve, by default
108
+ en.
109
+ """
110
+ # Enable line numbers during local development to make it easier to highlight
111
+ args = ["mkdocs", "serve", "--dev-addr", "127.0.0.1:8008"]
112
+ if dirty:
113
+ args.append("--dirty")
114
+ subprocess.run(args, env={**os.environ, "LINENUMS": "true"}, check=True)
115
+
116
+
117
+ @app.command()
118
+ def build() -> None:
119
+ """
120
+ Build the docs.
121
+ """
122
+ print("Building docs")
123
+ subprocess.run(["mkdocs", "build"], check=True)
124
+ typer.secho("Successfully built docs", color=typer.colors.GREEN)
125
+
126
+
127
+ @app.command()
128
+ def serve() -> None:
129
+ """
130
+ A quick server to preview a built site.
131
+
132
+ For development, prefer the command live (or just mkdocs serve).
133
+
134
+ This is here only to preview the documentation site.
135
+
136
+ Make sure you run the build command first.
137
+ """
138
+ typer.echo("Warning: this is a very simple server.")
139
+ typer.echo("For development, use the command live instead.")
140
+ typer.echo("This is here only to preview the documentation site.")
141
+ typer.echo("Make sure you run the build command first.")
142
+ os.chdir("site")
143
+ server_address = ("", 8008)
144
+ server = HTTPServer(server_address, SimpleHTTPRequestHandler)
145
+ typer.echo("Serving at: http://127.0.0.1:8008")
146
+ server.serve_forever()
147
+
148
+
149
+ @app.command()
150
+ def generate_docs_src_versions_for_file(file_path: Path) -> None:
151
+ target_versions = ["py39", "py310"]
152
+ full_path_str = str(file_path)
153
+ for target_version in target_versions:
154
+ if f"_{target_version}" in full_path_str:
155
+ logging.info(
156
+ f"Skipping {file_path}, already a version file for {target_version}"
157
+ )
158
+ return
159
+ base_content = file_path.read_text(encoding="utf-8")
160
+ previous_content = {base_content}
161
+ for target_version in target_versions:
162
+ version_result = subprocess.run(
163
+ [
164
+ find_ruff_bin(),
165
+ "check",
166
+ "--target-version",
167
+ target_version,
168
+ "--fix",
169
+ "--unsafe-fixes",
170
+ "-",
171
+ ],
172
+ input=base_content.encode("utf-8"),
173
+ capture_output=True,
174
+ )
175
+ content_target = version_result.stdout.decode("utf-8")
176
+ format_result = subprocess.run(
177
+ [find_ruff_bin(), "format", "-"],
178
+ input=content_target.encode("utf-8"),
179
+ capture_output=True,
180
+ )
181
+ content_format = format_result.stdout.decode("utf-8")
182
+ if content_format in previous_content:
183
+ continue
184
+ previous_content.add(content_format)
185
+ # Determine where the version label should go: in the parent directory
186
+ # name or in the file name, matching the source structure.
187
+ label_in_parent = False
188
+ for v in target_versions:
189
+ if f"_{v}" in file_path.parent.name:
190
+ label_in_parent = True
191
+ break
192
+ if label_in_parent:
193
+ parent_name = file_path.parent.name
194
+ for v in target_versions:
195
+ parent_name = parent_name.replace(f"_{v}", "")
196
+ new_parent = file_path.parent.parent / f"{parent_name}_{target_version}"
197
+ new_parent.mkdir(parents=True, exist_ok=True)
198
+ version_file = new_parent / file_path.name
199
+ else:
200
+ base_name = file_path.stem
201
+ for v in target_versions:
202
+ if base_name.endswith(f"_{v}"):
203
+ base_name = base_name[: -len(f"_{v}")]
204
+ break
205
+ version_file = file_path.with_name(f"{base_name}_{target_version}.py")
206
+ logging.info(f"Writing to {version_file}")
207
+ version_file.write_text(content_format, encoding="utf-8")
208
+
209
+
210
+ @app.command()
211
+ def generate_docs_src_versions() -> None:
212
+ """
213
+ Generate Python version-specific files for all .py files in docs_src.
214
+ """
215
+ docs_src_path = Path("docs_src")
216
+ for py_file in sorted(docs_src_path.rglob("*.py")):
217
+ generate_docs_src_versions_for_file(py_file)
218
+
219
+
220
+ @app.command()
221
+ def copy_py39_to_py310() -> None:
222
+ """
223
+ For each docs_src file/directory with a _py39 label that has no _py310
224
+ counterpart, copy it with the _py310 label.
225
+ """
226
+ docs_src_path = Path("docs_src")
227
+ # Handle directory-level labels (e.g. app_b_an_py39/)
228
+ for dir_path in sorted(docs_src_path.rglob("*_py39")):
229
+ if not dir_path.is_dir():
230
+ continue
231
+ py310_dir = dir_path.parent / dir_path.name.replace("_py39", "_py310")
232
+ if py310_dir.exists():
233
+ continue
234
+ logging.info(f"Copying directory {dir_path} -> {py310_dir}")
235
+ shutil.copytree(dir_path, py310_dir)
236
+ # Handle file-level labels (e.g. tutorial001_py39.py)
237
+ for file_path in sorted(docs_src_path.rglob("*_py39.py")):
238
+ if not file_path.is_file():
239
+ continue
240
+ # Skip files inside _py39 directories (already handled above)
241
+ if "_py39" in file_path.parent.name:
242
+ continue
243
+ py310_file = file_path.with_name(
244
+ file_path.name.replace("_py39.py", "_py310.py")
245
+ )
246
+ if py310_file.exists():
247
+ continue
248
+ logging.info(f"Copying file {file_path} -> {py310_file}")
249
+ shutil.copy2(file_path, py310_file)
250
+
251
+
252
+ @app.command()
253
+ def update_docs_includes_py39_to_py310() -> None:
254
+ """
255
+ Update .md files in docs/en/ to replace _py39 includes with _py310 versions.
256
+
257
+ For each include line referencing a _py39 file or directory in docs_src, replace
258
+ the _py39 label with _py310.
259
+ """
260
+ include_pattern = re.compile(r"\{[^}]*docs_src/[^}]*_py39[^}]*\.py[^}]*\}")
261
+ count = 0
262
+ for md_file in sorted(en_docs_path.rglob("*.md")):
263
+ content = md_file.read_text(encoding="utf-8")
264
+ if "_py39" not in content:
265
+ continue
266
+ new_content = include_pattern.sub(
267
+ lambda m: m.group(0).replace("_py39", "_py310"), content
268
+ )
269
+ if new_content != content:
270
+ md_file.write_text(new_content, encoding="utf-8")
271
+ count += 1
272
+ logging.info(f"Updated includes in {md_file}")
273
+ print(f"Updated {count} file(s) ✅")
274
+
275
+
276
+ @app.command()
277
+ def remove_unused_docs_src() -> None:
278
+ """
279
+ Delete .py files in docs_src that are not included in any .md file under docs/.
280
+ """
281
+ docs_src_path = Path("docs_src")
282
+ # Collect all docs .md content referencing docs_src
283
+ all_docs_content = ""
284
+ for md_file in docs_path.rglob("*.md"):
285
+ all_docs_content += md_file.read_text(encoding="utf-8")
286
+ # Build a set of directory-based package roots (e.g. docs_src/bigger_applications/app_py39)
287
+ # where at least one file is referenced in docs. All files in these directories
288
+ # should be kept since they may be internally imported by the referenced files.
289
+ used_package_dirs: set[Path] = set()
290
+ for py_file in docs_src_path.rglob("*.py"):
291
+ if py_file.name == "__init__.py":
292
+ continue
293
+ rel_path = str(py_file)
294
+ if rel_path in all_docs_content:
295
+ parts = py_file.relative_to(docs_src_path).parts
296
+ if len(parts) > 2 and not py_file.name.startswith("tutorial"):
297
+ # File is inside a package directory (e.g.
298
+ # docs_src/tutorial/fastapi/app_testing/tutorial001_py310/).
299
+ # Mark the immediate parent as a used package so sibling
300
+ # files (likely imported by the referenced file) are kept.
301
+ used_package_dirs.add(py_file.parent)
302
+ removed = 0
303
+ for py_file in sorted(docs_src_path.rglob("*.py")):
304
+ if py_file.name == "__init__.py":
305
+ continue
306
+ # Build the relative path as it appears in includes (e.g. docs_src/first_steps/tutorial001.py)
307
+ rel_path = str(py_file)
308
+ if rel_path in all_docs_content:
309
+ continue
310
+ # If this file is inside a directory-based package where any sibling is
311
+ # referenced, keep it (it's likely imported internally).
312
+ if py_file.parent in used_package_dirs:
313
+ continue
314
+ # Check if the _an counterpart (or non-_an counterpart) is referenced.
315
+ # If either variant is included, keep both.
316
+ # Handle both file-level _an (tutorial001_an.py) and directory-level _an
317
+ # (app_an/main.py)
318
+ counterpart_found = False
319
+ full_path_str = str(py_file)
320
+ if "_an" in py_file.stem:
321
+ # This is an _an file, check if the non-_an version is referenced
322
+ counterpart = full_path_str.replace(
323
+ f"/{py_file.stem}", f"/{py_file.stem.replace('_an', '', 1)}"
324
+ )
325
+ if counterpart in all_docs_content:
326
+ counterpart_found = True
327
+ else:
328
+ # This is a non-_an file, check if there's an _an version referenced
329
+ # Insert _an before any version suffix or at the end of the stem
330
+ stem = py_file.stem
331
+ for suffix in ("_py39", "_py310"):
332
+ if suffix in stem:
333
+ an_stem = stem.replace(suffix, f"_an{suffix}", 1)
334
+ break
335
+ else:
336
+ an_stem = f"{stem}_an"
337
+ counterpart = full_path_str.replace(f"/{stem}.", f"/{an_stem}.")
338
+ if counterpart in all_docs_content:
339
+ counterpart_found = True
340
+ # Also check directory-level _an counterparts
341
+ if not counterpart_found:
342
+ parent_name = py_file.parent.name
343
+ if "_an" in parent_name:
344
+ counterpart_parent = parent_name.replace("_an", "", 1)
345
+ counterpart_dir = str(py_file).replace(
346
+ f"/{parent_name}/", f"/{counterpart_parent}/"
347
+ )
348
+ if counterpart_dir in all_docs_content:
349
+ counterpart_found = True
350
+ else:
351
+ # Try inserting _an into parent directory name
352
+ for suffix in ("_py39", "_py310"):
353
+ if suffix in parent_name:
354
+ an_parent = parent_name.replace(suffix, f"_an{suffix}", 1)
355
+ break
356
+ else:
357
+ an_parent = f"{parent_name}_an"
358
+ counterpart_dir = str(py_file).replace(
359
+ f"/{parent_name}/", f"/{an_parent}/"
360
+ )
361
+ if counterpart_dir in all_docs_content:
362
+ counterpart_found = True
363
+ if counterpart_found:
364
+ continue
365
+ logging.info(f"Removing unused file: {py_file}")
366
+ py_file.unlink()
367
+ removed += 1
368
+ # Clean up directories that are empty or only contain __init__.py / __pycache__
369
+ for dir_path in sorted(docs_src_path.rglob("*"), reverse=True):
370
+ if not dir_path.is_dir():
371
+ continue
372
+ remaining = [
373
+ f
374
+ for f in dir_path.iterdir()
375
+ if f.name != "__pycache__" and f.name != "__init__.py"
376
+ ]
377
+ if not remaining:
378
+ logging.info(f"Removing empty/init-only directory: {dir_path}")
379
+ shutil.rmtree(dir_path)
380
+ print(f"Removed {removed} unused file(s) ✅")
381
+
382
+
383
+ if __name__ == "__main__":
384
+ app()
@@ -1,4 +1,4 @@
1
- from typing import Any, Union
1
+ from typing import Any
2
2
 
3
3
  from mkdocs.config.defaults import MkDocsConfig
4
4
  from mkdocs.structure.files import Files
@@ -7,9 +7,9 @@ from mkdocs.structure.pages import Page
7
7
 
8
8
 
9
9
  def generate_renamed_section_items(
10
- items: list[Union[Page, Section, Link]], *, config: MkDocsConfig
11
- ) -> list[Union[Page, Section, Link]]:
12
- new_items: list[Union[Page, Section, Link]] = []
10
+ items: list[Page | Section | Link], *, config: MkDocsConfig
11
+ ) -> list[Page | Section | Link]:
12
+ new_items: list[Page | Section | Link] = []
13
13
  for item in items:
14
14
  if isinstance(item, Section):
15
15
  new_title = item.title
@@ -1,4 +1,4 @@
1
- __version__ = "0.0.34"
1
+ __version__ = "0.0.36"
2
2
 
3
3
  # Re-export from SQLAlchemy
4
4
  from sqlalchemy.engine import create_engine as create_engine
@@ -9,9 +9,11 @@ from typing import (
9
9
  Annotated,
10
10
  Any,
11
11
  ForwardRef,
12
- Optional,
12
+ TypeAlias,
13
13
  TypeVar,
14
14
  Union,
15
+ get_args,
16
+ get_origin,
15
17
  )
16
18
 
17
19
  from annotated_types import MaxLen
@@ -24,7 +26,6 @@ from pydantic._internal._repr import Representation as Representation
24
26
  from pydantic.fields import FieldInfo
25
27
  from pydantic_core import PydanticUndefined as Undefined
26
28
  from pydantic_core import PydanticUndefinedType as PydanticUndefinedType
27
- from typing_extensions import get_args, get_origin
28
29
 
29
30
  BaseConfig = ConfigDict
30
31
  UndefinedType = PydanticUndefinedType
@@ -37,14 +38,14 @@ if TYPE_CHECKING:
37
38
  UnionType = getattr(types, "UnionType", Union)
38
39
  NoneType = type(None)
39
40
  T = TypeVar("T")
40
- InstanceOrType = Union[T, type[T]]
41
+ InstanceOrType: TypeAlias = T | type[T]
41
42
  _TSQLModel = TypeVar("_TSQLModel", bound="SQLModel")
42
43
 
43
44
 
44
45
  class FakeMetadata:
45
- max_length: Optional[int] = None
46
- max_digits: Optional[int] = None
47
- decimal_places: Optional[int] = None
46
+ max_length: int | None = None
47
+ max_digits: int | None = None
48
+ decimal_places: int | None = None
48
49
 
49
50
 
50
51
  @dataclass
@@ -75,8 +76,8 @@ def partial_init() -> Generator[None, None, None]:
75
76
 
76
77
 
77
78
  class SQLModelConfig(BaseConfig, total=False):
78
- table: Optional[bool]
79
- registry: Optional[Any]
79
+ table: bool | None
80
+ registry: Any | None
80
81
 
81
82
 
82
83
  def get_model_fields(model: InstanceOrType[BaseModel]) -> dict[str, "FieldInfo"]:
@@ -208,7 +209,7 @@ def sqlmodel_table_construct(
208
209
  *,
209
210
  self_instance: _TSQLModel,
210
211
  values: dict[str, Any],
211
- _fields_set: Union[set[str], None] = None,
212
+ _fields_set: set[str] | None = None,
212
213
  ) -> _TSQLModel:
213
214
  # Copy from Pydantic's BaseModel.construct()
214
215
  # Ref: https://github.com/pydantic/pydantic/blob/v2.5.2/pydantic/main.py#L198
@@ -236,7 +237,7 @@ def sqlmodel_table_construct(
236
237
  _fields_set = set(fields_values.keys())
237
238
  fields_values.update(defaults)
238
239
 
239
- _extra: Union[dict[str, Any], None] = None
240
+ _extra: dict[str, Any] | None = None
240
241
  if cls.model_config.get("extra") == "allow":
241
242
  _extra = {}
242
243
  for k, v in values.items():
@@ -276,10 +277,10 @@ def sqlmodel_validate(
276
277
  cls: type[_TSQLModel],
277
278
  obj: Any,
278
279
  *,
279
- strict: Union[bool, None] = None,
280
- from_attributes: Union[bool, None] = None,
281
- context: Union[dict[str, Any], None] = None,
282
- update: Union[dict[str, Any], None] = None,
280
+ strict: bool | None = None,
281
+ from_attributes: bool | None = None,
282
+ context: dict[str, Any] | None = None,
283
+ update: dict[str, Any] | None = None,
283
284
  ) -> _TSQLModel:
284
285
  if not is_table_model_class(cls):
285
286
  new_obj: _TSQLModel = cls.__new__(cls)
@@ -1,9 +1,7 @@
1
1
  from collections.abc import Mapping, Sequence
2
2
  from typing import (
3
3
  Any,
4
- Optional,
5
4
  TypeVar,
6
- Union,
7
5
  cast,
8
6
  overload,
9
7
  )
@@ -37,11 +35,11 @@ class AsyncSession(_AsyncSession):
37
35
  self,
38
36
  statement: Select[_TSelectParam],
39
37
  *,
40
- params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None,
38
+ params: Mapping[str, Any] | Sequence[Mapping[str, Any]] | None = None,
41
39
  execution_options: Mapping[str, Any] = util.EMPTY_DICT,
42
- bind_arguments: Optional[dict[str, Any]] = None,
43
- _parent_execute_state: Optional[Any] = None,
44
- _add_event: Optional[Any] = None,
40
+ bind_arguments: dict[str, Any] | None = None,
41
+ _parent_execute_state: Any | None = None,
42
+ _add_event: Any | None = None,
45
43
  ) -> TupleResult[_TSelectParam]: ...
46
44
 
47
45
  @overload
@@ -49,11 +47,11 @@ class AsyncSession(_AsyncSession):
49
47
  self,
50
48
  statement: SelectOfScalar[_TSelectParam],
51
49
  *,
52
- params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None,
50
+ params: Mapping[str, Any] | Sequence[Mapping[str, Any]] | None = None,
53
51
  execution_options: Mapping[str, Any] = util.EMPTY_DICT,
54
- bind_arguments: Optional[dict[str, Any]] = None,
55
- _parent_execute_state: Optional[Any] = None,
56
- _add_event: Optional[Any] = None,
52
+ bind_arguments: dict[str, Any] | None = None,
53
+ _parent_execute_state: Any | None = None,
54
+ _add_event: Any | None = None,
57
55
  ) -> ScalarResult[_TSelectParam]: ...
58
56
 
59
57
  @overload
@@ -61,30 +59,26 @@ class AsyncSession(_AsyncSession):
61
59
  self,
62
60
  statement: UpdateBase,
63
61
  *,
64
- params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None,
62
+ params: Mapping[str, Any] | Sequence[Mapping[str, Any]] | None = None,
65
63
  execution_options: Mapping[str, Any] = util.EMPTY_DICT,
66
- bind_arguments: Optional[dict[str, Any]] = None,
67
- _parent_execute_state: Optional[Any] = None,
68
- _add_event: Optional[Any] = None,
64
+ bind_arguments: dict[str, Any] | None = None,
65
+ _parent_execute_state: Any | None = None,
66
+ _add_event: Any | None = None,
69
67
  ) -> CursorResult[Any]: ...
70
68
 
71
69
  async def exec(
72
70
  self,
73
- statement: Union[
74
- Select[_TSelectParam],
75
- SelectOfScalar[_TSelectParam],
76
- Executable[_TSelectParam],
77
- UpdateBase,
78
- ],
71
+ statement: Select[_TSelectParam]
72
+ | SelectOfScalar[_TSelectParam]
73
+ | Executable[_TSelectParam]
74
+ | UpdateBase,
79
75
  *,
80
- params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None,
76
+ params: Mapping[str, Any] | Sequence[Mapping[str, Any]] | None = None,
81
77
  execution_options: Mapping[str, Any] = util.EMPTY_DICT,
82
- bind_arguments: Optional[dict[str, Any]] = None,
83
- _parent_execute_state: Optional[Any] = None,
84
- _add_event: Optional[Any] = None,
85
- ) -> Union[
86
- TupleResult[_TSelectParam], ScalarResult[_TSelectParam], CursorResult[Any]
87
- ]:
78
+ bind_arguments: dict[str, Any] | None = None,
79
+ _parent_execute_state: Any | None = None,
80
+ _add_event: Any | None = None,
81
+ ) -> TupleResult[_TSelectParam] | ScalarResult[_TSelectParam] | CursorResult[Any]:
88
82
  if execution_options:
89
83
  execution_options = util.immutabledict(execution_options).union(
90
84
  _EXECUTE_OPTIONS
@@ -131,12 +125,12 @@ class AsyncSession(_AsyncSession):
131
125
  async def execute(
132
126
  self,
133
127
  statement: _Executable,
134
- params: Optional[_CoreAnyExecuteParams] = None,
128
+ params: _CoreAnyExecuteParams | None = None,
135
129
  *,
136
130
  execution_options: OrmExecuteOptionsParameter = util.EMPTY_DICT,
137
- bind_arguments: Optional[dict[str, Any]] = None,
138
- _parent_execute_state: Optional[Any] = None,
139
- _add_event: Optional[Any] = None,
131
+ bind_arguments: dict[str, Any] | None = None,
132
+ _parent_execute_state: Any | None = None,
133
+ _add_event: Any | None = None,
140
134
  ) -> Result[Any]:
141
135
  """
142
136
  🚨 You probably want to use `session.exec()` instead of `session.execute()`.