sqlmodel 0.0.46__tar.gz → 0.0.47__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 (359) hide show
  1. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/PKG-INFO +1 -1
  2. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial003_py310.py +3 -2
  3. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial004_py310.py +3 -2
  4. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial005_py310.py +3 -2
  5. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/pyproject.toml +3 -1
  6. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/__init__.py +1 -1
  7. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/sqltypes.py +1 -1
  8. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/conftest.py +24 -1
  9. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_datetime/test_tutorial001.py +13 -7
  10. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_decimal/test_tutorial001.py +3 -4
  11. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_uuid/test_tutorial001.py +3 -4
  12. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_uuid/test_tutorial002.py +3 -4
  13. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_annotated_uuid.py +4 -3
  14. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_datetime.py +10 -12
  15. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_field_sa_args_kwargs.py +13 -14
  16. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_future_annotations.py +6 -5
  17. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_instance_no_args.py +4 -4
  18. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_main.py +20 -15
  19. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_nullable.py +39 -34
  20. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_query.py +4 -3
  21. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_select_typing.py +4 -6
  22. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_automatic_id_none_refresh/test_tutorial001_tutorial002.py +3 -4
  23. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_code_structure/test_tutorial001.py +3 -4
  24. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_code_structure/test_tutorial002.py +3 -4
  25. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_create_connected_tables/test_tutorial001.py +3 -5
  26. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_delete/test_tutorial001.py +3 -4
  27. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_insert/test_tutorial001.py +3 -4
  28. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_select/test_tutorial001_tutorial002.py +8 -6
  29. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_select/test_tutorial003.py +3 -4
  30. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_select/test_tutorial004.py +3 -4
  31. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_select/test_tutorial005.py +3 -4
  32. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_update/test_tutorial001.py +3 -4
  33. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_create_db_and_table/test_tutorial002.py +3 -5
  34. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_create_db_and_table/test_tutorial003.py +3 -5
  35. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_delete/test_tutorial001_tutorial002.py +3 -4
  36. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py +3 -7
  37. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py +3 -7
  38. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py +9 -27
  39. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py +9 -27
  40. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py +3 -7
  41. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py +3 -7
  42. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_response_model/test_tutorial001.py +3 -7
  43. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py +3 -7
  44. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_simple_hero_api/test_tutorial001.py +3 -7
  45. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py +3 -7
  46. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py +3 -7
  47. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py +4 -7
  48. sqlmodel-0.0.47/tests/test_tutorial/test_indexes/test_tutorial001.py +36 -0
  49. sqlmodel-0.0.47/tests/test_tutorial/test_indexes/test_tutorial002.py +37 -0
  50. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_insert/test_tutorial001.py +4 -4
  51. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_insert/test_tutorial002.py +4 -4
  52. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_insert/test_tutorial003.py +4 -4
  53. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_limit_and_offset/test_tutorial001.py +3 -4
  54. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_limit_and_offset/test_tutorial002.py +3 -4
  55. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_limit_and_offset/test_tutorial003.py +3 -4
  56. sqlmodel-0.0.47/tests/test_tutorial/test_limit_and_offset/test_tutorial004.py +42 -0
  57. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_many_to_many/test_tutorial001.py +7 -6
  58. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_many_to_many/test_tutorial002.py +13 -10
  59. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_many_to_many/test_tutorial003.py +14 -9
  60. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial001.py +3 -4
  61. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial002.py +3 -4
  62. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial003.py +3 -4
  63. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial004.py +10 -6
  64. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial005.py +10 -6
  65. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial006.py +3 -4
  66. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial007.py +3 -4
  67. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial008.py +3 -4
  68. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/test_tutorial009.py +3 -4
  69. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial001.py +3 -4
  70. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial002.py +3 -4
  71. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_back_populates/test_tutorial003.py +3 -5
  72. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships/test_tutorial001.py +3 -4
  73. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes/test_tutorial001.py +3 -4
  74. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial001.py +3 -4
  75. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial002.py +3 -4
  76. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial003.py +3 -4
  77. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial004.py +5 -5
  78. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/test_tutorial005.py +3 -4
  79. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/test_tutorial001.py +3 -4
  80. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/test_tutorial002.py +3 -4
  81. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_select/test_tutorial001_tutorial002.py +3 -4
  82. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_select/test_tutorial003_tutorial004.py +3 -4
  83. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_update/test_tutorial001_tutorial002.py +3 -4
  84. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_update/test_tutorial003_tutorial004.py +3 -4
  85. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial001.py +3 -4
  86. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial002.py +3 -4
  87. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial003.py +3 -4
  88. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial004.py +3 -4
  89. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial005.py +3 -4
  90. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial006.py +3 -4
  91. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial006b.py +3 -4
  92. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial007.py +3 -4
  93. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial008.py +3 -4
  94. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial009.py +3 -4
  95. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/test_tutorial011.py +3 -4
  96. sqlmodel-0.0.46/tests/test_tutorial/test_indexes/test_tutorial001.py +0 -51
  97. sqlmodel-0.0.46/tests/test_tutorial/test_indexes/test_tutorial002.py +0 -52
  98. sqlmodel-0.0.46/tests/test_tutorial/test_limit_and_offset/test_tutorial004.py +0 -32
  99. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/LICENSE +0 -0
  100. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/README.md +0 -0
  101. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/__init__.py +0 -0
  102. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/__init__.py +0 -0
  103. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/__init__.py +0 -0
  104. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/tutorial001_py310.py +0 -0
  105. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/tutorial001_py311.py +0 -0
  106. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/tutorial002_py310.py +0 -0
  107. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/tutorial003_py310.py +0 -0
  108. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/tutorial004_py310.py +0 -0
  109. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/datetime/tutorial005_py310.py +0 -0
  110. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/decimal/__init__.py +0 -0
  111. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/decimal/tutorial001_py310.py +0 -0
  112. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/uuid/__init__.py +0 -0
  113. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/uuid/tutorial001_py310.py +0 -0
  114. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/advanced/uuid/tutorial002_py310.py +0 -0
  115. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/__init__.py +0 -0
  116. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/automatic_id_none_refresh/__init__.py +0 -0
  117. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/automatic_id_none_refresh/annotations/en/tutorial002.md +0 -0
  118. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/automatic_id_none_refresh/tutorial001_py310.py +0 -0
  119. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/automatic_id_none_refresh/tutorial002_py310.py +0 -0
  120. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/__init__.py +0 -0
  121. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial001_py310/__init__.py +0 -0
  122. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial001_py310/app.py +0 -0
  123. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial001_py310/database.py +0 -0
  124. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial001_py310/models.py +0 -0
  125. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial002_py310/__init__.py +0 -0
  126. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial002_py310/app.py +0 -0
  127. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial002_py310/database.py +0 -0
  128. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial002_py310/hero_model.py +0 -0
  129. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/code_structure/tutorial002_py310/team_model.py +0 -0
  130. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/__init__.py +0 -0
  131. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/create_tables/__init__.py +0 -0
  132. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/create_tables/tutorial001_py310.py +0 -0
  133. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/delete/__init__.py +0 -0
  134. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/delete/tutorial001_py310.py +0 -0
  135. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/insert/__init__.py +0 -0
  136. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/insert/tutorial001_py310.py +0 -0
  137. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/select/__init__.py +0 -0
  138. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/select/tutorial001_py310.py +0 -0
  139. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/select/tutorial002_py310.py +0 -0
  140. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/select/tutorial003_py310.py +0 -0
  141. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/select/tutorial004_py310.py +0 -0
  142. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/select/tutorial005_py310.py +0 -0
  143. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/update/__init__.py +0 -0
  144. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/connect/update/tutorial001_py310.py +0 -0
  145. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/create_db_and_table/__init__.py +0 -0
  146. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/create_db_and_table/annotations/en/tutorial003.md +0 -0
  147. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/create_db_and_table/tutorial001_py310.py +0 -0
  148. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/create_db_and_table/tutorial002_py310.py +0 -0
  149. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/create_db_and_table/tutorial003_py310.py +0 -0
  150. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/delete/__init__.py +0 -0
  151. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/delete/annotations/en/tutorial002.md +0 -0
  152. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/delete/tutorial001_py310.py +0 -0
  153. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/delete/tutorial002_py310.py +0 -0
  154. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/__init__.py +0 -0
  155. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/__init__.py +0 -0
  156. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/__init__.py +0 -0
  157. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_001.md +0 -0
  158. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_002.md +0 -0
  159. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_003.md +0 -0
  160. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_004.md +0 -0
  161. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_005.md +0 -0
  162. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/annotations/en/test_main_006.md +0 -0
  163. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py +0 -0
  164. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_extra_coverage.py +0 -0
  165. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main.py +0 -0
  166. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_001.py +0 -0
  167. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_002.py +0 -0
  168. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_003.py +0 -0
  169. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_004.py +0 -0
  170. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_005.py +0 -0
  171. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/test_main_006.py +0 -0
  172. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/delete/__init__.py +0 -0
  173. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/delete/tutorial001_py310.py +0 -0
  174. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/limit_and_offset/__init__.py +0 -0
  175. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py +0 -0
  176. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/multiple_models/__init__.py +0 -0
  177. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py +0 -0
  178. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py +0 -0
  179. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/read_one/__init__.py +0 -0
  180. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py +0 -0
  181. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/relationships/__init__.py +0 -0
  182. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py +0 -0
  183. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/response_model/__init__.py +0 -0
  184. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/response_model/tutorial001_py310.py +0 -0
  185. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/session_with_dependency/__init__.py +0 -0
  186. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py +0 -0
  187. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/simple_hero_api/__init__.py +0 -0
  188. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/simple_hero_api/tutorial001_py310.py +0 -0
  189. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/teams/__init__.py +0 -0
  190. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/teams/tutorial001_py310.py +0 -0
  191. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/update/__init__.py +0 -0
  192. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/update/tutorial001_py310.py +0 -0
  193. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/fastapi/update/tutorial002_py310.py +0 -0
  194. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/indexes/__init__.py +0 -0
  195. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/indexes/tutorial001_py310.py +0 -0
  196. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/indexes/tutorial002_py310.py +0 -0
  197. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/insert/__init__.py +0 -0
  198. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/insert/annotations/en/tutorial003.md +0 -0
  199. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/insert/tutorial001_py310.py +0 -0
  200. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/insert/tutorial002_py310.py +0 -0
  201. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/insert/tutorial003_py310.py +0 -0
  202. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/many_to_many/__init__.py +0 -0
  203. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/many_to_many/tutorial001_py310.py +0 -0
  204. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/many_to_many/tutorial002_py310.py +0 -0
  205. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/many_to_many/tutorial003_py310.py +0 -0
  206. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/offset_and_limit/__init__.py +0 -0
  207. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/offset_and_limit/tutorial001_py310.py +0 -0
  208. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/offset_and_limit/tutorial002_py310.py +0 -0
  209. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/offset_and_limit/tutorial003_py310.py +0 -0
  210. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/offset_and_limit/tutorial004_py310.py +0 -0
  211. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/__init__.py +0 -0
  212. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial001_py310.py +0 -0
  213. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial002_py310.py +0 -0
  214. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial003_py310.py +0 -0
  215. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial004_py310.py +0 -0
  216. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial005_py310.py +0 -0
  217. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial006_py310.py +0 -0
  218. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial007_py310.py +0 -0
  219. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial008_py310.py +0 -0
  220. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/one/tutorial009_py310.py +0 -0
  221. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/__init__.py +0 -0
  222. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/back_populates/__init__.py +0 -0
  223. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/back_populates/tutorial001_py310.py +0 -0
  224. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/back_populates/tutorial002_py310.py +0 -0
  225. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/back_populates/tutorial003_py310.py +0 -0
  226. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/__init__.py +0 -0
  227. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial001_py310.py +0 -0
  228. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/cascade_delete_relationships/tutorial002_py310.py +0 -0
  229. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/create_and_update_relationships/__init__.py +0 -0
  230. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/create_and_update_relationships/tutorial001_py310.py +0 -0
  231. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/define_relationship_attributes/__init__.py +0 -0
  232. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/define_relationship_attributes/tutorial001_py310.py +0 -0
  233. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/read_relationships/__init__.py +0 -0
  234. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial001_py310.py +0 -0
  235. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/relationship_attributes/read_relationships/tutorial002_py310.py +0 -0
  236. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/select/__init__.py +0 -0
  237. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/select/annotations/en/tutorial002.md +0 -0
  238. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/select/tutorial001_py310.py +0 -0
  239. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/select/tutorial002_py310.py +0 -0
  240. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/select/tutorial003_py310.py +0 -0
  241. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/select/tutorial004_py310.py +0 -0
  242. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/__init__.py +0 -0
  243. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/annotations/en/tutorial002.md +0 -0
  244. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/annotations/en/tutorial004.md +0 -0
  245. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/tutorial001_py310.py +0 -0
  246. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/tutorial002_py310.py +0 -0
  247. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/tutorial003_py310.py +0 -0
  248. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/update/tutorial004_py310.py +0 -0
  249. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/__init__.py +0 -0
  250. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial001_py310.py +0 -0
  251. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial002_py310.py +0 -0
  252. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial003_py310.py +0 -0
  253. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial004_py310.py +0 -0
  254. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial005_py310.py +0 -0
  255. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial006_py310.py +0 -0
  256. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial006b_py310.py +0 -0
  257. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial007_py310.py +0 -0
  258. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial008_py310.py +0 -0
  259. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial009_py310.py +0 -0
  260. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/docs_src/tutorial/where/tutorial011_py310.py +0 -0
  261. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/add_latest_release_date.py +0 -0
  262. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/deploy_docs_status.py +0 -0
  263. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/docs.py +0 -0
  264. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/format.sh +0 -0
  265. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/generate_select.py +0 -0
  266. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/lint.sh +0 -0
  267. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/prepare_release.py +0 -0
  268. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/scripts/test.sh +0 -0
  269. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/.agents/skills/sqlmodel/SKILL.md +0 -0
  270. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/_compat.py +0 -0
  271. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/default.py +0 -0
  272. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/ext/__init__.py +0 -0
  273. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/ext/asyncio/__init__.py +0 -0
  274. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/ext/asyncio/session.py +0 -0
  275. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/main.py +0 -0
  276. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/orm/__init__.py +0 -0
  277. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/orm/session.py +0 -0
  278. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/pool/__init__.py +0 -0
  279. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/py.typed +0 -0
  280. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/__init__.py +0 -0
  281. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/_expression_select_cls.py +0 -0
  282. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/_expression_select_gen.py +0 -0
  283. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/_expression_select_gen.py.jinja2 +0 -0
  284. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/base.py +0 -0
  285. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/sqlmodel/sql/expression.py +0 -0
  286. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/__init__.py +0 -0
  287. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/__init__.py +0 -0
  288. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_datetime/__init__.py +0 -0
  289. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_datetime/test_tutorial002.py +0 -0
  290. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_datetime/test_tutorial003.py +0 -0
  291. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_datetime/test_tutorial004.py +0 -0
  292. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_datetime/test_tutorial005.py +0 -0
  293. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_decimal/__init__.py +0 -0
  294. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_advanced/test_uuid/__init__.py +0 -0
  295. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_aliases.py +0 -0
  296. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_dataclass_transform.py +0 -0
  297. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_default.py +0 -0
  298. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_deprecations.py +0 -0
  299. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_enums.py +0 -0
  300. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_enums_models.py +0 -0
  301. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_field_sa_column.py +0 -0
  302. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_field_sa_relationship.py +0 -0
  303. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_field_sa_type.py +0 -0
  304. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_fields_set.py +0 -0
  305. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_missing_type.py +0 -0
  306. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_ondelete_raises.py +0 -0
  307. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_prepare_release.py +0 -0
  308. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_pydantic/__init__.py +0 -0
  309. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_pydantic/test_field.py +0 -0
  310. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_pydantic/test_model_dump.py +0 -0
  311. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_select_gen.py +0 -0
  312. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_sqlalchemy_type_errors.py +0 -0
  313. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/__init__.py +0 -0
  314. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_automatic_id_none_refresh/__init__.py +0 -0
  315. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_code_structure/__init__.py +0 -0
  316. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/__init__.py +0 -0
  317. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_create_connected_tables/__init__.py +0 -0
  318. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_delete/__init__.py +0 -0
  319. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_insert/__init__.py +0 -0
  320. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_select/__init__.py +0 -0
  321. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_connect/test_update/__init__.py +0 -0
  322. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_create_db_and_table/__init__.py +0 -0
  323. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_create_db_and_table/test_tutorial001.py +0 -0
  324. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_delete/__init__.py +0 -0
  325. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/__init__.py +0 -0
  326. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/__init__.py +0 -0
  327. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests001.py +0 -0
  328. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests002.py +0 -0
  329. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests003.py +0 -0
  330. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests004.py +0 -0
  331. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests005.py +0 -0
  332. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests006.py +0 -0
  333. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_app_testing/test_tutorial001_tests_main.py +0 -0
  334. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_delete/__init__.py +0 -0
  335. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_limit_and_offset/__init__.py +0 -0
  336. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_multiple_models/__init__.py +0 -0
  337. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_read_one/__init__.py +0 -0
  338. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_relationships/__init__.py +0 -0
  339. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_response_model/__init__.py +0 -0
  340. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_session_with_dependency/__init__.py +0 -0
  341. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_simple_hero_api/__init__.py +0 -0
  342. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_teams/__init__.py +0 -0
  343. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_fastapi/test_update/__init__.py +0 -0
  344. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_indexes/__init__.py +0 -0
  345. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_insert/__init__.py +0 -0
  346. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_limit_and_offset/__init__.py +0 -0
  347. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_many_to_many/__init__.py +0 -0
  348. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_one/__init__.py +0 -0
  349. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/__init__.py +0 -0
  350. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_back_populates/__init__.py +0 -0
  351. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_create_and_update_relationships/__init__.py +0 -0
  352. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_define_relationship_attributes/__init__.py +0 -0
  353. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_delete_records_relationship/__init__.py +0 -0
  354. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_relationship_attributes/test_read_relationships/__init__.py +0 -0
  355. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_select/__init__.py +0 -0
  356. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_update/__init__.py +0 -0
  357. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_tutorial/test_where/__init__.py +0 -0
  358. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_update.py +0 -0
  359. {sqlmodel-0.0.46 → sqlmodel-0.0.47}/tests/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmodel
