Skip to main content

Async-aware alembic env.py helper for mgf-common consumers — one-call configure_env replaces ~40 lines of boilerplate. Sibling of mgf-common under the mgf.* namespace; pairs with mgf-sqlalchemy.

Project description

mgf-alembic — async-aware alembic env.py helper for mgf-common consumers

PyPI Python

Shape: Federation sibling of mgf-common. The current mgf-common pin window is shown in this package's PyPI metadata — sourced from pyproject.toml at release time, so this README can't go stale. (Per v2.6 DOC-01 / project-shape taxonomy. PAPER-38.)

Sibling of mgf-common + mgf-sqlalchemy under the mgf.* namespace. Houses the async-aware alembic env.py helper that previously lived under mgf.common.alembic.* — extracted at mgf-common v0.30 / mgf-alembic v0.1 (paired with mgf-sqlalchemy v0.1) per the federation split plan.

What this provides

Submodule What
mgf.alembic configure_env — one call replaces the ~40-line env.py boilerplate. Auto-detects sync vs async drivers from the URL prefix (postgresql+asyncpg://, sqlite+aiosqlite://, etc.). Plumbs compare_type, compare_server_default, naming_convention, include_object, include_schemas through to alembic.context.configure.

include_object / include_schemas were added per PAPER-22 in mgf-common v0.19; carried over to mgf-alembic v0.1 unchanged.

Install

pip install mgf-alembic
# Or with the test extra (aiosqlite for async-driver round-trip tests):
pip install 'mgf-alembic[test]'

Pulls in mgf-common, mgf-sqlalchemy, and alembic>=1.13 automatically.

Quick start — the entire env.py

# alembic/env.py
from mgf.alembic import configure_env
from myapp.config import MyAppSettings
from myapp.db.base import Base

settings = MyAppSettings()
configure_env(
    database_url=settings.database_url,
    target_metadata=Base.metadata,
)

That's the entire file. The helper detects offline vs online mode, runs the migration, disposes the engine cleanly. Async drivers (asyncpg, aiomysql, aiosqlite, asyncmy, async psycopg) are auto-detected; sync drivers fall through the synchronous path.

PostGIS / TimescaleDB: filter extension tables

def _exclude_extensions(obj, name, type_, reflected, compare_to):
    return not (type_ == "table" and name in {"spatial_ref_sys"})

configure_env(
    database_url=settings.database_url,
    target_metadata=Base.metadata,
    include_object=_exclude_extensions,
)

alembic revision --autogenerate no longer proposes phantom drops for extension-managed tables (PostGIS spatial_ref_sys, TimescaleDB _timescaledb_internal, pgvector housekeeping).

Naming-convention shape

Constraint names auto-generated by op.create_* are otherwise anonymous and vary across DBs — pin them:

configure_env(
    database_url=settings.database_url,
    target_metadata=Base.metadata,
    naming_convention={
        "ix": "ix_%(column_0_label)s",
        "uq": "uq_%(table_name)s_%(column_0_name)s",
        "ck": "ck_%(table_name)s_%(constraint_name)s",
        "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
        "pk": "pk_%(table_name)s",
    },
)

Documentation

For the federation-wide engineering standards (DESIGN_PRINCIPLES, ERROR_HANDLING, SECURITY, etc.) see mgf-common/docs/standards/. This sibling inherits them by reference; the standards source-of-truth lives in mgf-common.

Conformance: L2 per mgf-common/docs/standards/. Per-rule audit ledger: docs/inprogress/MGF_STANDARDS_CONFORMANCE.md. L2 means every federation MUST rule applies, evidenced by the tracker.

Status

🚧 Experimental — every public name is experimental per AP-09. Promotion to stable happens release-by-release as consumer feedback in mgf-common/FEEDBACK.md converges. The 0.x window applies. Pin tightly: mgf-alembic = ">=0.X.0,<0.Y".

Cross-references

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mgf_alembic-0.4.5.tar.gz (164.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mgf_alembic-0.4.5-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file mgf_alembic-0.4.5.tar.gz.

File metadata

  • Download URL: mgf_alembic-0.4.5.tar.gz
  • Upload date:
  • Size: 164.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mgf_alembic-0.4.5.tar.gz
Algorithm Hash digest
SHA256 a121d4446fd8ed3ef273c1682225134467ef3a7db1ef3cdd961c6d11a45a3918
MD5 2940a13ae3c77ab44fa53a21debf6e91
BLAKE2b-256 2e55a2dac4f6c618f548fe46caff0569fa025f5ad5532ac11f9abf4f72ced1cf

See more details on using hashes here.

File details

Details for the file mgf_alembic-0.4.5-py3-none-any.whl.

File metadata

  • Download URL: mgf_alembic-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mgf_alembic-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c0d0c20fa2915682aab4e749cb8e9c150b564a06b7c6c26bdfea21614675f768
MD5 21302f79dd821bfcadb9715742cff3ab
BLAKE2b-256 dce6b4ecd3348b2b7c39480c594cbd16fc55abfb1681add95d3f4df85f43ded8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page