siquant
is a simple pure python 3 library to make dimensional analysis painless.
It is a small, flexible codebase aimed at 2 specific related problems: implicit unit tracking, and ensuring semantic correctness (fail fast) with minimal overhead.
- Install
siquant
pip3 install siquant==4.0.0b13
- Implicit Unit Tracking:
>>> from siquant import si
>>> a = 10 * si.millimeters
>>> b = 10 * si.kilometers
>>> ab = a * b
>>> ab.quantity
100
>>> str(ab.units)
'1*m**2'
>>> ab.get_as(si.millimeters ** 2)
100000000.0
- Dimensional Analysis:
>>> from siquant.dimensions import area_t
>>> from siquant import imperial, si
>>> def real_estate_price(area):
... assert area.is_of(area_t) # or raise if at application/lib dmz
... monies_per_square_foot = 100 / imperial.feet ** 2
... return area * monies_per_square_foot
...
>>> house_price = real_estate_price(100 * si.meters ** 2)
>>> house_price
Quantity(10000, SIUnit(10.763910, (0, 0, 0, 0, 0, 0, 0)))
>>> round(house_price.get_as(si.unity))
107639
siquant
is released under the MIT LICENSE.
Releases are hosted in the pypi package repository.
More detailed documentation and examples can be found on readthedocs.