sqlalchemy-declarative-extensions 0.17.0__tar.gz → 0.18.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 (612) hide show
  1. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/.github/workflows/test.yml +2 -3
  2. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/CHANGELOG.md +13 -0
  3. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/PKG-INFO +2 -2
  4. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/views.md +16 -0
  5. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/pyproject.toml +7 -9
  6. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/function.py +11 -6
  7. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/procedure.py +7 -3
  8. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/query.py +9 -3
  9. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/trigger.py +7 -0
  10. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/function.py +17 -5
  11. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/procedure.py +7 -3
  12. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/query.py +11 -3
  13. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/trigger.py +5 -0
  14. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/query.py +35 -1
  15. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/sqlite/query.py +10 -2
  16. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/function/compare.py +4 -22
  17. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/procedure/base.py +10 -1
  18. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/procedure/compare.py +4 -16
  19. sqlalchemy_declarative_extensions-0.18.0/src/sqlalchemy_declarative_extensions/sql.py +105 -0
  20. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/trigger/compare.py +7 -18
  21. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/view/base.py +14 -0
  22. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/view/compare.py +11 -10
  23. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_extension_owned_schema.py +1 -1
  24. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_function_attributes.py +5 -0
  25. sqlalchemy_declarative_extensions-0.18.0/tests/dialect/test_from_string.py +208 -0
  26. sqlalchemy_declarative_extensions-0.18.0/tests/test_ignore_include.py +44 -0
  27. sqlalchemy_declarative_extensions-0.18.0/tests/view/test_get_views_ignore.py +101 -0
  28. sqlalchemy_declarative_extensions-0.18.0/tests/view/test_snowflake.py +126 -0
  29. sqlalchemy_declarative_extensions-0.18.0/uv.lock +1620 -0
  30. sqlalchemy_declarative_extensions-0.17.0/src/sqlalchemy_declarative_extensions/sql.py +0 -54
  31. sqlalchemy_declarative_extensions-0.17.0/tests/view/test_snowflake.py +0 -60
  32. sqlalchemy_declarative_extensions-0.17.0/uv.lock +0 -1669
  33. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/.github/FUNDING.yml +0 -0
  34. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/.github/workflows/release.yml +0 -0
  35. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/.gitignore +0 -0
  36. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/.readthedocs.yml +0 -0
  37. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/CONTRIBUTING.md +0 -0
  38. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/LICENSE +0 -0
  39. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/Makefile +0 -0
  40. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/README.md +0 -0
  41. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/Makefile +0 -0
  42. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/docs/__init__.py +0 -0
  43. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/make.bat +0 -0
  44. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/pyproject.toml +0 -0
  45. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/_static/.gitkeep +0 -0
  46. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/alembic.md +0 -0
  47. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/api.md +0 -0
  48. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/audit_tables.md +0 -0
  49. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/conf.py +0 -0
  50. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/contributing/dialect-support.md +0 -0
  51. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/contributing/index.md +0 -0
  52. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/contributing/testing.md +0 -0
  53. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/dialects/index.md +0 -0
  54. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/dialects/mysql.md +0 -0
  55. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/dialects/postgresql.md +0 -0
  56. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/dialects/snowflake.md +0 -0
  57. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/functions.md +0 -0
  58. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/grants.md +0 -0
  59. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/index.md +0 -0
  60. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/roles.md +0 -0
  61. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/rows.md +0 -0
  62. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/schemas.md +0 -0
  63. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/sqlalchemy.md +0 -0
  64. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/source/triggers.md +0 -0
  65. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/docs/uv.lock +0 -0
  66. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/setup.cfg +0 -0
  67. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/__init__.py +0 -0
  68. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/__init__.py +0 -0
  69. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/base.py +0 -0
  70. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/database.py +0 -0
  71. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/function.py +0 -0
  72. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/grant.py +0 -0
  73. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/procedure.py +0 -0
  74. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/role.py +0 -0
  75. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/row.py +0 -0
  76. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/schema.py +0 -0
  77. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/trigger.py +0 -0
  78. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/alembic/view.py +0 -0
  79. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/api.py +0 -0
  80. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/audit.py +0 -0
  81. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/context.py +0 -0
  82. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/database/__init__.py +0 -0
  83. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/database/base.py +0 -0
  84. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/database/compare.py +0 -0
  85. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/database/ddl.py +0 -0
  86. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/__init__.py +0 -0
  87. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/from_string.py +0 -0
  88. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/__init__.py +0 -0
  89. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/schema.py +0 -0
  90. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/__init__.py +0 -0
  91. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/acl.py +0 -0
  92. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/grant.py +0 -0
  93. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/grant_type.py +0 -0
  94. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/role.py +0 -0
  95. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/schema.py +0 -0
  96. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/view.py +0 -0
  97. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/query.py +0 -0
  98. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/__init__.py +0 -0
  99. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/information_schema.py +0 -0
  100. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/role.py +0 -0
  101. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/schema.py +0 -0
  102. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/view.py +0 -0
  103. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/sqlite/__init__.py +0 -0
  104. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/dialects/sqlite/schema.py +0 -0
  105. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/function/__init__.py +0 -0
  106. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/function/base.py +0 -0
  107. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/function/ddl.py +0 -0
  108. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/grant/__init__.py +0 -0
  109. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/grant/base.py +0 -0
  110. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/grant/compare.py +0 -0
  111. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/grant/ddl.py +0 -0
  112. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/op.py +0 -0
  113. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/procedure/__init__.py +0 -0
  114. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/procedure/ddl.py +0 -0
  115. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/py.typed +0 -0
  116. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/__init__.py +0 -0
  117. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/base.py +0 -0
  118. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/compare.py +0 -0
  119. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/ddl.py +0 -0
  120. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/generic.py +0 -0
  121. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/state.py +0 -0
  122. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/role/topological_sort.py +0 -0
  123. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/row/__init__.py +0 -0
  124. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/row/base.py +0 -0
  125. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/row/compare.py +0 -0
  126. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/row/query.py +0 -0
  127. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/schema/__init__.py +0 -0
  128. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/schema/base.py +0 -0
  129. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/schema/compare.py +0 -0
  130. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/schema/ddl.py +0 -0
  131. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/sqlalchemy.py +0 -0
  132. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/trigger/__init__.py +0 -0
  133. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/trigger/base.py +0 -0
  134. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/trigger/ddl.py +0 -0
  135. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/typing.py +0 -0
  136. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/view/__init__.py +0 -0
  137. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/src/sqlalchemy_declarative_extensions/view/ddl.py +0 -0
  138. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/__init__.py +0 -0
  139. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/audit/__init__.py +0 -0
  140. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/audit/test_context_values.py +0 -0
  141. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/audit/test_create_all.py +0 -0
  142. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/audit/test_disabled_operation.py +0 -0
  143. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/audit/test_quoting.py +0 -0
  144. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/audit/test_schema_support.py +0 -0
  145. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/conftest.py +0 -0
  146. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/__init__.py +0 -0
  147. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/__init__.py +0 -0
  148. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_acl.py +0 -0
  149. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_exclude_extension_objects.py +0 -0
  150. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_function_defaults.py +0 -0
  151. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_postgres_11.py +0 -0
  152. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/dialect/postgresql/test_postgres_14_sqlbody.py +0 -0
  153. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/alembic.ini +0 -0
  154. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/conftest.py +0 -0
  155. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/migrations/env.py +0 -0
  156. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/migrations/script.py.mako +0 -0
  157. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/migrations/versions/.gitkeep +0 -0
  158. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/models.py +0 -0
  159. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_role/test_migrations.py +0 -0
  160. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/alembic.ini +0 -0
  161. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/conftest.py +0 -0
  162. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/migrations/env.py +0 -0
  163. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/migrations/script.py.mako +0 -0
  164. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/migrations/versions/.gitkeep +0 -0
  165. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
  166. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/models.py +0 -0
  167. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_create_rows/test_migrations.py +0 -0
  168. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/alembic.ini +0 -0
  169. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/conftest.py +0 -0
  170. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/migrations/env.py +0 -0
  171. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/migrations/script.py.mako +0 -0
  172. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/migrations/versions/.gitkeep +0 -0
  173. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
  174. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/models.py +0 -0
  175. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows/test_migrations.py +0 -0
  176. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/alembic.ini +0 -0
  177. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/conftest.py +0 -0
  178. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/env.py +0 -0
  179. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/script.py.mako +0 -0
  180. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/versions/.gitkeep +0 -0
  181. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/versions/a63ad8efc2f4_.py +0 -0
  182. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/models.py +0 -0
  183. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_rows_ignore_unspecified/test_migrations.py +0 -0
  184. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/alembic.ini +0 -0
  185. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/conftest.py +0 -0
  186. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/migrations/env.py +0 -0
  187. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/migrations/script.py.mako +0 -0
  188. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/migrations/versions/.gitkeep +0 -0
  189. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/migrations/versions/0522a3309c12_.py +0 -0
  190. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/models.py +0 -0
  191. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_delete_unspecified_grants/test_migrations.py +0 -0
  192. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create/alembic.ini +0 -0
  193. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create/migrations/env.py +0 -0
  194. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create/migrations/script.py.mako +0 -0
  195. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create/migrations/versions/.gitkeep +0 -0
  196. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create/models.py +0 -0
  197. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create/test_migrations.py +0 -0
  198. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_postgis/alembic.ini +0 -0
  199. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_postgis/migrations/env.py +0 -0
  200. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_postgis/migrations/script.py.mako +0 -0
  201. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_postgis/migrations/versions/.gitkeep +0 -0
  202. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_postgis/models.py +0 -0
  203. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_postgis/test_migrations.py +0 -0
  204. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_sqlbody/alembic.ini +0 -0
  205. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_sqlbody/migrations/env.py +0 -0
  206. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_sqlbody/migrations/script.py.mako +0 -0
  207. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_sqlbody/migrations/versions/.gitkeep +0 -0
  208. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_sqlbody/models.py +0 -0
  209. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_pg_sqlbody/test_migrations.py +0 -0
  210. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_mysql/alembic.ini +0 -0
  211. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_mysql/migrations/env.py +0 -0
  212. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_mysql/migrations/script.py.mako +0 -0
  213. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_mysql/migrations/versions/.gitkeep +0 -0
  214. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_mysql/models.py +0 -0
  215. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_mysql/test_migrations.py +0 -0
  216. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_postgresql/alembic.ini +0 -0
  217. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_postgresql/migrations/env.py +0 -0
  218. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_postgresql/migrations/script.py.mako +0 -0
  219. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_postgresql/migrations/versions/.gitkeep +0 -0
  220. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_postgresql/models.py +0 -0
  221. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_create_with_params_postgresql/test_migrations.py +0 -0
  222. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_drop/alembic.ini +0 -0
  223. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_drop/migrations/env.py +0 -0
  224. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_drop/migrations/script.py.mako +0 -0
  225. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_drop/migrations/versions/.gitkeep +0 -0
  226. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_drop/models.py +0 -0
  227. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_drop/test_migrations.py +0 -0
  228. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_leading_whitespace/alembic.ini +0 -0
  229. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_leading_whitespace/migrations/env.py +0 -0
  230. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_leading_whitespace/migrations/script.py.mako +0 -0
  231. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_leading_whitespace/migrations/versions/.gitkeep +0 -0
  232. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_leading_whitespace/models.py +0 -0
  233. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_leading_whitespace/test_migrations.py +0 -0
  234. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_rewriter/alembic.ini +0 -0
  235. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_rewriter/migrations/env.py +0 -0
  236. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_rewriter/migrations/script.py.mako +0 -0
  237. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_rewriter/migrations/versions/.gitkeep +0 -0
  238. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_rewriter/models.py +0 -0
  239. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_rewriter/test_migrations.py +0 -0
  240. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_update/alembic.ini +0 -0
  241. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_update/migrations/env.py +0 -0
  242. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_update/migrations/script.py.mako +0 -0
  243. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_update/migrations/versions/.gitkeep +0 -0
  244. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_update/models.py +0 -0
  245. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_function_update/test_migrations.py +0 -0
  246. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/alembic.ini +0 -0
  247. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/conftest.py +0 -0
  248. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/migrations/env.py +0 -0
  249. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/migrations/script.py.mako +0 -0
  250. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/migrations/versions/.gitkeep +0 -0
  251. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/models.py +0 -0
  252. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_after_schema/test_migrations.py +0 -0
  253. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/alembic.ini +0 -0
  254. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/conftest.py +0 -0
  255. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/migrations/env.py +0 -0
  256. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/migrations/script.py.mako +0 -0
  257. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/migrations/versions/.gitkeep +0 -0
  258. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/models.py +0 -0
  259. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_disabled/test_migrations.py +0 -0
  260. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/alembic.ini +0 -0
  261. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/conftest.py +0 -0
  262. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/migrations/env.py +0 -0
  263. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/migrations/script.py.mako +0 -0
  264. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/migrations/versions/.gitkeep +0 -0
  265. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/models.py +0 -0
  266. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_rewriter/test_migrations.py +0 -0
  267. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/alembic.ini +0 -0
  268. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/conftest.py +0 -0
  269. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/migrations/env.py +0 -0
  270. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/migrations/script.py.mako +0 -0
  271. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/migrations/versions/.gitkeep +0 -0
  272. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/migrations/versions/0522a3309c12_.py +0 -0
  273. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/models.py +0 -0
  274. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_grant_update_existing/test_migrations.py +0 -0
  275. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/alembic.ini +0 -0
  276. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/conftest.py +0 -0
  277. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/migrations/env.py +0 -0
  278. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/migrations/script.py.mako +0 -0
  279. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/migrations/versions/.gitkeep +0 -0
  280. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/models.py +0 -0
  281. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_identify_grants/test_migrations.py +0 -0
  282. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_create/alembic.ini +0 -0
  283. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_create/migrations/env.py +0 -0
  284. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_create/migrations/script.py.mako +0 -0
  285. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_create/migrations/versions/.gitkeep +0 -0
  286. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_create/models.py +0 -0
  287. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_create/test_migrations.py +0 -0
  288. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_rewriter/alembic.ini +0 -0
  289. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_rewriter/migrations/env.py +0 -0
  290. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_rewriter/migrations/script.py.mako +0 -0
  291. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_rewriter/migrations/versions/.gitkeep +0 -0
  292. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_rewriter/models.py +0 -0
  293. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_procedure_rewriter/test_migrations.py +0 -0
  294. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/alembic.ini +0 -0
  295. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/conftest.py +0 -0
  296. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/migrations/env.py +0 -0
  297. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/migrations/script.py.mako +0 -0
  298. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/migrations/versions/.gitkeep +0 -0
  299. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/models.py +0 -0
  300. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_disabled/test_migrations.py +0 -0
  301. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/alembic.ini +0 -0
  302. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/conftest.py +0 -0
  303. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/migrations/env.py +0 -0
  304. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/migrations/script.py.mako +0 -0
  305. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/migrations/versions/.gitkeep +0 -0
  306. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/migrations/versions/a63ad8efc2f4_.py +0 -0
  307. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/models.py +0 -0
  308. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_operations/test_migrations.py +0 -0
  309. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/alembic.ini +0 -0
  310. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/conftest.py +0 -0
  311. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/migrations/env.py +0 -0
  312. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/migrations/script.py.mako +0 -0
  313. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/migrations/versions/.gitkeep +0 -0
  314. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/models.py +0 -0
  315. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_role_rewriter/test_migrations.py +0 -0
  316. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/alembic.ini +0 -0
  317. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/conftest.py +0 -0
  318. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/migrations/env.py +0 -0
  319. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/migrations/script.py.mako +0 -0
  320. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/migrations/versions/.gitkeep +0 -0
  321. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/migrations/versions/a63ad8efc2f4_.py +0 -0
  322. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/models.py +0 -0
  323. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_row_rewriter/test_migrations.py +0 -0
  324. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/alembic.ini +0 -0
  325. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/conftest.py +0 -0
  326. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/migrations/env.py +0 -0
  327. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/migrations/script.py.mako +0 -0
  328. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/migrations/versions/.gitkeep +0 -0
  329. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/migrations/versions/a63ad8efc2f4_.py +0 -0
  330. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/models.py +0 -0
  331. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_disabled/test_migrations.py +0 -0
  332. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/alembic.ini +0 -0
  333. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/conftest.py +0 -0
  334. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/migrations/env.py +0 -0
  335. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/migrations/script.py.mako +0 -0
  336. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/migrations/versions/.gitkeep +0 -0
  337. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/migrations/versions/34137c7892d1_.py +0 -0
  338. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/migrations/versions/a63ad8efc2f4_.py +0 -0
  339. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/models.py +0 -0
  340. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_rows_drop_table/test_migrations.py +0 -0
  341. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/alembic.ini +0 -0
  342. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/conftest.py +0 -0
  343. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/migrations/env.py +0 -0
  344. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/migrations/script.py.mako +0 -0
  345. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/migrations/versions/.gitkeep +0 -0
  346. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/models.py +0 -0
  347. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_create/test_migrations.py +0 -0
  348. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/alembic.ini +0 -0
  349. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/conftest.py +0 -0
  350. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/migrations/env.py +0 -0
  351. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/migrations/script.py.mako +0 -0
  352. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/migrations/versions/.gitkeep +0 -0
  353. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/models.py +0 -0
  354. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_disabled/test_migrations.py +0 -0
  355. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/alembic.ini +0 -0
  356. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/conftest.py +0 -0
  357. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/migrations/env.py +0 -0
  358. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/migrations/script.py.mako +0 -0
  359. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/migrations/versions/.gitkeep +0 -0
  360. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/models.py +0 -0
  361. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_drop/test_migrations.py +0 -0
  362. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/alembic.ini +0 -0
  363. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/conftest.py +0 -0
  364. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/migrations/env.py +0 -0
  365. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/migrations/script.py.mako +0 -0
  366. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/migrations/versions/.gitkeep +0 -0
  367. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/models.py +0 -0
  368. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_ignore_unspecified/test_migrations.py +0 -0
  369. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/alembic.ini +0 -0
  370. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/conftest.py +0 -0
  371. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/migrations/env.py +0 -0
  372. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/migrations/script.py.mako +0 -0
  373. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/migrations/versions/.gitkeep +0 -0
  374. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/models.py +0 -0
  375. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_schema_rewriter/test_migrations.py +0 -0
  376. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/alembic.ini +0 -0
  377. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/conftest.py +0 -0
  378. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/migrations/env.py +0 -0
  379. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/migrations/script.py.mako +0 -0
  380. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/migrations/versions/.gitkeep +0 -0
  381. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/migrations/versions/34137c7892d1_.py +0 -0
  382. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/migrations/versions/a63ad8efc2f4_.py +0 -0
  383. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/models.py +0 -0
  384. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_single_row_ops/test_migrations.py +0 -0
  385. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_create/alembic.ini +0 -0
  386. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_create/migrations/env.py +0 -0
  387. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_create/migrations/script.py.mako +0 -0
  388. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_create/migrations/versions/.gitkeep +0 -0
  389. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_create/models.py +0 -0
  390. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_create/test_migrations.py +0 -0
  391. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_drop/alembic.ini +0 -0
  392. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_drop/migrations/env.py +0 -0
  393. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_drop/migrations/script.py.mako +0 -0
  394. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_drop/migrations/versions/.gitkeep +0 -0
  395. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_drop/models.py +0 -0
  396. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_drop/test_migrations.py +0 -0
  397. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_rewriter/alembic.ini +0 -0
  398. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_rewriter/migrations/env.py +0 -0
  399. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_rewriter/migrations/script.py.mako +0 -0
  400. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_rewriter/migrations/versions/.gitkeep +0 -0
  401. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_rewriter/models.py +0 -0
  402. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_rewriter/test_migrations.py +0 -0
  403. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_table_args/alembic.ini +0 -0
  404. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_table_args/migrations/env.py +0 -0
  405. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_table_args/migrations/script.py.mako +0 -0
  406. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_table_args/migrations/versions/.gitkeep +0 -0
  407. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_table_args/models.py +0 -0
  408. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_table_args/test_migrations.py +0 -0
  409. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_update/alembic.ini +0 -0
  410. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_update/migrations/env.py +0 -0
  411. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_update/migrations/script.py.mako +0 -0
  412. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_update/migrations/versions/.gitkeep +0 -0
  413. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_update/models.py +0 -0
  414. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_trigger_update/test_migrations.py +0 -0
  415. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/alembic.ini +0 -0
  416. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/conftest.py +0 -0
  417. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/migrations/env.py +0 -0
  418. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/migrations/script.py.mako +0 -0
  419. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/migrations/versions/.gitkeep +0 -0
  420. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/models.py +0 -0
  421. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_role/test_migrations.py +0 -0
  422. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/alembic.ini +0 -0
  423. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/conftest.py +0 -0
  424. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/migrations/env.py +0 -0
  425. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/migrations/script.py.mako +0 -0
  426. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/migrations/versions/.gitkeep +0 -0
  427. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
  428. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/models.py +0 -0
  429. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_update_rows/test_migrations.py +0 -0
  430. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/alembic.ini +0 -0
  431. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/migrations/env.py +0 -0
  432. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/migrations/script.py.mako +0 -0
  433. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/migrations/versions/.gitkeep +0 -0
  434. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/migrations/versions/c90a0d80e7a4_.py +0 -0
  435. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/models.py +0 -0
  436. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_complex_comparison_pg/test_migrations.py +0 -0
  437. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_mysql/alembic.ini +0 -0
  438. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_mysql/migrations/env.py +0 -0
  439. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_mysql/migrations/script.py.mako +0 -0
  440. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_mysql/migrations/versions/.gitkeep +0 -0
  441. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_mysql/models.py +0 -0
  442. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_mysql/test_migrations.py +0 -0
  443. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/alembic.ini +0 -0
  444. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/migrations/env.py +0 -0
  445. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/migrations/script.py.mako +0 -0
  446. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/migrations/versions/.gitkeep +0 -0
  447. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/migrations/versions/db72aad6c888_.py +0 -0
  448. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/models.py +0 -0
  449. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_create_pg/test_migrations.py +0 -0
  450. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_mysql/alembic.ini +0 -0
  451. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_mysql/migrations/env.py +0 -0
  452. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_mysql/migrations/script.py.mako +0 -0
  453. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_mysql/migrations/versions/.gitkeep +0 -0
  454. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_mysql/models.py +0 -0
  455. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_mysql/test_migrations.py +0 -0
  456. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_pg/alembic.ini +0 -0
  457. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_pg/migrations/env.py +0 -0
  458. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_pg/migrations/script.py.mako +0 -0
  459. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_pg/migrations/versions/.gitkeep +0 -0
  460. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_pg/models.py +0 -0
  461. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_drop_pg/test_migrations.py +0 -0
  462. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/alembic.ini +0 -0
  463. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/migrations/env.py +0 -0
  464. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/migrations/script.py.mako +0 -0
  465. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/migrations/versions/.gitkeep +0 -0
  466. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/migrations/versions/cc63f503ef39_.py +0 -0
  467. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/models.py +0 -0
  468. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_materialized_constraint/test_migrations.py +0 -0
  469. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/alembic.ini +0 -0
  470. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/migrations/env.py +0 -0
  471. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/migrations/script.py.mako +0 -0
  472. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/migrations/versions/.gitkeep +0 -0
  473. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/migrations/versions/db72aad6c888_.py +0 -0
  474. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/models.py +0 -0
  475. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_rewriter/test_migrations.py +0 -0
  476. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/alembic.ini +0 -0
  477. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/migrations/env.py +0 -0
  478. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/migrations/script.py.mako +0 -0
  479. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/migrations/versions/.gitkeep +0 -0
  480. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/migrations/versions/2152079ac9a3_.py +0 -0
  481. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/models.py +0 -0
  482. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_mysql/test_migrations.py +0 -0
  483. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/alembic.ini +0 -0
  484. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/migrations/env.py +0 -0
  485. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/migrations/script.py.mako +0 -0
  486. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/migrations/versions/.gitkeep +0 -0
  487. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/migrations/versions/2152079ac9a3_.py +0 -0
  488. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/models.py +0 -0
  489. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/examples/test_view_update_pg/test_migrations.py +0 -0
  490. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/__init__.py +0 -0
  491. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_alembic.py +0 -0
  492. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_create_mysql.py +0 -0
  493. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_create_postgresql.py +0 -0
  494. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_create_requires_normalization.py +0 -0
  495. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_delete.py +0 -0
  496. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_delete_mysql.py +0 -0
  497. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_drop_all.py +0 -0
  498. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_exclude.py +0 -0
  499. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_filter.py +0 -0
  500. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_function_normalization.py +0 -0
  501. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_ignore_unspecified.py +0 -0
  502. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_include_exclude.py +0 -0
  503. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_metadata_sequence.py +0 -0
  504. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_pg_security_definer.py +0 -0
  505. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_quote.py +0 -0
  506. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_unnamed_param.py +0 -0
  507. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_update.py +0 -0
  508. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/function/test_update_mysql.py +0 -0
  509. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/__init__.py +0 -0
  510. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_alembic.py +0 -0
  511. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_false_grants_imply_default_grants.py +0 -0
  512. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_grant_schema.py +0 -0
  513. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_ignore_unspecified.py +0 -0
  514. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_metadata_sequence.py +0 -0
  515. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_no_grants.py +0 -0
  516. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_only_defined_roles.py +0 -0
  517. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_postgresql.py +0 -0
  518. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_remove_unspecified.py +0 -0
  519. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_sqlalchemy.py +0 -0
  520. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_table_grants.py +0 -0
  521. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/grant/test_view.py +0 -0
  522. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/__init__.py +0 -0
  523. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_alembic.py +0 -0
  524. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_create.py +0 -0
  525. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_create_mysql.py +0 -0
  526. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_create_requires_normalization.py +0 -0
  527. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_delete.py +0 -0
  528. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_delete_mysql.py +0 -0
  529. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_drop_all.py +0 -0
  530. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_exclude.py +0 -0
  531. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_filter.py +0 -0
  532. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_ignore_unspecified.py +0 -0
  533. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_metadata_sequence.py +0 -0
  534. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_pg_security_definer.py +0 -0
  535. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_quote.py +0 -0
  536. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_update.py +0 -0
  537. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/procedure/test_update_mysql.py +0 -0
  538. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/__init__.py +0 -0
  539. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_alembic.py +0 -0
  540. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_drop_all.py +0 -0
  541. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_external.py +0 -0
  542. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_filter.py +0 -0
  543. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_iterable_roles.py +0 -0
  544. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_metadata_sequence.py +0 -0
  545. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_remove_valid_until.py +0 -0
  546. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_sqlalchemy.py +0 -0
  547. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_sqlalchemy_snowflake.py +0 -0
  548. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_topological_sort.py +0 -0
  549. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_update_parent_role.py +0 -0
  550. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/role/test_use_role.py +0 -0
  551. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/__init__.py +0 -0
  552. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_alembic.py +0 -0
  553. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_bind_syntax.py +0 -0
  554. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_column_added.py +0 -0
  555. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_invalid_table.py +0 -0
  556. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_metadata_sequence.py +0 -0
  557. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_missing_primary_key.py +0 -0
  558. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_schema_context.py +0 -0
  559. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/row/test_sqlalchemy.py +0 -0
  560. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_alembic.py +0 -0
  561. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_drop.py +0 -0
  562. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_drop_all.py +0 -0
  563. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_filter.py +0 -0
  564. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_metadata_sequence.py +0 -0
  565. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_snowflake.py +0 -0
  566. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/schema/test_sqlalchemy.py +0 -0
  567. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/__init__.py +0 -0
  568. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_alembic.py +0 -0
  569. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_arguments.py +0 -0
  570. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_create_mysql.py +0 -0
  571. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_create_postgres.py +0 -0
  572. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_drop_all.py +0 -0
  573. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_drop_mysql.py +0 -0
  574. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_drop_postgres.py +0 -0
  575. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_for_each_statement_postgres.py +0 -0
  576. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_ignore_unspecified_postgres.py +0 -0
  577. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_include_exclude.py +0 -0
  578. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_metadata_sequence.py +0 -0
  579. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_missing_when_postgres.py +0 -0
  580. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_same_name_postgres.py +0 -0
  581. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_schema_quoting.py +0 -0
  582. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_table_args.py +0 -0
  583. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_table_args_mysql.py +0 -0
  584. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_table_args_postgres.py +0 -0
  585. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_update_mysql.py +0 -0
  586. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_update_postgres.py +0 -0
  587. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_when_references_new_postgres.py +0 -0
  588. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/trigger/test_wrapped_parens_postgres.py +0 -0
  589. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/utilities.py +0 -0
  590. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/__init__.py +0 -0
  591. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_add_constraint_to_existing.py +0 -0
  592. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_alembic.py +0 -0
  593. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_alembic_utils.py +0 -0
  594. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_constraint_drops_first.py +0 -0
  595. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_convert_to_materialized.py +0 -0
  596. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_create_table_and_view_together.py +0 -0
  597. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_drop_all.py +0 -0
  598. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_escaped_bindparam.py +0 -0
  599. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_filter.py +0 -0
  600. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_ignore_glob.py +0 -0
  601. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_ignore_unspecified.py +0 -0
  602. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_ignore_views.py +0 -0
  603. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_materialized.py +0 -0
  604. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_metadata_sequence.py +0 -0
  605. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_only_constraint_changes.py +0 -0
  606. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_only_different_constraints_drop.py +0 -0
  607. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_pg_materialized_no_data.py +0 -0
  608. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_sqlalchemy.py +0 -0
  609. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_update.py +0 -0
  610. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_view_function.py +0 -0
  611. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_view_in_schema.py +0 -0
  612. {sqlalchemy_declarative_extensions-0.17.0 → sqlalchemy_declarative_extensions-0.18.0}/tests/view/test_view_index_bound_column.py +0 -0
