Source code for voxcity.visualizer

"""Visualization subpackage.

All exports resolve lazily (PEP 562): importing this package costs nothing
until an attribute is touched, so packages that import ``voxcity.visualizer``
submodules (e.g. the generator) do not pay for pyvista/plotly/taichi.

GPU renderer attributes (``GPURenderer`` etc.) resolve to ``None`` when
taichi is not installed, preserving the previous try/except behavior.
"""

import importlib
import importlib.util

_SUBMODULES = {"builder", "renderer", "palette", "grids", "maps", "renderer_gpu"}

_ATTR_TO_MODULE = {
    "MeshBuilder": ".builder",
    "PyVistaRenderer": ".renderer",
    "create_multi_view_scene": ".renderer",
    "visualize_voxcity_plotly": ".renderer",
    "visualize_voxcity": ".renderer",
    "get_voxel_color_map": ".palette",
    "visualize_landcover_grid_on_basemap": ".grids",
    "visualize_numerical_grid_on_basemap": ".grids",
    "visualize_numerical_gdf_on_basemap": ".grids",
    "visualize_point_gdf_on_basemap": ".grids",
    "plot_grid": ".maps",
    "visualize_land_cover_grid_on_map": ".maps",
    "visualize_building_height_grid_on_map": ".maps",
    "visualize_numerical_grid_on_map": ".maps",
}

# GPU renderer exports: None when taichi is missing (legacy contract)
_GPU_ATTRS = {"GPURenderer", "TaichiRenderer", "visualize_voxcity_gpu"}

__all__ = sorted(_ATTR_TO_MODULE) + sorted(_GPU_ATTRS)


[docs] def __getattr__(name): if name in _SUBMODULES: return importlib.import_module(f".{name}", __name__) if name in _GPU_ATTRS: try: module = importlib.import_module(".renderer_gpu", __name__) except ImportError: return None return getattr(module, name) if name == "_HAS_GPU_RENDERER": return importlib.util.find_spec("taichi") is not None module_name = _ATTR_TO_MODULE.get(name) if module_name is not None: module = importlib.import_module(module_name, __name__) return getattr(module, name) raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
[docs] def __dir__(): return sorted( set(globals()) | _SUBMODULES | set(_ATTR_TO_MODULE) | _GPU_ATTRS | {"_HAS_GPU_RENDERER"} )