alembic 1.13.3__tar.gz → 1.14.1__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 (240) hide show
  1. {alembic-1.13.3 → alembic-1.14.1}/LICENSE +1 -1
  2. {alembic-1.13.3/alembic.egg-info → alembic-1.14.1}/PKG-INFO +3 -2
  3. {alembic-1.13.3 → alembic-1.14.1}/alembic/__init__.py +1 -1
  4. {alembic-1.13.3 → alembic-1.14.1}/alembic/autogenerate/api.py +2 -2
  5. {alembic-1.13.3 → alembic-1.14.1}/alembic/autogenerate/render.py +4 -3
  6. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/base.py +9 -9
  7. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/impl.py +39 -2
  8. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/postgresql.py +2 -1
  9. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/sqlite.py +11 -0
  10. {alembic-1.13.3 → alembic-1.14.1}/alembic/runtime/migration.py +12 -17
  11. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/async/alembic.ini.mako +6 -4
  12. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/generic/alembic.ini.mako +6 -4
  13. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/multidb/alembic.ini.mako +6 -4
  14. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/env.py +4 -4
  15. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/compat.py +1 -0
  16. {alembic-1.13.3 → alembic-1.14.1/alembic.egg-info}/PKG-INFO +3 -2
  17. {alembic-1.13.3 → alembic-1.14.1}/alembic.egg-info/SOURCES.txt +2 -5
  18. {alembic-1.13.3 → alembic-1.14.1}/alembic.egg-info/requires.txt +1 -0
  19. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/autogenerate.rst +8 -6
  20. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/changelog.rst +45 -0
  21. {alembic-1.13.3/docs/build → alembic-1.14.1/docs/_sources}/naming.rst +2 -0
  22. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/tutorial.rst +7 -7
  23. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/basic.css +3 -14
  24. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/doctools.js +0 -7
  25. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/documentation_options.js +1 -1
  26. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/language_data.js +0 -7
  27. alembic-1.14.1/docs/_static/pygments.css +152 -0
  28. alembic-1.14.1/docs/_static/scripts/fontawesome.js +3 -0
  29. alembic-1.14.1/docs/_static/scripts/pydata-sphinx-theme.js +2 -0
  30. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/searchtools.js +25 -13
  31. alembic-1.14.1/docs/_static/styles/pydata-sphinx-theme.css +32 -0
  32. alembic-1.14.1/docs/_static/webpack-macros.html +24 -0
  33. {alembic-1.13.3 → alembic-1.14.1}/docs/api/autogenerate.html +95 -108
  34. {alembic-1.13.3 → alembic-1.14.1}/docs/api/commands.html +68 -81
  35. {alembic-1.13.3 → alembic-1.14.1}/docs/api/config.html +68 -81
  36. {alembic-1.13.3 → alembic-1.14.1}/docs/api/ddl.html +191 -181
  37. {alembic-1.13.3 → alembic-1.14.1}/docs/api/index.html +49 -63
  38. {alembic-1.13.3 → alembic-1.14.1}/docs/api/operations.html +121 -134
  39. {alembic-1.13.3 → alembic-1.14.1}/docs/api/overview.html +49 -63
  40. {alembic-1.13.3 → alembic-1.14.1}/docs/api/runtime.html +91 -104
  41. {alembic-1.13.3 → alembic-1.14.1}/docs/api/script.html +92 -105
  42. {alembic-1.13.3 → alembic-1.14.1}/docs/autogenerate.html +87 -98
  43. {alembic-1.13.3 → alembic-1.14.1}/docs/batch.html +53 -66
  44. {alembic-1.13.3 → alembic-1.14.1}/docs/branches.html +55 -68
  45. {alembic-1.13.3 → alembic-1.14.1}/docs/build/autogenerate.rst +8 -6
  46. {alembic-1.13.3 → alembic-1.14.1}/docs/build/changelog.rst +45 -0
  47. {alembic-1.13.3 → alembic-1.14.1}/docs/build/conf.py +3 -3
  48. {alembic-1.13.3/docs/_sources → alembic-1.14.1/docs/build}/naming.rst +2 -0
  49. {alembic-1.13.3 → alembic-1.14.1}/docs/build/tutorial.rst +7 -7
  50. {alembic-1.13.3 → alembic-1.14.1}/docs/changelog.html +118 -64
  51. {alembic-1.13.3 → alembic-1.14.1}/docs/cookbook.html +155 -168
  52. {alembic-1.13.3 → alembic-1.14.1}/docs/front.html +51 -64
  53. {alembic-1.13.3 → alembic-1.14.1}/docs/genindex.html +55 -63
  54. {alembic-1.13.3 → alembic-1.14.1}/docs/index.html +60 -64
  55. {alembic-1.13.3 → alembic-1.14.1}/docs/naming.html +60 -71
  56. {alembic-1.13.3 → alembic-1.14.1}/docs/offline.html +56 -69
  57. {alembic-1.13.3 → alembic-1.14.1}/docs/ops.html +125 -138
  58. {alembic-1.13.3 → alembic-1.14.1}/docs/py-modindex.html +49 -63
  59. {alembic-1.13.3 → alembic-1.14.1}/docs/search.html +49 -64
  60. alembic-1.14.1/docs/searchindex.js +1 -0
  61. {alembic-1.13.3 → alembic-1.14.1}/docs/tutorial.html +68 -81
  62. {alembic-1.13.3 → alembic-1.14.1}/setup.cfg +1 -0
  63. {alembic-1.13.3 → alembic-1.14.1}/tests/requirements.py +6 -2
  64. {alembic-1.13.3 → alembic-1.14.1}/tests/test_autogen_render.py +35 -15
  65. {alembic-1.13.3 → alembic-1.14.1}/tests/test_sqlite.py +5 -0
  66. {alembic-1.13.3 → alembic-1.14.1}/tests/test_version_table.py +46 -0
  67. {alembic-1.13.3 → alembic-1.14.1}/tox.ini +9 -0
  68. alembic-1.13.3/docs/_static/pygments.css +0 -152
  69. alembic-1.13.3/docs/_static/scripts/pydata-sphinx-theme.js +0 -2
  70. alembic-1.13.3/docs/_static/styles/bootstrap.css +0 -6
  71. alembic-1.13.3/docs/_static/styles/pydata-sphinx-theme.css +0 -2
  72. alembic-1.13.3/docs/_static/vendor/fontawesome/6.5.2/LICENSE.txt +0 -165
  73. alembic-1.13.3/docs/_static/vendor/fontawesome/6.5.2/css/all.min.css +0 -5
  74. alembic-1.13.3/docs/_static/vendor/fontawesome/6.5.2/js/all.min.js +0 -2
  75. alembic-1.13.3/docs/_static/webpack-macros.html +0 -31
  76. alembic-1.13.3/docs/searchindex.js +0 -1
  77. {alembic-1.13.3 → alembic-1.14.1}/CHANGES +0 -0
  78. {alembic-1.13.3 → alembic-1.14.1}/MANIFEST.in +0 -0
  79. {alembic-1.13.3 → alembic-1.14.1}/README.rst +0 -0
  80. {alembic-1.13.3 → alembic-1.14.1}/README.unittests.rst +0 -0
  81. {alembic-1.13.3 → alembic-1.14.1}/alembic/__main__.py +0 -0
  82. {alembic-1.13.3 → alembic-1.14.1}/alembic/autogenerate/__init__.py +0 -0
  83. {alembic-1.13.3 → alembic-1.14.1}/alembic/autogenerate/compare.py +0 -0
  84. {alembic-1.13.3 → alembic-1.14.1}/alembic/autogenerate/rewriter.py +0 -0
  85. {alembic-1.13.3 → alembic-1.14.1}/alembic/command.py +0 -0
  86. {alembic-1.13.3 → alembic-1.14.1}/alembic/config.py +0 -0
  87. {alembic-1.13.3 → alembic-1.14.1}/alembic/context.py +0 -0
  88. {alembic-1.13.3 → alembic-1.14.1}/alembic/context.pyi +0 -0
  89. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/__init__.py +0 -0
  90. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/_autogen.py +0 -0
  91. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/mssql.py +0 -0
  92. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/mysql.py +0 -0
  93. {alembic-1.13.3 → alembic-1.14.1}/alembic/ddl/oracle.py +0 -0
  94. {alembic-1.13.3 → alembic-1.14.1}/alembic/environment.py +0 -0
  95. {alembic-1.13.3 → alembic-1.14.1}/alembic/migration.py +0 -0
  96. {alembic-1.13.3 → alembic-1.14.1}/alembic/op.py +0 -0
  97. {alembic-1.13.3 → alembic-1.14.1}/alembic/op.pyi +0 -0
  98. {alembic-1.13.3 → alembic-1.14.1}/alembic/operations/__init__.py +0 -0
  99. {alembic-1.13.3 → alembic-1.14.1}/alembic/operations/base.py +0 -0
  100. {alembic-1.13.3 → alembic-1.14.1}/alembic/operations/batch.py +0 -0
  101. {alembic-1.13.3 → alembic-1.14.1}/alembic/operations/ops.py +0 -0
  102. {alembic-1.13.3 → alembic-1.14.1}/alembic/operations/schemaobj.py +0 -0
  103. {alembic-1.13.3 → alembic-1.14.1}/alembic/operations/toimpl.py +0 -0
  104. {alembic-1.13.3 → alembic-1.14.1}/alembic/py.typed +0 -0
  105. {alembic-1.13.3 → alembic-1.14.1}/alembic/runtime/__init__.py +0 -0
  106. {alembic-1.13.3 → alembic-1.14.1}/alembic/runtime/environment.py +0 -0
  107. {alembic-1.13.3 → alembic-1.14.1}/alembic/script/__init__.py +0 -0
  108. {alembic-1.13.3 → alembic-1.14.1}/alembic/script/base.py +0 -0
  109. {alembic-1.13.3 → alembic-1.14.1}/alembic/script/revision.py +0 -0
  110. {alembic-1.13.3 → alembic-1.14.1}/alembic/script/write_hooks.py +0 -0
  111. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/async/README +0 -0
  112. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/async/env.py +0 -0
  113. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/async/script.py.mako +0 -0
  114. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/generic/README +0 -0
  115. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/generic/env.py +0 -0
  116. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/generic/script.py.mako +0 -0
  117. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/multidb/README +0 -0
  118. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/multidb/env.py +0 -0
  119. {alembic-1.13.3 → alembic-1.14.1}/alembic/templates/multidb/script.py.mako +0 -0
  120. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/__init__.py +0 -0
  121. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/assertions.py +0 -0
  122. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/fixtures.py +0 -0
  123. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/plugin/__init__.py +0 -0
  124. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/plugin/bootstrap.py +0 -0
  125. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/requirements.py +0 -0
  126. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/schemacompare.py +0 -0
  127. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/__init__.py +0 -0
  128. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/_autogen_fixtures.py +0 -0
  129. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_autogen_comments.py +0 -0
  130. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_autogen_computed.py +0 -0
  131. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_autogen_diffs.py +0 -0
  132. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_autogen_fks.py +0 -0
  133. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_autogen_identity.py +0 -0
  134. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_environment.py +0 -0
  135. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/suite/test_op.py +0 -0
  136. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/util.py +0 -0
  137. {alembic-1.13.3 → alembic-1.14.1}/alembic/testing/warnings.py +0 -0
  138. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/__init__.py +0 -0
  139. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/editor.py +0 -0
  140. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/exc.py +0 -0
  141. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/langhelpers.py +0 -0
  142. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/messaging.py +0 -0
  143. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/pyfiles.py +0 -0
  144. {alembic-1.13.3 → alembic-1.14.1}/alembic/util/sqla_compat.py +0 -0
  145. {alembic-1.13.3 → alembic-1.14.1}/alembic.egg-info/dependency_links.txt +0 -0
  146. {alembic-1.13.3 → alembic-1.14.1}/alembic.egg-info/entry_points.txt +0 -0
  147. {alembic-1.13.3 → alembic-1.14.1}/alembic.egg-info/not-zip-safe +0 -0
  148. {alembic-1.13.3 → alembic-1.14.1}/alembic.egg-info/top_level.txt +0 -0
  149. {alembic-1.13.3 → alembic-1.14.1}/docs/_images/api_overview.png +0 -0
  150. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/autogenerate.rst +0 -0
  151. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/commands.rst +0 -0
  152. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/config.rst +0 -0
  153. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/ddl.rst +0 -0
  154. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/index.rst +0 -0
  155. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/operations.rst +0 -0
  156. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/overview.rst +0 -0
  157. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/runtime.rst +0 -0
  158. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/api/script.rst +0 -0
  159. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/batch.rst +0 -0
  160. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/branches.rst +0 -0
  161. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/cookbook.rst +0 -0
  162. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/front.rst +0 -0
  163. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/index.rst +0 -0
  164. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/offline.rst +0 -0
  165. {alembic-1.13.3 → alembic-1.14.1}/docs/_sources/ops.rst +0 -0
  166. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/changelog.css +0 -0
  167. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/clipboard.min.js +0 -0
  168. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/copybutton.css +0 -0
  169. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/copybutton.js +0 -0
  170. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/copybutton_funcs.js +0 -0
  171. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/file.png +0 -0
  172. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/images/logo_colab.png +0 -0
  173. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/minus.png +0 -0
  174. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/nature_override.css +0 -0
  175. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/plus.png +0 -0
  176. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/sbt-webpack-macros.html +0 -0
  177. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/scripts/bootstrap.js +0 -0
  178. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/scripts/bootstrap.js.LICENSE.txt +0 -0
  179. alembic-1.13.3/docs/_static/vendor/fontawesome/6.5.2/js/all.min.js.LICENSE.txt → alembic-1.14.1/docs/_static/scripts/fontawesome.js.LICENSE.txt +0 -0
  180. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/scripts/sphinx-book-theme.js +0 -0
  181. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/site_custom_css.css +0 -0
  182. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/sphinx_highlight.js +0 -0
  183. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/sphinx_paramlinks.css +0 -0
  184. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/styles/sphinx-book-theme.css +0 -0
  185. {alembic-1.13.3 → alembic-1.14.1}/docs/_static/styles/theme.css +0 -0
  186. {alembic-1.13.3 → alembic-1.14.1}/docs/build/Makefile +0 -0
  187. {alembic-1.13.3 → alembic-1.14.1}/docs/build/_static/nature_override.css +0 -0
  188. {alembic-1.13.3 → alembic-1.14.1}/docs/build/_static/site_custom_css.css +0 -0
  189. {alembic-1.13.3 → alembic-1.14.1}/docs/build/_templates/site_custom_sidebars.html +0 -0
  190. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/api_overview.png +0 -0
  191. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/autogenerate.rst +0 -0
  192. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/commands.rst +0 -0
  193. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/config.rst +0 -0
  194. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/ddl.rst +0 -0
  195. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/index.rst +0 -0
  196. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/operations.rst +0 -0
  197. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/overview.rst +0 -0
  198. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/runtime.rst +0 -0
  199. {alembic-1.13.3 → alembic-1.14.1}/docs/build/api/script.rst +0 -0
  200. {alembic-1.13.3 → alembic-1.14.1}/docs/build/batch.rst +0 -0
  201. {alembic-1.13.3 → alembic-1.14.1}/docs/build/branches.rst +0 -0
  202. {alembic-1.13.3 → alembic-1.14.1}/docs/build/cookbook.rst +0 -0
  203. {alembic-1.13.3 → alembic-1.14.1}/docs/build/front.rst +0 -0
  204. {alembic-1.13.3 → alembic-1.14.1}/docs/build/index.rst +0 -0
  205. {alembic-1.13.3 → alembic-1.14.1}/docs/build/offline.rst +0 -0
  206. {alembic-1.13.3 → alembic-1.14.1}/docs/build/ops.rst +0 -0
  207. {alembic-1.13.3 → alembic-1.14.1}/docs/build/requirements.txt +0 -0
  208. {alembic-1.13.3 → alembic-1.14.1}/docs/build/unreleased/README.txt +0 -0
  209. {alembic-1.13.3 → alembic-1.14.1}/pyproject.toml +0 -0
  210. {alembic-1.13.3 → alembic-1.14.1}/setup.py +0 -0
  211. {alembic-1.13.3 → alembic-1.14.1}/tests/__init__.py +0 -0
  212. {alembic-1.13.3 → alembic-1.14.1}/tests/_large_map.py +0 -0
  213. {alembic-1.13.3 → alembic-1.14.1}/tests/conftest.py +0 -0
  214. {alembic-1.13.3 → alembic-1.14.1}/tests/test_autogen_composition.py +0 -0
  215. {alembic-1.13.3 → alembic-1.14.1}/tests/test_autogen_diffs.py +0 -0
  216. {alembic-1.13.3 → alembic-1.14.1}/tests/test_autogen_indexes.py +0 -0
  217. {alembic-1.13.3 → alembic-1.14.1}/tests/test_batch.py +0 -0
  218. {alembic-1.13.3 → alembic-1.14.1}/tests/test_bulk_insert.py +0 -0
  219. {alembic-1.13.3 → alembic-1.14.1}/tests/test_command.py +0 -0
  220. {alembic-1.13.3 → alembic-1.14.1}/tests/test_config.py +0 -0
  221. {alembic-1.13.3 → alembic-1.14.1}/tests/test_editor.py +0 -0
  222. {alembic-1.13.3 → alembic-1.14.1}/tests/test_environment.py +0 -0
  223. {alembic-1.13.3 → alembic-1.14.1}/tests/test_external_dialect.py +0 -0
  224. {alembic-1.13.3 → alembic-1.14.1}/tests/test_impl.py +0 -0
  225. {alembic-1.13.3 → alembic-1.14.1}/tests/test_messaging.py +0 -0
  226. {alembic-1.13.3 → alembic-1.14.1}/tests/test_mssql.py +0 -0
  227. {alembic-1.13.3 → alembic-1.14.1}/tests/test_mysql.py +0 -0
  228. {alembic-1.13.3 → alembic-1.14.1}/tests/test_offline_environment.py +0 -0
  229. {alembic-1.13.3 → alembic-1.14.1}/tests/test_op.py +0 -0
  230. {alembic-1.13.3 → alembic-1.14.1}/tests/test_op_naming_convention.py +0 -0
  231. {alembic-1.13.3 → alembic-1.14.1}/tests/test_oracle.py +0 -0
  232. {alembic-1.13.3 → alembic-1.14.1}/tests/test_post_write.py +0 -0
  233. {alembic-1.13.3 → alembic-1.14.1}/tests/test_postgresql.py +0 -0
  234. {alembic-1.13.3 → alembic-1.14.1}/tests/test_revision.py +0 -0
  235. {alembic-1.13.3 → alembic-1.14.1}/tests/test_script_consumption.py +0 -0
  236. {alembic-1.13.3 → alembic-1.14.1}/tests/test_script_production.py +0 -0
  237. {alembic-1.13.3 → alembic-1.14.1}/tests/test_stubs.py +0 -0
  238. {alembic-1.13.3 → alembic-1.14.1}/tests/test_suite.py +0 -0
  239. {alembic-1.13.3 → alembic-1.14.1}/tests/test_version_traversal.py +0 -0
  240. {alembic-1.13.3 → alembic-1.14.1}/tools/write_pyi.py +2 -2
