SQLAlchemy-Utils 0.41.1__tar.gz → 0.42.0__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 (220) hide show
  1. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/CHANGES.rst +26 -8
  2. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/MANIFEST.in +1 -1
  3. sqlalchemy_utils-0.42.0/PKG-INFO +109 -0
  4. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/README.rst +4 -4
  5. sqlalchemy_utils-0.42.0/SQLAlchemy_Utils.egg-info/PKG-INFO +109 -0
  6. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/SQLAlchemy_Utils.egg-info/SOURCES.txt +2 -8
  7. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/SQLAlchemy_Utils.egg-info/requires.txt +19 -28
  8. sqlalchemy_utils-0.42.0/docs/conf.py +47 -0
  9. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/data_types.rst +12 -2
  10. sqlalchemy_utils-0.42.0/docs/database_helpers.rst +50 -0
  11. sqlalchemy_utils-0.42.0/docs/foreign_key_helpers.rst +32 -0
  12. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/installation.rst +6 -8
  13. sqlalchemy_utils-0.42.0/docs/models.rst +14 -0
  14. sqlalchemy_utils-0.42.0/docs/orm_helpers.rst +110 -0
  15. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/range_data_types.rst +0 -2
  16. sqlalchemy_utils-0.42.0/docs/view.rst +20 -0
  17. sqlalchemy_utils-0.42.0/pyproject.toml +116 -0
  18. sqlalchemy_utils-0.42.0/setup.cfg +4 -0
  19. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/__init__.py +6 -6
  20. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/aggregates.py +18 -55
  21. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/asserts.py +4 -6
  22. sqlalchemy_utils-0.42.0/sqlalchemy_utils/compat.py +12 -0
  23. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/expressions.py +5 -11
  24. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/__init__.py +3 -3
  25. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/database.py +57 -74
  26. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/foreign_keys.py +11 -28
  27. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/mock.py +3 -8
  28. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/orm.py +14 -34
  29. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/sort_query.py +1 -3
  30. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/generic.py +35 -20
  31. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/i18n.py +6 -5
  32. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/listeners.py +8 -26
  33. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/models.py +15 -8
  34. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/observer.py +22 -43
  35. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/operators.py +4 -9
  36. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/path.py +7 -24
  37. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/primitives/country.py +3 -5
  38. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/primitives/currency.py +2 -4
  39. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/primitives/ltree.py +10 -17
  40. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/primitives/weekday.py +3 -12
  41. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/primitives/weekdays.py +2 -7
  42. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/proxy_dict.py +1 -3
  43. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/query_chain.py +3 -1
  44. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/relationships/__init__.py +13 -35
  45. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/relationships/chained_join.py +4 -14
  46. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/__init__.py +5 -4
  47. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/arrow.py +4 -9
  48. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/bit.py +1 -0
  49. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/choice.py +4 -18
  50. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/color.py +2 -0
  51. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/country.py +2 -1
  52. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/currency.py +1 -0
  53. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/email.py +1 -0
  54. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/encrypted/encrypted_type.py +36 -47
  55. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/encrypted/padding.py +13 -9
  56. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/enriched_datetime/arrow_datetime.py +1 -2
  57. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/enriched_datetime/enriched_date_type.py +1 -0
  58. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/enriched_datetime/enriched_datetime_type.py +1 -0
  59. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/enriched_datetime/pendulum_datetime.py +7 -13
  60. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/json.py +4 -0
  61. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/locale.py +1 -3
  62. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/ltree.py +6 -0
  63. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/password.py +4 -17
  64. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/pg_composite.py +23 -57
  65. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/phone_number.py +5 -5
  66. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/range.py +22 -26
  67. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/scalar_list.py +5 -9
  68. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/timezone.py +6 -18
  69. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/ts_vector.py +2 -3
  70. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/uuid.py +5 -10
  71. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/utils.py +2 -4
  72. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/view.py +29 -44
  73. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_m2m.py +1 -0
  74. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0/tests}/conftest.py +24 -39
  75. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_cast_if.py +2 -7
  76. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_type.py +1 -2
  77. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_json_sql.py +2 -3
  78. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_jsonb_sql.py +2 -3
  79. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_make_order_by_deterministic.py +1 -2
  80. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_render.py +1 -2
  81. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/relationships/test_select_correlated_expression.py +8 -10
  82. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_expressions.py +3 -3
  83. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_models.py +7 -5
  84. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_views.py +75 -23
  85. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_arrow.py +1 -2
  86. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_choice.py +1 -2
  87. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_color.py +1 -2
  88. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_composite.py +1 -6
  89. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_country.py +1 -2
  90. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_currency.py +1 -2
  91. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_date_range.py +1 -2
  92. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_datetime_range.py +1 -2
  93. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_email.py +1 -2
  94. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_encrypted.py +3 -15
  95. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_enriched_date_pendulum.py +1 -2
  96. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_enriched_datetime_arrow.py +1 -2
  97. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_enriched_datetime_pendulum.py +9 -0
  98. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_int_range.py +2 -3
  99. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_ip_address.py +1 -2
  100. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_json.py +1 -2
  101. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_locale.py +1 -2
  102. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_ltree.py +1 -2
  103. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_numeric_range.py +1 -2
  104. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_password.py +5 -22
  105. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_phonenumber.py +1 -2
  106. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_scalar_list.py +1 -2
  107. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_timezone.py +2 -6
  108. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_url.py +1 -2
  109. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_uuid.py +1 -2
  110. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_weekdays.py +1 -2
  111. SQLAlchemy-Utils-0.41.1/.isort.cfg +0 -6
  112. SQLAlchemy-Utils-0.41.1/PKG-INFO +0 -43
  113. SQLAlchemy-Utils-0.41.1/SQLAlchemy_Utils.egg-info/PKG-INFO +0 -43
  114. SQLAlchemy-Utils-0.41.1/SQLAlchemy_Utils.egg-info/not-zip-safe +0 -1
  115. SQLAlchemy-Utils-0.41.1/docs/Makefile +0 -153
  116. SQLAlchemy-Utils-0.41.1/docs/conf.py +0 -246
  117. SQLAlchemy-Utils-0.41.1/docs/database_helpers.rst +0 -53
  118. SQLAlchemy-Utils-0.41.1/docs/foreign_key_helpers.rst +0 -40
  119. SQLAlchemy-Utils-0.41.1/docs/make.bat +0 -190
  120. SQLAlchemy-Utils-0.41.1/docs/models.rst +0 -18
  121. SQLAlchemy-Utils-0.41.1/docs/orm_helpers.rst +0 -124
  122. SQLAlchemy-Utils-0.41.1/docs/view.rst +0 -22
  123. SQLAlchemy-Utils-0.41.1/setup.cfg +0 -15
  124. SQLAlchemy-Utils-0.41.1/setup.py +0 -99
  125. SQLAlchemy-Utils-0.41.1/sqlalchemy_utils/compat.py +0 -86
  126. SQLAlchemy-Utils-0.41.1/tests/test_compat.py +0 -20
  127. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/LICENSE +0 -0
  128. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/SQLAlchemy_Utils.egg-info/dependency_links.txt +0 -0
  129. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/SQLAlchemy_Utils.egg-info/top_level.txt +0 -0
  130. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/aggregates.rst +0 -0
  131. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/generic_relationship.rst +0 -0
  132. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/index.rst +0 -0
  133. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/internationalization.rst +0 -0
  134. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/license.rst +0 -0
  135. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/listeners.rst +0 -0
  136. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/observers.rst +0 -0
  137. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/testing.rst +0 -0
  138. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/docs/utility_classes.rst +0 -0
  139. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/exceptions.py +0 -0
  140. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/functions/render.py +0 -0
  141. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/primitives/__init__.py +0 -0
  142. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/encrypted/__init__.py +0 -0
  143. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/enriched_datetime/__init__.py +0 -0
  144. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/enriched_datetime/pendulum_date.py +0 -0
  145. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/ip_address.py +0 -0
  146. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/scalar_coercible.py +0 -0
  147. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/url.py +0 -0
  148. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/sqlalchemy_utils/types/weekdays.py +0 -0
  149. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/__init__.py +0 -0
  150. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/__init__.py +0 -0
  151. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_backrefs.py +0 -0
  152. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_custom_select_expressions.py +0 -0
  153. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_join_table_inheritance.py +0 -0
  154. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_m2m_m2m.py +0 -0
  155. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_multiple_aggregates_per_class.py +0 -0
  156. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_o2m_m2m.py +0 -0
  157. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_o2m_o2m.py +0 -0
  158. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_o2m_o2m_o2m.py +0 -0
  159. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_search_vectors.py +0 -0
  160. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_simple_paths.py +0 -0
  161. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_with_column_alias.py +0 -0
  162. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/aggregate/test_with_ondelete_cascade.py +0 -0
  163. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/__init__.py +0 -0
  164. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_database.py +0 -0
  165. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_dependent_objects.py +0 -0
  166. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_escape_like.py +0 -0
  167. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_bind.py +0 -0
  168. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_class_by_table.py +0 -0
  169. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_column_key.py +0 -0
  170. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_columns.py +0 -0
  171. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_hybrid_properties.py +0 -0
  172. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_mapper.py +0 -0
  173. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_primary_keys.py +0 -0
  174. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_referencing_foreign_keys.py +0 -0
  175. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_get_tables.py +0 -0
  176. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_getdotattr.py +0 -0
  177. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_has_changes.py +0 -0
  178. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_has_index.py +0 -0
  179. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_has_unique_index.py +0 -0
  180. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_identity.py +0 -0
  181. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_is_loaded.py +0 -0
  182. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_merge_references.py +0 -0
  183. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_naturally_equivalent.py +0 -0
  184. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_non_indexed_foreign_keys.py +0 -0
  185. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_quote.py +0 -0
  186. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/functions/test_table_name.py +0 -0
  187. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/generic_relationship/__init__.py +0 -0
  188. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/generic_relationship/test_abstract_base_class.py +0 -0
  189. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/generic_relationship/test_column_aliases.py +0 -0
  190. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/generic_relationship/test_composite_keys.py +0 -0
  191. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/generic_relationship/test_hybrid_properties.py +0 -0
  192. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/generic_relationship/test_single_table_inheritance.py +0 -0
  193. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/mixins.py +0 -0
  194. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/__init__.py +0 -0
  195. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_column_property.py +0 -0
  196. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_dynamic_relationship.py +0 -0
  197. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_m2m_m2m_m2m.py +0 -0
  198. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_o2m_o2m_o2m.py +0 -0
  199. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_o2m_o2o_o2m.py +0 -0
  200. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_o2o_o2o.py +0 -0
  201. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/observes/test_o2o_o2o_o2o.py +0 -0
  202. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/primitives/__init__.py +0 -0
  203. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/primitives/test_country.py +0 -0
  204. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/primitives/test_currency.py +0 -0
  205. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/primitives/test_ltree.py +0 -0
  206. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/primitives/test_weekdays.py +0 -0
  207. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/relationships/__init__.py +0 -0
  208. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/relationships/test_chained_join.py +0 -0
  209. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_asserts.py +0 -0
  210. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_auto_delete_orphans.py +0 -0
  211. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_case_insensitive_comparator.py +0 -0
  212. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_instant_defaults_listener.py +0 -0
  213. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_instrumented_list.py +0 -0
  214. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_path.py +0 -0
  215. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_proxy_dict.py +0 -0
  216. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_query_chain.py +0 -0
  217. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/test_translation_hybrid.py +0 -0
  218. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/__init__.py +0 -0
  219. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/encrypted/test_padding.py +0 -0
  220. {SQLAlchemy-Utils-0.41.1 → sqlalchemy_utils-0.42.0}/tests/types/test_tsvector.py +0 -0
