Skip to content

ApplicationModel

Bases: PumCustomBaseModel

ApplicationModel holds the configuration for application hooks.

Attributes:

Name Type Description
drop list[HookModel] | None

Hooks to drop the application before applying migrations.

create list[HookModel] | None

Hooks to create the application after applying migrations.

Source code in pum/config_model.py
class ApplicationModel(PumCustomBaseModel):
    """
    ApplicationModel holds the configuration for application hooks.

    Attributes:
        drop: Hooks to drop the application before applying migrations.
        create: Hooks to create the application after applying migrations.
    """

    drop: list[HookModel] | None = Field(default=[], alias="pre")
    create: list[HookModel] | None = Field(default=[], alias="post")

    @model_validator(mode="before")
    def handle_legacy_names(cls, values):
        """Support legacy field names for backward compatibility."""
        # If new names don't exist but old names do, use old names
        if "drop" not in values and "pre" in values:
            values["drop"] = values.pop("pre")
        if "create" not in values and "post" in values:
            values["create"] = values.pop("post")
        return values

handle_legacy_names

handle_legacy_names(values)

Support legacy field names for backward compatibility.

Source code in pum/config_model.py
@model_validator(mode="before")
def handle_legacy_names(cls, values):
    """Support legacy field names for backward compatibility."""
    # If new names don't exist but old names do, use old names
    if "drop" not in values and "pre" in values:
        values["drop"] = values.pop("pre")
    if "create" not in values and "post" in values:
        values["create"] = values.pop("post")
    return values