Skip to main content

A sqlalchemy/alembic extension for migrating entities like functions, triggers, views, materialized views, and check constraints.

Project description

Alembic Utils Extended

Test Status Pre-commit Status

License PyPI version Codestyle Black Download count

Python version PostgreSQL version

Autogenerate Support for PostgreSQL Functions, Views, Materialized Views, Triggers, Policies, and Check Constraints

This is a fork of the much more popular alembic_utils package to extend the capabilities of Alembic, which adds support for autogenerating a larger number of PostgreSQL entity types, including functions, views, materialized views, triggers, and policies.

This repo adds additional support for defining indices for materialized views and autogenerating check constraints.

Quickstart

Visit the quickstart guide for usage instructions.

# migrations/env.py

from alembic_utils_extended.pg_view import PGView
from alembic_utils_extended.replaceable_entity import register_entities

view = PGView(
    schema="public",
    signature="view",
    definition="SELECT 1")
register_entities([view])

The next time you autogenerate a revision, Alembic will detect if your entities are new, updated, or removed and populate the migration script.

alembic revision --autogenerate -m 'message'

Check Constraint Autogeneration

This package also adds autogenerate support for check constraints defined in SQLAlchemy models. To enable:

# migrations/env.py
from alembic import context

context.configure(
    # ... other configurations ...
    compare_check_constraints=True,
)

Check constraints must be named to be detected:

from sqlalchemy import CheckConstraint, Column, Integer
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Order(Base):
    __tablename__ = "orders"

    id = Column(Integer, primary_key=True)
    amount = Column(Integer)

    __table_args__ = (
        CheckConstraint("amount >= 0", name="ck_orders_amount_positive"),
    )

Contributing

If you have any issues with contributing, please reach out to justin@joincandidhealth.com so that we can work out any issues you are having! This is mostly just forked directly from alembic_utils, so it's possible something is misconfigured.

Testing

poetry install
poetry run pre-commit run --all-files
poetry run pytest

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

alembic_utils_extended-1.1.1.tar.gz (23.4 kB view details)

Uploaded Source

Built Distribution

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

alembic_utils_extended-1.1.1-py3-none-any.whl (34.0 kB view details)

Uploaded Python 3

File details

Details for the file alembic_utils_extended-1.1.1.tar.gz.

File metadata

  • Download URL: alembic_utils_extended-1.1.1.tar.gz
  • Upload date:
  • Size: 23.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alembic_utils_extended-1.1.1.tar.gz
Algorithm Hash digest
SHA256 3d40643a9dff46452716f98cbb8d99576ced56846e856ea0461306345bfee42c
MD5 a8d8b17de437826020b93b760494972f
BLAKE2b-256 ceb72950328060a7f17771c2482a43c741a7d02d7b633c9c5e613d86ea6cff09

See more details on using hashes here.

Provenance

The following attestation bundles were made for alembic_utils_extended-1.1.1.tar.gz:

Publisher: publish.yml on candidhealth/alembic-utils-extended

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alembic_utils_extended-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for alembic_utils_extended-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1ba13447fd92c28283a1ac59761332cd96ae57ccd2a90e7b056e8886acb3f77c
MD5 5626c6b94d3ff1b6adc9d8713f7dc66e
BLAKE2b-256 8ea6f2fcc0f20dee884d7303803f0f282689dd9bb506f44381c298df2499dd83

See more details on using hashes here.

Provenance

The following attestation bundles were made for alembic_utils_extended-1.1.1-py3-none-any.whl:

Publisher: publish.yml on candidhealth/alembic-utils-extended

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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