3
- Version: 0.0.46
3
+ Version: 0.0.47
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
@@ -29,8 +29,9 @@ engine = create_engine(sqlite_url, echo=True)
29
29
 
30
30
  def create_db_and_tables():
31
31
  SQLModel.metadata.create_all(engine)
32
- with engine.connect() as connection:
33
- connection.execute(text("PRAGMA foreign_keys=ON")) # for SQLite only
32
+ if engine.dialect.name == "sqlite":
33
+ with engine.connect() as connection:
34
+ connection.execute(text("PRAGMA foreign_keys=ON"))
34
35
 
35
36
 
36
37
  def create_heroes():
@@ -29,8 +29,9 @@ engine = create_engine(sqlite_url, echo=True)
29
29
 
30
30
  def create_db_and_tables():
31
31
  SQLModel.metadata.create_all(engine)
32
- with engine.connect() as connection:
33
- connection.execute(text("PRAGMA foreign_keys=ON")) # for SQLite only
32
+ if engine.dialect.name == "sqlite":
33
+ with engine.connect() as connection:
34
+ connection.execute(text("PRAGMA foreign_keys=ON"))
34
35
 
35
36
 
36
37
  def create_heroes():
@@ -29,8 +29,9 @@ engine = create_engine(sqlite_url, echo=True)
29
29
 
