Skip to main content

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


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)

Uploaded Source

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

Hashes for cyquantx-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7b481ca9dfbb86b9efb24c6e7db96d8e9da7eb52dc9e63fec48422c3a4bea9fe
MD5 40e08d872dda6bbddaa9f759e668f0b6
BLAKE2b-256 f0a29efa269e960f9fb67126b18aad2551394236c92f72c18f4290e062776f0f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page