sqlmodel 0.0.31__tar.gz → 0.0.33__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 (450) hide show
  1. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/PKG-INFO +1 -1
  2. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/pdm_build.py +16 -15
  3. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/pyproject.toml +60 -4
  4. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/__init__.py +1 -1
  5. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/ext/asyncio/session.py +8 -4
  6. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/main.py +72 -20
  7. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/expression.py +2 -2
  8. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_field_sa_column.py +12 -1
  9. sqlmodel-0.0.33/tests/test_future_annotations.py +63 -0
  10. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_main.py +92 -1
  11. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_pydantic/test_field.py +1 -2
  12. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py +51 -60
  13. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py +39 -30
  14. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py +39 -30
  15. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py +39 -30
  16. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py +39 -30
  17. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py +89 -152
  18. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_response_model/test_tutorial001.py +39 -30
  19. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py +51 -60
  20. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_simple_hero_api/test_tutorial001.py +39 -30
  21. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py +71 -110
  22. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py +51 -60
  23. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py +55 -70
  24. sqlmodel-0.0.31/requirements-docs-tests.txt +0 -2
  25. sqlmodel-0.0.31/requirements-docs.txt +0 -19
  26. sqlmodel-0.0.31/requirements-github-actions.txt +0 -5
  27. sqlmodel-0.0.31/requirements-tests.txt +0 -12
  28. sqlmodel-0.0.31/requirements.txt +0 -6
  29. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/LICENSE +0 -0
  30. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/README.md +0 -0
  31. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/__init__.py +0 -0
  32. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/__init__.py +0 -0
  33. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/decimal/__init__.py +0 -0
  34. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/decimal/tutorial001_py310.py +0 -0
  35. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/decimal/tutorial001_py39.py +0 -0
  36. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/uuid/__init__.py +0 -0
  37. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/uuid/tutorial001_py310.py +0 -0
  38. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/uuid/tutorial001_py39.py +0 -0
  39. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/uuid/tutorial002_py310.py +0 -0
  40. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/advanced/uuid/tutorial002_py39.py +0 -0
  41. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/__init__.py +0 -0
  42. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/automatic_id_none_refresh/__init__.py +0 -0
  43. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/automatic_id_none_refresh/annotations/en/tutorial002.md +0 -0
  44. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/automatic_id_none_refresh/tutorial001_py310.py +0 -0
  45. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/automatic_id_none_refresh/tutorial001_py39.py +0 -0
  46. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/automatic_id_none_refresh/tutorial002_py310.py +0 -0
  47. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/automatic_id_none_refresh/tutorial002_py39.py +0 -0
  48. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/__init__.py +0 -0
  49. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py310/__init__.py +0 -0
  50. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py310/app.py +0 -0
  51. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py310/database.py +0 -0
  52. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py310/models.py +0 -0
  53. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py39/__init__.py +0 -0
  54. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py39/app.py +0 -0
  55. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py39/database.py +0 -0
  56. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial001_py39/models.py +0 -0
  57. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py310/__init__.py +0 -0
  58. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py310/app.py +0 -0
  59. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py310/database.py +0 -0
  60. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py310/hero_model.py +0 -0
  61. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py310/team_model.py +0 -0
  62. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py39/__init__.py +0 -0
  63. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py39/app.py +0 -0
  64. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py39/database.py +0 -0
  65. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py39/hero_model.py +0 -0
  66. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/code_structure/tutorial002_py39/team_model.py +0 -0
  67. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/__init__.py +0 -0
  68. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/create_tables/__init__.py +0 -0
  69. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/create_tables/tutorial001_py310.py +0 -0
  70. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/create_tables/tutorial001_py39.py +0 -0
  71. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/delete/__init__.py +0 -0
  72. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/delete/tutorial001_py310.py +0 -0
  73. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/delete/tutorial001_py39.py +0 -0
  74. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/insert/__init__.py +0 -0
  75. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/insert/tutorial001_py310.py +0 -0
  76. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/insert/tutorial001_py39.py +0 -0
  77. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/__init__.py +0 -0
  78. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial001_py310.py +0 -0
  79. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial001_py39.py +0 -0
  80. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial002_py310.py +0 -0
  81. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial002_py39.py +0 -0
  82. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial003_py310.py +0 -0
  83. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial003_py39.py +0 -0
  84. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial004_py310.py +0 -0
  85. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial004_py39.py +0 -0
  86. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial005_py310.py +0 -0
  87. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/select/tutorial005_py39.py +0 -0
  88. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/update/__init__.py +0 -0
  89. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/update/tutorial001_py310.py +0 -0
  90. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/connect/update/tutorial001_py39.py +0 -0
  91. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/__init__.py +0 -0
  92. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/annotations/en/tutorial003.md +0 -0
  93. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/tutorial001_py310.py +0 -0
  94. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/tutorial001_py39.py +0 -0
  95. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/tutorial002_py310.py +0 -0
  96. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/tutorial002_py39.py +0 -0
  97. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/tutorial003_py310.py +0 -0
  98. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/create_db_and_table/tutorial003_py39.py +0 -0
  99. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/delete/__init__.py +0 -0
  100. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/delete/annotations/en/tutorial002.md +0 -0
  101. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/delete/tutorial001_py310.py +0 -0
  102. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/delete/tutorial001_py39.py +0 -0
  103. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/delete/tutorial002_py310.py +0 -0
  104. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/delete/tutorial002_py39.py +0 -0
  105. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/__init__.py +0 -0
  106. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/__init__.py +0 -0
  107. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/__init__.py +0 -0
  108. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_001.md +0 -0
  109. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_002.md +0 -0
  110. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_003.md +0 -0
  111. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_004.md +0 -0
  112. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_005.md +0 -0
  113. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_006.md +0 -0
  114. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py +0 -0
  115. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_extra_coverage.py +0 -0
  116. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main.py +0 -0
  117. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_001.py +0 -0
  118. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_002.py +0 -0
  119. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_003.py +0 -0
  120. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_004.py +0 -0
  121. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_005.py +0 -0
  122. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_006.py +0 -0
  123. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/__init__.py +0 -0
  124. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_001.md +0 -0
  125. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_002.md +0 -0
  126. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_003.md +0 -0
  127. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_004.md +0 -0
  128. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_005.md +0 -0
  129. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/annotations/en/test_main_006.md +0 -0
  130. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py +0 -0
  131. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_extra_coverage.py +0 -0
  132. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main.py +0 -0
  133. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_001.py +0 -0
  134. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_002.py +0 -0
  135. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_003.py +0 -0
  136. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_004.py +0 -0
  137. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_005.py +0 -0
  138. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/test_main_006.py +0 -0
  139. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/delete/__init__.py +0 -0
  140. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/delete/tutorial001_py310.py +0 -0
  141. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/delete/tutorial001_py39.py +0 -0
  142. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/limit_and_offset/__init__.py +0 -0
  143. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py +0 -0
  144. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py +0 -0
  145. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/multiple_models/__init__.py +0 -0
  146. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py +0 -0
  147. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py +0 -0
  148. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py +0 -0
  149. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py +0 -0
  150. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/read_one/__init__.py +0 -0
  151. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py +0 -0
  152. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py +0 -0
  153. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/relationships/__init__.py +0 -0
  154. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py +0 -0
  155. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py +0 -0
  156. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/response_model/__init__.py +0 -0
  157. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/response_model/tutorial001_py310.py +0 -0
  158. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/response_model/tutorial001_py39.py +0 -0
  159. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/session_with_dependency/__init__.py +0 -0
  160. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py +0 -0
  161. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py +0 -0
  162. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/simple_hero_api/__init__.py +0 -0
  163. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/simple_hero_api/tutorial001_py310.py +0 -0
  164. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/simple_hero_api/tutorial001_py39.py +0 -0
  165. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/teams/__init__.py +0 -0
  166. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/teams/tutorial001_py310.py +0 -0
  167. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/teams/tutorial001_py39.py +0 -0
  168. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/update/__init__.py +0 -0
  169. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/update/tutorial001_py310.py +0 -0
  170. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/update/tutorial001_py39.py +0 -0
  171. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/update/tutorial002_py310.py +0 -0
  172. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/fastapi/update/tutorial002_py39.py +0 -0
  173. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/indexes/__init__.py +0 -0
  174. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/indexes/tutorial001_py310.py +0 -0
  175. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/indexes/tutorial001_py39.py +0 -0
  176. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/indexes/tutorial002_py310.py +0 -0
  177. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/indexes/tutorial002_py39.py +0 -0
  178. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/__init__.py +0 -0
  179. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/annotations/en/tutorial003.md +0 -0
  180. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/tutorial001_py310.py +0 -0
  181. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/tutorial001_py39.py +0 -0
  182. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/tutorial002_py310.py +0 -0
  183. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/tutorial002_py39.py +0 -0
  184. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/tutorial003_py310.py +0 -0
  185. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/insert/tutorial003_py39.py +0 -0
  186. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/__init__.py +0 -0
  187. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/tutorial001_py310.py +0 -0
  188. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/tutorial001_py39.py +0 -0
  189. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/tutorial002_py310.py +0 -0
  190. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/tutorial002_py39.py +0 -0
  191. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/tutorial003_py310.py +0 -0
  192. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/many_to_many/tutorial003_py39.py +0 -0
  193. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/__init__.py +0 -0
  194. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial001_py310.py +0 -0
  195. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial001_py39.py +0 -0
  196. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial002_py310.py +0 -0
  197. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial002_py39.py +0 -0
  198. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial003_py310.py +0 -0
  199. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial003_py39.py +0 -0
  200. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial004_py310.py +0 -0
  201. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/offset_and_limit/tutorial004_py39.py +0 -0
  202. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/__init__.py +0 -0
  203. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial001_py310.py +0 -0
  204. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial001_py39.py +0 -0
  205. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial002_py310.py +0 -0
  206. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial002_py39.py +0 -0
  207. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial003_py310.py +0 -0
  208. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial003_py39.py +0 -0
  209. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial004_py310.py +0 -0
  210. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial004_py39.py +0 -0
  211. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial005_py310.py +0 -0
  212. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial005_py39.py +0 -0
  213. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial006_py310.py +0 -0
  214. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial006_py39.py +0 -0
  215. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial007_py310.py +0 -0
  216. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial007_py39.py +0 -0
  217. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial008_py310.py +0 -0
  218. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial008_py39.py +0 -0
  219. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial009_py310.py +0 -0
  220. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/one/tutorial009_py39.py +0 -0
  221. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/__init__.py +0 -0
  222. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/__init__.py +0 -0
  223. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/tutorial001_py310.py +0 -0
  224. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/tutorial001_py39.py +0 -0
  225. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/tutorial002_py310.py +0 -0
  226. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/tutorial002_py39.py +0 -0
  227. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/tutorial003_py310.py +0 -0
  228. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/back_populates/tutorial003_py39.py +0 -0
  229. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/__init__.py +0 -0
  230. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial001_py310.py +0 -0
  231. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial001_py39.py +0 -0
  232. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial002_py310.py +0 -0
  233. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial002_py39.py +0 -0
  234. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial003_py310.py +0 -0
  235. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial003_py39.py +0 -0
  236. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial004_py310.py +0 -0
  237. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial004_py39.py +0 -0
  238. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial005_py310.py +0 -0
  239. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial005_py39.py +0 -0
  240. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/create_and_update_relationships/__init__.py +0 -0
  241. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/create_and_update_relationships/tutorial001_py310.py +0 -0
  242. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/create_and_update_relationships/tutorial001_py39.py +0 -0
  243. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/define_relationship_attributes/__init__.py +0 -0
  244. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/define_relationship_attributes/tutorial001_py310.py +0 -0
  245. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/define_relationship_attributes/tutorial001_py39.py +0 -0
  246. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/read_relationships/__init__.py +0 -0
  247. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial001_py310.py +0 -0
  248. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial001_py39.py +0 -0
  249. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial002_py310.py +0 -0
  250. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial002_py39.py +0 -0
  251. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/__init__.py +0 -0
  252. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/annotations/en/tutorial002.md +0 -0
  253. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial001_py310.py +0 -0
  254. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial001_py39.py +0 -0
  255. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial002_py310.py +0 -0
  256. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial002_py39.py +0 -0
  257. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial003_py310.py +0 -0
  258. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial003_py39.py +0 -0
  259. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial004_py310.py +0 -0
  260. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/select/tutorial004_py39.py +0 -0
  261. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/__init__.py +0 -0
  262. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/annotations/en/tutorial002.md +0 -0
  263. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/annotations/en/tutorial004.md +0 -0
  264. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial001_py310.py +0 -0
  265. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial001_py39.py +0 -0
  266. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial002_py310.py +0 -0
  267. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial002_py39.py +0 -0
  268. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial003_py310.py +0 -0
  269. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial003_py39.py +0 -0
  270. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial004_py310.py +0 -0
  271. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/update/tutorial004_py39.py +0 -0
  272. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/__init__.py +0 -0
  273. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial001_py310.py +0 -0
  274. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial001_py39.py +0 -0
  275. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial002_py310.py +0 -0
  276. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial002_py39.py +0 -0
  277. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial003_py310.py +0 -0
  278. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial003_py39.py +0 -0
  279. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial004_py310.py +0 -0
  280. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial004_py39.py +0 -0
  281. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial005_py310.py +0 -0
  282. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial005_py39.py +0 -0
  283. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial006_py310.py +0 -0
  284. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial006_py39.py +0 -0
  285. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial007_py310.py +0 -0
  286. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial007_py39.py +0 -0
  287. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial008_py310.py +0 -0
  288. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial008_py39.py +0 -0
  289. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial009_py310.py +0 -0
  290. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial009_py39.py +0 -0
  291. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial010_py310.py +0 -0
  292. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial010_py39.py +0 -0
  293. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial011_py310.py +0 -0
  294. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/docs_src/tutorial/where/tutorial011_py39.py +0 -0
  295. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/deploy_docs_status.py +0 -0
  296. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/docs.py +0 -0
  297. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/format.sh +0 -0
  298. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/generate_select.py +0 -0
  299. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/lint.sh +0 -0
  300. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/mkdocs_hooks.py +0 -0
  301. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/scripts/test.sh +0 -0
  302. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/_compat.py +0 -0
  303. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/default.py +0 -0
  304. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/ext/__init__.py +0 -0
  305. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/ext/asyncio/__init__.py +0 -0
  306. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/orm/__init__.py +0 -0
  307. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/orm/session.py +0 -0
  308. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/pool/__init__.py +0 -0
  309. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/py.typed +0 -0
  310. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/__init__.py +0 -0
  311. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/_expression_select_cls.py +0 -0
  312. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/_expression_select_gen.py +0 -0
  313. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/_expression_select_gen.py.jinja2 +0 -0
  314. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/base.py +0 -0
  315. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/sqlmodel/sql/sqltypes.py +0 -0
  316. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/__init__.py +0 -0
  317. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/conftest.py +0 -0
  318. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_advanced/__init__.py +0 -0
  319. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_advanced/test_decimal/__init__.py +0 -0
  320. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_advanced/test_decimal/test_tutorial001.py +0 -0
  321. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_advanced/test_uuid/__init__.py +0 -0
  322. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_advanced/test_uuid/test_tutorial001.py +0 -0
  323. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_advanced/test_uuid/test_tutorial002.py +0 -0
  324. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_aliases.py +0 -0
  325. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_annotated_uuid.py +0 -0
  326. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_default.py +0 -0
  327. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_deprecations.py +0 -0
  328. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_enums.py +0 -0
  329. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_enums_models.py +0 -0
  330. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_field_sa_args_kwargs.py +0 -0
  331. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_field_sa_relationship.py +0 -0
  332. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_fields_set.py +0 -0
  333. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_instance_no_args.py +0 -0
  334. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_missing_type.py +0 -0
  335. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_nullable.py +0 -0
  336. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_ondelete_raises.py +0 -0
  337. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_pydantic/__init__.py +0 -0
  338. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_query.py +0 -0
  339. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_select_gen.py +0 -0
  340. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_select_typing.py +0 -0
  341. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_sqlalchemy_type_errors.py +0 -0
  342. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/__init__.py +0 -0
  343. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_automatic_id_none_refresh/__init__.py +0 -0
  344. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_automatic_id_none_refresh/test_tutorial001_tutorial002.py +0 -0
  345. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_code_structure/__init__.py +0 -0
  346. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_code_structure/test_tutorial001.py +0 -0
  347. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_code_structure/test_tutorial002.py +0 -0
  348. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/__init__.py +0 -0
  349. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_create_connected_tables/__init__.py +0 -0
  350. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_create_connected_tables/test_tutorial001.py +0 -0
  351. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_delete/__init__.py +0 -0
  352. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_delete/test_tutorial001.py +0 -0
  353. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_insert/__init__.py +0 -0
  354. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_insert/test_tutorial001.py +0 -0
  355. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_select/__init__.py +0 -0
  356. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_select/test_tutorial001_tutorial002.py +0 -0
  357. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_select/test_tutorial003.py +0 -0
  358. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_select/test_tutorial004.py +0 -0
  359. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_select/test_tutorial005.py +0 -0
  360. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_update/__init__.py +0 -0
  361. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_connect/test_update/test_tutorial001.py +0 -0
  362. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_create_db_and_table/__init__.py +0 -0
  363. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_create_db_and_table/test_tutorial001.py +0 -0
  364. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_create_db_and_table/test_tutorial002.py +0 -0
  365. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_create_db_and_table/test_tutorial003.py +0 -0
  366. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_delete/__init__.py +0 -0
  367. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_delete/test_tutorial001_tutorial002.py +0 -0
  368. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/__init__.py +0 -0
  369. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/__init__.py +0 -0
  370. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests001.py +0 -0
  371. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests002.py +0 -0
  372. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests003.py +0 -0
  373. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests004.py +0 -0
  374. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests005.py +0 -0
  375. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests006.py +0 -0
  376. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests_main.py +0 -0
  377. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_delete/__init__.py +0 -0
  378. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_limit_and_offset/__init__.py +0 -0
  379. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_multiple_models/__init__.py +0 -0
  380. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_read_one/__init__.py +0 -0
  381. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_relationships/__init__.py +0 -0
  382. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_response_model/__init__.py +0 -0
  383. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_session_with_dependency/__init__.py +0 -0
  384. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_simple_hero_api/__init__.py +0 -0
  385. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_teams/__init__.py +0 -0
  386. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_fastapi/test_update/__init__.py +0 -0
  387. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_indexes/__init__.py +0 -0
  388. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_indexes/test_tutorial001.py +0 -0
  389. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_indexes/test_tutorial002.py +0 -0
  390. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_insert/__init__.py +0 -0
  391. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_insert/test_tutorial001.py +0 -0
  392. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_insert/test_tutorial002.py +0 -0
  393. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_insert/test_tutorial003.py +0 -0
  394. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_limit_and_offset/__init__.py +0 -0
  395. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_limit_and_offset/test_tutorial001.py +0 -0
  396. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_limit_and_offset/test_tutorial002.py +0 -0
  397. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_limit_and_offset/test_tutorial003.py +0 -0
  398. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_limit_and_offset/test_tutorial004.py +0 -0
  399. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_many_to_many/__init__.py +0 -0
  400. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_many_to_many/test_tutorial001.py +0 -0
  401. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_many_to_many/test_tutorial002.py +0 -0
  402. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_many_to_many/test_tutorial003.py +0 -0
  403. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/__init__.py +0 -0
  404. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial001.py +0 -0
  405. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial002.py +0 -0
  406. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial003.py +0 -0
  407. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial004.py +0 -0
  408. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial005.py +0 -0
  409. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial006.py +0 -0
  410. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial007.py +0 -0
  411. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial008.py +0 -0
  412. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_one/test_tutorial009.py +0 -0
  413. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/__init__.py +0 -0
  414. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_back_populates/__init__.py +0 -0
  415. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial001.py +0 -0
  416. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial002.py +0 -0
  417. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial003.py +0 -0
  418. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships/__init__.py +0 -0
  419. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships/test_tutorial001.py +0 -0
  420. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes/__init__.py +0 -0
  421. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes/test_tutorial001.py +0 -0
  422. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/__init__.py +0 -0
  423. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial001.py +0 -0
  424. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial002.py +0 -0
  425. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial003.py +0 -0
  426. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial004.py +0 -0
  427. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial005.py +0 -0
  428. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/__init__.py +0 -0
  429. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/test_tutorial001.py +0 -0
  430. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/test_tutorial002.py +0 -0
  431. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_select/__init__.py +0 -0
  432. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_select/test_tutorial001_tutorial002.py +0 -0
  433. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_select/test_tutorial003_tutorial004.py +0 -0
  434. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_update/__init__.py +0 -0
  435. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_update/test_tutorial001_tutorial002.py +0 -0
  436. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_update/test_tutorial003_tutorial004.py +0 -0
  437. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/__init__.py +0 -0
  438. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial001.py +0 -0
  439. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial002.py +0 -0
  440. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial003.py +0 -0
  441. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial004.py +0 -0
  442. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial005.py +0 -0
  443. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial006.py +0 -0
  444. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial007.py +0 -0
  445. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial008.py +0 -0
  446. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial009.py +0 -0
  447. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial010.py +0 -0
  448. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_tutorial/test_where/test_tutorial011.py +0 -0
  449. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_update.py +0 -0
  450. {sqlmodel-0.0.31 → sqlmodel-0.0.33}/tests/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmodel
3
- Version: 0.0.31
3
+ Version: 0.0.33
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
@@ -3,24 +3,23 @@ from typing import Any
3
3
 
4
4
  from pdm.backend.hooks import Context
5
5
 
6
- TIANGOLO_BUILD_PACKAGE = os.getenv("TIANGOLO_BUILD_PACKAGE", "sqlmodel")
6
+ TIANGOLO_BUILD_PACKAGE = os.getenv("TIANGOLO_BUILD_PACKAGE")
7
7
 
8
8
 
9
9
  def pdm_build_initialize(context: Context) -> None:
10
10
  metadata = context.config.metadata
11
+ # Get main version
12
+ version = metadata["version"]
11
13
  # Get custom config for the current package, from the env var
12
- config: dict[str, Any] = context.config.data["tool"]["tiangolo"][
14
+ all_configs_config: dict[str, Any] = context.config.data["tool"]["tiangolo"][
13
15
  "_internal-slim-build"
14
- ]["packages"][TIANGOLO_BUILD_PACKAGE]
16
+ ]["packages"]
17
+
18
+ if TIANGOLO_BUILD_PACKAGE not in all_configs_config:
19
+ return
20
+
21
+ config = all_configs_config[TIANGOLO_BUILD_PACKAGE]
15
22
  project_config: dict[str, Any] = config["project"]