30
30
  def create_db_and_tables():
31
31
  SQLModel.metadata.create_all(engine)
32
- with engine.connect() as connection:
33
- connection.execute(text("PRAGMA foreign_keys=ON")) # for SQLite only
32
+ if engine.dialect.name == "sqlite":
33
+ with engine.connect() as connection:
34
+ connection.execute(text("PRAGMA foreign_keys=ON"))
34
35
 
35
36
 
36
37
  def create_heroes():
@@ -41,7 +41,7 @@ dependencies = [
41
41
  "pydantic>=2.11.0",
42
42
  "typing-extensions>=4.5.0",
43
43
  ]
44
- version = "0.0.46"
44
+ version = "0.0.47"
45
45
 
46
46
  [project.urls]
47
47
  Homepage = "https://github.com/fastapi/sqlmodel"
@@ -85,6 +85,8 @@ tests = [
85
85
  "fastapi >=0.128.0",
86
86
  "httpx >=0.28.1",
87
87
  "jinja2 >=3.1.6",
88
+ "psycopg[binary] >=3.2.10",
89
+ "pymysql[rsa] >=1.1.1",
88
90
  "pytest >=7.0.1",
89
91
  "ruff >=0.15.6",
90
92
  "ty>=0.0.25",
@@ -1,4 +1,4 @@
1
- __version__ = "0.0.46"
1
+ __version__ = "0.0.47"
2
2
 
3
3
  # Re-export from Pydantic
4
4
  from pydantic import Discriminator as Discriminator
@@ -56,6 +56,6 @@ class AutoString(types.TypeDecorator):
56
56
 
57
57
  def load_dialect_impl(self, dialect: Dialect) -> "types.TypeEngine[Any]":
58
58
  impl = cast(types.String, self.impl)
59
- if impl.length is None and dialect.name == "mysql":
59
+ if impl.length is None and dialect.name in {"mysql", "mariadb"}:
60
60
  return dialect.type_descriptor(types.String(self.mysql_default_length))
61
61
  return super().load_dialect_impl(dialect)
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import shutil
2
3
  import subprocess
3
4
  import sys
@@ -9,7 +10,10 @@ from unittest.mock import patch
9
10
 
10
11
  import pytest
11
12
  from pydantic import BaseModel
12
- from sqlmodel import SQLModel
13
+ from sqlalchemy import Engine
14
+ from sqlalchemy.engine import make_url
15
+ from sqlalchemy.pool import StaticPool
16
+ from sqlmodel import SQLModel, create_engine
13
17
  from sqlmodel.main import default_registry
14
18
 
15
19
  top_level_path = Path(__file__).resolve().parent.parent
@@ -27,6 +31,25 @@ def clear_sqlmodel() -> Any:
27
31
  default_registry.dispose()
28
32
 
29
33
 
34
+ @pytest.fixture()
35
+ def database_engine(clear_sqlmodel: Any) -> Generator[Engine, None, None]:
36
+ url = make_url(os.environ.get("DATABASE_URL", "sqlite://"))
37
+ if url.get_backend_name() == "sqlite":
38
+ engine = create_engine(
39
+ url, connect_args={"check_same_thread": False}, poolclass=StaticPool
40
+ )
41
+ else:
42
+ engine = create_engine(url)
43
+ try:
44
+ yield engine
45
+ finally:
46
+ # Drop tables before clear_sqlmodel removes their metadata.
47
+ try:
48
+ SQLModel.metadata.drop_all(engine)
49
+ finally:
50
+ engine.dispose()
51
+
52
+
30
53
  @pytest.fixture()
31
54
  def cov_tmp_path(tmp_path: Path) -> Generator[Path, None, None]:
32
55
  yield tmp_path
@@ -1,9 +1,10 @@
1
1
  import importlib
2
- from datetime import datetime, timezone
2
+ from datetime import datetime, timedelta, timezone
3
3
  from types import ModuleType
4
4
 
5
5
  import pytest
6
- from sqlmodel import SQLModel, create_engine
6
+ from sqlalchemy import Engine
7
+ from sqlmodel import SQLModel
7
8
 
8
9
  from ...conftest import PrintMock, needs_py311
9
10
 
@@ -15,10 +16,9 @@ from ...conftest import PrintMock, needs_py311
15
16
  pytest.param("tutorial001_py311", marks=needs_py311),
16
17
  ],
