PH-Units:
A package for converting common Passive House unit types (IP | SI).
Usage:
The most basic usage is a simple conversion from one known unit to another:
>>> from ph_units.converter import convert
>>> # Convert 12.45 meters to feet...
>>> convert(12.45, "M", "FT") -> 40.85 # FT
The package also has a parser which can take simple text in the format: "{value} {unit}" and will split apart the text into a numeric part and a unit part:
>>> from ph_units.parser import parse_input
>>> val, unit = parse_input("0.17 BTU/HR-FT2-F")
>>> val # 0.17
>>> unit # 'BTU/HR-FT2-F'
The results of the parser can then be fed into the converter
>>> from ph_units.converter import convert
>>> convert(val, "W/MK", unit) -> 0.098 # BTU/HR-FT2-F
Unit Types Supported:
- area (M2, FT2)
- density (KG/M3, LB/FT3)
- emissions factors (G/KWH)
- energy (Wh/M3, Wh/M2, kW/M2, kBtu/ft2, Btu/ft2)
- envelope (U-Value, R-Value)
- length (M, CM, MM, IN, FT)
- moisture vapor resistance (MNS/G, PERM-IN)
- power (kW, W, W/M2, W/ft2, W/cfm, Btu/h-ft2, Btu/h)
- speed (m/d, m/s, m/h, ft/s, ft/d)
- temperature (C, F)
- volume flow (M3/HR, CFM)
- volume (M2, FT3, LITER, GALLON)
Adding New Units:
The conversion factors used are stored as types in the ph_units.unit_types directory. Note that the types also allow for common 'alias' descriptions ie: 'feet' can be denoted as "FT", "ft." or even the symbol '
The Unit Type:
The package also includes a new Unit type which subclasses from float but also retains the unit-type information. This allows for easy conversion between units. For example:
>>> from ph_units.unit_type import Unit
>>> a_meter_value = Unit(1.0, "M")
>>> print(a_meter_value)
>>> "1.0 (M)"
>>> a_foot_value = a_meter_value.as_a("FT")
>>> print(a_foot_value)
>>> "3.281(FT)"
This Unit type supports basic mathematical operations like addition and subtraction, as well as unit-related operations like 'inversion'.
The Unit type also supports serialization and deserialization to and from JSON. Additionally, the Unit type can be used as a dataclass field type and should serialize properly when dataclass as_dict is called on the parent object.
Development:
PH-units is a dependency-free leaf library that must run under both IronPython 2.7 (it is loaded into Rhino via the Honeybee-PH plugins) and CPython 3.10+. Tests: python -m pytest. For contributor/agent orientation see CLAUDE.md and the context/ folder.
Metadata
Release files for PH-units 1.5.42
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ph_units-1.5.42.tar.gz | 34.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ph_units-1.5.42-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.5 kB
Release files / ph_units-1.5.42.tar.gz
| Download URL | ph_units-1.5.42.tar.gz |
|---|---|
| Size | 34.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a46916cf564a219444114d82cf2f4ccff6efd05c28dcaf6144baca570cd7c7b2
|
|
BLAKE2b-256 checksum How to use checksums |
cd7b583f60099c9b44e309b3b1be8eb07a706b800507a0807a0353f7134f6a06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.
Transparency logRelease files / ph_units-1.5.42-py3-none-any.whl
| Download URL | ph_units-1.5.42-py3-none-any.whl |
|---|---|
| Size | 32.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4ce70c571829ffd54f4e61e1cdad16862362d20186cb2bd80f4f0f5734912fd
|
|
BLAKE2b-256 checksum How to use checksums |
2b007b734a010c5a2f0aebffae87259a42325d27e405f826eeb8e83faff908c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.
Transparency log