Skip to content

liblaf.melon.utils ¤

Functions:

  • abbr_type_name
  • as_names
  • is_array_like
  • is_data_set
  • is_image_data
  • is_instance
  • is_numpy
  • is_point_set
  • is_poly_data
  • is_subclass
  • is_trimesh
  • is_unstructured_grid
  • random_name

abbr_type_name ¤

abbr_type_name(cls: Any) -> str
Source code in src/liblaf/melon/utils/_abbr_type_name.py
4
5
6
7
8
def abbr_type_name(cls: Any) -> str:
    if not isinstance(cls, type):
        cls = type(cls)
    module_name: str = cls.__module__.split(".", maxsplit=1)[0]
    return f"{module_name}.{cls.__name__}"

as_names ¤

as_names(
    names: str | Iterable[str] | None,
    attributes: DataSetAttributes | None = None,
) -> Collection[str]
Source code in src/liblaf/melon/utils/_as_names.py
 6
 7
 8
 9
10
11
12
13
14
15
def as_names(
    names: str | Iterable[str] | None, attributes: pv.DataSetAttributes | None = None
) -> Collection[str]:
    if names is None:
        if attributes is None:
            return []
        return attributes.keys()
    if isinstance(names, str):
        return [names]
    return list(names)

is_array_like ¤

is_array_like(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
17
18
19
20
21
22
23
24
25
def is_array_like(obj: Any) -> bool:
    # TODO: Implement a more robust check for array-like objects.
    return (
        is_jax(obj)
        or is_numpy(obj)
        or is_torch(obj)
        or is_warp(obj)
        or isinstance(obj, Sequence)
    )

is_data_set ¤

is_data_set(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
50
51
def is_data_set(obj: Any) -> bool:
    return is_instance(obj, "pyvista", "DataSet")

is_image_data ¤

is_image_data(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
54
55
def is_image_data(obj: Any) -> bool:
    return is_instance(obj, "pyvista", "ImageData")

is_instance ¤

is_instance(obj: Any, prefix: str, name: str) -> bool
Source code in src/liblaf/melon/utils/_typing.py
6
7
def is_instance(obj: Any, prefix: str, name: str) -> bool:
    return is_subclass(type(obj), prefix, name)

is_numpy ¤

is_numpy(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
35
36
def is_numpy(obj: Any) -> bool:
    return is_instance(obj, "numpy", "ndarray")

is_point_set ¤

is_point_set(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
58
59
def is_point_set(obj: Any) -> bool:
    return is_instance(obj, "pyvista", "PointSet")

is_poly_data ¤

is_poly_data(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
62
63
def is_poly_data(obj: Any) -> bool:
    return is_instance(obj, "pyvista", "PolyData")

is_subclass ¤

is_subclass(cls: type, prefix: str, name: str) -> bool
Source code in src/liblaf/melon/utils/_typing.py
10
11
12
13
14
def is_subclass(cls: type, prefix: str, name: str) -> bool:
    for base in inspect.getmro(cls):
        if base.__module__.startswith(prefix) and base.__name__ == name:
            return True
    return False

is_trimesh ¤

is_trimesh(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
71
72
def is_trimesh(obj: Any) -> bool:
    return is_instance(obj, "trimesh", "Trimesh")

is_unstructured_grid ¤

is_unstructured_grid(obj: Any) -> bool
Source code in src/liblaf/melon/utils/_typing.py
66
67
def is_unstructured_grid(obj: Any) -> bool:
    return is_instance(obj, "pyvista", "UnstructuredGrid")

random_name ¤

random_name(prefix: str = '', length: int = 8) -> str
Source code in src/liblaf/melon/utils/_random.py
5
6
7
8
9
def random_name(prefix: str = "", length: int = 8) -> str:
    suffix: str = "".join(
        random.choices(string.ascii_lowercase + string.digits, k=length)  # noqa: S311
    )
    return f"{prefix}{suffix}"