@@ -18,9 +18,7 @@ jobs:
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- # Test our minimum version bound, the highest version available,
22
- # and something in the middle (i.e. what gets run locally).
23
- python-version: ["3.8", "3.10", "3.11", "3.12"]
21
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
24
22
  sqlalchemy-version: ["1.3.0", "1.4.0", "2.0.0"]
25
23
  postgres-drivername: ["postgresql+psycopg2", "postgresql+psycopg"]
26
24
  exclude:
@@ -36,6 +34,7 @@ jobs:
36
34
  uses: actions/setup-python@v4
37
35
  with:
38
36
  python-version: ${{ matrix.python-version }}
37
+ allow-prereleases: true
39
38
  architecture: x64
40
39
 
41
40
  - name: Set up uv
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.18
4
+
5
+
6
+ ### 0.18.0
7
+
8
+ - chore: Drop official support for python 3.8/3.9. In this release code is not
9
+ changed which breaks support, but it's no longer being tested and so will likely
10
+ break once we start adopting newer syntax features.
11
+ - feat: Accept plain strings for every enum-valued option.
12
+ - feat: Add `Views(include=[...])`, mirroring `Functions`/`Triggers`.
13
+ - feat: Add `Procedures(include=[...])`, mirroring `Functions`/`Triggers`/`Views`.
14
+ - fix: (Snowflake) Skip views whose definition is NULL (inaccessible to the current role).
15
+
3
16
  ## 0.17
