alembic 1.11.1__tar.gz → 1.11.2__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 (233) hide show
  1. alembic-1.11.2/.coveragerc +5 -0
  2. alembic-1.11.2/.github/FUNDING.yml +6 -0
  3. alembic-1.11.2/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
  4. alembic-1.11.2/.github/ISSUE_TEMPLATE/config.yml +15 -0
  5. alembic-1.11.2/.github/ISSUE_TEMPLATE/use_case.md +24 -0
  6. alembic-1.11.2/.github/pull_request_template.md +27 -0
  7. alembic-1.11.2/.github/workflows/run-on-pr.yaml +85 -0
  8. alembic-1.11.2/.github/workflows/run-test.yaml +96 -0
  9. alembic-1.11.2/.gitignore +24 -0
  10. alembic-1.11.2/.gitreview +6 -0
  11. alembic-1.11.2/.pre-commit-config.yaml +31 -0
  12. {alembic-1.11.1/alembic.egg-info → alembic-1.11.2}/PKG-INFO +1 -1
  13. {alembic-1.11.1 → alembic-1.11.2}/alembic/__init__.py +1 -1
  14. {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/api.py +0 -2
  15. {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/compare.py +12 -23
  16. {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/render.py +18 -36
  17. {alembic-1.11.1 → alembic-1.11.2}/alembic/command.py +0 -1
  18. {alembic-1.11.1 → alembic-1.11.2}/alembic/config.py +0 -2
  19. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/impl.py +10 -5
  20. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/mssql.py +2 -5
  21. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/mysql.py +0 -1
  22. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/postgresql.py +31 -10
  23. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/sqlite.py +0 -2
  24. {alembic-1.11.1 → alembic-1.11.2}/alembic/op.pyi +29 -17
  25. {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/base.py +29 -17
  26. {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/batch.py +4 -5
  27. {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/ops.py +49 -24
  28. {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/toimpl.py +18 -4
  29. {alembic-1.11.1 → alembic-1.11.2}/alembic/runtime/environment.py +0 -1
  30. {alembic-1.11.1 → alembic-1.11.2}/alembic/runtime/migration.py +0 -4
  31. {alembic-1.11.1 → alembic-1.11.2}/alembic/script/base.py +3 -7
  32. {alembic-1.11.1 → alembic-1.11.2}/alembic/script/revision.py +0 -4
  33. {alembic-1.11.1 → alembic-1.11.2}/alembic/script/write_hooks.py +8 -7
  34. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/script.py.mako +6 -4
  35. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/script.py.mako +6 -4
  36. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/script.py.mako +6 -4
  37. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/assertions.py +0 -3
  38. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/env.py +0 -3
  39. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/fixtures.py +0 -2
  40. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/_autogen_fixtures.py +0 -1
  41. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/langhelpers.py +0 -1
  42. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/pyfiles.py +0 -1
  43. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/sqla_compat.py +0 -1
  44. {alembic-1.11.1 → alembic-1.11.2/alembic.egg-info}/PKG-INFO +1 -1
  45. {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/SOURCES.txt +14 -0
  46. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/changelog.rst.txt +31 -0
  47. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/basic.css +18 -0
  48. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/documentation_options.js +1 -1
  49. {alembic-1.11.1 → alembic-1.11.2}/docs/api/autogenerate.html +13 -13
  50. {alembic-1.11.1 → alembic-1.11.2}/docs/api/commands.html +13 -13
  51. {alembic-1.11.1 → alembic-1.11.2}/docs/api/config.html +13 -13
  52. {alembic-1.11.1 → alembic-1.11.2}/docs/api/ddl.html +34 -22
  53. {alembic-1.11.1 → alembic-1.11.2}/docs/api/index.html +13 -13
  54. {alembic-1.11.1 → alembic-1.11.2}/docs/api/operations.html +18 -18
  55. {alembic-1.11.1 → alembic-1.11.2}/docs/api/overview.html +13 -13
  56. {alembic-1.11.1 → alembic-1.11.2}/docs/api/runtime.html +13 -13
  57. {alembic-1.11.1 → alembic-1.11.2}/docs/api/script.html +15 -15
  58. {alembic-1.11.1 → alembic-1.11.2}/docs/autogenerate.html +13 -13
  59. {alembic-1.11.1 → alembic-1.11.2}/docs/batch.html +13 -13
  60. {alembic-1.11.1 → alembic-1.11.2}/docs/branches.html +13 -13
  61. alembic-1.11.2/docs/build/assets/api_overview.graffle +2795 -0
  62. {alembic-1.11.1 → alembic-1.11.2}/docs/build/changelog.rst +31 -0
  63. {alembic-1.11.1 → alembic-1.11.2}/docs/build/conf.py +2 -2
  64. alembic-1.11.2/docs/build/make.bat +113 -0
  65. {alembic-1.11.1 → alembic-1.11.2}/docs/changelog.html +56 -13
  66. {alembic-1.11.1 → alembic-1.11.2}/docs/cookbook.html +13 -13
  67. {alembic-1.11.1 → alembic-1.11.2}/docs/front.html +13 -13
  68. {alembic-1.11.1 → alembic-1.11.2}/docs/genindex.html +27 -17
  69. {alembic-1.11.1 → alembic-1.11.2}/docs/index.html +19 -13
  70. {alembic-1.11.1 → alembic-1.11.2}/docs/naming.html +13 -13
  71. {alembic-1.11.1 → alembic-1.11.2}/docs/offline.html +13 -13
  72. {alembic-1.11.1 → alembic-1.11.2}/docs/ops.html +30 -18
  73. {alembic-1.11.1 → alembic-1.11.2}/docs/py-modindex.html +13 -13
  74. {alembic-1.11.1 → alembic-1.11.2}/docs/search.html +13 -13
  75. alembic-1.11.2/docs/searchindex.js +1 -0
  76. {alembic-1.11.1 → alembic-1.11.2}/docs/tutorial.html +13 -13
  77. alembic-1.11.2/reap_dbs.py +25 -0
  78. {alembic-1.11.1 → alembic-1.11.2}/tests/requirements.py +21 -0
  79. {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_diffs.py +0 -6
  80. {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_indexes.py +0 -1
  81. {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_render.py +0 -3
  82. {alembic-1.11.1 → alembic-1.11.2}/tests/test_batch.py +0 -1
  83. {alembic-1.11.1 → alembic-1.11.2}/tests/test_command.py +0 -1
  84. {alembic-1.11.1 → alembic-1.11.2}/tests/test_external_dialect.py +0 -2
  85. {alembic-1.11.1 → alembic-1.11.2}/tests/test_offline_environment.py +0 -1
  86. {alembic-1.11.1 → alembic-1.11.2}/tests/test_op.py +12 -3
  87. {alembic-1.11.1 → alembic-1.11.2}/tests/test_post_write.py +0 -3
  88. {alembic-1.11.1 → alembic-1.11.2}/tests/test_postgresql.py +151 -3
  89. {alembic-1.11.1 → alembic-1.11.2}/tests/test_revision.py +0 -5
  90. {alembic-1.11.1 → alembic-1.11.2}/tests/test_script_consumption.py +0 -2
  91. {alembic-1.11.1 → alembic-1.11.2}/tests/test_sqlite.py +0 -2
  92. {alembic-1.11.1 → alembic-1.11.2}/tests/test_version_traversal.py +0 -14
  93. {alembic-1.11.1 → alembic-1.11.2}/tools/write_pyi.py +1 -1
  94. {alembic-1.11.1 → alembic-1.11.2}/tox.ini +1 -1
  95. alembic-1.11.1/docs/searchindex.js +0 -1
  96. {alembic-1.11.1 → alembic-1.11.2}/CHANGES +0 -0
  97. {alembic-1.11.1 → alembic-1.11.2}/LICENSE +0 -0
  98. {alembic-1.11.1 → alembic-1.11.2}/MANIFEST.in +0 -0
  99. {alembic-1.11.1 → alembic-1.11.2}/README.rst +0 -0
  100. {alembic-1.11.1 → alembic-1.11.2}/README.unittests.rst +0 -0
  101. {alembic-1.11.1 → alembic-1.11.2}/alembic/__main__.py +0 -0
  102. {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/__init__.py +0 -0
  103. {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/rewriter.py +0 -0
  104. {alembic-1.11.1 → alembic-1.11.2}/alembic/context.py +0 -0
  105. {alembic-1.11.1 → alembic-1.11.2}/alembic/context.pyi +0 -0
  106. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/__init__.py +0 -0
  107. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/base.py +0 -0
  108. {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/oracle.py +0 -0
  109. {alembic-1.11.1 → alembic-1.11.2}/alembic/environment.py +0 -0
  110. {alembic-1.11.1 → alembic-1.11.2}/alembic/migration.py +0 -0
  111. {alembic-1.11.1 → alembic-1.11.2}/alembic/op.py +0 -0
  112. {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/__init__.py +0 -0
  113. {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/schemaobj.py +0 -0
  114. {alembic-1.11.1 → alembic-1.11.2}/alembic/py.typed +0 -0
  115. {alembic-1.11.1 → alembic-1.11.2}/alembic/runtime/__init__.py +0 -0
  116. {alembic-1.11.1 → alembic-1.11.2}/alembic/script/__init__.py +0 -0
  117. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/README +0 -0
  118. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/alembic.ini.mako +0 -0
  119. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/env.py +0 -0
  120. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/README +0 -0
  121. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/alembic.ini.mako +0 -0
  122. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/env.py +0 -0
  123. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/README +0 -0
  124. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/alembic.ini.mako +0 -0
  125. {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/env.py +0 -0
  126. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/__init__.py +0 -0
  127. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/plugin/__init__.py +0 -0
  128. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/plugin/bootstrap.py +0 -0
  129. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/requirements.py +0 -0
  130. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/schemacompare.py +0 -0
  131. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/__init__.py +0 -0
  132. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_comments.py +0 -0
  133. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_computed.py +0 -0
  134. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_diffs.py +0 -0
  135. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_fks.py +0 -0
  136. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_identity.py +0 -0
  137. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_environment.py +0 -0
  138. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_op.py +0 -0
  139. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/util.py +0 -0
  140. {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/warnings.py +0 -0
  141. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/__init__.py +0 -0
  142. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/compat.py +0 -0
  143. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/editor.py +0 -0
  144. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/exc.py +0 -0
  145. {alembic-1.11.1 → alembic-1.11.2}/alembic/util/messaging.py +0 -0
  146. {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/dependency_links.txt +0 -0
  147. {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/entry_points.txt +0 -0
  148. {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/not-zip-safe +0 -0
  149. {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/requires.txt +0 -0
  150. {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/top_level.txt +0 -0
  151. {alembic-1.11.1 → alembic-1.11.2}/docs/_images/api_overview.png +0 -0
  152. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/autogenerate.rst.txt +0 -0
  153. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/commands.rst.txt +0 -0
  154. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/config.rst.txt +0 -0
  155. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/ddl.rst.txt +0 -0
  156. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/index.rst.txt +0 -0
  157. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/operations.rst.txt +0 -0
  158. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/overview.rst.txt +0 -0
  159. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/runtime.rst.txt +0 -0
  160. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/script.rst.txt +0 -0
  161. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/autogenerate.rst.txt +0 -0
  162. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/batch.rst.txt +0 -0
  163. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/branches.rst.txt +0 -0
  164. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/cookbook.rst.txt +0 -0
  165. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/front.rst.txt +0 -0
  166. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/index.rst.txt +0 -0
  167. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/naming.rst.txt +0 -0
  168. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/offline.rst.txt +0 -0
  169. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/ops.rst.txt +0 -0
  170. {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/tutorial.rst.txt +0 -0
  171. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/changelog.css +0 -0
  172. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/clipboard.min.js +0 -0
  173. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/copybutton.css +0 -0
  174. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/copybutton.js +0 -0
  175. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/copybutton_funcs.js +0 -0
  176. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/doctools.js +0 -0
  177. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/file.png +0 -0
  178. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/language_data.js +0 -0
  179. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/minus.png +0 -0
  180. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/nature.css +0 -0
  181. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/nature_override.css +0 -0
  182. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/plus.png +0 -0
  183. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/pygments.css +0 -0
  184. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/searchtools.js +0 -0
  185. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/site_custom_css.css +0 -0
  186. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/sphinx_highlight.js +0 -0
  187. {alembic-1.11.1 → alembic-1.11.2}/docs/_static/sphinx_paramlinks.css +0 -0
  188. {alembic-1.11.1 → alembic-1.11.2}/docs/build/Makefile +0 -0
  189. {alembic-1.11.1 → alembic-1.11.2}/docs/build/_static/nature_override.css +0 -0
  190. {alembic-1.11.1 → alembic-1.11.2}/docs/build/_static/site_custom_css.css +0 -0
  191. {alembic-1.11.1 → alembic-1.11.2}/docs/build/_templates/site_custom_sidebars.html +0 -0
  192. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/api_overview.png +0 -0
  193. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/autogenerate.rst +0 -0
  194. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/commands.rst +0 -0
  195. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/config.rst +0 -0
  196. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/ddl.rst +0 -0
  197. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/index.rst +0 -0
  198. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/operations.rst +0 -0
  199. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/overview.rst +0 -0
  200. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/runtime.rst +0 -0
  201. {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/script.rst +0 -0
  202. {alembic-1.11.1 → alembic-1.11.2}/docs/build/autogenerate.rst +0 -0
  203. {alembic-1.11.1 → alembic-1.11.2}/docs/build/batch.rst +0 -0
  204. {alembic-1.11.1 → alembic-1.11.2}/docs/build/branches.rst +0 -0
  205. {alembic-1.11.1 → alembic-1.11.2}/docs/build/cookbook.rst +0 -0
  206. {alembic-1.11.1 → alembic-1.11.2}/docs/build/front.rst +0 -0
  207. {alembic-1.11.1 → alembic-1.11.2}/docs/build/index.rst +0 -0
  208. {alembic-1.11.1 → alembic-1.11.2}/docs/build/naming.rst +0 -0
  209. {alembic-1.11.1 → alembic-1.11.2}/docs/build/offline.rst +0 -0
  210. {alembic-1.11.1 → alembic-1.11.2}/docs/build/ops.rst +0 -0
  211. {alembic-1.11.1 → alembic-1.11.2}/docs/build/requirements.txt +0 -0
  212. {alembic-1.11.1 → alembic-1.11.2}/docs/build/tutorial.rst +0 -0
  213. {alembic-1.11.1 → alembic-1.11.2}/docs/build/unreleased/README.txt +0 -0
  214. {alembic-1.11.1 → alembic-1.11.2}/pyproject.toml +0 -0
  215. {alembic-1.11.1 → alembic-1.11.2}/setup.cfg +0 -0
  216. {alembic-1.11.1 → alembic-1.11.2}/setup.py +0 -0
  217. {alembic-1.11.1 → alembic-1.11.2}/tests/__init__.py +0 -0
  218. {alembic-1.11.1 → alembic-1.11.2}/tests/_large_map.py +0 -0
  219. {alembic-1.11.1 → alembic-1.11.2}/tests/conftest.py +0 -0
  220. {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_composition.py +0 -0
  221. {alembic-1.11.1 → alembic-1.11.2}/tests/test_bulk_insert.py +0 -0
  222. {alembic-1.11.1 → alembic-1.11.2}/tests/test_config.py +0 -0
  223. {alembic-1.11.1 → alembic-1.11.2}/tests/test_editor.py +0 -0
  224. {alembic-1.11.1 → alembic-1.11.2}/tests/test_environment.py +0 -0
  225. {alembic-1.11.1 → alembic-1.11.2}/tests/test_impl.py +0 -0
  226. {alembic-1.11.1 → alembic-1.11.2}/tests/test_mssql.py +0 -0
  227. {alembic-1.11.1 → alembic-1.11.2}/tests/test_mysql.py +0 -0
  228. {alembic-1.11.1 → alembic-1.11.2}/tests/test_op_naming_convention.py +0 -0
  229. {alembic-1.11.1 → alembic-1.11.2}/tests/test_oracle.py +0 -0
  230. {alembic-1.11.1 → alembic-1.11.2}/tests/test_script_production.py +0 -0
  231. {alembic-1.11.1 → alembic-1.11.2}/tests/test_stubs.py +0 -0
  232. {alembic-1.11.1 → alembic-1.11.2}/tests/test_suite.py +0 -0
  233. {alembic-1.11.1 → alembic-1.11.2}/tests/test_version_table.py +0 -0
@@ -0,0 +1,5 @@
1
+ [run]
2
+ include=alembic/*
3
+
4
+ [report]
5
+ omit=alembic/testing/*
@@ -0,0 +1,6 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: alembic
4
+ patreon: zzzeek
5
+ tidelift: "pypi/SQLAlchemy"
6
+
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: requires triage
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ <!-- A clear and concise description of what the bug is. -->
12
+
13
+ **Expected behavior**
14
+ <!-- A clear and concise description of what you expected to happen. -->
15
+
16
+ **To Reproduce**
17
+ Please try to provide a [Minimal, Complete, and Verifiable](http://stackoverflow.com/help/mcve) example, with the migration script and/or the SQLAlchemy tables or models involved.
18
+ See also [Reporting Bugs](https://www.sqlalchemy.org/participate.html#bugs) on the website.
19
+
20
+ ```py
21
+ # Insert code here
22
+ ```
23
+
24
+ **Error**
25
+
26
+ ```
27
+ # Copy error here. Please include the full stack trace.
28
+ ```
29
+
30
+ **Versions.**
31
+ - OS:
32
+ - Python:
33
+ - Alembic:
34
+ - SQLAlchemy:
35
+ - Database:
36
+ - DBAPI:
37
+
38
+ **Additional context**
39
+ <!-- Add any other context about the problem here. -->
40
+
41
+ **Have a nice day!**
@@ -0,0 +1,15 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Usage Questions (GitHub Discussions)
4
+ url: https://github.com/sqlalchemy/alembic/discussions/new?category=Usage-Questions
5
+ about: Questions and Answers for Alembic Users
6
+ - name: Live Chat on Gitter
7
+ url: https://gitter.im/sqlalchemy/community
8
+ about: Searchable Web-Based Chat
9
+ - name: Ideas / Feature Proposal (GitHub Discussions)
10
+ url: https://github.com/sqlalchemy/alembic/discussions/new?category=Ideas
11
+ about: Use this for initial discussion for new features and suggestions
12
+ - name: SQLAlchemy Community Guide
13
+ url: https://www.sqlalchemy.org/support.html
14
+ about: Start here for an overview of SQLAlchemy's support network and posting guidelines
15
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: Request a new use case
3
+ about: Support for new SQL syntaxes, database capabilities, DBAPIs and DBAPI features
4
+ title: ''
5
+ labels: requires triage,use case
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the use case**
11
+ <!-- A clear and concise description of what the SQL or database capability is. -->
12
+
13
+ **Databases / Backends / Drivers targeted**
14
+
15
+ <!-- what database(s) is this for? What drivers? -->
16
+
17
+ **Example Use**
18
+ <!-- provide a clear example of what the SQL looks like, or what the DBAPI code looks like -->
19
+
20
+
21
+ **Additional context**
22
+ <!-- Add any other context about the problem here. -->
23
+
24
+ **Have a nice day!**
@@ -0,0 +1,27 @@
1
+ <!-- Provide a general summary of your proposed changes in the Title field above -->
2
+
3
+ ### Description
4
+ <!-- Describe your changes in detail -->
5
+
6
+ ### Checklist
7
+ <!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)
8
+
9
+ -->
10
+
11
+ This pull request is:
12
+
13
+ - [ ] A documentation / typographical error fix
14
+ - Good to go, no issue or tests are needed
15
+ - [ ] A short code fix
16
+ - please include the issue number, and create an issue if none exists, which
17
+ must include a complete example of the issue. one line code fixes without an
18
+ issue and demonstration will not be accepted.
19
+ - Please include: `Fixes: #<issue number>` in the commit message
20
+ - please include tests. one line code fixes without tests will not be accepted.
21
+ - [ ] A new feature implementation
22
+ - please include the issue number, and create an issue if none exists, which must
23
+ include a complete example of how the feature would look.
24
+ - Please include: `Fixes: #<issue number>` in the commit message
25
+ - please include tests.
26
+
27
+ **Have a nice day!**
@@ -0,0 +1,85 @@
1
+ name: Run tests on a pr
2
+
3
+ on:
4
+ # run on pull request to main excluding changes that are only on doc or example folders
5
+ pull_request:
6
+ branches:
7
+ - main
8
+ paths-ignore:
9
+ - "docs/**"
10
+
11
+ env:
12
+ # global env to all steps
13
+ TOX_WORKERS: -n2
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ run-test-amd64:
20
+ name: ${{ matrix.python-version }}-${{ matrix.sqlalchemy }}-${{ matrix.os }}
21
+ runs-on: ${{ matrix.os }}
22
+ strategy:
23
+ # run this job using this matrix, excluding some combinations below.
24
+ matrix:
25
+ os:
26
+ - "ubuntu-latest"
27
+ python-version:
28
+ - "3.11"
29
+ sqlalchemy:
30
+ - sqla13
31
+ - sqla14
32
+ - sqlamain
33
+ # abort all jobs as soon as one fails
34
+ fail-fast: true
35
+
36
+ # steps to run in each job. Some are github actions, others run shell commands
37
+ steps:
38
+ - name: Checkout repo
39
+ uses: actions/checkout@v2
40
+
41
+ - name: Set up python
42
+ uses: actions/setup-python@v2
43
+ with:
44
+ python-version: ${{ matrix.python-version }}
45
+ architecture: ${{ matrix.architecture }}
46
+
47
+ - name: Install dependencies
48
+ run: |
49
+ python -m pip install --upgrade pip
50
+ pip install --upgrade tox setuptools
51
+ pip list
52
+
53
+ - name: Run tests
54
+ run: tox -e py-${{ matrix.sqlalchemy }}
55
+
56
+ run-pep484:
57
+ name: pep484-${{ matrix.python-version }}-${{ matrix.os }}
58
+ runs-on: ${{ matrix.os }}
59
+ strategy:
60
+ matrix:
61
+ os:
62
+ - "ubuntu-latest"
63
+ python-version:
64
+ - "3.11"
65
+
66
+ fail-fast: false
67
+
68
+ steps:
69
+ - name: Checkout repo
70
+ uses: actions/checkout@v2
71
+
72
+ - name: Set up python
73
+ uses: actions/setup-python@v2
74
+ with:
75
+ python-version: ${{ matrix.python-version }}
76
+ architecture: ${{ matrix.architecture }}
77
+
78
+ - name: Install dependencies
79
+ run: |
80
+ python -m pip install --upgrade pip
81
+ pip install --upgrade tox setuptools
82
+ pip list
83
+
84
+ - name: Run pep484
85
+ run: tox -e pep484
@@ -0,0 +1,96 @@
1
+ name: Run tests
2
+
3
+ on:
4
+ # run on push in main or rel_* branches excluding changes are only on doc or example folders
5
+ push:
6
+ branches:
7
+ - main
8
+ - "rel_*"
9
+ # branches used to test the workflow
10
+ - "workflow_test_*"
11
+ paths-ignore:
12
+ - "docs/**"
13
+
14
+ env:
15
+ # global env to all steps
16
+ TOX_WORKERS: -n2
17
+
18
+ permissions:
19
+ contents: read
20
+
21
+ jobs:
22
+ run-test:
23
+ name: ${{ matrix.python-version }}-${{ matrix.sqlalchemy }}-${{ matrix.os }}
24
+ runs-on: ${{ matrix.os }}
25
+ strategy:
26
+ # run this job using this matrix, excluding some combinations below.
27
+ matrix:
28
+ os:
29
+ - "ubuntu-latest"
30
+ - "windows-latest"
31
+ - "macos-latest"
32
+ python-version:
33
+ - "3.7"
34
+ - "3.8"
35
+ - "3.9"
36
+ - "3.10"
37
+ - "3.11"
38
+ sqlalchemy:
39
+ - sqla13
40
+ - sqla14
41
+ - sqlamain
42
+
43
+ fail-fast: false
44
+
45
+ # steps to run in each job. Some are github actions, others run shell commands
46
+ steps:
47
+ - name: Checkout repo
48
+ uses: actions/checkout@v2
49
+
50
+ - name: Set up python
51
+ uses: actions/setup-python@v2
52
+ with:
53
+ python-version: ${{ matrix.python-version }}
54
+ architecture: ${{ matrix.architecture }}
55
+
56
+ - name: Install dependencies
57
+ run: |
58
+ python -m pip install --upgrade pip
59
+ pip install --upgrade tox setuptools
60
+ pip list
61
+
62
+ - name: Run tests
63
+ run: tox -e py-${{ matrix.sqlalchemy }}
64
+
65
+ run-pep484:
66
+ name: pep484-${{ matrix.python-version }}-${{ matrix.os }}
67
+ runs-on: ${{ matrix.os }}
68
+ strategy:
69
+ matrix:
70
+ os:
71
+ - "ubuntu-latest"
72
+ python-version:
73
+ - "3.9"
74
+ - "3.10"
75
+ - "3.11"
76
+
77
+ fail-fast: false
78
+
79
+ steps:
80
+ - name: Checkout repo
81
+ uses: actions/checkout@v2
82
+
83
+ - name: Set up python
84
+ uses: actions/setup-python@v2
85
+ with:
86
+ python-version: ${{ matrix.python-version }}
87
+ architecture: ${{ matrix.architecture }}
88
+
89
+ - name: Install dependencies
90
+ run: |
91
+ python -m pip install --upgrade pip
92
+ pip install --upgrade tox setuptools
93
+ pip list
94
+
95
+ - name: Run tox pep484
96
+ run: tox -e pep484
@@ -0,0 +1,24 @@
1
+ *.pyc
2
+ *.pyo
3
+ /build/
4
+ dist/
5
+ /docs/build/output/
6
+ *.orig
7
+ alembic.ini
8
+ .venv
9
+ /venv/
10
+ *.egg-info
11
+ .coverage
12
+ coverage.xml
13
+ .tox
14
+ *.patch
15
+ /scratch
16
+ /scratch_test_*
17
+ /test_schema.db
18
+ /test.cfg
19
+ .idea/
20
+ .vscode/
21
+ .pytest_cache/
22
+ /docs/build/_build/
23
+ /pysqlite_test_schema.db
24
+ *.sqlite3
@@ -0,0 +1,6 @@
1
+ [gerrit]
2
+ host=gerrit.sqlalchemy.org
3
+ project=sqlalchemy/alembic
4
+ defaultbranch=main
5
+ port=29418
6
+
@@ -0,0 +1,31 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ repos:
4
+ - repo: https://github.com/python/black
5
+ rev: 23.3.0
6
+ hooks:
7
+ - id: black
8
+
9
+ - repo: https://github.com/sqlalchemyorg/zimports
10
+ rev: v0.6.0
11
+ hooks:
12
+ - id: zimports
13
+ args:
14
+ - --keep-unused-type-checking
15
+
16
+ - repo: https://github.com/pycqa/flake8
17
+ rev: 6.0.0
18
+ hooks:
19
+ - id: flake8
20
+ additional_dependencies:
21
+ - flake8-import-order
22
+ - flake8-import-single==0.1.5
23
+ - flake8-builtins
24
+ - flake8-docstrings
25
+ - flake8-rst-docstrings
26
+ - pydocstyle<4.0.0
27
+ - pygments
28
+
29
+
30
+
31
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: alembic
3
- Version: 1.11.1
3
+ Version: 1.11.2
4
4
  Summary: A database migration tool for SQLAlchemy.
5
5
  Home-page: https://alembic.sqlalchemy.org
6
6
  Author: Mike Bayer
@@ -3,4 +3,4 @@ import sys
3
3
  from . import context
4
4
  from . import op
5
5
 
6
- __version__ = "1.11.1"
6
+ __version__ = "1.11.2"
@@ -331,7 +331,6 @@ class AutogenContext:
331
331
  opts: Optional[dict] = None,
332
332
  autogenerate: bool = True,
333
333
  ) -> None:
334
-
335
334
  if (
336
335
  autogenerate
337
336
  and migration_context is not None
@@ -431,7 +430,6 @@ class AutogenContext:
431
430
  parent_names["schema_qualified_table_name"] = table_name
432
431
 
433
432
  for fn in self._name_filters:
434
-
435
433
  if not fn(name, type_, parent_names):
436
434
  return False
437
435
  else:
@@ -66,7 +66,6 @@ comparators = util.Dispatcher(uselist=True)
66
66
  def _produce_net_changes(
67
67
  autogen_context: AutogenContext, upgrade_ops: UpgradeOps
68
68
  ) -> None:
69
-
70
69
  connection = autogen_context.connection
71
70
  assert connection is not None
72
71
  include_schemas = autogen_context.opts.get("include_schemas", False)
@@ -145,7 +144,6 @@ def _compare_tables(
145
144
  upgrade_ops: UpgradeOps,
146
145
  autogen_context: AutogenContext,
147
146
  ) -> None:
148
-
149
147
  default_schema = inspector.bind.dialect.default_schema_name
150
148
 
151
149
  # tables coming from the connection will not have "schema"
@@ -214,7 +212,6 @@ def _compare_tables(
214
212
  )
215
213
  sqla_compat._reflect_table(inspector, t)
216
214
  if autogen_context.run_object_filters(t, tname, "table", True, None):
217
-
218
215
  modify_table_ops = ops.ModifyTableOps(tname, [], schema=s)
219
216
 
220
217
  comparators.dispatch("table")(
@@ -255,7 +252,6 @@ def _compare_tables(
255
252
  if autogen_context.run_object_filters(
256
253
  metadata_table, tname, "table", False, conn_table
257
254
  ):
258
-
259
255
  modify_table_ops = ops.ModifyTableOps(tname, [], schema=s)
260
256
  with _compare_columns(
261
257
  s,
@@ -266,7 +262,6 @@ def _compare_tables(
266
262
  autogen_context,
267
263
  inspector,
268
264
  ):
269
-
270
265
  comparators.dispatch("table")(
271
266
  autogen_context,
272
267
  modify_table_ops,
@@ -449,11 +444,11 @@ class _uq_constraint_sig(_constraint_sig):
449
444
  is_index = False
450
445
  is_unique = True
451
446
 
452
- def __init__(self, const: UniqueConstraint) -> None:
447
+ def __init__(self, const: UniqueConstraint, impl: DefaultImpl) -> None:
453
448
  self.const = const
454
449
  self.name = const.name
455
- self.sig = ("UNIQUE_CONSTRAINT",) + tuple(
456
- sorted([col.name for col in const.columns])
450
+ self.sig = ("UNIQUE_CONSTRAINT",) + impl.create_unique_constraint_sig(
451
+ const
457
452
  )
458
453
 
459
454
  @property
@@ -534,7 +529,6 @@ def _compare_indexes_and_uniques(
534
529
  conn_table: Optional[Table],
535
530
  metadata_table: Optional[Table],
536
531
  ) -> None:
537
-
538
532
  inspector = autogen_context.inspector
539
533
  is_create_table = conn_table is None
540
534
  is_drop_table = metadata_table is None
@@ -622,6 +616,7 @@ def _compare_indexes_and_uniques(
622
616
  # 2a. if the dialect dupes unique indexes as unique constraints
623
617
  # (mysql and oracle), correct for that
624
618
 
619
+ impl = autogen_context.migration_context.impl
625
620
  if unique_constraints_duplicate_unique_indexes:
626
621
  _correct_for_uq_duplicates_uix(
627
622
  conn_uniques,
@@ -629,6 +624,7 @@ def _compare_indexes_and_uniques(
629
624
  metadata_unique_constraints,
630
625
  metadata_indexes,
631
626
  autogen_context.dialect,
627
+ impl,
632
628
  )
633
629
 
634
630
  # 3. give the dialect a chance to omit indexes and constraints that
@@ -646,15 +642,16 @@ def _compare_indexes_and_uniques(
646
642
  # Index and UniqueConstraint so we can easily work with them
647
643
  # interchangeably
648
644
  metadata_unique_constraints_sig = {
649
- _uq_constraint_sig(uq) for uq in metadata_unique_constraints
645
+ _uq_constraint_sig(uq, impl) for uq in metadata_unique_constraints
650
646
  }
651
647
 
652
- impl = autogen_context.migration_context.impl
653
648
  metadata_indexes_sig = {
654
649
  _ix_constraint_sig(ix, impl) for ix in metadata_indexes
655
650
  }
656
651
 
657
- conn_unique_constraints = {_uq_constraint_sig(uq) for uq in conn_uniques}
652
+ conn_unique_constraints = {
653
+ _uq_constraint_sig(uq, impl) for uq in conn_uniques
654
+ }
658
655
 
659
656
  conn_indexes_sig = {_ix_constraint_sig(ix, impl) for ix in conn_indexes}
660
657
 
@@ -864,6 +861,7 @@ def _correct_for_uq_duplicates_uix(
864
861
  metadata_unique_constraints,
865
862
  metadata_indexes,
866
863
  dialect,
864
+ impl,
867
865
  ):
868
866
  # dedupe unique indexes vs. constraints, since MySQL / Oracle
869
867
  # doesn't really have unique constraints as a separate construct.
@@ -886,7 +884,7 @@ def _correct_for_uq_duplicates_uix(
886
884
  }
887
885
 
888
886
  unnamed_metadata_uqs = {
889
- _uq_constraint_sig(cons).sig
887
+ _uq_constraint_sig(cons, impl).sig
890
888
  for name, cons in metadata_cons_names
891
889
  if name is None
892
890
  }
@@ -910,10 +908,9 @@ def _correct_for_uq_duplicates_uix(
910
908
  for overlap in uqs_dupe_indexes:
911
909
  if overlap not in metadata_uq_names:
912
910
  if (
913
- _uq_constraint_sig(uqs_dupe_indexes[overlap]).sig
911
+ _uq_constraint_sig(uqs_dupe_indexes[overlap], impl).sig
914
912
  not in unnamed_metadata_uqs
915
913
  ):
916
-
917
914
  conn_unique_constraints.discard(uqs_dupe_indexes[overlap])
918
915
  elif overlap not in metadata_ix_names:
919
916
  conn_indexes.discard(conn_ix_names[overlap])
@@ -929,7 +926,6 @@ def _compare_nullable(
929
926
  conn_col: Column[Any],
930
927
  metadata_col: Column[Any],
931
928
  ) -> None:
932
-
933
929
  metadata_col_nullable = metadata_col.nullable
934
930
  conn_col_nullable = conn_col.nullable
935
931
  alter_column_op.existing_nullable = conn_col_nullable
@@ -971,7 +967,6 @@ def _setup_autoincrement(
971
967
  conn_col: Column[Any],
972
968
  metadata_col: Column[Any],
973
969
  ) -> None:
974
-
975
970
  if metadata_col.table._autoincrement_column is metadata_col:
976
971
  alter_column_op.kw["autoincrement"] = True
977
972
  elif metadata_col.autoincrement is True:
@@ -990,7 +985,6 @@ def _compare_type(
990
985
  conn_col: Column[Any],
991
986
  metadata_col: Column[Any],
992
987
  ) -> None:
993
-
994
988
  conn_type = conn_col.type
995
989
  alter_column_op.existing_type = conn_type
996
990
  metadata_type = metadata_col.type
@@ -1027,7 +1021,6 @@ def _compare_type(
1027
1021
  def _render_server_default_for_compare(
1028
1022
  metadata_default: Optional[Any], autogen_context: AutogenContext
1029
1023
  ) -> Optional[str]:
1030
-
1031
1024
  if isinstance(metadata_default, sa_schema.DefaultClause):
1032
1025
  if isinstance(metadata_default.arg, str):
1033
1026
  metadata_default = metadata_default.arg
@@ -1129,7 +1122,6 @@ def _compare_server_default(
1129
1122
  conn_col: Column[Any],
1130
1123
  metadata_col: Column[Any],
1131
1124
  ) -> Optional[bool]:
1132
-
1133
1125
  metadata_default = metadata_col.server_default
1134
1126
  conn_col_default = conn_col.server_default
1135
1127
  if conn_col_default is None and metadata_default is None:
@@ -1218,7 +1210,6 @@ def _compare_column_comment(
1218
1210
  conn_col: Column[Any],
1219
1211
  metadata_col: Column[Any],
1220
1212
  ) -> Optional[Literal[False]]:
1221
-
1222
1213
  assert autogen_context.dialect is not None
1223
1214
  if not autogen_context.dialect.supports_comments:
1224
1215
  return None
@@ -1246,7 +1237,6 @@ def _compare_foreign_keys(
1246
1237
  conn_table: Optional[Table],
1247
1238
  metadata_table: Optional[Table],
1248
1239
  ) -> None:
1249
-
1250
1240
  # if we're doing CREATE TABLE, all FKs are created
1251
1241
  # inline within the table def
1252
1242
  if conn_table is None or metadata_table is None:
@@ -1366,7 +1356,6 @@ def _compare_table_comment(
1366
1356
  conn_table: Optional[Table],
1367
1357
  metadata_table: Optional[Table],
1368
1358
  ) -> None:
1369
-
1370
1359
  assert autogen_context.dialect is not None
1371
1360
  if not autogen_context.dialect.supports_comments:
1372
1361
  return