Back to main.

pint.py

In some countries length is measured in feet while in other countries it is measured in meters. If you're going to translate these units you want to be careful though, because a mere typo might ruin everything. That's why it might be better to use a package like pint.

You can pip install it via:

``````pip install pint
``````

Once installed, you can start using the unit registry inside of pint.

``````import pint
ureg = pint.UnitRegistry()
``````

This unit registry is the main object that you'll interact with. It allows you to define quantities that have a magnitude and a unit attached. For example, you can add meters and centimeters together by just using arithmetic.

``````3 * ureg.meter + 4 * ureg.cm
# 3.04 meter
``````

The result of `3 * ureg.meter + 4 * ureg.cm` is itself an object that can be used to translate the quantity to another unit.

``````(3 * ureg.meter + 4 * ureg.cm).to(ureg.feet)
# 9.9737 foot
``````

Pint also allows you to create units dynamically. Speed, for example, is defined by distance divided by time.

``````60 * ureg.miles / ureg.hour
# 60.0 mile/hour
``````

You can translate this to meters per minute, just like before!

``````(60 * ureg.miles / ureg.hour).to(ureg.meters/ureg.minute)
# 1609.344 meter/minute
``````

You can also use strings to define units. If you'd like. Sometimes this is more convenient.

``````ureg("meter/second**2") * 10 * ureg("seconds")
# 10.0 meter/second
``````

A final thing that's worth pointing out is that you can also define your own units.

``````ureg.define("dog_year = 52 * day = dy")
(5 * ureg("years").to(ureg("dog_year")))
# 35.1201 dog_year
``````

There are lots of units available in the library so certainly feel free to explore. The final thing that's worth pointing out is that you can also fetch the properies of a quantity via;

``````(60 * ureg.miles / ureg.hour).magnitude
# 60.0
(60 * ureg.miles / ureg.hour).units
# mile/hour
(60 * ureg.miles / ureg.hour).dimensionality
# <UnitsContainer({'[length]': 1, '[time]': -1})>
``````

Back to main.