cyquantx


Namecyquantx JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
Summarycython dimensional analysis and unit tracking utility
upload_time2025-07-28 18:23:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords c-extension si units quantities dimensional analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            cyquant
=======

simple, efficient dimensional analysis

## basics

```python
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

```python
# 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

```python
from cyquant.format_quantity import show_quantity
show_quantity(marathon_miles)  # 4.184e+04 m
```

## with attrs

```python
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
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "cyquantx",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "c-extension, SI, units, quantities, dimensional analysis",
    "author": null,
    "author_email": "Greg Echelberger <gechelberger@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/f0/a2/9efa269e960f9fb67126b18aad2551394236c92f72c18f4290e062776f0f/cyquantx-1.1.0.tar.gz",
    "platform": null,
    "description": "cyquant\n=======\n\nsimple, efficient dimensional analysis\n\n## basics\n\n```python\nfrom cyquant import si, SIUnit\n\nmiles = SIUnit(1609.344) * si.meters\nmarathon_miles = 26 * miles\nmarathon_miles.quantity  # 26\n\nmarathon_meters = marathon_miles.cvt_to(si.meters)\nmarathon_meters.quantity  # 41842.944\nmarathon_meters.get_as(miles)  # 26\nmarathon_meters.get_as(si.newton_meters)  # ValueError\nmarathon_miles == marathon_meters  # True\n```\n\n## approximation & tolerances\n\n```python\n# absolute tolerance\nmarathon_miles.a_approx(marathon_meters, atol=1e-9)  # True\n\n# relative tolerance\nmarathon_miles.r_approx(marathon_meters, rtol=1e-9)  # True\n\n# quantity tolerance\nmarathon_miles.q_approx(marathon_meters, qtol=1 * si.millimeters)\n```\n\n## normalized string output\n\n```python\nfrom cyquant.format_quantity import show_quantity\nshow_quantity(marathon_miles)  # 4.184e+04 m\n```\n\n## with attrs\n\n```python\nfrom cyquant import si, converter\nfrom cyquant import Quantity as Q\nfrom attrs import define, field\n\n@define\nclass Foo:\n    mass: Q = field(converter=converter(si.kilograms, promotes=True))\n    size: Q = field(converter=converter(si.meters ** 3))\n\n    def liters(self):\n        return self.size.get_as(si.liters)\n\nfoo1 = Foo(mass=10, size=1 * si.meters ** 3)\nfoo2 = Foo(mass=10 * si.kilograms, size=1000000000 * si.millimeters ** 3)\nassert foo1 == foo2\n\nfoo3 = Foo(mass=10, size=10) # TypeError\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "cython dimensional analysis and unit tracking utility",
    "version": "1.1.0",
    "project_urls": null,
    "split_keywords": [
        "c-extension",
        " si",
        " units",
        " quantities",
        " dimensional analysis"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0a29efa269e960f9fb67126b18aad2551394236c92f72c18f4290e062776f0f",
                "md5": "40e08d872dda6bbddaa9f759e668f0b6",
                "sha256": "7b481ca9dfbb86b9efb24c6e7db96d8e9da7eb52dc9e63fec48422c3a4bea9fe"
            },
            "downloads": -1,
            "filename": "cyquantx-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "40e08d872dda6bbddaa9f759e668f0b6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 429910,
            "upload_time": "2025-07-28T18:23:32",
            "upload_time_iso_8601": "2025-07-28T18:23:32.488149Z",
            "url": "https://files.pythonhosted.org/packages/f0/a2/9efa269e960f9fb67126b18aad2551394236c92f72c18f4290e062776f0f/cyquantx-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-28 18:23:32",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "cyquantx"
}
        
Elapsed time: 1.57176s