@@ -1,4 +1,4 @@
1
- Copyright 2009-2024 Michael Bayer.
1
+ Copyright 2009-2025 Michael Bayer.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of
4
4
  this software and associated documentation files (the "Software"), to deal in
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: alembic
3
- Version: 1.13.3
3
+ Version: 1.14.1
4
4
  Summary: A database migration tool for SQLAlchemy.
5
5
  Home-page: https://alembic.sqlalchemy.org
6
6
  Author: Mike Bayer
@@ -35,6 +35,7 @@ Requires-Dist: importlib-resources; python_version < "3.9"
35
35
  Requires-Dist: typing-extensions>=4
36
36
  Provides-Extra: tz
37
37
  Requires-Dist: backports.zoneinfo; python_version < "3.9" and extra == "tz"
38
+ Requires-Dist: tzdata; extra == "tz"
38
39
 
39
40
  Alembic is a database migrations tool written by the author
40
41
  of `SQLAlchemy <http://www.sqlalchemy.org>`_. A migrations tool
@@ -1,4 +1,4 @@
1
1
  from . import context
2
2
  from . import op
3
3
 
4
- __version__ = "1.13.3"
4
+ __version__ = "1.14.1"
@@ -277,7 +277,7 @@ class AutogenContext:
277
277
  """Maintains configuration and state that's specific to an
278
278
  autogenerate operation."""
