Metadata-Version: 2.5
Name: unxts.parametric
Version: 2.0.1
Summary: Dimension-parametrized quantities for unxt (canonical: unxts.parametric)
Project-URL: Bug Tracker, https://github.com/GalacticDynamics/unxt/issues
Project-URL: Homepage, https://github.com/GalacticDynamics/unxt
Author-email: GalacticDynamics <nstarman@users.noreply.github.com>, Nathaniel Starkman <nstarman@users.noreply.github.com>
License-Expression: BSD-3-Clause
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: astropy>=7.0.0
Requires-Dist: plum-dispatch!=2.10.0,>=2.5.7
Requires-Dist: unxt>=2.0.0
Requires-Dist: unxts-api>=2.0.0
Description-Content-Type: text/markdown

# unxts.parametric

Dimension-parametrized quantities for [unxt](https://github.com/GalacticDynamics/unxt).

This is the canonical package (`unxts.parametric`). It provides quantity types parametrized by physical dimension, enabling static and runtime enforcement of dimensional constraints.

## Install

```bash
pip install unxts.parametric
```

## Usage

`ParametricQuantity` (alias `PQ`) encodes its physical dimension in its _type_, so — unlike the default `unxt.Quantity` — it checks the dimension at construction:

```python
import unxts.parametric as up

up.PQ([1, 2, 3], "m")  # dimension inferred from the unit
up.PQ["length"](1, "m")  # dimension checked against the unit

# A unit that doesn't match the declared dimension raises:
try:
    up.PQ["length"](1, "s")
except ValueError as e:
    print(e)  # Physical type mismatch.
```
