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.
- alembic-1.11.2/.coveragerc +5 -0
- alembic-1.11.2/.github/FUNDING.yml +6 -0
- alembic-1.11.2/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- alembic-1.11.2/.github/ISSUE_TEMPLATE/config.yml +15 -0
- alembic-1.11.2/.github/ISSUE_TEMPLATE/use_case.md +24 -0
- alembic-1.11.2/.github/pull_request_template.md +27 -0
- alembic-1.11.2/.github/workflows/run-on-pr.yaml +85 -0
- alembic-1.11.2/.github/workflows/run-test.yaml +96 -0
- alembic-1.11.2/.gitignore +24 -0
- alembic-1.11.2/.gitreview +6 -0
- alembic-1.11.2/.pre-commit-config.yaml +31 -0
- {alembic-1.11.1/alembic.egg-info → alembic-1.11.2}/PKG-INFO +1 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/__init__.py +1 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/api.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/compare.py +12 -23
- {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/render.py +18 -36
- {alembic-1.11.1 → alembic-1.11.2}/alembic/command.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/config.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/impl.py +10 -5
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/mssql.py +2 -5
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/mysql.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/postgresql.py +31 -10
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/sqlite.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/alembic/op.pyi +29 -17
- {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/base.py +29 -17
- {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/batch.py +4 -5
- {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/ops.py +49 -24
- {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/toimpl.py +18 -4
- {alembic-1.11.1 → alembic-1.11.2}/alembic/runtime/environment.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/runtime/migration.py +0 -4
- {alembic-1.11.1 → alembic-1.11.2}/alembic/script/base.py +3 -7
- {alembic-1.11.1 → alembic-1.11.2}/alembic/script/revision.py +0 -4
- {alembic-1.11.1 → alembic-1.11.2}/alembic/script/write_hooks.py +8 -7
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/script.py.mako +6 -4
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/script.py.mako +6 -4
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/script.py.mako +6 -4
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/assertions.py +0 -3
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/env.py +0 -3
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/fixtures.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/_autogen_fixtures.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/langhelpers.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/pyfiles.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/sqla_compat.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2/alembic.egg-info}/PKG-INFO +1 -1
- {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/SOURCES.txt +14 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/changelog.rst.txt +31 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/basic.css +18 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/documentation_options.js +1 -1
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/autogenerate.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/commands.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/config.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/ddl.html +34 -22
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/index.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/operations.html +18 -18
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/overview.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/runtime.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/api/script.html +15 -15
- {alembic-1.11.1 → alembic-1.11.2}/docs/autogenerate.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/batch.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/branches.html +13 -13
- alembic-1.11.2/docs/build/assets/api_overview.graffle +2795 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/changelog.rst +31 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/conf.py +2 -2
- alembic-1.11.2/docs/build/make.bat +113 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/changelog.html +56 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/cookbook.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/front.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/genindex.html +27 -17
- {alembic-1.11.1 → alembic-1.11.2}/docs/index.html +19 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/naming.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/offline.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/ops.html +30 -18
- {alembic-1.11.1 → alembic-1.11.2}/docs/py-modindex.html +13 -13
- {alembic-1.11.1 → alembic-1.11.2}/docs/search.html +13 -13
- alembic-1.11.2/docs/searchindex.js +1 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/tutorial.html +13 -13
- alembic-1.11.2/reap_dbs.py +25 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/requirements.py +21 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_diffs.py +0 -6
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_indexes.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_render.py +0 -3
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_batch.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_command.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_external_dialect.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_offline_environment.py +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_op.py +12 -3
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_post_write.py +0 -3
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_postgresql.py +151 -3
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_revision.py +0 -5
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_script_consumption.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_sqlite.py +0 -2
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_version_traversal.py +0 -14
- {alembic-1.11.1 → alembic-1.11.2}/tools/write_pyi.py +1 -1
- {alembic-1.11.1 → alembic-1.11.2}/tox.ini +1 -1
- alembic-1.11.1/docs/searchindex.js +0 -1
- {alembic-1.11.1 → alembic-1.11.2}/CHANGES +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/LICENSE +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/MANIFEST.in +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/README.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/README.unittests.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/__main__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/autogenerate/rewriter.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/context.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/context.pyi +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/base.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/ddl/oracle.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/environment.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/migration.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/op.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/operations/schemaobj.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/py.typed +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/runtime/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/script/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/README +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/alembic.ini.mako +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/async/env.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/README +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/alembic.ini.mako +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/generic/env.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/README +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/alembic.ini.mako +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/templates/multidb/env.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/plugin/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/plugin/bootstrap.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/requirements.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/schemacompare.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_comments.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_computed.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_diffs.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_fks.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_autogen_identity.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_environment.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/suite/test_op.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/util.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/testing/warnings.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/compat.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/editor.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/exc.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic/util/messaging.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/dependency_links.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/entry_points.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/not-zip-safe +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/requires.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/alembic.egg-info/top_level.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_images/api_overview.png +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/autogenerate.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/commands.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/config.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/ddl.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/index.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/operations.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/overview.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/runtime.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/api/script.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/autogenerate.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/batch.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/branches.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/cookbook.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/front.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/index.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/naming.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/offline.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/ops.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_sources/tutorial.rst.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/changelog.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/clipboard.min.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/copybutton.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/copybutton.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/copybutton_funcs.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/doctools.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/file.png +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/language_data.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/minus.png +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/nature.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/nature_override.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/plus.png +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/pygments.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/searchtools.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/site_custom_css.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/sphinx_highlight.js +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/_static/sphinx_paramlinks.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/Makefile +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/_static/nature_override.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/_static/site_custom_css.css +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/_templates/site_custom_sidebars.html +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/api_overview.png +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/autogenerate.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/commands.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/config.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/ddl.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/index.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/operations.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/overview.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/runtime.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/api/script.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/autogenerate.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/batch.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/branches.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/cookbook.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/front.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/index.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/naming.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/offline.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/ops.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/requirements.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/tutorial.rst +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/docs/build/unreleased/README.txt +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/pyproject.toml +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/setup.cfg +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/setup.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/__init__.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/_large_map.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/conftest.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_autogen_composition.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_bulk_insert.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_config.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_editor.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_environment.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_impl.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_mssql.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_mysql.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_op_naming_convention.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_oracle.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_script_production.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_stubs.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_suite.py +0 -0
- {alembic-1.11.1 → alembic-1.11.2}/tests/test_version_table.py +0 -0
@@ -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,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
|
+
|
@@ -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",) +
|
456
|
-
|
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 = {
|
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
|