[sqlalchemy-spanner] Make alembic an optional extra dependency
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 68/100
Research direction
Start with packages/sqlalchemy-spanner/setup.py and compare its dependency configuration with the sqlalchemy-bigquery extras example in the issue. Check the package metadata or relevant tests to confirm Alembic is no longer required by default and is available through the alembic extra. Keep the stated compatibility impact in mind when considering the release timing.
Written by the indexing model from the issue text.
Description
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
alembicfrominstall_requires/dependenciestoextras_requireinsetup.py:extras = { "tracing": [...], "alembic": ["alembic >= 1.0.0, < 2.0.0"], } - Note that moving
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
- Pull Request https://github.com/googleapis/google-cloud-python/pull/18570 already decouples dialect imports by guarding Alembic-specific
@compileshooks (HAS_ALEMBIC_INSTALLED), providing the prerequisite code separation for this transition.
- Dominant language
- Python
- Stars
- 5.4k
- Forks
- 1.8k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 173
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from googleapis/google-cloud-python
-
firestore: field path with a quoted name ending in a backslash is misparsedPossibly taken @sebxt claimed this 25 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
googleapis/google-cloud-python#18771 ·
Maintainers usually reply within 1 day
-
auth: `impersonated_credentials` loses `subject` on copy, so `with_scopes()` and `with_quota_project()` turn off domain wide delegationPossibly taken @Om-singhaI claimed this 55 days ago. Openauth priority: p2 type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
googleapis/google-cloud-python#18428 ·
Maintainers usually reply within 1 day
-
A client called `run_in_transaction` be stuck if Spanner is downPossibly taken @founderinaction claimed this 7 days ago. Openpriority: p2 type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
googleapis/google-cloud-python#18375 · 1 comment ·
Maintainers usually reply within 1 day
-
ci: enable --strict flag in presubmit twine_checkMay be free again @ohmayr claimed this 44 days ago, and no pull request is open. Open
Difficulty 1/5 Under an hour Newbie friendliness 76/100
googleapis/google-cloud-python#18339 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
auth: AsyncAuthorizedSession.request leaks response across retry attemptsPossibly taken @Sanjays2402 claimed this 65 days ago. Openauth priority: p2
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
googleapis/google-cloud-python#18315 ·
Maintainers usually reply within 1 day
All issues in googleapis/google-cloud-python
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
cpp-best-practices/project_validator#267 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
Maintainers usually reply within 1 day
-
[Bug] Sending a Telegram message chain twice duplicates mentionsPossibly taken @123XieC claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
AstrBotDevs/AstrBot#11125 ·
Maintainers usually reply within 1 day
-
backend bug priority: high
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
nooriegarg/ContribIQ#73 ·
Maintainers usually reply within 1 day
-
bug p3 security
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day