Source code for pyradtran.models.base

"""Base class for all uvspec option models."""

from pydantic import BaseModel, ConfigDict


[docs] class UvspecOption(BaseModel): """Base class for uvspec keyword group models. All models are frozen (immutable) and reject extra fields to catch typos at the Python level rather than at uvspec runtime. Subclasses must implement ``to_uvspec_lines()`` to serialize their configuration to uvspec input file format. """ model_config = ConfigDict( extra="forbid", frozen=True, populate_by_name=True, )
[docs] def to_uvspec_lines(self) -> list[str]: """Serialize this configuration to uvspec input file lines. Returns: List of strings, each being one line of a uvspec input file. """ raise NotImplementedError
[docs] def to_uvspec_items(self) -> list[tuple[int, str]]: """Return (phase, keyword_line) pairs for priority-sorted output. Subclasses may override to assign different phases to different keywords. Default phase is 9 (output section). """ default_phase = 9 return [(default_phase, line) for line in self.to_uvspec_lines()]