17
18
  )
18
- def get_module(request: pytest.FixtureRequest) -> ModuleType:
19
+ def get_module(request: pytest.FixtureRequest, database_engine: Engine) -> ModuleType:
19
20
  mod = importlib.import_module(f"docs_src.advanced.datetime.{request.param}")
20
- mod.sqlite_url = "sqlite://"
21
- mod.engine = create_engine(mod.sqlite_url)
21
+ mod.engine = database_engine
22
22
  return mod
23
23
 
24
24
 
@@ -30,11 +30,17 @@ def test_tutorial(print_mock: PrintMock, mod: ModuleType) -> None:
30
30
  created_at = print_mock.calls[0][1]["created_at"]
31
31
  assert created_at.tzinfo is timezone.utc
32
32
  assert before <= created_at <= after
33
+ stored_created_at = print_mock.calls[1][1]["created_at"]
34
+ assert stored_created_at.tzinfo is timezone.utc
35
+ if mod.engine.dialect.name in {"mysql", "mariadb"}:
36
+ # The default DATETIME columns store whole seconds.
37
+ assert abs(stored_created_at - created_at) < timedelta(seconds=1)
38
+ else:
39
+ assert stored_created_at == created_at
33
40
  assert print_mock.calls == [
34
41
  ["Event:", {"id": None, "created_at": created_at}],
35
- ["Event from database:", {"id": 1, "created_at": created_at}],
42
+ ["Event from database:", {"id": 1, "created_at": stored_created_at}],
36
43
  ]