4
17
 
5
18
  ### 0.17.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sqlalchemy-declarative-extensions
3
- Version: 0.17.0
3
+ Version: 0.18.0
4
4
  Summary: Library to declare additional kinds of objects not natively supported by SQLAlchemy/Alembic.
5
5
  Project-URL: documentation, https://sqlalchemy-declarative-extensions.readthedocs.io/en/latest/
6
6
  Project-URL: homepage, https://sqlalchemy-declarative-extensions.readthedocs.io/en/latest/
@@ -211,7 +211,7 @@ License: Apache License
211
211
  License-File: LICENSE
212
212
  Keywords: alembic,declarative,function,grant,mysql,postgresql,role,schema,snowflake,sqlalchemy,sqlite,trigger,view
213
213
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
214
- Requires-Python: <4,>=3.8
214
+ Requires-Python: <4,>=3.10
215
215
  Requires-Dist: sqlalchemy>=1.3
216
216
  Provides-Extra: alembic
217
217
  Requires-Dist: alembic>=1.0; extra == 'alembic'
@@ -98,6 +98,22 @@ allows you to avoid duplicating the list of columns unnecessarily.
98
98
  Finally, you can directly call `register_view` to imperitively register a normal
99
99
  `View` object, if the class interface doesn't float your boat.
