Skip to content

Migration

pelican.migration.Migration dataclass

Migration(name, revision, up=None, down=None)

name instance-attribute

name

revision instance-attribute

revision

up class-attribute instance-attribute

up = None

down class-attribute instance-attribute

down = None

display_name property

display_name

file_name property

file_name

pelican.migration.MigrationRegistry

MigrationRegistry()
Source code in pelican/migration.py
37
38
def __init__(self) -> None:
    self._migrations: dict[int, Migration] = {}

register_up

register_up(revision, name, func)
Source code in pelican/migration.py
40
41
42
43
44
45
46
47
48
49
50
51
52
def register_up(self, revision: int, name: str, func: F) -> None:
    migration = self._migrations.get(
        revision, Migration(revision=revision, name=name)
    )

    if not self._migrations.get(revision):
        self._migrations[revision] = migration

    if migration.up:
        raise DuplicateMigrationError(
            f"'up' migration already registered for revision {revision}"
        )
    migration.up = func

register_down

register_down(revision, name, func)
Source code in pelican/migration.py
54
55
56
57
58
59
60
61
62
63
64
65
66
def register_down(self, revision: int, name: str, func: F) -> None:
    migration = self._migrations.get(
        revision, Migration(revision=revision, name=name)
    )

    if not self._migrations.get(revision):
        self._migrations[revision] = migration

    if migration.down:
        raise DuplicateMigrationError(
            f"'down' migration already registered for revision {revision}"
        )
    migration.down = func

get_all

get_all()
Source code in pelican/migration.py
68
69
def get_all(self) -> list[Migration]:
    return sorted(self._migrations.values(), key=lambda m: m.revision)

get

get(revision)
Source code in pelican/migration.py
71
72
def get(self, revision: int) -> Migration | None:
    return self._migrations.get(revision)

clear

clear()
Source code in pelican/migration.py
74
75
def clear(self) -> None:
    self._migrations.clear()

pelican.migration.up

up(func)

Decorator to register an 'up' migration.

Example

from pelican import migration


@migration.up
def upgrade() -> None:
    ...
Source code in pelican/migration.py
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
def up(func: F) -> F:
    """Decorator to register an 'up' migration.

    ## Example

    ```python
    from pelican import migration


    @migration.up
    def upgrade() -> None:
        ...
    ```
    """
    from pelican import registry

    revision, name = _extract_migration_information(func)
    registry.register_up(revision, name, func)

    return func

pelican.migration.down

down(func)

Decorator to register a 'down' migration.

Example

from pelican import migration


@migration.down
def downgrade() -> None:
    ...
Source code in pelican/migration.py
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
def down(func: F) -> F:
    """Decorator to register a 'down' migration.

    ## Example

    ```python
    from pelican import migration


    @migration.down
    def downgrade() -> None:
        ...
    ```
    """
    from pelican import registry

    revision, name = _extract_migration_information(func)
    registry.register_down(revision, name, func)

    return func

pelican.migration.MigrationError

Bases: Exception

Base exception for migration errors.

pelican.migration.DuplicateMigrationError

Bases: MigrationError

Raised when attempting to register duplicate up/down for same revision.