37
- assert print_mock.calls[1][1]["created_at"].tzinfo is timezone.utc
38
44
 
39
45
  table = SQLModel.metadata.tables["event"]
40
46
  assert table.c.created_at.type.timezone is True
@@ -3,7 +3,7 @@ from decimal import Decimal
3
3
  from types import ModuleType
4
4
 
5
5
  import pytest
6
- from sqlmodel import create_engine
6
+ from sqlalchemy import Engine
7
7
 
8
8
  from ...conftest import PrintMock
9
9
 
@@ -14,10 +14,9 @@ from ...conftest import PrintMock
14
14
  pytest.param("tutorial001_py310"),
15
15
  ],
16
16
  )
17
- def get_module(request: pytest.FixtureRequest) -> ModuleType:
17
+ def get_module(request: pytest.FixtureRequest, database_engine: Engine) -> ModuleType:
18
18
  mod = importlib.import_module(f"docs_src.advanced.decimal.{request.param}")
19
- mod.sqlite_url = "sqlite://"
20
- mod.engine = create_engine(mod.sqlite_url)
19
+ mod.engine = database_engine
21
20
  return mod
22
21
 
23
22
 
@@ -3,7 +3,7 @@ from types import ModuleType
3
3
 
4
4
  import pytest
5
5
  from dirty_equals import IsUUID
6
- from sqlmodel import create_engine
6
+ from sqlalchemy import Engine
7
7
 
8
8
  from ...conftest import PrintMock
9
9
 
@@ -14,10 +14,9 @@ from ...conftest import PrintMock
14
14
  pytest.param("tutorial001_py310"),
15
15
  ],
16
16
  )
17
- def get_module(request: pytest.FixtureRequest) -> ModuleType:
17
+ def get_module(request: pytest.FixtureRequest, database_engine: Engine) -> ModuleType:
18
18
  mod = importlib.import_module(f"docs_src.advanced.uuid.{request.param}")
19
- mod.sqlite_url = "sqlite://"
20
- mod.engine = create_engine(mod.sqlite_url)
19
+ mod.engine = database_engine
21
20
  return mod
22
21
 
23
22
 
@@ -3,7 +3,7 @@ from types import ModuleType
3
3
 
4
4
  import pytest
5
5
  from dirty_equals import IsUUID
6
- from sqlmodel import create_engine
6
+ from sqlalchemy import Engine
7
7
 
8
8
  from ...conftest import PrintMock
9
9
 
@@ -14,10 +14,9 @@ from ...conftest import PrintMock
14
14
  pytest.param("tutorial002_py310"),
15
15
  ],
16
16
  )
17
- def get_module(request: pytest.FixtureRequest) -> ModuleType:
17
+ def get_module(request: pytest.FixtureRequest, database_engine: Engine) -> ModuleType:
18
18
  mod = importlib.import_module(f"docs_src.advanced.uuid.{request.param}")
19
- mod.sqlite_url = "sqlite://"
20
- mod.engine = create_engine(mod.sqlite_url)
19
+ mod.engine = database_engine
21
20
  return mod
