Skip to content

liblaf.melon.io.paraview.series ¤

Classes:

  • File
  • Series
  • SeriesReader
  • SeriesWriter

File pydantic-model ¤

Bases: BaseModel

Parameters:

Show JSON schema:
{
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    },
    "time": {
      "title": "Time",
      "type": "number"
    }
  },
  "required": [
    "name",
    "time"
  ],
  "title": "File",
  "type": "object"
}

Fields:

name pydantic-field ¤

name: str

time pydantic-field ¤

time: float

Series pydantic-model ¤

Bases: BaseModel

Parameters:

  • file_series_version ¤

    (Literal['1.0'], default: '1.0' ) –
  • files ¤

    (list[File], default: [] ) –
Show JSON schema:
{
  "$defs": {
    "File": {
      "properties": {
        "name": {
          "title": "Name",
          "type": "string"
        },
        "time": {
          "title": "Time",
          "type": "number"
        }
      },
      "required": [
        "name",
        "time"
      ],
      "title": "File",
      "type": "object"
    }
  },
  "properties": {
    "file-series-version": {
      "const": "1.0",
      "default": "1.0",
      "title": "File-Series-Version",
      "type": "string"
    },
    "files": {
      "default": [],
      "items": {
        "$ref": "#/$defs/File"
      },
      "title": "Files",
      "type": "array"
    }
  },
  "title": "Series",
  "type": "object"
}

Config:

  • alias_generator: snake_to_kebab

Fields:

  • file_series_version (Literal['1.0'])
  • files (list[File])

file_series_version pydantic-field ¤

file_series_version: Literal['1.0'] = '1.0'

files pydantic-field ¤

files: list[File] = []

model_config class-attribute instance-attribute ¤

model_config = ConfigDict(alias_generator=snake_to_kebab)

SeriesReader ¤

SeriesReader(file: StrPath, loader: Callable[[Path], T])

Bases: Sequence[T]


              flowchart TD
              liblaf.melon.io.paraview.series.SeriesReader[SeriesReader]

              

              click liblaf.melon.io.paraview.series.SeriesReader href "" "liblaf.melon.io.paraview.series.SeriesReader"
            

Parameters:

Methods:

  • __getitem__
  • __len__

Attributes:

Source code in src/liblaf/melon/io/paraview/series/_reader.py
24
25
26
def __init__(self, file: StrPath, loader: Callable[[Path], T]) -> None:
    file = Path(file)
    self.__attrs_init__(file=file, loader=loader)  # pyright: ignore[reportAttributeAccessIssue]

file instance-attribute ¤

file: Path

folder property ¤

folder: Path

loader instance-attribute ¤

loader: Callable[[Path], T]

series cached property ¤

series: Series

time_values property ¤

time_values: list[float]

__getitem__ ¤

__getitem__(index: int) -> T
__getitem__(index: slice) -> Sequence[T]
Source code in src/liblaf/melon/io/paraview/series/_reader.py
32
33
34
35
36
37
38
@override
def __getitem__(self, index: int | slice) -> T | Sequence[T]:
    __tracebackhide__ = True
    files: File | list[File] = self.series.files[index]
    if isinstance(files, File):
        return self.loader(self.folder / files.name)
    return [self.loader(self.folder / f.name) for f in files]

__len__ ¤

__len__() -> int
Source code in src/liblaf/melon/io/paraview/series/_reader.py
40
41
42
@override
def __len__(self) -> int:
    return len(self.series.files)

SeriesWriter ¤

SeriesWriter(
    file: StrPath,
    /,
    *,
    clear: bool = False,
    fps: float = 30.0,
    step: float | None = None,
)

Bases: Sequence[File], AbstractContextManager


              flowchart TD
              liblaf.melon.io.paraview.series.SeriesWriter[SeriesWriter]

              

              click liblaf.melon.io.paraview.series.SeriesWriter href "" "liblaf.melon.io.paraview.series.SeriesWriter"
            

Parameters:

Methods:

  • __enter__
  • __exit__
  • __getitem__
  • __len__
  • append
  • end
  • save
  • start

Attributes:

Source code in src/liblaf/melon/io/paraview/series/_writer.py
41
42
43
44
45
46
47
48
49
50
51
52
53
54
def __init__(
    self,
    file: StrPath,
    /,
    *,
    clear: bool = False,
    fps: float = 30.0,
    step: float | None = None,
) -> None:
    if step is None:
        step = 1.0 / fps
    self.__attrs_init__(file=Path(file), series=Series(), step=step)  # pyright: ignore[reportAttributeAccessIssue]
    if clear:
        shutil.rmtree(self.folder, ignore_errors=True)

ext property ¤

ext: str

file instance-attribute ¤

file: Path

folder property ¤

folder: Path

fps property ¤

fps: float

name property ¤

name: str

series instance-attribute ¤

series: Series

step instance-attribute ¤

step: float

time property ¤

time: float

__enter__ ¤

__enter__() -> Self
Source code in src/liblaf/melon/io/paraview/series/_writer.py
66
67
68
def __enter__(self) -> Self:
    self.start()
    return self

__exit__ ¤

__exit__(
    exc_type: type[BaseException] | None,
    exc_value: BaseException | None,
    traceback: TracebackType | None,
) -> None
Source code in src/liblaf/melon/io/paraview/series/_writer.py
70
71
72
73
74
75
76
def __exit__(
    self,
    exc_type: type[BaseException] | None,
    exc_value: BaseException | None,
    traceback: types.TracebackType | None,
) -> None:
    self.end()

__getitem__ ¤

__getitem__(index: int) -> File
__getitem__(index: slice) -> list[File]
Source code in src/liblaf/melon/io/paraview/series/_writer.py
60
61
def __getitem__(self, index: int | slice) -> File | list[File]:
    return self.series.files[index]

__len__ ¤

__len__() -> int
Source code in src/liblaf/melon/io/paraview/series/_writer.py
63
64
def __len__(self) -> int:
    return len(self.series.files)

append ¤

append(
    data: Any,
    *,
    time: float | None = None,
    timestep: float | None = None,
) -> None
Source code in src/liblaf/melon/io/paraview/series/_writer.py
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
def append(
    self, data: Any, *, time: float | None = None, timestep: float | None = None
) -> None:
    __tracebackhide__ = True
    filename: str = f"{self.name}_{len(self):06d}{self.ext}"
    filepath: Path = self.folder / filename
    save(filepath, data)
    if time is None:
        if timestep is None:
            timestep = self.step
        time = self.time + timestep
    self.series.files.append(
        File(name=filepath.relative_to(self.file.parent).as_posix(), time=time)
    )
    self.save()

end ¤

end() -> None
Source code in src/liblaf/melon/io/paraview/series/_writer.py
116
117
def end(self) -> None:
    self.save()

save ¤

save() -> None
Source code in src/liblaf/melon/io/paraview/series/_writer.py
119
120
121
122
def save(self) -> None:
    grapes.save(
        self.file, self.series, force_ext=".json", pydantic={"by_alias": True}
    )

start ¤

start() -> None
Source code in src/liblaf/melon/io/paraview/series/_writer.py
124
125
def start(self) -> None:
    pass