Source code for airflow_pydantic.utils.variable

from typing import Optional

from pydantic import (
    Field,
    model_validator,
)

from ..airflow import Variable as BaseVariable
from ..core import BaseModel

__all__ = ("Variable",)


[docs] class Variable(BaseModel): key: str = Field(description="Variable key") val: Optional[str] = Field(default="", description="Variable value", alias="_val", exclude=True) description: Optional[str] = Field(default="", description="Variable description") is_encrypted: Optional[bool] = Field(default=False, description="Whether the variable is encrypted") # Not technically a field, but needed deserialize_json: Optional[bool] = Field(default=False, description="Whether to deserialize JSON") @model_validator(mode="before") @classmethod def _validate_variable(cls, v): if isinstance(v, str): v = {"key": v} elif isinstance(v, BaseVariable): v = dict(key=v.key, val=v._val, description=v.description, is_encrypted=v.is_encrypted) return v
[docs] def get(self): return BaseVariable.get(self.key, deserialize_json=self.deserialize_json)