cython dimensional analysis and unit tracking utility
Project description
cyquant
simple, efficient dimensional analysis
basics
from cyquant import si, SIUnit
miles = SIUnit(1609.344) * si.meters
marathon_miles = 26 * miles
marathon_miles.quantity # 26
marathon_meters = marathon_miles.cvt_to(si.meters)
marathon_meters.quantity # 41842.944
marathon_meters.get_as(miles) # 26
marathon_meters.get_as(si.newton_meters) # ValueError
marathon_miles == marathon_meters # True
approximation & tolerances
# absolute tolerance
marathon_miles.a_approx(marathon_meters, atol=1e-9) # True
# relative tolerance
marathon_miles.r_approx(marathon_meters, rtol=1e-9) # True
# quantity tolerance
marathon_miles.q_approx(marathon_meters, qtol=1 * si.millimeters)
normalized string output
from cyquant.format_quantity import show_quantity
show_quantity(marathon_miles) # 4.184e+04 m
with attrs
from cyquant import si, converter
from cyquant import Quantity as Q
from attrs import define, field
@define
class Foo:
mass: Q = field(converter=converter(si.kilograms, promotes=True))
size: Q = field(converter=converter(si.meters ** 3))
def liters(self):
return self.size.get_as(si.liters)
foo1 = Foo(mass=10, size=1 * si.meters ** 3)
foo2 = Foo(mass=10 * si.kilograms, size=1000000000 * si.millimeters ** 3)
assert foo1 == foo2
foo3 = Foo(mass=10, size=10) # TypeError
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cyquantx-1.1.0.tar.gz
(429.9 kB
view details)
File details
Details for the file cyquantx-1.1.0.tar.gz.
File metadata
- Download URL: cyquantx-1.1.0.tar.gz
- Upload date:
- Size: 429.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b481ca9dfbb86b9efb24c6e7db96d8e9da7eb52dc9e63fec48422c3a4bea9fe
|
|
| MD5 |
40e08d872dda6bbddaa9f759e668f0b6
|
|
| BLAKE2b-256 |
f0a29efa269e960f9fb67126b18aad2551394236c92f72c18f4290e062776f0f
|