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, policies, and 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.0.tar.gz (23.3 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.0-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: alembic_utils_extended-1.1.0.tar.gz
  • Upload date:
  • Size: 23.3 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.0.tar.gz
Algorithm Hash digest
SHA256 7efde077ded1d9f4c6adf430ef07328bc2adf94729336594c3e9a8289d625c1d
MD5 7fba3d08adadbbe8787dd10c10103ac1
BLAKE2b-256 2230067b79e029ef7c5f0c67f85025891b2b013c56aa76efa0f106ae4e788f13

See more details on using hashes here.

Provenance

The following attestation bundles were made for alembic_utils_extended-1.1.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for alembic_utils_extended-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20a718e557398937602f6efa57060daa488ddd5359d89d887df312ae0d52d5ea
MD5 77ed45b7c9cdee3b1916bc3cfcdb5a21
BLAKE2b-256 50c07073ee877767862db4f445cfecb31890636374204e661e97d1f80f39c962

See more details on using hashes here.

Provenance

The following attestation bundles were made for alembic_utils_extended-1.1.0-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