16
- # Get main optional dependencies, extras
17
- optional_dependencies: dict[str, list[str]] = metadata.get(
18
- "optional-dependencies", {}
19
- )
20
- # Get custom optional dependencies name to always include in this (non-slim) package
21
- include_optional_dependencies: list[str] = config.get(
22
- "include-optional-dependencies", []
23
- )
24
23
  # Override main [project] configs with custom configs for this package
25
24
  for key, value in project_config.items():
26
25
  metadata[key] = value
@@ -33,7 +32,9 @@ def pdm_build_initialize(context: Context) -> None:
33
32
  context.config.build_config[key] = value
34
33
  # Get main dependencies
35
34
  dependencies: list[str] = metadata.get("dependencies", [])
36
- # Add optional dependencies to the default dependencies for this (non-slim) package
37
- for include_optional in include_optional_dependencies:
38
- optional_dependencies_group = optional_dependencies.get(include_optional, [])
39
- dependencies.extend(optional_dependencies_group)
35
+ # Sync versions in dependencies
36
+ new_dependencies = []
37
+ for dep in dependencies:
38
+ new_dep = f"{dep}>={version}"
39
+ new_dependencies.append(new_dep)
40
+ metadata["dependencies"] = new_dependencies
@@ -41,7 +41,7 @@ dependencies = [
41
41
  "SQLAlchemy >=2.0.14,<2.1.0",
42
42
  "pydantic>=2.7.0",
43
43
  ]