279
279
 
280
- metadata: Optional[MetaData] = None
280
+ metadata: Union[MetaData, Sequence[MetaData], None] = None
281
281
  """The :class:`~sqlalchemy.schema.MetaData` object
282
282
  representing the destination.
283
283
 
@@ -332,7 +332,7 @@ class AutogenContext:
332
332
  def __init__(
333
333
  self,
334
334
  migration_context: MigrationContext,
335
- metadata: Optional[MetaData] = None,
335
+ metadata: Union[MetaData, Sequence[MetaData], None] = None,
336
336
  opts: Optional[Dict[str, Any]] = None,
337
337
  autogenerate: bool = True,
338
338
  ) -> None:
@@ -831,7 +831,10 @@ def _repr_type(
831
831
 
832
832
  mod = type(type_).__module__
833
833
  imports = autogen_context.imports
834
- if mod.startswith("sqlalchemy.dialects"):
834
+
835
+ if not _skip_variants and sqla_compat._type_has_variants(type_):
836
+ return _render_Variant_type(type_, autogen_context)
837
+ elif mod.startswith("sqlalchemy.dialects"):
835
838
  match = re.match(r"sqlalchemy\.dialects\.(\w+)", mod)
836
839
  assert match is not None
837
840
  dname = match.group(1)
@@ -843,8 +846,6 @@ def _repr_type(
843
846
  return "%s.%r" % (dname, type_)
844
847
  elif impl_rt:
845
848
  return impl_rt
846
- elif not _skip_variants and sqla_compat._type_has_variants(type_):
847
- return _render_Variant_type(type_, autogen_context)
848
849
  elif mod.startswith("sqlalchemy."):
849
850
  if "_render_%s_type" % type_.__visit_name__ in globals():
850
851
  fn = globals()["_render_%s_type" % type_.__visit_name__]
@@ -175,7 +175,7 @@ class ColumnComment(AlterColumn):
175
175
  self.comment = comment
176
176
 
177
177
 
178
- @compiles(RenameTable) # type: ignore[misc]
178
+ @compiles(RenameTable)
179
179
  def visit_rename_table(
180
180
  element: RenameTable, compiler: DDLCompiler, **kw
181
181
  ) -> str:
@@ -185,7 +185,7 @@ def visit_rename_table(
185
185
  )
186
186
 
187
187
 
188
- @compiles(AddColumn) # type: ignore[misc]
188
+ @compiles(AddColumn)
189
189
  def visit_add_column(element: AddColumn, compiler: DDLCompiler, **kw) -> str:
190
190
  return "%s %s" % (
191
191
  alter_table(compiler, element.table_name, element.schema),
@@ -193,7 +193,7 @@ def visit_add_column(element: AddColumn, compiler: DDLCompiler, **kw) -> str:
193
193
  )
194
194
 
195
195
 
196
- @compiles(DropColumn) # type: ignore[misc]
196
+ @compiles(DropColumn)
197
197
  def visit_drop_column(element: DropColumn, compiler: DDLCompiler, **kw) -> str:
198
198
  return "%s %s" % (
199
199
  alter_table(compiler, element.table_name, element.schema),
@@ -201,7 +201,7 @@ def visit_drop_column(element: DropColumn, compiler: DDLCompiler, **kw) -> str:
201
201
  )
202
202
 
203
203
 
204
- @compiles(ColumnNullable) # type: ignore[misc]
204
+ @compiles(ColumnNullable)
205
205
  def visit_column_nullable(
206
206
  element: ColumnNullable, compiler: DDLCompiler, **kw
207
207
  ) -> str:
@@ -212,7 +212,7 @@ def visit_column_nullable(
212
212
  )
213
213
 
214
214
 
215
- @compiles(ColumnType) # type: ignore[misc]
215
+ @compiles(ColumnType)
216
216
  def visit_column_type(element: ColumnType, compiler: DDLCompiler, **kw) -> str:
217
217
  return "%s %s %s" % (
218
218
  alter_table(compiler, element.table_name, element.schema),
@@ -221,7 +221,7 @@ def visit_column_type(element: ColumnType, compiler: DDLCompiler, **kw) -> str:
221
221
  )
222
222
 
223
223
 
224
- @compiles(ColumnName) # type: ignore[misc]
224
+ @compiles(ColumnName)
225
225
  def visit_column_name(element: ColumnName, compiler: DDLCompiler, **kw) -> str:
226
226
  return "%s RENAME %s TO %s" % (
227
227
  alter_table(compiler, element.table_name, element.schema),
@@ -230,7 +230,7 @@ def visit_column_name(element: ColumnName, compiler: DDLCompiler, **kw) -> str:
230
230
  )
231
231
 
232
232
 
233
- @compiles(ColumnDefault) # type: ignore[misc]
233
+ @compiles(ColumnDefault)
234
234
  def visit_column_default(
235
235
  element: ColumnDefault, compiler: DDLCompiler, **kw
236
236
  ) -> str:
@@ -245,7 +245,7 @@ def visit_column_default(
245
245
  )
246
246
 
247
247
 
248
- @compiles(ComputedColumnDefault) # type: ignore[misc]
248
+ @compiles(ComputedColumnDefault)
249
249
  def visit_computed_column(
250
250
  element: ComputedColumnDefault, compiler: DDLCompiler, **kw
251
251
  ):
@@ -255,7 +255,7 @@ def visit_computed_column(
255
255
  )
256
256
 
257
257
 
258
- @compiles(IdentityColumnDefault) # type: ignore[misc]
258
+ @compiles(IdentityColumnDefault)
259
259
  def visit_identity_column(
260
260
  element: IdentityColumnDefault, compiler: DDLCompiler, **kw
261
261
  ):
@@ -21,7 +21,12 @@ from typing import TYPE_CHECKING
21
21
  from typing import Union
22
22
 
23
23
  from sqlalchemy import cast
24
+ from sqlalchemy import Column
25
+ from sqlalchemy import MetaData
26
+ from sqlalchemy import PrimaryKeyConstraint
24
27
  from sqlalchemy import schema
28
+ from sqlalchemy import String
29
+ from sqlalchemy import Table
25
30
  from sqlalchemy import text
26
31
 
27
32
  from . import _autogen
@@ -43,11 +48,9 @@ if TYPE_CHECKING:
43
48
  from sqlalchemy.sql import Executable
44
49
  from sqlalchemy.sql.elements import ColumnElement
45
50
  from sqlalchemy.sql.elements import quoted_name
46
- from sqlalchemy.sql.schema import Column
47
51
  from sqlalchemy.sql.schema import Constraint
48
52
  from sqlalchemy.sql.schema import ForeignKeyConstraint
49
53
  from sqlalchemy.sql.schema import Index
50
- from sqlalchemy.sql.schema import Table
51
54
  from sqlalchemy.sql.schema import UniqueConstraint
52
55
  from sqlalchemy.sql.selectable import TableClause
53
56
  from sqlalchemy.sql.type_api import TypeEngine
@@ -136,6 +139,40 @@ class DefaultImpl(metaclass=ImplMeta):
136
139
  self.output_buffer.write(text + "\n\n")
137
140
  self.output_buffer.flush()
138
141
 
142
+ def version_table_impl(
143
+ self,
144
+ *,
145
+ version_table: str,
146
+ version_table_schema: Optional[str],
147
+ version_table_pk: bool,
148
+ **kw: Any,
149
+ ) -> Table:
150
+ """Generate a :class:`.Table` object which will be used as the
151
+ structure for the Alembic version table.
152
+
153
+ Third party dialects may override this hook to provide an alternate
154
+ structure for this :class:`.Table`; requirements are only that it
155
+ be named based on the ``version_table`` parameter and contains
156
+ at least a single string-holding column named ``version_num``.
157
+
158
+ .. versionadded:: 1.14
159
+
160
+ """
161
+ vt = Table(
162
+ version_table,
163
+ MetaData(),
164
+ Column("version_num", String(32), nullable=False),
165
+ schema=version_table_schema,
166
+ )
167
+ if version_table_pk:
168
+ vt.append_constraint(
169
+ PrimaryKeyConstraint(
170
+ "version_num", name=f"{version_table}_pkc"
171
+ )
172
+ )
173
+
174
+ return vt
175
+
139
176
  def requires_recreate_in_batch(
140
177
  self, batch_op: BatchOperationsImpl
141
178
  ) -> bool:
@@ -16,6 +16,7 @@ from typing import TYPE_CHECKING
16
16
  from typing import Union
17
17
 
18
18
  from sqlalchemy import Column
19
+ from sqlalchemy import Float
19
20
  from sqlalchemy import literal_column
20
21
  from sqlalchemy import Numeric
21
22
  from sqlalchemy import text
@@ -132,7 +133,7 @@ class PostgresqlImpl(DefaultImpl):
132
133
  metadata_default = metadata_column.server_default.arg
133
134
 
134
135
  if isinstance(metadata_default, str):
135
- if not isinstance(inspector_column.type, Numeric):
136
+ if not isinstance(inspector_column.type, (Numeric, Float)):
136
137
  metadata_default = re.sub(r"^'|'$", "", metadata_default)
137
138
  metadata_default = f"'{metadata_default}'"
138
139
 
@@ -16,6 +16,8 @@ from sqlalchemy import schema
16
16
  from sqlalchemy import sql
17
17
 
18
18
  from .base import alter_table
19
+ from .base import ColumnName
20
+ from .base import format_column_name
19
21
  from .base import format_table_name
20
22
  from .base import RenameTable
21
23
  from .impl import DefaultImpl
@@ -207,6 +209,15 @@ def visit_rename_table(
207
209
  )
208
210
 
209
211
 
212
+ @compiles(ColumnName, "sqlite")
213
+ def visit_column_name(element: ColumnName, compiler: DDLCompiler, **kw) -> str:
214
+ return "%s RENAME COLUMN %s TO %s" % (
215
+ alter_table(compiler, element.table_name, element.schema),
216
+ format_column_name(compiler, element.column_name),
217
+ format_column_name(compiler, element.newname),
218
+ )
219
+
220
+
210
221
  # @compiles(AddColumn, 'sqlite')
211
222
  # def visit_add_column(element, compiler, **kw):
212
223
  # return "%s %s" % (
@@ -24,10 +24,6 @@ from typing import Union
24
24
 
25
25
  from sqlalchemy import Column
26
26
  from sqlalchemy import literal_column
27
- from sqlalchemy import MetaData
28
- from sqlalchemy import PrimaryKeyConstraint
29
- from sqlalchemy import String
30
- from sqlalchemy import Table
31
27
  from sqlalchemy.engine import Engine
32
28
  from sqlalchemy.engine import url as sqla_url
33
29
  from sqlalchemy.engine.strategies import MockEngineStrategy
@@ -36,6 +32,7 @@ from .. import ddl
36
32
  from .. import util
37
33
  from ..util import sqla_compat
38
34
  from ..util.compat import EncodedIO
35
+ from ..util.sqla_compat import _select
39
36
 
40
37
  if TYPE_CHECKING:
41
38
  from sqlalchemy.engine import Dialect
@@ -190,18 +187,6 @@ class MigrationContext:
190
187
  self.version_table_schema = version_table_schema = opts.get(
191
188
  "version_table_schema", None
192
189
  )
193
- self._version = Table(
194
- version_table,
195
- MetaData(),
196
- Column("version_num", String(32), nullable=False),
197
- schema=version_table_schema,
198
- )
199
- if opts.get("version_table_pk", True):
200
- self._version.append_constraint(
201
- PrimaryKeyConstraint(
202
- "version_num", name="%s_pkc" % version_table
203
- )
204
- )
205
190
 
206
191
  self._start_from_rev: Optional[str] = opts.get("starting_rev")
207
192
  self.impl = ddl.DefaultImpl.get_by_dialect(dialect)(
@@ -212,6 +197,13 @@ class MigrationContext:
212
197
  self.output_buffer,
213
198
  opts,
214
199
  )
200
+
201
+ self._version = self.impl.version_table_impl(
202
+ version_table=version_table,
203
+ version_table_schema=version_table_schema,
204
+ version_table_pk=opts.get("version_table_pk", True),
205
+ )
206
+
215
207
  log.info("Context impl %s.", self.impl.__class__.__name__)
216
208
  if self.as_sql:
217
209
  log.info("Generating static SQL")
@@ -540,7 +532,10 @@ class MigrationContext:
540
532
  return ()
541
533
  assert self.connection is not None
542
534
  return tuple(
543
- row[0] for row in self.connection.execute(self._version.select())
535
+ row[0]
536
+ for row in self.connection.execute(
537
+ _select(self._version.c.version_num)
538
+ )
544
539
  )
545
540
 
546
541
  def _ensure_version_table(self, purge: bool = False) -> None:
@@ -15,7 +15,7 @@ prepend_sys_path = .
15
15
 
16
16
  # timezone to use when rendering the date within the migration file
17
17
  # as well as the filename.
18
- # If specified, requires the python>=3.9 or backports.zoneinfo library.
18
+ # If specified, requires the python>=3.9 or backports.zoneinfo library and tzdata library.
19
19
  # Any required deps can installed by adding `alembic[tz]` to the pip requirements
20
20
  # string value is passed to ZoneInfo()
21
21
  # leave blank for localtime
@@ -48,7 +48,9 @@ prepend_sys_path = .
48
48
  # version_path_separator = ;
49
49
  # version_path_separator = space
50
50
  # version_path_separator = newline
51
- version_path_separator = os # Use os.pathsep. Default configuration used for new projects.
51
+ #
52
+ # Use os.pathsep. Default configuration used for new projects.
53
+ version_path_separator = os
52
54
 
53
55
  # set to 'true' to search source files recursively
54
56
  # in each "version_locations" directory
@@ -90,12 +92,12 @@ keys = console
90
92
  keys = generic
91
93
 
92
94
  [logger_root]
93
- level = WARN
95
+ level = WARNING
94
96
  handlers = console
95
97
  qualname =
96
98
 
97
99
  [logger_sqlalchemy]
98
- level = WARN
100
+ level = WARNING
99
101
  handlers =
100
102
  qualname = sqlalchemy.engine
101
103
 
@@ -17,7 +17,7 @@ prepend_sys_path = .
17
17
 
18
18
  # timezone to use when rendering the date within the migration file
19
19
  # as well as the filename.
20
- # If specified, requires the python>=3.9 or backports.zoneinfo library.
20
+ # If specified, requires the python>=3.9 or backports.zoneinfo library and tzdata library.
21
21
  # Any required deps can installed by adding `alembic[tz]` to the pip requirements
22
22
  # string value is passed to ZoneInfo()
23
23
  # leave blank for localtime
@@ -50,7 +50,9 @@ prepend_sys_path = .
50
50
  # version_path_separator = ;
51
51
  # version_path_separator = space
52
52
  # version_path_separator = newline
53
- version_path_separator = os # Use os.pathsep. Default configuration used for new projects.
53
+ #
54
+ # Use os.pathsep. Default configuration used for new projects.
55
+ version_path_separator = os
54
56
 
55
57
  # set to 'true' to search source files recursively
56
58
  # in each "version_locations" directory
@@ -92,12 +94,12 @@ keys = console
92
94
  keys = generic
93
95
 
94
96
  [logger_root]
95
- level = WARN
97
+ level = WARNING
96
98
  handlers = console
97
99
  qualname =
98
100
 
99
101
  [logger_sqlalchemy]
100
- level = WARN
102
+ level = WARNING
101
103
  handlers =
102
104
  qualname = sqlalchemy.engine
103
105
 
@@ -17,7 +17,7 @@ prepend_sys_path = .
17
17
 
18
18
  # timezone to use when rendering the date within the migration file
19
19
  # as well as the filename.
20
- # If specified, requires the python>=3.9 or backports.zoneinfo library.
20
+ # If specified, requires the python>=3.9 or backports.zoneinfo library and tzdata library.
21
21
  # Any required deps can installed by adding `alembic[tz]` to the pip requirements
22
22
  # string value is passed to ZoneInfo()
23
23
  # leave blank for localtime
@@ -50,7 +50,9 @@ prepend_sys_path = .
50
50
  # version_path_separator = ;
51
51
  # version_path_separator = space
52
52
  # version_path_separator = newline
53
- version_path_separator = os # Use os.pathsep. Default configuration used for new projects.
53
+ #
54
+ # Use os.pathsep. Default configuration used for new projects.
55
+ version_path_separator = os
54
56
 
55
57
  # set to 'true' to search source files recursively
56
58
  # in each "version_locations" directory
@@ -97,12 +99,12 @@ keys = console
97
99
  keys = generic
98
100
 
99
101
  [logger_root]
100
- level = WARN
102
+ level = WARNING
101
103
  handlers = console
102
104
  qualname =
103
105
 
104
106
  [logger_sqlalchemy]
105
- level = WARN
107
+ level = WARNING
106
108
  handlers =
107
109
  qualname = sqlalchemy.engine
108
110
 
@@ -118,7 +118,7 @@ keys = root,sqlalchemy
118
118
  keys = console
119
119
 
120
120
  [logger_root]
121
- level = WARN
121
+ level = WARNING
122
122
  handlers = console
123
123
  qualname =
124
124
 
@@ -171,7 +171,7 @@ keys = root
171
171
  keys = console
172
172
 
173
173
  [logger_root]
174
- level = WARN
174
+ level = WARNING
175
175
  handlers = console
176
176
  qualname =
177
177
 
@@ -216,7 +216,7 @@ keys = root
216
216
  keys = console
217
217
 
218
218
  [logger_root]
219
- level = WARN
219
+ level = WARNING
220
220
  handlers = console
221
221
  qualname =
222
222
 
@@ -497,7 +497,7 @@ keys = root
497
497
  keys = console
498
498
 
499
499
  [logger_root]
500
- level = WARN
500
+ level = WARNING
501
501
  handlers = console
502
502
  qualname =
503
503
 
@@ -24,6 +24,7 @@ if True:
24
24
 
25
25
  is_posix = os.name == "posix"
26
26
 
27
+ py313 = sys.version_info >= (3, 13)
27
28
  py311 = sys.version_info >= (3, 11)
28
29
  py310 = sys.version_info >= (3, 10)
29
30
  py39 = sys.version_info >= (3, 9)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: alembic
3
- Version: 1.13.3
3
+ Version: 1.14.1
4
4
  Summary: A database migration tool for SQLAlchemy.
5
5
  Home-page: https://alembic.sqlalchemy.org
6
6
  Author: Mike Bayer
@@ -35,6 +35,7 @@ Requires-Dist: importlib-resources; python_version < "3.9"
35
35
  Requires-Dist: typing-extensions>=4
36
36
  Provides-Extra: tz
37
37
  Requires-Dist: backports.zoneinfo; python_version < "3.9" and extra == "tz"
38
+ Requires-Dist: tzdata; extra == "tz"
38
39
 
39
40
  Alembic is a database migrations tool written by the author
40
41
  of `SQLAlchemy <http://www.sqlalchemy.org>`_. A migrations tool
@@ -150,16 +150,13 @@ docs/_static/webpack-macros.html
150
150
  docs/_static/images/logo_colab.png
151
151
  docs/_static/scripts/bootstrap.js
152
152
  docs/_static/scripts/bootstrap.js.LICENSE.txt
153
+ docs/_static/scripts/fontawesome.js
154
+ docs/_static/scripts/fontawesome.js.LICENSE.txt
153
155
  docs/_static/scripts/pydata-sphinx-theme.js
154
156
  docs/_static/scripts/sphinx-book-theme.js
155
- docs/_static/styles/bootstrap.css
156
157
  docs/_static/styles/pydata-sphinx-theme.css
157
158
  docs/_static/styles/sphinx-book-theme.css
158
159
  docs/_static/styles/theme.css
159
- docs/_static/vendor/fontawesome/6.5.2/LICENSE.txt
160
- docs/_static/vendor/fontawesome/6.5.2/css/all.min.css
161
- docs/_static/vendor/fontawesome/6.5.2/js/all.min.js
162
- docs/_static/vendor/fontawesome/6.5.2/js/all.min.js.LICENSE.txt
163
160
  docs/api/autogenerate.html
164
161
  docs/api/commands.html
165
162
  docs/api/config.html
@@ -7,6 +7,7 @@ importlib-metadata
7
7
  importlib-resources
8
8
 
9
9
  [tz]
10
+ tzdata
10
11
 
11
12
  [tz:python_version < "3.9"]
12
13
  backports.zoneinfo
@@ -1,10 +1,12 @@
1
1
  Auto Generating Migrations
2
2
  ===========================
3
3
 
4
- Alembic can view the status of the database and compare against the table metadata
5
- in the application, generating the "obvious" migrations based on a comparison. This
6
- is achieved using the ``--autogenerate`` option to the ``alembic revision`` command,
7
- which places so-called *candidate* migrations into our new migrations file. We
4
+ Alembic can view the status of the database (pointed to by ``sqlalchemy.url`` in
5
+ your ``alembic.ini`` file using the *current* schema) and compare against the
6
+ table metadata in the application (your ORM which defines the *proposed* schema),
7
+ generating the "obvious" migrations based on a comparison. This is achieved
8
+ using the ``--autogenerate`` option to the ``alembic revision`` command, which
9
+ places so-called *candidate* migrations into our new migrations file. We
8
10
  review and modify these by hand as needed, then proceed normally.
9
11
 
10
12
  To use autogenerate, we first need to modify our ``env.py`` so that it gets access
@@ -728,8 +730,8 @@ hook runner:
728
730
  The following configuration option is specific to the ``"exec"`` hook runner:
729
731
 
730
732
  * ``executable`` - the name of the executable to invoke. Can be either a
731
- bare executable name which will be searched in ``$PATH``, or a full pathname
732
- to avoid potential issues with path interception.
733
+ bare executable name which will be searched in ``$PATH``, or a full pathname
734
+ to avoid potential issues with path interception.
733
735
 
734
736
  The following options are supported by both ``"console_scripts"`` and ``"exec"``:
735
737
 
@@ -3,6 +3,51 @@
3
3
  Changelog
4
4
  ==========
5
5
 
6
+ .. changelog::
7
+ :version: 1.14.1
8
+ :released: January 19, 2025
9
+
10
+ .. change::
11
+ :tags: bug, environment
12
+ :tickets: 1556
13
+
14
+ Added `tzdata` to `tz` extras, which is required on some platforms such as
15
+ Windows. Pull request courtesy Danipulok.
16
+
17
+ .. change::
18
+ :tags: usecase, sqlite
19
+ :tickets: 1576
20
+
21
+ Modified SQLite's dialect to render "ALTER TABLE <t> RENAME COLUMN" when
22
+ :meth:`.Operations.alter_column` is used with a straight rename, supporting
23
+ SQLite's recently added column rename feature.
24
+
25
+ .. change::
26
+ :tags: bug, autogenerate
27
+ :tickets: 1585
28
+
29
+ Fixed bug where autogen render of a "variant" type would fail to catch the
30
+ variants if the leading type were a dialect-specific type, rather than a
31
+ generic type.
32
+
33
+
34
+ .. changelog::
35
+ :version: 1.14.0
36
+ :released: November 4, 2024
37
+
38
+ .. change::
39
+ :tags: usecase, runtime
40
+ :tickets: 1560
41
+
42
+ Added a new hook to the :class:`.DefaultImpl`
43
+ :meth:`.DefaultImpl.version_table_impl`. This allows third party dialects
44
+ to define the exact structure of the alembic_version table, to include use
45
+ cases where the table requires special directives and/or additional columns
46
+ so that it may function correctly on a particular backend. This is not
47
+ intended as a user-expansion hook, only a dialect implementation hook to
48
+ produce a working alembic_version table. Pull request courtesy Maciek
49
+ Bryński.
50
+
6
51
  .. changelog::
7
52
  :version: 1.13.3
8
53
  :released: September 23, 2024
@@ -164,6 +164,8 @@ parameter in ``env.py``, which is normally configured when autogenerate is
164
164
  used::
165
165
 
166
166
  # in your application's model:
167
+ from sqlalchemy import MetaData
168
+ from sqlalchemy.orm import DeclarativeBase
167
169
 
168
170
  class Base(DeclarativeBase):
169
171
  metadata = MetaData(naming_convention={
@@ -141,7 +141,7 @@ The file generated with the "generic" configuration looks like::
141
141
 
142
142
  # timezone to use when rendering the date within the migration file
143
143
  # as well as the filename.
144
- # If specified, requires the python>=3.9 or backports.zoneinfo library.
144
+ # If specified, requires the python>=3.9 or backports.zoneinfo library and tzdata library.
145
145
  # Any required deps can installed by adding `alembic[tz]` to the pip requirements
146
146
  # string value is passed to ZoneInfo()
147
147
  # leave blank for localtime
@@ -204,7 +204,7 @@ The file generated with the "generic" configuration looks like::
204
204
  # hooks = ruff
205
205
  # ruff.type = exec
206
206
  # ruff.executable = %(here)s/.venv/bin/ruff
207
- # ruff.options = --fix REVISION_SCRIPT_FILENAME
207
+ # ruff.options = check --fix REVISION_SCRIPT_FILENAME
208
208
 
209
209
  # Logging configuration
210
210
  [loggers]
@@ -217,12 +217,12 @@ The file generated with the "generic" configuration looks like::
217
217
  keys = generic
218
218
 
219
219
  [logger_root]
220
- level = WARN
220
+ level = WARNING
221
221
  handlers = console
222
222
  qualname =
223
223
 
224
224
  [logger_sqlalchemy]
225
- level = WARN
225
+ level = WARNING
226
226
  handlers =
227
227
  qualname = sqlalchemy.engine
228
228
 
@@ -299,9 +299,9 @@ This file contains the following features:
299
299
  * ``timezone`` - an optional timezone name (e.g. ``UTC``, ``EST5EDT``, etc.)
300
300
  that will be applied to the timestamp which renders inside the migration
301
301
  file's comment as well as within the filename. This option requires Python>=3.9
302
- or installing the ``backports.zoneinfo`` library. If ``timezone`` is specified,
303
- the create date object is no longer derived from ``datetime.datetime.now()``
304
- and is instead generated as::
302
+ or installing the ``backports.zoneinfo`` library and the ``tzdata`` library.
303
+ If ``timezone`` is specified, the create date object is no longer derived
304
+ from ``datetime.datetime.now()`` and is instead generated as::
305
305
 
306
306
  datetime.datetime.utcnow().replace(
307
307
  tzinfo=datetime.timezone.utc