22
21
 
23
22
 
@@ -1,16 +1,17 @@
1
1
  import uuid
2
2
 
3
- from sqlmodel import Field, Session, SQLModel, create_engine, select
3
+ from sqlalchemy import Engine
4
+ from sqlmodel import Field, Session, SQLModel, select
4
5
 
5
6
 
6
- def test_annotated_optional_types(clear_sqlmodel) -> None:
7
+ def test_annotated_optional_types(database_engine: Engine) -> None:
7
8
  from pydantic import UUID4
8
9
 
9
10
  class Hero(SQLModel, table=True):
10
11
  # Pydantic UUID4 is: Annotated[UUID, UuidVersion(4)]
11
12
  id: UUID4 | None = Field(default_factory=uuid.uuid4, primary_key=True)
12
13
 
13
- engine = create_engine("sqlite:///:memory:")
14
+ engine = database_engine
14
15
  SQLModel.metadata.create_all(engine)
15
16
  with Session(engine) as db:
16
17
  hero = Hero()
@@ -9,7 +9,7 @@ from alembic.autogenerate import compare_metadata, render_python_code
9
9
  from alembic.migration import MigrationContext
10
10
  from alembic.operations import Operations, ops
11
11
  from pydantic import AwareDatetime, NaiveDatetime, ValidationError
12
- from sqlalchemy import Column, Date, DateTime, Interval, Time
12
+ from sqlalchemy import Column, Date, DateTime, Engine, Interval, Time
13
13
  from sqlalchemy.dialects import mysql, postgresql, sqlite
14
14
  from sqlalchemy.exc import StatementError
15
15
  from sqlalchemy.schema import CreateTable
@@ -147,7 +147,7 @@ def test_datetime_column_types(dialect: Any, aware_type: str, naive_type: str) -
147
147
  assert f"local_time {naive_type} NOT NULL" in ddl
148
148
 
149
149
 
150
- def test_sqlite_datetime_round_trip() -> None:
150
+ def test_datetime_round_trip(database_engine: Engine) -> None:
151
151
  class Event(SQLModel, table=True):
152
152
  id: int | None = Field(default=None, primary_key=True)
153
153
  occurred_at: datetime
@@ -156,7 +156,7 @@ def test_sqlite_datetime_round_trip() -> None:
156
156
 
157
157
  aware = datetime(2026, 1, 1, 12, tzinfo=timezone(timedelta(hours=2)))
158
158
  naive = datetime(2026, 1, 1, 12)
159
- engine = create_engine("sqlite://")
159
+ engine = database_engine
160
160
  SQLModel.metadata.create_all(engine)
161
161
  with Session(engine) as session:
162
162
  event = Event(occurred_at=aware, local_time=naive)
@@ -164,12 +164,6 @@ def test_sqlite_datetime_round_trip() -> None:
164
164
  session.flush()
165
165
  # Binding doesn't change the original value on the model.
166
166
  assert event.occurred_at is aware
167
- assert (
168
- session.connection()
169
- .exec_driver_sql("SELECT occurred_at FROM event")
170
- .scalar_one()
171
- == "2026-01-01 10:00:00.000000"
172
- )
173
167
  session.commit()
174
168
  session.refresh(event)
175
169
  assert event.occurred_at == aware
@@ -203,7 +197,9 @@ class UndefinedOffset(tzinfo):
203
197
 
204
198
  @pytest.mark.parametrize("offset", [None, UndefinedOffset()])
205
199
  @pytest.mark.parametrize("operation", ["insert", "update", "filter"])
206
- def test_naive_database_parameters(offset: tzinfo | None, operation: str) -> None:
200
+ def test_naive_database_parameters(
201
+ database_engine: Engine, offset: tzinfo | None, operation: str
202
+ ) -> None:
207
203
  class Event(SQLModel, table=True):
208
204
  id: int | None = Field(default=None, primary_key=True)
209
205
  occurred_at: datetime
@@ -213,7 +209,7 @@ def test_naive_database_parameters(offset: tzinfo | None, operation: str) -> Non
213
209
  # Plain datetime validation remains permissive, including a tzinfo object
214
210
  # that doesn't actually provide an offset.
215
211
  assert event.occurred_at is naive
216
- engine = create_engine("sqlite://")
212
+ engine = database_engine
217
213
  SQLModel.metadata.create_all(engine)
218
214
  with Session(engine) as session:
219
215
  with pytest.raises(StatementError, match="timezone information") as exc_info:
@@ -229,7 +225,9 @@ def test_naive_database_parameters(offset: tzinfo | None, operation: str) -> Non
229
225
 
230
226
 
231
227
  @pytest.mark.parametrize("timezone_enabled", [False, True])
232
- def test_explicit_datetime_bypasses_utc_processing(timezone_enabled: bool) -> None:
228
+ def test_sqlite_explicit_datetime_bypasses_utc_processing(
229
+ timezone_enabled: bool,
230
+ ) -> None:
233
231
  class Event(SQLModel, table=True):
234
232
  id: int | None = Field(default=None, primary_key=True)
235
233
  occurred_at: datetime = Field(sa_type=DateTime(timezone=timezone_enabled))
@@ -1,11 +1,11 @@
1
1
  from typing import Any
2
2
 
3
3
  import pytest
4
- from sqlalchemy import ForeignKey, Integer, String
5
- from sqlmodel import Field, SQLModel, create_engine
4
+ from sqlalchemy import Engine, ForeignKey, Integer, String, inspect
5
+ from sqlmodel import Field, SQLModel
6
6
 
7
7
 
8
- def test_sa_column_args(clear_sqlmodel, caplog) -> None:
8
+ def test_sa_column_args(database_engine: Engine) -> None:
9
9
  class Team(SQLModel, table=True):
10
10
  id: int | None = Field(default=None, primary_key=True)