100
100
 
101
+ ## Managing a subset of a shared database
102
+
103
+ Autogenerate drops any existing view that is not declared. When the database is
104
+ shared with other metadata, `include` limits the comparison to existing views
105
+ matching one of its globs (matched against the schema-qualified name):
106
+
107
+ ```python
108
+ views = Views(include=["foo.*"]).are(...)
109
+ ```
110
+
111
+ Views in `foo` are created, updated, and dropped when no longer declared, while
112
+ every other view is left alone, including views added to the database later.
113
+ Declared views are always compared, even when they fall outside of `include`.
114
+ `ignore` still applies on top of `include`, and `ignore_unspecified` remains the
115
+ blunter option which suppresses all drops.
116
+
101
117
  ## Materialized views
102
118
 
103
119
  Materialized views can be created by adding the `materialized=True` kwarg to the
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sqlalchemy-declarative-extensions"
3
- version = "0.17.0"
3
+ version = "0.18.0"
4
4
  authors = [{ name = "Dan Cardin", email = "ddcardin@gmail.com" }]
5
5
  description = "Library to declare additional kinds of objects not natively supported by SQLAlchemy/Alembic."
6
6
  license = { file = "LICENSE" }
@@ -25,7 +25,7 @@ keywords = [
25
25
  ]