44
- version = "0.0.31"
44
+ version = "0.0.33"
45
45
 
46
46
  [project.urls]
47
47
  Homepage = "https://github.com/fastapi/sqlmodel"
@@ -50,7 +50,47 @@ Repository = "https://github.com/fastapi/sqlmodel"
50
50
  Issues = "https://github.com/fastapi/sqlmodel/issues"
51
51
  Changelog = "https://sqlmodel.tiangolo.com/release-notes/"
52
52
 
53
- [project.optional-dependencies]
53
+ [dependency-groups]
54
+ dev = [
55
+ { include-group = "docs" },
56
+ { include-group = "tests" },
57
+ "prek>=0.2.24,<1.0.0",
58
+ ]
59
+ docs = [
60
+ "black>=22.10",
61
+ "cairosvg==2.8.2",
62
+ "griffe-typingdoc==0.3.0",
63
+ "griffe-warnings-deprecated==1.1.0",
64
+ "markdown-include-variants==0.0.8",
65
+ "mdx-include>=1.4.1,<2.0.0",
66
+ "mkdocs-macros-plugin==1.5.0",
67
+ "mkdocs-material==9.7.1",
68
+ "mkdocs-redirects>=1.2.1,<1.3.0",
69
+ "mkdocstrings[python]==0.30.1",
70
+ "pillow==11.3.0",
71
+ "pyyaml>=5.3.1,<7.0.0",
72
+ "typer==0.21.2",
73
+ ]
74
+ github-actions = [
75
+ "httpx>=0.27.0,<0.29.0",
76
+ "pydantic>=2.5.3,<3.0.0",
77
+ "pydantic-settings>=2.1.0,<3.0.0",
78
+ "pygithub>=2.3.0,<3.0.0",
79
+ "smokeshow>=0.5.0",
80
+ ]
81
+ tests = [
82
+ "black>=22.10",
83
+ "coverage[toml]>=6.2,<8.0",
84
+ "dirty-equals==0.11",
85
+ "fastapi>=0.103.2",
86
+ "httpx==0.28.1",
87
+ "jinja2==3.1.6",
88
+ "mypy==1.19.1",
89
+ "pre-commit>=2.17.0,<5.0.0",
90
+ "pytest>=7.0.1,<9.0.0",
91
+ "ruff==0.15.0",
92
+ "typing-extensions==4.15.0",
93
+ ]
54
94
 
