Unit contexts
Unit contexts let a plugin provide metadata-dependent unit conversions without adding domain-specific traits to core objects.
For example, an NMR plugin can convert between ppm and Hz using acquisition frequency metadata stored on a coordinate. The plugin registers a context setup function, an optional predicate, and an optional argument extractor:
def register_unit_contexts(self) -> list[dict]:
return [
{
"name": "nmr",
"func": set_nmr_context,
"predicate": applies_to_coord,
"argument_extractor": get_larmor_frequency,
"description": "NMR ppm/frequency conversion context",
},
]
The core asks the registry for an applicable context during unit conversion. If no plugin context applies, normal Pint conversion is used.