Metric registry¶
A metric measures a finished run and draws as a level-less plot. Every metric
registers here under a name; third-party metrics load through the
ob_analytics.metrics entry-point group (see
Extending). A registered value is a
Metric instance — a metric needs no per-run construction, so
the object registered is the object called.
The name is also the plot concept the metric draws under, so a renderer
registered at (name, None, backend) is the metric's face. A registered metric
shows up in available_concepts(), renders through
result.plot(name), and gets its own gallery card — with no edit to
ob-analytics.
Metrics run on demand, not during Pipeline.run: use
PipelineResult.metric for one, PipelineResult.metrics() for
every metric that applies to the run's resolution.
register_metric ¶
Register metric under its own :attr:~ob_analytics.protocols.Metric.name.
Case-insensitive; overwriting an existing registration is allowed (handy for tests and for a plug-in that intentionally shadows a built-in).
get_metric ¶
Return the metric registered under name (case-insensitive).
Raises:
| Type | Description |
|---|---|
KeyError
|
If no metric is registered under name; the message lists the registered names. |
load_metric_plugins ¶
Discover and register metrics advertised via entry points.
Scans the :data:ENTRY_POINT_GROUP entry-point group; each entry's value
is loaded to a :class:~ob_analytics.protocols.Metric class, instantiated
with no arguments, and registered under its own name. This is what
lets a metric live in a separate installable package without editing
ob-analytics.
Idempotent: the scan runs once per process unless force is set (the test suite forces a re-scan after monkeypatching the entry points). A plug-in that fails to import is logged and skipped, so one broken package cannot stop the rest from loading.
Returns:
| Type | Description |
|---|---|
list of str
|
The names newly registered by this call. |