26
26
  classifiers = ["Topic :: Software Development :: Libraries :: Python Modules"]
27
27
 
28
- requires-python = ">=3.8,<4"
28
+ requires-python = ">=3.10,<4"
29
29
 
30
30
  dependencies = ["sqlalchemy >= 1.3"]
31
31
 
@@ -54,15 +54,12 @@ dev = [
54
54
  "psycopg[binary]",
55
55
  "psycopg2-binary",
56
56
 
57
- # snowflake
58
- "fakesnow >= 0.9.21; python_version >= '3.9'",
59
- "snowflake-connector-python >= 3.7; python_version >= '3.9'",
60
- "snowflake-sqlalchemy >= 1.6.0; python_version >= '3.9'",
57
+ # snowflake (fakesnow>=0.12 requires python 3.11+)
58
+ "fakesnow >= 0.9.21; python_version >= '3.11'",
59
+ "snowflake-connector-python >= 3.7; python_version >= '3.11'",
60
+ "snowflake-sqlalchemy >= 1.6.0; python_version >= '3.11'",
61
61
  ]
62
62
 
63
- [tool.uv]
64
- environments = ["python_version < '3.9'", "python_version >= '3.9' and python_version < '4'"]
65
-
66
63
  [tool.mypy]
67
64
  strict_optional = true
68
65
  ignore_missing_imports = true
@@ -94,6 +91,7 @@ filterwarnings = [
94
91
  'ignore:`ignore_views` is deprecated, use `ignore` instead:DeprecationWarning',
95
92
  'ignore:The GenericFunction.*:sqlalchemy.exc.SAWarning',
96
93
  'ignore:Did not recognize type.*:sqlalchemy.exc.SAWarning',
94
+ 'ignore:Arrow output on a DB-API result.*:UserWarning',
97
95
  ]