@@ -3,12 +3,30 @@ Changelog
3
3
 
4
4
  Here you can see the full list of changes between each SQLAlchemy-Utils release.
5
5
 
6
+ 0.42.0 (2025-08-30)
7
+ ^^^^^^^^^^^^^^^^^^^
8
+
9
+ - Drop support for Python 3.7 and 3.8.
10
+ - Drop support for sqlalchemy 1.3.
11
+ - Add support for Python 3.12 and 3.13.
12
+ - Add a Read the Docs configuration file.
13
+ - Make documentation builds reproducible.
14
+ - Test documentation builds in CI.
15
+ - Fix Pendulum parsing of datetime instances with timezones. (#755)
16
+ - Migrate package metadata to PEP 621 format in pyproject.toml
17
+ - Migrate to `ruff <https://docs.astral.sh/ruff/>`_ for code linting and formatting, replacing flake8 and isort with a faster Rust-based tool.
18
+
19
+ 0.41.2 (2024-03-22)
20
+ ^^^^^^^^^^^^^^^^^^^
21
+
22
+ - Fix breaking change introduced on SQLAlchemy 2.0.22 changes to ``attributes.AttributeImpl`` constructor (#733)
23
+
6
24
 
7
25
  0.41.1 (2023-04-27)
8
26
  ^^^^^^^^^^^^^^^^^^^
9
27
 
10
28
  - Use a custom SQL construct for refreshing materialized views in
11
- `refresh_materialized_view` (#703)
29
+ ``refresh_materialized_view`` (#703)
12
30
 
13
31
 
14
32
  0.41.0 (2023-04-13)
@@ -53,7 +71,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
53
71
  0.38.2 (2021-12-29)
54
72
  ^^^^^^^^^^^^^^^^^^^
55
73
 
56
- - Added inherit_cache=False in order to avoid SQLAlchemy warnings in `cast_locale_expr` (#571)
74
+ - Added inherit_cache=False in order to avoid SQLAlchemy warnings in ``cast_locale_expr`` (#571)
57
75
 
58
76
 
59
77
  0.38.1 (2021-12-21)
@@ -93,7 +111,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
93
111
  0.37.6 (2021-06-02)
94
112
  ^^^^^^^^^^^^^^^^^^^
95
113
 
96
- - Added `cache_ok=True` for TSVectorType
114
+ - Added ``cache_ok=True`` for TSVectorType
97
115
 
98
116
 
99
117
  0.37.5 (2021-05-31)
@@ -111,7 +129,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
111
129
  0.37.3 (2021-05-16)
112
130
  ^^^^^^^^^^^^^^^^^^^
113
131
 
114
- - Added `cache_ok=True` for all custom types
132
+ - Added ``cache_ok=True`` for all custom types
115
133
  - Added CockroachDB support for UUIDType (#526, pull request courtesy of chrishemmings)
116
134
 
117
135
 
@@ -133,7 +151,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
133
151
  - Added SQLAlchemy 1.4 support
134
152
  - Fixed database_exists() on PostgreSQL (#462)
135
153
  - Added create_database support pymssql (#486)
136
- - Removed `sort_query`, `get_query_entities` and `get_query_entity_by_alias` functions
154
+ - Removed ``sort_query``, ``get_query_entities`` and ``get_query_entity_by_alias`` functions
137
155
 
138
156
 
139
157
  0.36.8 (2020-07-08)
@@ -188,7 +206,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
188
206
  ^^^^^^^^^^^^^^^^^^^
189
207
 
190
208
  - Added support for CASCADE option when dropping views (#406, pull request courtesy of amicks)
191
- - Added `aliases` parameter to create_materialized_view function.
209
+ - Added ``aliases`` parameter to create_materialized_view function.
192
210
 
193
211
 
194
212
  0.36.0 (2019-12-08)
@@ -278,7 +296,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
278
296
  0.33.4 (2018-09-11)
279
297
  ^^^^^^^^^^^^^^^^^^^
280
298
 
281
- - Made PasswordType use `hash` function instead of deprecated `encrypt` function (#341, pull request courtesy of libre-man)
299
+ - Made PasswordType use ``hash`` function instead of deprecated ``encrypt`` function (#341, pull request courtesy of libre-man)
282
300
 
283
301
 
284
302
  0.33.3 (2018-04-29)
@@ -318,7 +336,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release.
318
336
  0.32.20 (2017-11-04)
319
337
  ^^^^^^^^^^^^^^^^^^^^
320
338
 
321
- - Added `__hash__` method for choice objects (#294, pull request courtesy of havelock)
339
+ - Added ``__hash__`` method for choice objects (#294, pull request courtesy of havelock)
322
340
 
323
341
 
324
342
  0.32.19 (2017-10-17)
@@ -1,4 +1,4 @@
1
- include CHANGES.rst LICENSE README.rst conftest.py .isort.cfg
1
+ include CHANGES.rst LICENSE README.rst
2
2
  recursive-include tests *
3
3
  recursive-exclude tests *.pyc
4
4
  recursive-include docs *
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: SQLAlchemy-Utils
3
+ Version: 0.42.0
4
+ Summary: Various utility functions for SQLAlchemy.
5
+ Author: Ryan Leckey, Janne Vanhala, Vesa Uimonen
6
+ Author-email: Konsta Vesterinen <konsta@fastmonkeys.com>
7
+ License-Expression: BSD-3-Clause
8
+ Project-URL: Homepage, https://github.com/kvesteri/sqlalchemy-utils
9
+ Classifier: Environment :: Web Environment
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/x-rst
22
+ License-File: LICENSE
23
+ Requires-Dist: SQLAlchemy>=1.4
24
+ Provides-Extra: test
25
+ Requires-Dist: pytest==7.4.4; extra == "test"
26
+ Requires-Dist: Pygments>=1.2; extra == "test"
27
+ Requires-Dist: Jinja2>=2.3; extra == "test"
28
+ Requires-Dist: docutils>=0.10; extra == "test"
29
+ Requires-Dist: flexmock>=0.9.7; extra == "test"
30
+ Requires-Dist: psycopg>=3.1.8; extra == "test"
31
+ Requires-Dist: psycopg2>=2.5.1; extra == "test"
32
+ Requires-Dist: psycopg2cffi>=2.8.1; extra == "test"
33
+ Requires-Dist: pg8000>=1.12.4; extra == "test"
34
+ Requires-Dist: pytz>=2014.2; extra == "test"
35
+ Requires-Dist: python-dateutil>=2.6; extra == "test"
36
+ Requires-Dist: pymysql; extra == "test"
37
+ Requires-Dist: flake8>=2.4.0; extra == "test"
38
+ Requires-Dist: isort>=4.2.2; extra == "test"
39
+ Requires-Dist: pyodbc; extra == "test"
40
+ Provides-Extra: babel
41
+ Requires-Dist: Babel>=1.3; extra == "babel"
42
+ Provides-Extra: arrow
43
+ Requires-Dist: arrow>=0.3.4; extra == "arrow"
44
+ Provides-Extra: pendulum
45
+ Requires-Dist: pendulum>=2.0.5; extra == "pendulum"
46
+ Provides-Extra: intervals
47
+ Requires-Dist: intervals>=0.7.1; extra == "intervals"
48
+ Provides-Extra: phone
49
+ Requires-Dist: phonenumbers>=5.9.2; extra == "phone"
50
+ Provides-Extra: password
51
+ Requires-Dist: passlib<2.0,>=1.6; extra == "password"
52
+ Provides-Extra: color
53
+ Requires-Dist: colour>=0.0.4; extra == "color"
54
+ Provides-Extra: timezone
55
+ Requires-Dist: python-dateutil; extra == "timezone"
56
+ Provides-Extra: url
57
+ Requires-Dist: furl>=0.4.1; extra == "url"
58
+ Provides-Extra: encrypted
59
+ Requires-Dist: cryptography>=0.6; extra == "encrypted"
60
+ Provides-Extra: test-all
61
+ Requires-Dist: pytest==7.4.4; extra == "test-all"
62
+ Requires-Dist: Pygments>=1.2; extra == "test-all"
63
+ Requires-Dist: Jinja2>=2.3; extra == "test-all"
64
+ Requires-Dist: docutils>=0.10; extra == "test-all"
65
+ Requires-Dist: flexmock>=0.9.7; extra == "test-all"
66
+ Requires-Dist: psycopg>=3.1.8; extra == "test-all"
67
+ Requires-Dist: psycopg2>=2.5.1; extra == "test-all"
68
+ Requires-Dist: psycopg2cffi>=2.8.1; extra == "test-all"
69
+ Requires-Dist: pg8000>=1.12.4; extra == "test-all"
70
+ Requires-Dist: pytz>=2014.2; extra == "test-all"
71
+ Requires-Dist: python-dateutil>=2.6; extra == "test-all"
72
+ Requires-Dist: pymysql; extra == "test-all"
73
+ Requires-Dist: flake8>=2.4.0; extra == "test-all"
74
+ Requires-Dist: isort>=4.2.2; extra == "test-all"
75
+ Requires-Dist: pyodbc; extra == "test-all"
76
+ Requires-Dist: Babel>=1.3; extra == "test-all"
77
+ Requires-Dist: arrow>=0.3.4; extra == "test-all"
78
+ Requires-Dist: pendulum>=2.0.5; extra == "test-all"
79
+ Requires-Dist: intervals>=0.7.1; extra == "test-all"
80
+ Requires-Dist: phonenumbers>=5.9.2; extra == "test-all"
81
+ Requires-Dist: passlib<2.0,>=1.6; extra == "test-all"
82
+ Requires-Dist: colour>=0.0.4; extra == "test-all"
83
+ Requires-Dist: python-dateutil; extra == "test-all"
84
+ Requires-Dist: furl>=0.4.1; extra == "test-all"
85
+ Requires-Dist: cryptography>=0.6; extra == "test-all"
86
+ Dynamic: license-file
87
+
88
+ SQLAlchemy-Utils
89
+ ================
90
+
91
+ |Build| |Version Status| |Downloads|
92
+
93
+ Various utility functions, new data types and helpers for SQLAlchemy.
94
+
95
+
96
+ Resources
97
+ ---------
98
+
99
+ - `Documentation <https://sqlalchemy-utils.readthedocs.io/>`_
100
+ - `Issue Tracker <https://github.com/kvesteri/sqlalchemy-utils/issues>`_
101
+ - `Code <https://github.com/kvesteri/sqlalchemy-utils/>`_
102
+
103
+ .. |Build| image:: https://github.com/kvesteri/sqlalchemy-utils/actions/workflows/test.yaml/badge.svg?branch=master
104
+ :target: https://github.com/kvesteri/sqlalchemy-utils/actions/workflows/test.yaml
105
+ :alt: Tests
106
+ .. |Version Status| image:: https://img.shields.io/pypi/v/SQLAlchemy-Utils.svg
107
+ :target: https://pypi.python.org/pypi/SQLAlchemy-Utils/
108
+ .. |Downloads| image:: https://img.shields.io/pypi/dm/SQLAlchemy-Utils.svg
109
+ :target: https://pypi.python.org/pypi/SQLAlchemy-Utils/
@@ -1,8 +1,7 @@
1
1
  SQLAlchemy-Utils
2
2
  ================
3
3
 
4
- |Build Status| |Version Status| |Downloads|
5
-
4
+ |Build| |Version Status| |Downloads|
6
5
 
7
6
  Various utility functions, new data types and helpers for SQLAlchemy.
8
7
 
@@ -14,8 +13,9 @@ Resources
14
13
  - `Issue Tracker <https://github.com/kvesteri/sqlalchemy-utils/issues>`_
15
14
  - `Code <https://github.com/kvesteri/sqlalchemy-utils/>`_
16
15
 
17
- .. |Build Status| image:: https://travis-ci.org/kvesteri/sqlalchemy-utils.svg?branch=master
18
- :target: https://travis-ci.org/kvesteri/sqlalchemy-utils
16
+ .. |Build| image:: https://github.com/kvesteri/sqlalchemy-utils/actions/workflows/test.yaml/badge.svg?branch=master
17
+ :target: https://github.com/kvesteri/sqlalchemy-utils/actions/workflows/test.yaml
18
+ :alt: Tests
19
19
  .. |Version Status| image:: https://img.shields.io/pypi/v/SQLAlchemy-Utils.svg
20
20
  :target: https://pypi.python.org/pypi/SQLAlchemy-Utils/
21
21
  .. |Downloads| image:: https://img.shields.io/pypi/dm/SQLAlchemy-Utils.svg
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: SQLAlchemy-Utils
3
+ Version: 0.42.0
4
+ Summary: Various utility functions for SQLAlchemy.
5
+ Author: Ryan Leckey, Janne Vanhala, Vesa Uimonen
6
+ Author-email: Konsta Vesterinen <konsta@fastmonkeys.com>
7
+ License-Expression: BSD-3-Clause
8
+ Project-URL: Homepage, https://github.com/kvesteri/sqlalchemy-utils
9
+ Classifier: Environment :: Web Environment
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/x-rst
22
+ License-File: LICENSE
23
+ Requires-Dist: SQLAlchemy>=1.4
24
+ Provides-Extra: test
25
+ Requires-Dist: pytest==7.4.4; extra == "test"
26
+ Requires-Dist: Pygments>=1.2; extra == "test"
27
+ Requires-Dist: Jinja2>=2.3; extra == "test"
28
+ Requires-Dist: docutils>=0.10; extra == "test"
29
+ Requires-Dist: flexmock>=0.9.7; extra == "test"
30
+ Requires-Dist: psycopg>=3.1.8; extra == "test"
31
+ Requires-Dist: psycopg2>=2.5.1; extra == "test"
32
+ Requires-Dist: psycopg2cffi>=2.8.1; extra == "test"
33
+ Requires-Dist: pg8000>=1.12.4; extra == "test"
34
+ Requires-Dist: pytz>=2014.2; extra == "test"
35
+ Requires-Dist: python-dateutil>=2.6; extra == "test"
36
+ Requires-Dist: pymysql; extra == "test"
37
+ Requires-Dist: flake8>=2.4.0; extra == "test"
38
+ Requires-Dist: isort>=4.2.2; extra == "test"
39
+ Requires-Dist: pyodbc; extra == "test"
40
+ Provides-Extra: babel
41
+ Requires-Dist: Babel>=1.3; extra == "babel"
42
+ Provides-Extra: arrow
43
+ Requires-Dist: arrow>=0.3.4; extra == "arrow"
44
+ Provides-Extra: pendulum
45
+ Requires-Dist: pendulum>=2.0.5; extra == "pendulum"
46
+ Provides-Extra: intervals
47
+ Requires-Dist: intervals>=0.7.1; extra == "intervals"
48
+ Provides-Extra: phone
49
+ Requires-Dist: phonenumbers>=5.9.2; extra == "phone"
50
+ Provides-Extra: password
51
+ Requires-Dist: passlib<2.0,>=1.6; extra == "password"
52
+ Provides-Extra: color
53
+ Requires-Dist: colour>=0.0.4; extra == "color"
54
+ Provides-Extra: timezone
55
+ Requires-Dist: python-dateutil; extra == "timezone"
56
+ Provides-Extra: url
57
+ Requires-Dist: furl>=0.4.1; extra == "url"
58
+ Provides-Extra: encrypted
59
+ Requires-Dist: cryptography>=0.6; extra == "encrypted"
60
+ Provides-Extra: test-all
61
+ Requires-Dist: pytest==7.4.4; extra == "test-all"
62
+ Requires-Dist: Pygments>=1.2; extra == "test-all"
63
+ Requires-Dist: Jinja2>=2.3; extra == "test-all"
64
+ Requires-Dist: docutils>=0.10; extra == "test-all"
65
+ Requires-Dist: flexmock>=0.9.7; extra == "test-all"
66
+ Requires-Dist: psycopg>=3.1.8; extra == "test-all"
67
+ Requires-Dist: psycopg2>=2.5.1; extra == "test-all"
68
+ Requires-Dist: psycopg2cffi>=2.8.1; extra == "test-all"
69
+ Requires-Dist: pg8000>=1.12.4; extra == "test-all"
70
+ Requires-Dist: pytz>=2014.2; extra == "test-all"
71
+ Requires-Dist: python-dateutil>=2.6; extra == "test-all"
72
+ Requires-Dist: pymysql; extra == "test-all"
73
+ Requires-Dist: flake8>=2.4.0; extra == "test-all"
74
+ Requires-Dist: isort>=4.2.2; extra == "test-all"
75
+ Requires-Dist: pyodbc; extra == "test-all"
76
+ Requires-Dist: Babel>=1.3; extra == "test-all"
77
+ Requires-Dist: arrow>=0.3.4; extra == "test-all"
78
+ Requires-Dist: pendulum>=2.0.5; extra == "test-all"
79
+ Requires-Dist: intervals>=0.7.1; extra == "test-all"
80
+ Requires-Dist: phonenumbers>=5.9.2; extra == "test-all"
81
+ Requires-Dist: passlib<2.0,>=1.6; extra == "test-all"
82
+ Requires-Dist: colour>=0.0.4; extra == "test-all"
83
+ Requires-Dist: python-dateutil; extra == "test-all"
84
+ Requires-Dist: furl>=0.4.1; extra == "test-all"
85
+ Requires-Dist: cryptography>=0.6; extra == "test-all"
86
+ Dynamic: license-file
87
+
88
+ SQLAlchemy-Utils
89
+ ================
90
+
91
+ |Build| |Version Status| |Downloads|
92
+
93
+ Various utility functions, new data types and helpers for SQLAlchemy.
94
+
95
+
96
+ Resources
97
+ ---------
98
+
99
+ - `Documentation <https://sqlalchemy-utils.readthedocs.io/>`_
100
+ - `Issue Tracker <https://github.com/kvesteri/sqlalchemy-utils/issues>`_
101
+ - `Code <https://github.com/kvesteri/sqlalchemy-utils/>`_
102
+
103
+ .. |Build| image:: https://github.com/kvesteri/sqlalchemy-utils/actions/workflows/test.yaml/badge.svg?branch=master
104
+ :target: https://github.com/kvesteri/sqlalchemy-utils/actions/workflows/test.yaml
105
+ :alt: Tests
106
+ .. |Version Status| image:: https://img.shields.io/pypi/v/SQLAlchemy-Utils.svg
107
+ :target: https://pypi.python.org/pypi/SQLAlchemy-Utils/
108
+ .. |Downloads| image:: https://img.shields.io/pypi/dm/SQLAlchemy-Utils.svg
109
+ :target: https://pypi.python.org/pypi/SQLAlchemy-Utils/
@@ -1,18 +1,13 @@
1
- .isort.cfg
2
1
  CHANGES.rst
3
2
  LICENSE
4
3
  MANIFEST.in
5
4
  README.rst
6
- conftest.py
7
- setup.cfg
8
- setup.py
5
+ pyproject.toml
9
6
  SQLAlchemy_Utils.egg-info/PKG-INFO
10
7
  SQLAlchemy_Utils.egg-info/SOURCES.txt
11
8
  SQLAlchemy_Utils.egg-info/dependency_links.txt
12
- SQLAlchemy_Utils.egg-info/not-zip-safe
13
9
  SQLAlchemy_Utils.egg-info/requires.txt
14
10
  SQLAlchemy_Utils.egg-info/top_level.txt
15
- docs/Makefile
16
11
  docs/aggregates.rst
17
12
  docs/conf.py
18
13
  docs/data_types.rst
@@ -24,7 +19,6 @@ docs/installation.rst
24
19
  docs/internationalization.rst
25
20
  docs/license.rst
26
21
  docs/listeners.rst
27
- docs/make.bat
28
22
  docs/models.rst
29
23
  docs/observers.rst
30
24
  docs/orm_helpers.rst
@@ -97,11 +91,11 @@ sqlalchemy_utils/types/enriched_datetime/enriched_datetime_type.py
97
91
  sqlalchemy_utils/types/enriched_datetime/pendulum_date.py
98
92
  sqlalchemy_utils/types/enriched_datetime/pendulum_datetime.py
99
93
  tests/__init__.py
94
+ tests/conftest.py
100
95
  tests/mixins.py
101
96
  tests/test_asserts.py
102
97
  tests/test_auto_delete_orphans.py
103
98
  tests/test_case_insensitive_comparator.py
104
- tests/test_compat.py
105
99
  tests/test_expressions.py
106
100
  tests/test_instant_defaults_listener.py
107
101
  tests/test_instrumented_list.py
@@ -1,7 +1,4 @@
1
- SQLAlchemy>=1.3
2
-
3
- [:python_version < "3.8"]
4
- importlib_metadata
1
+ SQLAlchemy>=1.4
5
2
 
6
3
  [arrow]
7
4
  arrow>=0.3.4
@@ -28,7 +25,7 @@ pendulum>=2.0.5
28
25
  phonenumbers>=5.9.2
29
26
 
30
27
  [test]
31
- pytest>=2.7.1
28
+ pytest==7.4.4
32
29
  Pygments>=1.2
33
30
  Jinja2>=2.3
34
31
  docutils>=0.10
@@ -44,38 +41,32 @@ flake8>=2.4.0
44
41
  isort>=4.2.2
45
42
  pyodbc
46
43
 
47
- [test:python_version < "3.9"]
48
- backports.zoneinfo
49
-
50
44
  [test_all]
51
- Babel>=1.3
52
- Jinja2>=2.3
45
+ pytest==7.4.4
53
46
  Pygments>=1.2
54
- arrow>=0.3.4
55
- colour>=0.0.4
56
- cryptography>=0.6
47
+ Jinja2>=2.3
57
48
  docutils>=0.10
58
- flake8>=2.4.0
59
49
  flexmock>=0.9.7
60
- furl>=0.4.1
61
- intervals>=0.7.1
62
- isort>=4.2.2
63
- passlib<2.0,>=1.6
64
- pendulum>=2.0.5
65
- pg8000>=1.12.4
66
- phonenumbers>=5.9.2
50
+ psycopg>=3.1.8
67
51
  psycopg2>=2.5.1
68
52
  psycopg2cffi>=2.8.1
69
- psycopg>=3.1.8
53
+ pg8000>=1.12.4
54
+ pytz>=2014.2
55
+ python-dateutil>=2.6
70
56
  pymysql
57
+ flake8>=2.4.0
58
+ isort>=4.2.2
71
59
  pyodbc
72
- pytest>=2.7.1
60
+ Babel>=1.3
61
+ arrow>=0.3.4
62
+ pendulum>=2.0.5
63
+ intervals>=0.7.1
64
+ phonenumbers>=5.9.2
65
+ passlib<2.0,>=1.6
66
+ colour>=0.0.4
73
67
  python-dateutil
74
- python-dateutil>=2.6
75
- pytz>=2014.2
76
-
77
- [test_all:python_version < "3.9"]
78
- backports.zoneinfo
68
+ furl>=0.4.1
69
+ cryptography>=0.6
79
70
 
80
71
  [timezone]
81
72
  python-dateutil
@@ -0,0 +1,47 @@
1
+ import pathlib
2
+
3
+
4
+ def get_version() -> str:
5
+ path = pathlib.Path(__file__).parent.parent / "sqlalchemy_utils/__init__.py"
6
+ content = path.read_text()
7
+ for line in content.splitlines():
8
+ if line.strip().startswith("__version__"):
9
+ _, _, version_ = line.partition("=")
10
+ return version_.strip("'\" ")
11
+
12
+
13
+ # -- General configuration -----------------------------------------------------
14
+
15
+ # Add any Sphinx extension module names here, as strings. They can be extensions
16
+ # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
17
+ extensions = [
18
+ "sphinx.ext.autodoc",
19
+ "sphinx.ext.doctest",
20
+ "sphinx.ext.intersphinx",
21
+ "sphinx.ext.todo",
22
+ "sphinx.ext.coverage",
23
+ "sphinx.ext.ifconfig",
24
+ "sphinx.ext.viewcode",
25
+ ]
26
+
27
+ # Add any paths that contain templates here, relative to this directory.
28
+ templates_path = ["_templates"]
29
+
30
+ # The master toctree document.
31
+ master_doc = "index"
32
+
33
+ # General information about the project.
34
+ project = "SQLAlchemy-Utils"
35
+ copyright = "2013-2022, Konsta Vesterinen"
36
+
37
+ version = get_version()
38
+ release = version
39
+
40
+ # List of patterns, relative to source directory, that match files and
41
+ # directories to ignore when looking for source files.
42
+ exclude_patterns = ["_build"]
43
+
44
+ # The name of the Pygments (syntax highlighting) style to use.
45
+ # pygments_style = "sphinx"
46
+
47
+ html_theme = "sphinx_rtd_theme"
@@ -74,9 +74,11 @@ EmailType
74
74
  EncryptedType
75
75
  -------------
76
76
 
77
- .. module:: sqlalchemy_utils.types.encrypted.encrypted_type
77
+ .. deprecated:: 0.36.6
78
+ Use StringEncryptedType instead
79
+
80
+ .. autoclass:: sqlalchemy_utils.types.encrypted.encrypted_type.EncryptedType
78
81
 
79
- .. autoclass:: EncryptedType
80
82
 
81
83
  JSONType
82
84
  --------
@@ -142,6 +144,14 @@ ScalarListType
142
144
  .. autoclass:: ScalarListType
143
145
 
144
146
 
147
+ StringEncryptedType
148
+ -------------------
149
+
150
+ .. module:: sqlalchemy_utils.types.encrypted.encrypted_type
151
+
152
+ .. autoclass:: StringEncryptedType
153
+
154
+
145
155
  TimezoneType
146
156
  ------------
147
157
 
@@ -0,0 +1,50 @@
1
+ Database helpers
2
+ ================
3
+
4
+
5
+ database_exists
6
+ ---------------
7
+
8
+ .. autofunction:: sqlalchemy_utils.functions.database_exists
9
+
10
+
11
+ create_database
12
+ ---------------
13
+
14
+ .. autofunction:: sqlalchemy_utils.functions.create_database
15
+
16
+
17
+ drop_database
18
+ -------------
19
+
20
+ .. autofunction:: sqlalchemy_utils.functions.drop_database
21
+
22
+
23
+ has_index
24
+ ---------
25
+
26
+ .. autofunction:: sqlalchemy_utils.functions.has_index
27
+
28
+
29
+ has_unique_index
30
+ ----------------
31
+
32
+ .. autofunction:: sqlalchemy_utils.functions.has_unique_index
33
+
34
+
35
+ json_sql
36
+ --------
37
+
38
+ .. autofunction:: sqlalchemy_utils.functions.json_sql
39
+
40
+
41
+ render_expression
42
+ -----------------
43
+
44
+ .. autofunction:: sqlalchemy_utils.functions.render_expression
45
+
46
+
47
+ render_statement
48
+ ----------------
49
+
50
+ .. autofunction:: sqlalchemy_utils.functions.render_statement
@@ -0,0 +1,32 @@
1
+ Foreign key helpers
2
+ ===================
3
+
4
+
5
+ dependent_objects
6
+ -----------------
7
+
8
+ .. autofunction:: sqlalchemy_utils.functions.dependent_objects
9
+
10
+
11
+ get_referencing_foreign_keys
12
+ ----------------------------
13
+
14
+ .. autofunction:: sqlalchemy_utils.functions.get_referencing_foreign_keys
15
+
16
+
17
+ group_foreign_keys
18
+ ------------------
19
+
20
+ .. autofunction:: sqlalchemy_utils.functions.group_foreign_keys
21
+
22
+
23
+ merge_references
24
+ ----------------
25
+
26
+ .. autofunction:: sqlalchemy_utils.functions.merge_references
27
+
28
+
29
+ non_indexed_foreign_keys
30
+ ------------------------
31
+
32
+ .. autofunction:: sqlalchemy_utils.functions.non_indexed_foreign_keys
@@ -6,14 +6,12 @@ This part of the documentation covers the installation of SQLAlchemy-Utils.
6
6
  Supported platforms
7
7
  -------------------
8
8
 
9
- SQLAlchemy-Utils is currently tested against the following Python platforms.
10
-
11
- - cPython 3.6
12
- - cPython 3.7
13
- - cPython 3.8
14
- - cPython 3.9
15
- - cPython 3.10
16
- - cPython 3.11
9
+ SQLAlchemy-Utils is currently tested against the following Python platforms:
10
+
11
+ - CPython 3.9
12
+ - CPython 3.10
13
+ - CPython 3.11
14
+ - CPython 3.12
17
15
 
18
16
 
19
17
  Installing an official release
@@ -0,0 +1,14 @@
1
+ Model mixins
2
+ ============
3
+
4
+
5
+ Timestamp
6
+ ---------
7
+
8
+ .. autoclass:: sqlalchemy_utils.models.Timestamp
9
+
10
+
11
+ generic_repr
12
+ ------------
13
+
14
+ .. autofunction:: sqlalchemy_utils.models.generic_repr