Source code for vuecore.engines.registry

from typing import Callable
from vuecore import PlotType, EngineType

# Registries to hold the functions from each backend
PLOT_BUILDERS = {}
PLOT_SAVERS = {}


[docs] def register_builder(plot_type: PlotType, engine: EngineType, func: Callable): """ Registers a plot builder function for a given plot type and engine. This allows dynamic dispatch of plotting functions depending on the desired plot type (e.g., scatter, histogram) and backend engine (e.g., Plotly, Matplotlib). Parameters ---------- plot_type : PlotType The type of plot (e.g., SCATTER). engine : EngineType The rendering engine (e.g., PLOTLY). func : Callable The plotting function to register for this type and engine. Returns ------- None """ if engine not in PLOT_BUILDERS: PLOT_BUILDERS[engine] = {} PLOT_BUILDERS[engine][plot_type] = func
[docs] def register_saver(engine: EngineType, func: Callable): """ Registers a save function for a given engine. This allows saving plots using engine-specific logic (e.g., Plotly's `write_image`, Matplotlib's `savefig`, etc.). Parameters ---------- engine : EngineType The rendering engine for which to register the saver function. func : Callable The saving function to use for this engine. Returns ------- None """ PLOT_SAVERS[engine] = func
[docs] def get_builder(plot_type: PlotType, engine: EngineType) -> Callable: """ Retrieves a plot builder function from the registry. Looks up the plotting function based on the specified plot type and engine. Parameters ---------- plot_type : PlotType The type of plot to retrieve. engine : EngineType The engine used to render the plot. Returns ------- Callable The registered plotting function. Raises ------ ValueError If no function is found for the given plot type and engine. """ try: return PLOT_BUILDERS[engine][plot_type] except KeyError: raise ValueError(f"No '{plot_type}' builder found for engine '{engine}'")
[docs] def get_saver(engine: EngineType) -> Callable: """ Retrieves a save function from the registry. Returns the function used to save plots for the specified engine. Parameters ---------- engine : EngineType The engine for which the saving function should be retrieved. Returns ------- Callable The registered saving function. Raises ------ ValueError If no saver function is registered for the given engine. """ try: return PLOT_SAVERS[engine] except KeyError: raise ValueError(f"No saver found for engine '{engine}'")