Source code for airflow_pydantic.utils.variable
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: str | None = Field(default="", description="Variable value", alias="_val", exclude=True)
description: str | None = Field(default="", description="Variable description")
is_encrypted: bool | None = Field(default=False, description="Whether the variable is encrypted")
# Not technically a field, but needed
deserialize_json: bool | None = 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 = {"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)