11
11
  name: str
@@ -17,27 +17,26 @@ def test_sa_column_args(clear_sqlmodel, caplog) -> None:
17
17
  sa_column_args=[ForeignKey("team.id")],
18
18
  )
19
19
 
20
- engine = create_engine("sqlite://", echo=True)
20
+ engine = database_engine
21
21
  SQLModel.metadata.create_all(engine)
22
- create_table_log = [
23
- message for message in caplog.messages if "CREATE TABLE hero" in message
24
- ][0]
25
- assert "FOREIGN KEY(team_id) REFERENCES team (id)" in create_table_log
22
+ foreign_keys = inspect(engine).get_foreign_keys("hero")
23
+ assert len(foreign_keys) == 1
24
+ assert foreign_keys[0]["constrained_columns"] == ["team_id"]
25
+ assert foreign_keys[0]["referred_table"] == "team"
26
+ assert foreign_keys[0]["referred_columns"] == ["id"]
26
27
 
27
28
 
28
- def test_sa_column_kargs(clear_sqlmodel, caplog) -> None:
29
+ def test_sa_column_kargs(database_engine: Engine) -> None:
29
30
  class Item(SQLModel, table=True):
30
31
  id: int | None = Field(
31
32
  default=None,
32
33
  sa_column_kwargs={"primary_key": True},
33
34
  )
34
35
 
35
- engine = create_engine("sqlite://", echo=True)
36
+ engine = database_engine
36
37
  SQLModel.metadata.create_all(engine)
37
- create_table_log = [
38
- message for message in caplog.messages if "CREATE TABLE item" in message
39
- ][0]
40
- assert "PRIMARY KEY (id)" in create_table_log
38
+ primary_key = inspect(engine).get_pk_constraint("item")
39
+ assert primary_key["constrained_columns"] == ["id"]
41
40
 
42
41
 
