Units and quantities

Dimensions and semantic equality

Units compose algebraically. Derived units reduce to SI base dimensions with exact rational exponents. Two units that represent the same physical dimension and scale compare equal:

from unitflow import m, s, kg, N

velocity = m / s
force_unit = kg * m / s**2
assert force_unit == N

Exact scales and π

Conversion factors use exact rational arithmetic where possible; angular units such as rpmrad/s carry explicit π semantics so you do not silently approximate π in factors.

Quantities

A Quantity pairs a magnitude with a unit. Arithmetic propagates dimensions; illegal operations raise DimensionMismatchError. Use .to(target_unit) for conversions.

Quantity kinds (torque vs energy)

Some pairs share dimensions but differ in engineering meaning (e.g. torque vs energy). UnitFlow can attach metadata so display and semantics stay honest:

from unitflow import N, m, J, Quantity

torque = Quantity(12, (N * m).with_metadata(quantity_kind="torque"))
energy = Quantity(12, (N * m).with_metadata(quantity_kind="energy"))

User-defined units

Use define_unit, UnitNamespace, and generate_prefixes to extend catalogs without forking the library. Prefer exact int or Fraction magnitudes in definitions.

See also: Contributing (adding units and catalogs).