Skip to content

base

base

Invariant Base Classes

Invariants are the verification rules for the two comparisons in django-migration-audit.

Comparison A Invariants: Trust Verification

These invariants verify migration history ↔ migration code consistency: - No modified migration files - No missing migration files - No fake-applied migrations - Squash migrations properly replaced

Comparison B Invariants: Reality Check

These invariants verify expected schema ↔ actual schema consistency: - No schema drift - All expected tables exist - All expected columns exist with correct types - All expected constraints and indexes exist

Custom Invariants

Extend the base classes in this module to implement custom verification rules for your specific use cases.

Severity

Bases: Enum

Severity levels for invariant violations.

ERROR = 'error' class-attribute instance-attribute

WARNING = 'warning' class-attribute instance-attribute

INFO = 'info' class-attribute instance-attribute

Violation(invariant_name, severity, message, details=None) dataclass

Represents a single invariant violation.

invariant_name instance-attribute

severity instance-attribute

message instance-attribute

details = None class-attribute instance-attribute

__str__()

Invariant

Bases: ABC

Base class for all invariants.

Invariants are verification rules that check for consistency between different inputs in the django-migration-audit system.

name abstractmethod property

Human-readable name for this invariant.

description abstractmethod property

Description of what this invariant checks.

check(**kwargs) abstractmethod

Check the invariant and return any violations.

Returns:

Type Description
List[Violation]

List of Violation objects (empty list if no violations)

ComparisonAInvariant

Bases: Invariant

Base class for Comparison A invariants (Trust Verification).

These invariants verify migration history ↔ migration code consistency.

ComparisonBInvariant

Bases: Invariant

Base class for Comparison B invariants (Reality Check).

These invariants verify expected schema ↔ actual schema consistency.

NoMissingMigrationFiles

Bases: ComparisonAInvariant

Verify that all applied migrations have corresponding files on disk.

name property

description property

check(migration_history)

SquashMigrationsProperlyReplaced

Bases: ComparisonAInvariant

Verify that squashed migrations properly replace their originals.

name property

description property

check(migration_history)

AllExpectedTablesExist

Bases: ComparisonBInvariant

Verify that all expected tables exist in the actual database.

name property

description property

check(expected_schema, actual_schema)

NoUnexpectedTables

Bases: ComparisonBInvariant

Verify that no unexpected tables exist in the actual database.

name property

description property

check(expected_schema, actual_schema)

AllExpectedColumnsExist

Bases: ComparisonBInvariant

Verify that all expected columns exist with correct types.

name property

description property

check(expected_schema, actual_schema)