Source code for pyvcad_attribute_resolver.registry

from .conversion_graph import ConversionGraph
from .conversion_entry import ConversionEntry

_global_graph = ConversionGraph()


[docs] def register_conversion(source, target, converter_factory, name=None, priority=0, tags=None, required_inputs=None): """Register a conversion edge in the global graph. Arguments: source: Input attribute name (e.g. ``"shore_hardness"``). target: Output attribute name (e.g. ``"temperature"``). converter_factory: Zero-argument callable that returns a fresh ``AttributeConverterBase`` instance. name: Optional human-readable name. Defaults to ``"{source}_to_{target}"``. priority: Higher values are preferred during disambiguation. tags: Optional list of context-filtering labels. required_inputs: Optional list of attribute names that must be present before this conversion can be applied. Defaults to ``[source]``. Returns: The name of the registered conversion. """ entry = ConversionEntry(source, target, converter_factory, name, priority, tags, required_inputs) _global_graph.add_edge(entry) return entry.name
[docs] def unregister_conversion(name): """Remove a conversion by name. Raises ``KeyError`` if the name is not found. """ _global_graph.remove_edge(name)
[docs] def list_conversions(): """Return all registered ConversionEntry objects.""" return _global_graph.edges()
[docs] def clear_conversions(): """Remove all registered conversions.""" _global_graph.clear()