43
42
  @pytest.mark.parametrize(
@@ -2,10 +2,11 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Annotated
4
4
 
5
- from sqlmodel import Field, Session, SQLModel, create_engine, select
5
+ from sqlalchemy import Engine
6
+ from sqlmodel import Field, Session, SQLModel, select
6
7
 
7
8
 
8
- def test_model_with_future_annotations(clear_sqlmodel):
9
+ def test_model_with_future_annotations(database_engine: Engine):
9
10
  class Hero(SQLModel, table=True):
10
11
  id: Annotated[int | None, Field(primary_key=True)] = None
11
12
  name: str
@@ -14,7 +15,7 @@ def test_model_with_future_annotations(clear_sqlmodel):
14
15
 
15
16
  hero = Hero(name="Deadpond", secret_name="Dive Wilson", age=25)
16
17
 
17
- engine = create_engine("sqlite://")
18
+ engine = database_engine
18
19
  SQLModel.metadata.create_all(engine)
19
20
 
20
21
  with Session(engine) as session:
@@ -33,7 +34,7 @@ def test_model_with_future_annotations(clear_sqlmodel):
33
34
  assert heroes[0].name == "Deadpond"
34
35
 
35
36
 
36
- def test_model_with_string_annotations(clear_sqlmodel):
37
+ def test_model_with_string_annotations(database_engine: Engine):
37
38
  class Team(SQLModel, table=True):
38
39
  id: Annotated[int | None, Field(primary_key=True)] = None
39
40
  name: str
@@ -43,7 +44,7 @@ def test_model_with_string_annotations(clear_sqlmodel):
43
44
  name: str
44
45
  team_id: Annotated[int | None, Field(foreign_key="team.id")] = None
45
46
 
46
- engine = create_engine("sqlite://")
47
+ engine = database_engine
47
48
  SQLModel.metadata.create_all(engine)
48
49
 
49
50
  team = Team(name="Champions")
@@ -1,15 +1,16 @@
1
1
  import pytest
2
2
  from pydantic import ValidationError
3
- from sqlmodel import Field, Session, SQLModel, create_engine, select
3
+ from sqlalchemy import Engine
4
+ from sqlmodel import Field, Session, SQLModel, select
4
5
 
5
6
 
6
- def test_allow_instantiation_without_arguments(clear_sqlmodel):
7
+ def test_allow_instantiation_without_arguments(database_engine: Engine):
7
8
  class Item(SQLModel, table=True):
8
9
  id: int | None = Field(default=None, primary_key=True)
9
10
  name: str
10
11
  description: str | None = None
11
12
 
12
- engine = create_engine("sqlite:///:memory:")
13
+ engine = database_engine
13
14
  SQLModel.metadata.create_all(engine)
14
15
  with Session(engine) as db:
15
16
  item = Item()
@@ -20,7 +21,6 @@ def test_allow_instantiation_without_arguments(clear_sqlmodel):
20
21
  result = db.exec(statement).all()
21
22
  assert len(result) == 1
22
23
  assert isinstance(item.id, int)
23
- SQLModel.metadata.clear()
24
24
 
25
25
 
26
26
  def test_not_allow_instantiation_without_arguments_if_not_table():
@@ -1,12 +1,15 @@
1
1
  from typing import Annotated
2
2
 
3
3
  import pytest
4
+ from sqlalchemy import Engine
4
5
  from sqlalchemy.exc import IntegrityError
5
6
  from sqlalchemy.orm import RelationshipProperty
6
- from sqlmodel import Field, Relationship, Session, SQLModel, create_engine, select
7
+ from sqlmodel import Field, Relationship, Session, SQLModel, select
7
8
 
8
9
 
9
- def test_should_allow_duplicate_row_if_unique_constraint_is_not_passed(clear_sqlmodel):
10
+ def test_should_allow_duplicate_row_if_unique_constraint_is_not_passed(
11
+ database_engine: Engine,
12
+ ):
10
13
  class Hero(SQLModel, table=True):
11
14
  id: int | None = Field(default=None, primary_key=True)
12
15
  name: str
@@ -16,7 +19,7 @@ def test_should_allow_duplicate_row_if_unique_constraint_is_not_passed(clear_sql
16
19
  hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
17
20
  hero_2 = Hero(name="Deadpond", secret_name="Dive Wilson")
18
21
 
19
- engine = create_engine("sqlite://")
22
+ engine = database_engine
20
23
 
21
24
  SQLModel.metadata.create_all(engine)
22
25
 
@@ -36,7 +39,9 @@ def test_should_allow_duplicate_row_if_unique_constraint_is_not_passed(clear_sql
36
39
  assert heroes[0].name == heroes[1].name
37
40
 
38
41
 
39
- def test_should_allow_duplicate_row_if_unique_constraint_is_false(clear_sqlmodel):
42
+ def test_should_allow_duplicate_row_if_unique_constraint_is_false(
43
+ database_engine: Engine,
44
+ ):
40
45
  class Hero(SQLModel, table=True):
41
46
  id: int | None = Field(default=None, primary_key=True)
42
47
  name: str
@@ -46,7 +51,7 @@ def test_should_allow_duplicate_row_if_unique_constraint_is_false(clear_sqlmodel
46
51
  hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
47
52
  hero_2 = Hero(name="Deadpond", secret_name="Dive Wilson")
48
53
 
49
- engine = create_engine("sqlite://")
54
+ engine = database_engine
50
55
 
51
56
  SQLModel.metadata.create_all(engine)
52
57
 
@@ -67,7 +72,7 @@ def test_should_allow_duplicate_row_if_unique_constraint_is_false(clear_sqlmodel
67
72
 
68
73
 
69
74
  def test_should_raise_exception_when_try_to_duplicate_row_if_unique_constraint_is_true(
70
- clear_sqlmodel,
75
+ database_engine: Engine,
71
76
  ):
72
77
  class Hero(SQLModel, table=True):
73
78
  id: int | None = Field(default=None, primary_key=True)
@@ -78,7 +83,7 @@ def test_should_raise_exception_when_try_to_duplicate_row_if_unique_constraint_i
78
83
  hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
79
84
  hero_2 = Hero(name="Deadpond", secret_name="Dive Wilson")
80
85
 
81
- engine = create_engine("sqlite://")
86
+ engine = database_engine
82
87
 
83
88
  SQLModel.metadata.create_all(engine)
84
89
 
@@ -93,7 +98,7 @@ def test_should_raise_exception_when_try_to_duplicate_row_if_unique_constraint_i
93
98
  session.commit()
94
99
 
95
100
 
96
- def test_sa_relationship_property(clear_sqlmodel):
101
+ def test_sa_relationship_property(database_engine: Engine):
97
102
  """Test https://github.com/tiangolo/sqlmodel/issues/315#issuecomment-1272122306"""
98
103
 
99
104
  class Team(SQLModel, table=True):
@@ -114,7 +119,7 @@ def test_sa_relationship_property(clear_sqlmodel):
114
119
  team_preventers = Team(name="Preventers")
115
120
  hero_rusty_man = Hero(name="Rusty-Man", team=team_preventers)
116
121
 
117
- engine = create_engine("sqlite://", echo=True)
122
+ engine = database_engine
118
123
 
119
124
  SQLModel.metadata.create_all(engine)
120
125
 
@@ -127,13 +132,13 @@ def test_sa_relationship_property(clear_sqlmodel):
127
132
  assert hero_rusty_man.team.name == "Preventers"
128
133
 
129
134
 
130
- def test_composite_primary_key(clear_sqlmodel):
135
+ def test_composite_primary_key(database_engine: Engine):
131
136
  class UserPermission(SQLModel, table=True):
132
137
  user_id: int = Field(primary_key=True)
133
138
  resource_id: int = Field(primary_key=True)
134
139
  permission: str
135
140
 
136
- engine = create_engine("sqlite://")
141
+ engine = database_engine
137
142
  SQLModel.metadata.create_all(engine)
138
143
 
139
144
  pk_column_names = {column.name for column in UserPermission.__table__.primary_key}
@@ -153,7 +158,7 @@ def test_composite_primary_key(clear_sqlmodel):
153
158
  session.commit()
154
159
 
155
160
 
156
- def test_composite_primary_key_and_validator(clear_sqlmodel):
161
+ def test_composite_primary_key_and_validator(database_engine: Engine):
157
162
  from pydantic import AfterValidator
158
163
 
159
164
  def validate_resource_id(value: int) -> int:
@@ -168,7 +173,7 @@ def test_composite_primary_key_and_validator(clear_sqlmodel):
168
173
  )
169
174
  permission: str
170
175
 
171
- engine = create_engine("sqlite://")
176
+ engine = database_engine
172
177
  SQLModel.metadata.create_all(engine)
173
178
 
174
179
  pk_column_names = {column.name for column in UserPermission.__table__.primary_key}
@@ -188,7 +193,7 @@ def test_composite_primary_key_and_validator(clear_sqlmodel):
188
193
  session.commit()
189
194
 
190
195
 
191
- def test_foreign_key_ondelete_with_annotated(clear_sqlmodel):
196
+ def test_foreign_key_ondelete_with_annotated(database_engine: Engine):
192
197
  from pydantic import AfterValidator
193
198
 
194
199
  def ensure_positive(value: int) -> int:
@@ -208,7 +213,7 @@ def test_foreign_key_ondelete_with_annotated(clear_sqlmodel):
208
213
  )
209
214
  name: str
210
215
 
211
- engine = create_engine("sqlite://")
216
+ engine = database_engine
212
217
  SQLModel.metadata.create_all(engine)
213
218
 
214
219
  team_id_column = Hero.__table__.c.team_id # type: ignore[attr-defined]