Source code for ska_oso_pdm._shared.metadata

import warnings
from datetime import datetime, timezone
from importlib.metadata import version
from typing import Optional

from packaging import version as convertVersion
from pydantic import AwareDatetime, Field, field_validator

from ska_oso_pdm._shared.pdm_object import PdmObject

PDM_VERSION: str = version("ska-oso-pdm")


[docs] class Metadata(PdmObject): """Represents metadata about other entities.""" version: int = 1 created_by: Optional[str] = None created_on: AwareDatetime = Field( default_factory=lambda: datetime.now(timezone.utc) ) last_modified_by: Optional[str] = None last_modified_on: AwareDatetime = Field( default_factory=lambda: datetime.now(timezone.utc) ) pdm_version: str = Field( title="PDM version", default=PDM_VERSION, pattern=r"^\d+\.\d+\.\d+[-\w]*$", description="The version of the PDM used to generate the entity", ) @field_validator("pdm_version") @classmethod def pdm_version_is_valid_value(cls, check_version): if convertVersion.parse(PDM_VERSION) > convertVersion.parse(check_version): warnings.warn( f"Object generated with PDM version {check_version}, " f"version {PDM_VERSION} in use.", DeprecationWarning, stacklevel=2, ) return check_version