unitflow.define

Unit definitions, namespaces, registries, and SI prefix generation.

Unit-definition and namespace exports.

class unitflow.define.UnitNamespace(name)[source]

Bases: object

A simple named namespace for unit lookup by symbol, name, or alias.

Parameters:

name (str)

register(unit)[source]
Parameters:

unit (Unit)

Return type:

Unit

define_unit(*, name, symbol, expr, aliases=(), family=None, quantity_kind=None)[source]
Parameters:
  • name (str)

  • symbol (str)

  • expr (Unit | Quantity)

  • aliases (tuple[str, ...])

  • family (UnitFamily | None)

  • quantity_kind (str | None)

Return type:

Unit

resolve(identifier)[source]
Parameters:

identifier (str)

Return type:

Unit

identifiers()[source]
Return type:

tuple[str, …]

class unitflow.define.UnitRegistry(name='registry')[source]

Bases: object

A lightweight registry that resolves identifiers across namespaces.

Parameters:

name (str)

add_namespace(namespace)[source]
Parameters:

namespace (UnitNamespace)

Return type:

UnitNamespace

resolve(identifier)[source]
Parameters:

identifier (str)

Return type:

Unit

namespaces()[source]
Return type:

tuple[str, …]

unitflow.define.define_unit(*, name, symbol, expr, aliases=(), family=None, quantity_kind=None)[source]

Define a new semantic unit from an existing unit or exact quantity expression.

Parameters:
  • name (str)

  • symbol (str)

  • expr (Unit | Quantity)

  • aliases (tuple[str, ...])

  • family (UnitFamily | None)

  • quantity_kind (str | None)

Return type:

Unit

unitflow.define.generate_prefixes(namespace, base_unit, *, prefixes=None, include=None, exclude=None, resolver=None)[source]

Generate prefixed variants of a base unit and register them in a namespace.

Returns a dict mapping prefix names to the created units.

Parameters:
  • namespace (UnitNamespace)

  • base_unit (Unit)

  • prefixes (dict[str, tuple[str, Fraction]] | None)

  • include (set[str] | None)

  • exclude (set[str] | None)

  • resolver (DisplayResolver | None)

Return type:

dict[str, Unit]