55
95
  [tool.pdm]
56
96
  distribution = true
@@ -63,15 +103,31 @@ path = "sqlmodel/__init__.py"
63
103
  source-includes = [
64
104
  "tests/",
65
105
  "docs_src/",
66
- "requirements*.txt",
67
106
  "scripts/",
68
107
  "sqlmodel/sql/expression.py.jinja2",
69
108
  ]
70
109
 
71
110
  [tool.tiangolo._internal-slim-build.packages.sqlmodel-slim.project]
72
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]
73
118
 
74
- [tool.tiangolo._internal-slim-build.packages.sqlmodel.project.optional-dependencies]
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
+ ]
75
131
 
76
132
  [tool.coverage.run]
77
133
  parallel = true
@@ -1,4 +1,4 @@
1
- __version__ = "0.0.31"
1
+ __version__ = "0.0.33"
2
2
 
3
3
  # Re-export from SQLAlchemy
4
4
  from sqlalchemy.engine import create_engine as create_engine
@@ -116,13 +116,15 @@ class AsyncSession(_AsyncSession):
116
116
  For example:
117
117
 
118
118
  ```Python
119
- heroes = await session.execute(select(Hero)).scalars().all()
119
+ result = await session.execute(select(Hero))
120
+ heroes = result.scalars().all()
120
121
  ```
121
122
 
122
123
  instead you could use `exec()`:
123
124
 
124
125
  ```Python
125
- heroes = await session.exec(select(Hero)).all()
126
+ result = await session.exec(select(Hero))
127
+ heroes = result.all()
126
128
  ```
127
129
  """
128
130
  )
@@ -145,13 +147,15 @@ class AsyncSession(_AsyncSession):
145
147
  For example:
146
148
 
147
149
  ```Python
148
- heroes = await session.execute(select(Hero)).scalars().all()
150
+ result = await session.execute(select(Hero))
151
+ heroes = result.scalars().all()
149
152
  ```
150
153
 
151
154
  instead you could use `exec()`:
152
155
 
153
156
  ```Python
154
- heroes = await session.exec(select(Hero)).all()
157
+ result = await session.exec(select(Hero))
158
+ heroes = result.all()
155
159
  ```
156
160
  """
