Source code for energytrackr.plot.builtin_plots.registry
"""Registry for BasePlot subclasses, enabling automatic discovery of available plots."""fromenergytrackr.plot.core.interfacesimportBasePlotfromenergytrackr.utils.exceptionsimportPlotAlreadyRegisteredError_PLOT_REGISTRY:dict[str,type[BasePlot]]={}
[docs]defregister_plot(plot_cls:type[BasePlot])->type[BasePlot]:"""Class decorator to register a BasePlot subclass. Usage:: @register_plot class MyPlot(BasePlot): ... Registered under its class name. Args: plot_cls (type[BasePlot]): A subclass of BasePlot Returns: type[BasePlot]: The registered plot class. Raises: PlotAlreadyRegisteredError: If the plot class is already registered. """if(name:=plot_cls.__name__)in_PLOT_REGISTRY:raisePlotAlreadyRegisteredError(name)_PLOT_REGISTRY[name]=plot_clsreturnplot_cls
[docs]defget_registered_plots()->dict[str,type[BasePlot]]:"""Return mapping of plot names to BasePlot subclasses. Returns: dict[str, type[BasePlot]]: Mapping of plot names to BasePlot subclasses. """returndict(_PLOT_REGISTRY)