Feature / Enhancement Description
Currently, alembic is listed as a mandatory dependency in packages/sqlalchemy-spanner/setup.py:
dependencies = [
"sqlalchemy>=1.1.13",
"google-cloud-spanner>=3.55.0",
"alembic",
]
However, a database dialect does not inherently require a schema migration tool. Many applications use sqlalchemy-spanner strictly for SQLAlchemy Core or ORM query execution (e.g. data engineering pipelines, read-only analytics, services managing schema via Terraform or Spanner DDL).
In sqlalchemy-bigquery, alembic is already modeled as an optional extra rather than a core dependency:
extras = {
"alembic": ["alembic"],
...
}
Proposed Changes
- Move
alembic from install_requires / dependencies to extras_require in setup.py:
extras = {
"tracing": [...],
"alembic": ["alembic >= 1.0.0, < 2.0.0"],
}
- Note that moving
alembic to an extra is potentially a breaking change for existing users who rely on pip install sqlalchemy-spanner to install the alembic CLI tool, so this should be scheduled for an appropriate minor or major version release.
Related
Feature / Enhancement Description
Currently,
alembicis listed as a mandatory dependency inpackages/sqlalchemy-spanner/setup.py:However, a database dialect does not inherently require a schema migration tool. Many applications use
sqlalchemy-spannerstrictly for SQLAlchemy Core or ORM query execution (e.g. data engineering pipelines, read-only analytics, services managing schema via Terraform or Spanner DDL).In
sqlalchemy-bigquery,alembicis already modeled as an optional extra rather than a core dependency:Proposed Changes
alembicfrominstall_requires/dependenciestoextras_requireinsetup.py:alembicto an extra is potentially a breaking change for existing users who rely onpip install sqlalchemy-spannerto install thealembicCLI tool, so this should be scheduled for an appropriate minor or major version release.Related
@compileshooks (HAS_ALEMBIC_INSTALLED), providing the prerequisite code separation for this transition.