98
96
  pytester_example_dir = "tests/examples"
99
97
  markers = ['grant', 'schema', 'role', 'row', 'alembic']
@@ -6,17 +6,18 @@ from dataclasses import dataclass, replace
6
6
 
7
7
  from typing_extensions import Self
8
8
 
9
+ from sqlalchemy_declarative_extensions.dialects.from_string import FromStrings
9
10
  from sqlalchemy_declarative_extensions.function import base
10
11
 
11
12
 
12
13
  @enum.unique
13
- class FunctionSecurity(enum.Enum):
14
+ class FunctionSecurity(FromStrings):
14
15
  invoker = "INVOKER"
15
16
  definer = "DEFINER"
16
17
 
17
18
 
18
19
  @enum.unique
19
- class FunctionDataAccess(enum.Enum):
20
+ class FunctionDataAccess(FromStrings):
20
21
  no_sql = "NO SQL"
21
22
  contains_sql = "CONTAINS SQL"
22
23
  reads_sql = "READS SQL DATA"
@@ -31,6 +32,10 @@ class Function(base.Function):
31
32
  deterministic: bool = False
32
33
  data_access: FunctionDataAccess = FunctionDataAccess.contains_sql
33
34
 
35
+ def __post_init__(self):
36
+ self.security = FunctionSecurity.from_string(self.security)
37
+ self.data_access = FunctionDataAccess.from_string(self.data_access)
38
+
34
39
  @classmethod
35
40
  def from_unknown_function(cls, f: base.Function) -> Self:
36
41
  if isinstance(f, cls):
@@ -70,14 +75,14 @@ class Function(base.Function):
70
75
  def to_sql_drop(self) -> list[str]:
71
76
  return [f"DROP FUNCTION {self.qualified_name};"]
72
77
 
73
- def with_security(self, security: FunctionSecurity):
74
- return replace(self, security=security)
78
+ def with_security(self, security: FunctionSecurity | str):
79
+ return replace(self, security=FunctionSecurity.from_string(security))
75
80
 
76
81
  def with_security_definer(self):
77
82
  return replace(self, security=FunctionSecurity.definer)
78
83
 
79
- def with_data_access(self, data_access: FunctionDataAccess):
80
- return replace(self, data_access=data_access)
84
+ def with_data_access(self, data_access: FunctionDataAccess | str):
85
+ return replace(self, data_access=FunctionDataAccess.from_string(data_access))
81
86
 
82
87
  def no_sql(self):
83
88
  return self.with_data_access(FunctionDataAccess.no_sql)
@@ -6,11 +6,12 @@ from dataclasses import dataclass, replace
6
6
 
7
7
  from typing_extensions import Self
8
8
 
9
+ from sqlalchemy_declarative_extensions.dialects.from_string import FromStrings
9
10
  from sqlalchemy_declarative_extensions.procedure import base
10
11
 
11
12
 
12
13
  @enum.unique
13
- class ProcedureSecurity(enum.Enum):
14
+ class ProcedureSecurity(FromStrings):
14
15
  invoker = "INVOKER"
15
16
  definer = "DEFINER"
16
17
 
@@ -21,6 +22,9 @@ class Procedure(base.Procedure):
21
22
 
22
23
  security: ProcedureSecurity = ProcedureSecurity.definer
23
24
 
25
+ def __post_init__(self):
26
+ self.security = ProcedureSecurity.from_string(self.security)
27
+
24
28
  @classmethod
25
29
  def from_unknown_procedure(cls, f: base.Procedure) -> Self:
26
30
  if isinstance(f, cls):
@@ -32,8 +36,8 @@ class Procedure(base.Procedure):
32
36
  schema=f.schema,
33
37
  )
34
38
 
35
- def with_security(self, security: ProcedureSecurity):
36
- return replace(self, security=security)
39
+ def with_security(self, security: ProcedureSecurity | str):
40
+ return replace(self, security=ProcedureSecurity.from_string(security))
37
41
 
38
42
  def with_security_definer(self):
39
43
  return replace(self, security=ProcedureSecurity.definer)
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from collections.abc import Sequence
3
+ from collections.abc import Iterable, Sequence
4
4
 
5
5
  from sqlalchemy.engine import Connection
6
6
 
@@ -27,12 +27,17 @@ from sqlalchemy_declarative_extensions.dialects.mysql.trigger import (
27
27
  )
28
28
  from sqlalchemy_declarative_extensions.function import Function as BaseFunction
29
29
  from sqlalchemy_declarative_extensions.procedure import Procedure as BaseProcedure
30
+ from sqlalchemy_declarative_extensions.sql import filter_ignored
30
31
  from sqlalchemy_declarative_extensions.view.base import View
31
32
 
32
33
 
33
- def get_views_mysql(connection: Connection):
34
+ def get_views_mysql(
35
+ connection: Connection,
36
+ ignore: Iterable[str] = (),
37
+ include: Iterable[str] | None = None,
38
+ ):
34
39
  current_database = connection.engine.url.database