157
161
  return await super().execute(
@@ -5,6 +5,7 @@ import ipaddress
5
5
  import uuid
6
6
  import weakref
7
7
  from collections.abc import Mapping, Sequence, Set
8
+ from dataclasses import dataclass
8
9
  from datetime import date, datetime, time, timedelta
9
10
  from decimal import Decimal
10
11
  from enum import Enum
@@ -14,6 +15,7 @@ from typing import (
14
15
  Any,
15
16
  Callable,
16
17
  ClassVar,
18
+ Literal,
17
19
  Optional,
18
20
  TypeVar,
19
21
  Union,
@@ -48,7 +50,7 @@ from sqlalchemy.orm.decl_api import DeclarativeMeta
48
50
  from sqlalchemy.orm.instrumentation import is_instrumented
49
51
  from sqlalchemy.sql.schema import MetaData
50
52
  from sqlalchemy.sql.sqltypes import LargeBinary, Time, Uuid
51
- from typing_extensions import Literal, TypeAlias, deprecated, get_origin
53
+ from typing_extensions import TypeAlias, deprecated, get_origin
52
54
 
53
55
  from ._compat import ( # type: ignore[attr-defined]
54
56
  PYDANTIC_MINOR_VERSION,
@@ -199,6 +201,38 @@ class RelationshipInfo(Representation):
199
201
  self.sa_relationship_kwargs = sa_relationship_kwargs
200
202
 
201
203
 
204
+ @dataclass
205
+ class FieldInfoMetadata:
206
+ primary_key: Union[bool, UndefinedType] = Undefined
207
+ nullable: Union[bool, UndefinedType] = Undefined
208
+ foreign_key: Any = Undefined
209
+ ondelete: Union[OnDeleteType, UndefinedType] = Undefined
210
+ unique: Union[bool, UndefinedType] = Undefined
211
+ index: Union[bool, UndefinedType] = Undefined
212
+ sa_type: Union[type[Any], UndefinedType] = Undefined
213
+ sa_column: Union[Column[Any], UndefinedType] = Undefined
214
+ sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined
215
+ sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined
216
+
217
+
218
+ def _get_sqlmodel_field_metadata(field_info: Any) -> Optional[FieldInfoMetadata]:
219
+ metadata_items = getattr(field_info, "metadata", None)
220
+ if metadata_items:
221
+ for meta in metadata_items:
222
+ if isinstance(meta, FieldInfoMetadata):
223
+ return meta
224
+ return None
225
+
226
+
227
+ def _get_sqlmodel_field_value(
228
+ field_info: Any, attribute: str, default: Any = Undefined
229
+ ) -> Any:
230
+ metadata = _get_sqlmodel_field_metadata(field_info)
231
+ if metadata is not None and hasattr(metadata, attribute):
232
+ return getattr(metadata, attribute)
233
+ return getattr(field_info, attribute, default)
234
+
235
+
202
236
  # include sa_type, sa_column_args, sa_column_kwargs
203
237
  @overload
204
238
  def Field(
@@ -422,6 +456,20 @@ def Field(
422
456
  default_factory=default_factory,
423
457
  **field_info_kwargs,
424
458
  )
459
+ field_metadata = FieldInfoMetadata(
460
+ primary_key=primary_key,
461
+ nullable=nullable,
462
+ foreign_key=foreign_key,
463
+ ondelete=ondelete,
464
+ unique=unique,
465
+ index=index,
466
+ sa_type=sa_type,
467
+ sa_column=sa_column,
468
+ sa_column_args=sa_column_args,
469
+ sa_column_kwargs=sa_column_kwargs,
470
+ )
471
+ if hasattr(field_info, "metadata"):
472
+ field_info.metadata.append(field_metadata)
425
473
  return field_info
426
474
 
427
475
 
@@ -531,7 +579,9 @@ class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta):
531
579
  config_kwargs = {
532
580
  key: kwargs[key] for key in kwargs.keys() & allowed_config_kwargs
533
581
  }
534
- new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs)
582
+ new_cls = cast(
583
+ "SQLModel", super().__new__(cls, name, bases, dict_used, **config_kwargs)
584
+ )
535
585
  new_cls.__annotations__ = {
536
586
  **relationship_annotations,
537
587
  **pydantic_annotations,
@@ -559,10 +609,10 @@ class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta):
559
609
  # This could be done by reading new_cls.model_config['table'] in FastAPI, but
560
610
  # that's very specific about SQLModel, so let's have another config that
561
611
  # other future tools based on Pydantic can use.
562
- new_cls.model_config["read_from_attributes"] = True
612
+ new_cls.model_config["read_from_attributes"] = True # type: ignore[typeddict-unknown-key]
563
613
  # For compatibility with older versions
564
614
  # TODO: remove this in the future
565
- new_cls.model_config["read_with_orm_mode"] = True
615
+ new_cls.model_config["read_with_orm_mode"] = True # type: ignore[typeddict-unknown-key]
566
616
 
567
617
  config_registry = get_config("registry")
568
618
  if config_registry is not Undefined:
@@ -636,7 +686,7 @@ class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta):
636
686
 
637
687
  def get_sqlalchemy_type(field: Any) -> Any:
638
688
  field_info = field
639
- sa_type = getattr(field_info, "sa_type", Undefined) # noqa: B009
689
+ sa_type = _get_sqlmodel_field_value(field_info, "sa_type", Undefined) # noqa: B009
640
690
  if sa_type is not Undefined:
641
691
  return sa_type
642
692
 
@@ -690,39 +740,39 @@ def get_sqlalchemy_type(field: Any) -> Any:
690
740
 
691
741
  def get_column_from_field(field: Any) -> Column: # type: ignore
692
742
  field_info = field
693
- sa_column = getattr(field_info, "sa_column", Undefined)
743
+ sa_column = _get_sqlmodel_field_value(field_info, "sa_column", Undefined)
694
744
  if isinstance(sa_column, Column):
695
745
  return sa_column
696
746
  sa_type = get_sqlalchemy_type(field)
697
- primary_key = getattr(field_info, "primary_key", Undefined)
747
+ primary_key = _get_sqlmodel_field_value(field_info, "primary_key", Undefined)
698
748
  if primary_key is Undefined:
699
749
  primary_key = False
700
- index = getattr(field_info, "index", Undefined)
750
+ index = _get_sqlmodel_field_value(field_info, "index", Undefined)
701
751
  if index is Undefined:
702
752
  index = False
703
753
  nullable = not primary_key and is_field_noneable(field)
704
754
  # Override derived nullability if the nullable property is set explicitly
705
755
  # on the field
706
- field_nullable = getattr(field_info, "nullable", Undefined) # noqa: B009
756
+ field_nullable = _get_sqlmodel_field_value(field_info, "nullable", Undefined)
707
757
  if field_nullable is not Undefined:
708
758
  assert not isinstance(field_nullable, UndefinedType)
709
759
  nullable = field_nullable
710
760
  args = []
711
- foreign_key = getattr(field_info, "foreign_key", Undefined)
761
+ foreign_key = _get_sqlmodel_field_value(field_info, "foreign_key", Undefined)
712
762
  if foreign_key is Undefined:
713
763
  foreign_key = None
714
- unique = getattr(field_info, "unique", Undefined)
764
+ unique = _get_sqlmodel_field_value(field_info, "unique", Undefined)
715
765
  if unique is Undefined:
716
766
  unique = False
717
767
  if foreign_key:
718
- if field_info.ondelete == "SET NULL" and not nullable:
768
+ ondelete_value = _get_sqlmodel_field_value(field_info, "ondelete", Undefined)
769
+ if ondelete_value is Undefined:
770
+ ondelete_value = None
771
+ if ondelete_value == "SET NULL" and not nullable:
719
772
  raise RuntimeError('ondelete="SET NULL" requires nullable=True')
720
773
  assert isinstance(foreign_key, str)
721
- ondelete = getattr(field_info, "ondelete", Undefined)
722
- if ondelete is Undefined:
723
- ondelete = None
724
- assert isinstance(ondelete, (str, type(None))) # for typing
725
- args.append(ForeignKey(foreign_key, ondelete=ondelete))
774
+ assert isinstance(ondelete_value, (str, type(None))) # for typing
775
+ args.append(ForeignKey(foreign_key, ondelete=ondelete_value))
726
776
  kwargs = {
727
777
  "primary_key": primary_key,
728
778
  "nullable": nullable,
@@ -736,13 +786,15 @@ def get_column_from_field(field: Any) -> Column: # type: ignore
736
786
  sa_default = field_info.default
737
787
  if sa_default is not Undefined:
738
788
  kwargs["default"] = sa_default
739
- sa_column_args = getattr(field_info, "sa_column_args", Undefined)
789
+ sa_column_args = _get_sqlmodel_field_value(field_info, "sa_column_args", Undefined)
740
790
  if sa_column_args is not Undefined:
741
791
  args.extend(list(cast(Sequence[Any], sa_column_args)))
742
- sa_column_kwargs = getattr(field_info, "sa_column_kwargs", Undefined)
792
+ sa_column_kwargs = _get_sqlmodel_field_value(
793
+ field_info, "sa_column_kwargs", Undefined
794
+ )
743
795
  if sa_column_kwargs is not Undefined:
744
796
  kwargs.update(cast(dict[Any, Any], sa_column_kwargs))
745
- return Column(sa_type, *args, **kwargs) # type: ignore
797
+ return Column(sa_type, *args, **kwargs)
746
798
 
747
799
 
748
800
  class_registry = weakref.WeakValueDictionary() # type: ignore
@@ -1,6 +1,7 @@
1
1
  from collections.abc import Iterable, Mapping, Sequence
2
2
  from typing import (
3
3
  Any,
4
+ Literal,
4
5
  Optional,
5
6
  TypeVar,
6
7
  Union,
@@ -34,7 +35,6 @@ from sqlalchemy.sql.elements import (
34
35
  UnaryExpression,
35
36
  )
36
37
  from sqlalchemy.sql.type_api import TypeEngine
37
- from typing_extensions import Literal
38
38
 
39
39
  from ._expression_select_cls import Select as Select
40
40
  from ._expression_select_cls import SelectOfScalar as SelectOfScalar
@@ -44,7 +44,7 @@ _T = TypeVar("_T")
44
44
 
45
45
  _TypeEngineArgument = Union[type[TypeEngine[_T]], TypeEngine[_T]]
46
46
 
47
- # Redefine operatos that would only take a column expresion to also take the (virtual)
47
+ # Redefine operators that would only take a column expression to also take the (virtual)
48
48
  # types of Pydantic models, e.g. str instead of only Mapped[str].
49
49
 
50
50
 
@@ -1,4 +1,4 @@
1
- from typing import Optional
1
+ from typing import Annotated, Optional
2
2
 
3
3
  import pytest
4
4
  from sqlalchemy import Column, Integer, String
@@ -17,6 +17,17 @@ def test_sa_column_takes_precedence() -> None:
17
17
  assert isinstance(Item.id.type, String) # type: ignore
18
18
 
19
19
 
20
+ def test_sa_column_with_annotated_metadata() -> None:
21
+ class Item(SQLModel, table=True):
22
+ id: Annotated[Optional[int], "meta"] = Field(
23
+ default=None,
24
+ sa_column=Column(String, primary_key=True, nullable=False),
25
+ )
26
+
27
+ assert Item.id.nullable is False # type: ignore
28
+ assert isinstance(Item.id.type, String) # type: ignore
29
+
30
+
20
31
  def test_sa_column_no_sa_args() -> None:
21
32
  with pytest.raises(RuntimeError):
22
33
 
@@ -0,0 +1,63 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Annotated, Optional
4
+
5
+ from sqlmodel import Field, Session, SQLModel, create_engine, select
6
+
7
+
8
+ def test_model_with_future_annotations(clear_sqlmodel):
9
+ class Hero(SQLModel, table=True):
10
+ id: Annotated[Optional[int], Field(primary_key=True)] = None
11
+ name: str
12
+ secret_name: str
13
+ age: Optional[int] = None
14
+
15
+ hero = Hero(name="Deadpond", secret_name="Dive Wilson", age=25)
16
+
17
+ engine = create_engine("sqlite://")
18
+ SQLModel.metadata.create_all(engine)
19
+
20
+ with Session(engine) as session:
21
+ session.add(hero)
22
+ session.commit()
23
+ session.refresh(hero)
24
+
25
+ assert hero.id is not None
26
+ assert hero.name == "Deadpond"
27
+ assert hero.secret_name == "Dive Wilson"
28
+ assert hero.age == 25
29
+
30
+ with Session(engine) as session:
31
+ heroes = session.exec(select(Hero)).all()
32
+ assert len(heroes) == 1
33
+ assert heroes[0].name == "Deadpond"
34
+
35
+
36
+ def test_model_with_string_annotations(clear_sqlmodel):
37
+ class Team(SQLModel, table=True):
38
+ id: Annotated[Optional[int], Field(primary_key=True)] = None
39
+ name: str
40
+
41
+ class Player(SQLModel, table=True):
42
+ id: Annotated[Optional[int], Field(primary_key=True)] = None
43
+ name: str
44
+ team_id: Annotated[Optional[int], Field(foreign_key="team.id")] = None
45
+
46
+ engine = create_engine("sqlite://")
47
+ SQLModel.metadata.create_all(engine)
48
+
49
+ team = Team(name="Champions")
50
+ player = Player(name="Alice", team_id=None)
51
+
52
+ with Session(engine) as session:
53
+ session.add(team)
54
+ session.commit()
55
+ session.refresh(team)
56
+
57
+ player.team_id = team.id
58
+ session.add(player)
59
+ session.commit()
60
+ session.refresh(player)
61
+
62
+ assert team.id is not None
63
+ assert player.team_id == team.id
@@ -1,4 +1,4 @@
1
- from typing import Optional
1
+ from typing import Annotated, Optional
2
2
 
3
3
  import pytest
4
4
  from sqlalchemy.exc import IntegrityError
@@ -125,3 +125,94 @@ def test_sa_relationship_property(clear_sqlmodel):
125
125
  # The next statement should not raise an AttributeError
126
126
  assert hero_rusty_man.team
127
127
  assert hero_rusty_man.team.name == "Preventers"
128
+
129
+
130
+ def test_composite_primary_key(clear_sqlmodel):
131
+ class UserPermission(SQLModel, table=True):
132
+ user_id: int = Field(primary_key=True)
133
+ resource_id: int = Field(primary_key=True)
134
+ permission: str
135
+
136
+ engine = create_engine("sqlite://")
137
+ SQLModel.metadata.create_all(engine)
138
+
139
+ pk_column_names = {column.name for column in UserPermission.__table__.primary_key}
140
+ assert pk_column_names == {"user_id", "resource_id"}
141
+
142
+ with Session(engine) as session:
143
+ perm1 = UserPermission(user_id=1, resource_id=1, permission="read")
144
+ perm2 = UserPermission(user_id=1, resource_id=2, permission="write")
145
+ session.add(perm1)
146
+ session.add(perm2)
147
+ session.commit()
148
+
149
+ with pytest.raises(IntegrityError):
150
+ with Session(engine) as session:
151
+ perm3 = UserPermission(user_id=1, resource_id=1, permission="admin")
152
+ session.add(perm3)
153
+ session.commit()
154
+
155
+
156
+ def test_composite_primary_key_and_validator(clear_sqlmodel):
157
+ from pydantic import AfterValidator
158
+
159
+ def validate_resource_id(value: int) -> int:
160
+ if value < 1:
161
+ raise ValueError("Resource ID must be positive")
162
+ return value
163
+
164
+ class UserPermission(SQLModel, table=True):
165
+ user_id: int = Field(primary_key=True)
166
+ resource_id: Annotated[int, AfterValidator(validate_resource_id)] = Field(
167
+ primary_key=True
168
+ )
169
+ permission: str
170
+
171
+ engine = create_engine("sqlite://")
172
+ SQLModel.metadata.create_all(engine)
173
+
174
+ pk_column_names = {column.name for column in UserPermission.__table__.primary_key}
175
+ assert pk_column_names == {"user_id", "resource_id"}
176
+
177
+ with Session(engine) as session:
178
+ perm1 = UserPermission(user_id=1, resource_id=1, permission="read")
179
+ perm2 = UserPermission(user_id=1, resource_id=2, permission="write")
180
+ session.add(perm1)
181
+ session.add(perm2)
182
+ session.commit()
183
+
184
+ with pytest.raises(IntegrityError):
185
+ with Session(engine) as session:
186
+ perm3 = UserPermission(user_id=1, resource_id=1, permission="admin")
187
+ session.add(perm3)
188
+ session.commit()
189
+
190
+
191
+ def test_foreign_key_ondelete_with_annotated(clear_sqlmodel):
192
+ from pydantic import AfterValidator
193
+
194
+ def ensure_positive(value: int) -> int:
195
+ if value < 0:
196
+ raise ValueError("Team ID must be positive")
197
+ return value
198
+
199
+ class Team(SQLModel, table=True):
200
+ id: int = Field(primary_key=True)
201
+ name: str
202
+
203
+ class Hero(SQLModel, table=True):
204
+ id: int = Field(primary_key=True)
205
+ team_id: Annotated[int, AfterValidator(ensure_positive)] = Field(
206
+ foreign_key="team.id",
207
+ ondelete="CASCADE",
208
+ )
209
+ name: str
210
+
211
+ engine = create_engine("sqlite://")
212
+ SQLModel.metadata.create_all(engine)
213
+
214
+ team_id_column = Hero.__table__.c.team_id # type: ignore[attr-defined]
215
+ foreign_keys = list(team_id_column.foreign_keys)
216
+ assert len(foreign_keys) == 1
217
+ assert foreign_keys[0].ondelete == "CASCADE"
218
+ assert team_id_column.nullable is False
@@ -1,10 +1,9 @@
1
1
  from decimal import Decimal
2
- from typing import Optional, Union
2
+ from typing import Literal, Optional, Union
3
3
 
4
4
  import pytest
5
5
  from pydantic import ValidationError
6
6
  from sqlmodel import Field, SQLModel
7
- from typing_extensions import Literal
8
7
 
9
8
 
10
9
  def test_decimal():