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()