35
- return [
40
+ views = [
36
41
  View(
37
42
  v.name,
38
43
  v.definition,
@@ -40,6 +45,7 @@ def get_views_mysql(connection: Connection):
40
45
  )
41
46
  for v in connection.execute(views_query).fetchall()
42
47
  ]
48
+ return filter_ignored(views, ignore, include=include)
43
49
 
44
50
 
45
51
  def get_triggers_mysql(connection: Connection) -> list[Trigger]:
@@ -32,6 +32,9 @@ class TriggerOrder:
32
32
  order: TriggerOrders
33
33
  other_trigger_name: str
34
34
 
35
+ def __post_init__(self):
36
+ self.order = TriggerOrders.from_string(self.order)
37
+
35
38
 
36
39
  @dataclass
37
40
  class Trigger(base.Trigger):
@@ -44,6 +47,10 @@ class Trigger(base.Trigger):
44
47
  event: TriggerEvents
45
48
  order: TriggerOrder | None = None
46
49
 
50
+ def __post_init__(self):
51
+ self.time = TriggerTimes.from_string(self.time)
52
+ self.event = TriggerEvents.from_string(self.event)
53
+
47
54
  @classmethod
48
55
  def before(
49
56
  cls,
@@ -8,6 +8,7 @@ from typing import Any, List, Literal, Sequence, Tuple, cast
8
8
 
9
9
  from sqlalchemy import Column
10
10
 
11
+ from sqlalchemy_declarative_extensions.dialects.from_string import FromStrings
11
12
  from sqlalchemy_declarative_extensions.function import base
12
13
  from sqlalchemy_declarative_extensions.sql import quote_name
13
14
 
@@ -29,12 +30,12 @@ END
29
30
 
30
31
 
31
32
  @enum.unique
32
- class FunctionSecurity(enum.Enum):
33
+ class FunctionSecurity(FromStrings):
33
34
  invoker = "INVOKER"
34
35
  definer = "DEFINER"
35
36
 
36
37
 
37
- class FunctionVolatility(enum.Enum):
38
+ class FunctionVolatility(FromStrings):
38
39
  volatile = "VOLATILE"
39
40
  stable = "STABLE"
40
41
  immutable = "IMMUTABLE"
@@ -44,7 +45,7 @@ class FunctionVolatility(enum.Enum):
44
45
  IMMUTABLE = immutable
45
46
 
46
47
 
47
- class FunctionParallel(enum.Enum):
48
+ class FunctionParallel(FromStrings):
48
49
  unsafe = "UNSAFE"
49
50
  restricted = "RESTRICTED"
50
51
  safe = "SAFE"
@@ -69,6 +70,11 @@ class Function(base.Function):
69
70
  strict: bool = False
70
71
  leakproof: bool = False
71
72
 
73
+ def __post_init__(self):
74
+ self.security = FunctionSecurity.from_string(self.security)
75
+ self.volatility = FunctionVolatility.from_string(self.volatility)
76
+ self.parallel = FunctionParallel.from_string(self.parallel)
77
+
72
78
  @property
73
79
  def _has_sqlbody(self) -> bool:
74
80
  return self.language.lower() == "sql" and bool(
@@ -128,12 +134,18 @@ class Function(base.Function):
128
134
 
129
135
  return [f"DROP FUNCTION {self.qualified_name}({param_str});"]
130
136
 
131
- def with_security(self, security: FunctionSecurity):
132
- return replace(self, security=security)
137
+ def with_security(self, security: FunctionSecurity | str):
138
+ return replace(self, security=FunctionSecurity.from_string(security))
133
139
 
134
140
  def with_security_definer(self):
135
141
  return replace(self, security=FunctionSecurity.definer)
136
142
 
143
+ def with_volatility(self, volatility: FunctionVolatility | str):
144
+ return replace(self, volatility=FunctionVolatility.from_string(volatility))
145
+
146
+ def with_parallel(self, parallel: FunctionParallel | str):
147
+ return replace(self, parallel=FunctionParallel.from_string(parallel))
148
+
137
149
  def normalize(self) -> Function:
138
150
  definition = textwrap.dedent(self.definition)
139
151
  if self._has_sqlbody:
@@ -7,6 +7,7 @@ from dataclasses import dataclass, replace
7
7
 
8
8
  from typing_extensions import Self
9
9
 
10
+ from sqlalchemy_declarative_extensions.dialects.from_string import FromStrings
10
11
  from sqlalchemy_declarative_extensions.procedure import base
11
12
  from sqlalchemy_declarative_extensions.sql import quote_name
12
13
 
@@ -24,7 +25,7 @@ END
24
25
 
25
26
 
26
27
  @enum.unique
27
- class ProcedureSecurity(enum.Enum):
28
+ class ProcedureSecurity(FromStrings):
28
29
  invoker = "INVOKER"
29
30
  definer = "DEFINER"
30
31
 
@@ -40,6 +41,9 @@ class Procedure(base.Procedure):
40
41
 
41
42
  security: ProcedureSecurity = ProcedureSecurity.invoker
42
43
 
44
+ def __post_init__(self):
45
+ self.security = ProcedureSecurity.from_string(self.security)
46
+
43
47
  @property
44
48
  def _has_sqlbody(self) -> bool:
45
49
  return self.language.lower() == "sql" and bool(
@@ -75,8 +79,8 @@ class Procedure(base.Procedure):
75
79
  definition = definition.strip()
76
80
  return replace(self, definition=definition)
77
81
 
78
- def with_security(self, security: ProcedureSecurity):
79
- return replace(self, security=security)
82
+ def with_security(self, security: ProcedureSecurity | str):
83
+ return replace(self, security=ProcedureSecurity.from_string(security))
80
84
 
81
85
  def with_security_definer(self):
82
86
  return replace(self, security=ProcedureSecurity.definer)
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from collections.abc import Sequence
3
+ from collections.abc import Iterable, Sequence
4
4
  from itertools import zip_longest
5
5
  from typing import Container, List, cast
6
6
 
@@ -50,7 +50,7 @@ from sqlalchemy_declarative_extensions.dialects.postgresql.view import (
50
50
  )
51
51
  from sqlalchemy_declarative_extensions.function import Function as BaseFunction
52
52
  from sqlalchemy_declarative_extensions.procedure import Procedure as BaseProcedure
53
- from sqlalchemy_declarative_extensions.sql import qualify_name
53
+ from sqlalchemy_declarative_extensions.sql import is_ignored, qualify_name
54
54
 
55
55
  EXTENSION_SCHEMAS = {
56
56
  "postgis_topology": ["topology"],
@@ -175,11 +175,19 @@ def get_roles_postgresql(connection: Connection, exclude=None):
175
175
  return result
176
176
 
177
177
 
178
- def get_views_postgresql(connection: Connection):
178
+ def get_views_postgresql(
179
+ connection: Connection,
180
+ ignore: Iterable[str] = (),
181
+ include: Iterable[str] | None = None,
182
+ ):
179
183
  views = []
180
184
  for v in connection.execute(views_query).fetchall():
181
185
  schema = v.schema if v.schema != "public" else None
182
186
 
187
+ # Avoids the per-view index introspection for views which are ignored anyway.
188
+ if is_ignored(qualify_name(schema, v.name), ignore, include=include):
189
+ continue
190
+
183
191
  indexes: list[ViewIndex | Index | UniqueConstraint] = [
184
192
  ViewIndex(
185
193
  name=raw["name"],
@@ -94,6 +94,11 @@ class Trigger(base.Trigger):
94
94
  old_table: str | None = None
95
95
  new_table: str | None = None
96
96
 
97
+ def __post_init__(self):
98
+ self.events = TriggerEvents.from_strings(self.events)
99
+ self.time = TriggerTimes.from_string(self.time)
100
+ self.for_each = TriggerForEach.from_string(self.for_each)
101
+
97
102
  @property
98
103
  def identity(self) -> tuple[str, str]:
99
104
  return self.on, self.name
@@ -1,9 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import warnings
4
+ from collections.abc import Iterable
5
+
3
6
  from sqlalchemy import text
4
7
  from sqlalchemy.engine import Connection
5
8
 
6
9
  from sqlalchemy_declarative_extensions.dialects.snowflake import Role, View
10
+ from sqlalchemy_declarative_extensions.sql import is_ignored, qualify_name
7
11
 
8
12
 
9
13
  def get_schemas_snowflake(connection: Connection):
@@ -69,7 +73,20 @@ def get_databases_snowflake(connection: Connection):
69
73
  }
70
74
 
71
75
 
72
- def get_views_snowflake(connection: Connection):
76
+ def get_views_snowflake(
77
+ connection: Connection,
78
+ ignore: Iterable[str] = (),
79
+ include: Iterable[str] | None = None,
80
+ ):
81
+ """Fetch the views of the current database.
82
+
83
+ Views matching any of the `ignore` globs, or (when `include` is given) none of the
84
+ `include` globs, are never introspected, so (for example) views which the current
85
+ role cannot see the definition of, but which are excluded anyway, do not interfere.
86
+ """
87
+ ignore = list(ignore)
88
+ include = None if include is None else list(include)
89
+
73
90
  views_query = text(
74
91
  """
75
92
  SELECT table_schema AS schema, table_name AS name, view_definition AS definition
@@ -83,6 +100,23 @@ def get_views_snowflake(connection: Connection):
83
100
  for v in connection.execute(views_query).fetchall():
84
101
  schema = v.schema if v.schema != "public" else None
85
102
 
103
+ # Snowflake identifiers are case-insensitive unless quoted, and it reports them uppercase.
104
+ qualified_name = qualify_name(schema, v.name)
105
+ if is_ignored(qualified_name, ignore, include=include, case_sensitive=False):
106
+ continue
107
+
108
+ # `view_definition` is NULL for views the current role does not have access to. Since we
109
+ # cant do anything with them, we'll loudly skip them to avoid a confusing autogenerate result
110
+ # where it tries to edit those views.
111
+ if v.definition is None:
112
+ warnings.warn(
113
+ f"Skipping view '{qualified_name}': its definition is not visible to the"
114
+ " current role. Ignore it explicitly (`Views(ignore=[...])`), or leave it out of"
115
+ " `Views(include=[...])`, to silence this.",
116
+ stacklevel=2,
117
+ )
118
+ continue
119
+
86
120
  assert v.definition.startswith("CREATE VIEW")
87
121
  *_, definition = v.definition.split(" ", 4)
88
122
 
@@ -1,7 +1,10 @@
1
+ from collections.abc import Iterable
2
+
1
3
  from sqlalchemy import text
2
4
  from sqlalchemy.engine import Connection
3
5
 
4
6
  from sqlalchemy_declarative_extensions.dialects.sqlite.schema import views_query
7
+ from sqlalchemy_declarative_extensions.sql import filter_ignored
5
8
  from sqlalchemy_declarative_extensions.view.base import View
6
9
 
7
10
 
@@ -27,10 +30,15 @@ def check_schema_exists_sqlite(connection: Connection, name: str) -> bool:
27
30
  return False
28
31
 
29
32
 
30
- def get_views_sqlite(connection: Connection):
33
+ def get_views_sqlite(
34
+ connection: Connection,
35
+ ignore: Iterable[str] = (),
36
+ include: Iterable[str] | None = None,
37
+ ):
31
38
  schemas = get_schemas_sqlite(connection)
32
- return [
39
+ views = [
33
40
  View(v.name, v.definition, schema=v.schema)
34
41
  for schema in [*schemas, None]
35
42
  for v in connection.execute(views_query(schema and schema)).fetchall()
36
43
  ]
44
+ return filter_ignored(views, ignore, include=include)
@@ -1,14 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
- import fnmatch
4
3
  from dataclasses import dataclass
5
- from typing import Sequence, Union
4
+ from typing import Union
6
5
 
7
6
  from sqlalchemy.engine import Connection
8
7
 
9
8
  from sqlalchemy_declarative_extensions.dialects import get_function_cls, get_functions
10
9
  from sqlalchemy_declarative_extensions.function.base import Function, Functions
11
10
  from sqlalchemy_declarative_extensions.op import ExecuteOp
11
+ from sqlalchemy_declarative_extensions.sql import filter_ignored
12
12
 
13
13
 
14
14
  @dataclass
@@ -55,8 +55,8 @@ def compare_functions(connection: Connection, functions: Functions) -> list[Oper
55
55
  expected_function_names = set(functions_by_name)
56
56
 
57
57
  raw_existing_functions = get_functions(connection)
58
- existing_functions = filter_functions(
59
- raw_existing_functions, exclude=functions.ignore, include=functions.include
58
+ existing_functions = filter_ignored(
59
+ raw_existing_functions, functions.ignore, include=functions.include
60
60
  )
61
61
  existing_functions_by_name = {
62
62
  f.qualified_name: f.normalize() for f in existing_functions
@@ -92,21 +92,3 @@ def compare_functions(connection: Connection, functions: Functions) -> list[Oper
92
92
  result.append(DropFunctionOp(function))
93
93
 
94
94
  return result
95
-
96
-
97
- def filter_functions(
98
- functions: Sequence[Function], *, exclude: list[str], include: list[str] | None
99
- ) -> list[Function]:
100
- return [
101
- f
102
- for f in functions
103
- if (
104
- include is None
105
- or any(
106
- fnmatch.fnmatch(f.qualified_name, inclusion) for inclusion in include
107
- )
108
- )
109
- and not any(
110
- fnmatch.fnmatch(f.qualified_name, exclusion) for exclusion in exclude
111
- )
112
- ]
@@ -72,6 +72,7 @@ class Procedures:
72
72
 
73
73
  procedures: list[Procedure] = field(default_factory=list)
74
74
 
75
+ include: list[str] | None = None
75
76
  ignore: list[str] = field(default_factory=list)
76
77
  ignore_unspecified: bool = False
77
78
 
@@ -111,10 +112,18 @@ class Procedures:
111
112
  )
112
113
 
113
114
  procedures = [s for instance in instances for s in instance.procedures]
115
+ # Preserve None if all instances have include=None, otherwise combine all non-None includes
116
+ include_values = [
117
+ instance.include for instance in instances if instance.include is not None
118
+ ]
119
+ include = [s for inc in include_values for s in inc] if include_values else None
114
120
  ignore = [s for instance in instances for s in instance.ignore]
115
121
  ignore_unspecified = instances[0].ignore_unspecified
116
122
  return cls(
117
- procedures=procedures, ignore_unspecified=ignore_unspecified, ignore=ignore
123
+ procedures=procedures,
124
+ ignore_unspecified=ignore_unspecified,
125
+ ignore=ignore,
126
+ include=include,
118
127
  )
119
128
 
120
129
  def append(self, procedure: Procedure):
@@ -1,14 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
- import fnmatch
4
3
  from dataclasses import dataclass
5
- from typing import Sequence, Union
4
+ from typing import Union
6
5
 
7
6
  from sqlalchemy.engine import Connection
8
7
 
9
8
  from sqlalchemy_declarative_extensions.dialects import get_procedure_cls, get_procedures
10
9
  from sqlalchemy_declarative_extensions.op import ExecuteOp
11
10
  from sqlalchemy_declarative_extensions.procedure.base import Procedure, Procedures
11
+ from sqlalchemy_declarative_extensions.sql import filter_ignored
12
12
 
13
13
 
14
14
  @dataclass
@@ -56,8 +56,8 @@ def compare_procedures(
56
56
  procedures_by_name = {f.qualified_name: f for f in procedures.procedures}
57
57
  expected_procedure_names = set(procedures_by_name)
58
58
 
59
- existing_procedures = filter_procedures(
60
- get_procedures(connection), procedures.ignore
59
+ existing_procedures = filter_ignored(
60
+ get_procedures(connection), procedures.ignore, include=procedures.include
61
61
  )
62
62
  existing_procedures_by_name = {r.qualified_name: r for r in existing_procedures}
63
63
  existing_procedure_names = set(existing_procedures_by_name)
@@ -94,15 +94,3 @@ def compare_procedures(
94
94
  result.append(DropProcedureOp(procedure))
95
95
 
96
96
  return result
97
-
98
-
99
- def filter_procedures(
100
- procedures: Sequence[Procedure], exclude: list[str]
101
- ) -> list[Procedure]:
102
- return [
103
- f
104
- for f in procedures
105
- if not any(
106
- fnmatch.fnmatch(f.qualified_name, exclusion) for exclusion in exclude
107
- )
108
- ]