Skip to content

Commit a83ed01

Browse files
authored
document the default format (#132)
* add pint_xarray to the doctest namespace * document the option to use the registry's default
1 parent 2c8a27a commit a83ed01

File tree

2 files changed

+47
-14
lines changed

2 files changed

+47
-14
lines changed

conftest.py

+3
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ def add_standard_imports(doctest_namespace, tmpdir):
88
import pint
99
import xarray as xr
1010

11+
import pint_xarray
12+
1113
ureg = pint.UnitRegistry(force_ndarray_like=True)
1214

1315
doctest_namespace["np"] = np
1416
doctest_namespace["pd"] = pd
1517
doctest_namespace["xr"] = xr
1618
doctest_namespace["pint"] = pint
1719
doctest_namespace["ureg"] = ureg
20+
doctest_namespace["pint_xarray"] = pint_xarray
1821

1922
# always seed numpy.random to make the examples deterministic
2023
np.random.seed(0)

pint_xarray/accessors.py

+44-14
Original file line numberDiff line numberDiff line change
@@ -366,17 +366,18 @@ def quantify(self, units=_default, unit_registry=None, **unit_kwargs):
366366
)
367367

368368
def dequantify(self, format=None):
369-
"""
369+
r"""
370370
Convert the units of the DataArray to string attributes.
371371
372372
Will replace ``.attrs['units']`` on each variable with a string
373373
representation of the ``pint.Unit`` instance.
374374
375375
Parameters
376376
----------
377-
format : str, optional
377+
format : str, default: None
378378
The format specification (as accepted by pint) used for the string
379-
representations.
379+
representations. If ``None``, the registry's default
380+
(:py:attr:`pint.UnitRegistry.default_format`) is used instead.
380381
381382
Returns
382383
-------
@@ -391,23 +392,34 @@ def dequantify(self, format=None):
391392
Examples
392393
--------
393394
>>> da = xr.DataArray([0, 1], dims="x")
394-
>>> q = da.pint.quantify("m")
395+
>>> q = da.pint.quantify("m / s")
395396
>>> q
396397
<xarray.DataArray (x: 2)>
397-
<Quantity([0 1], 'meter')>
398+
<Quantity([0 1], 'meter / second')>
398399
Dimensions without coordinates: x
400+
399401
>>> q.pint.dequantify(format="P")
400402
<xarray.DataArray (x: 2)>
401403
array([0, 1])
402404
Dimensions without coordinates: x
403405
Attributes:
404-
units: meter
406+
units: meter/second
405407
>>> q.pint.dequantify(format="~P")
406408
<xarray.DataArray (x: 2)>
407409
array([0, 1])
408410
Dimensions without coordinates: x
409411
Attributes:
410-
units: m
412+
units: m/s
413+
414+
Use the registry's default format
415+
416+
>>> pint_xarray.unit_registry.default_format = "~L"
417+
>>> q.pint.dequantify()
418+
<xarray.DataArray (x: 2)>
419+
array([0, 1])
420+
Dimensions without coordinates: x
421+
Attributes:
422+
units: \frac{\mathrm{m}}{\mathrm{s}}
411423
"""
412424
units = conversion.extract_unit_attributes(self.da)
413425
units.update(conversion.extract_units(self.da))
@@ -1044,17 +1056,18 @@ def quantify(self, units=_default, unit_registry=None, **unit_kwargs):
10441056
)
10451057

10461058
def dequantify(self, format=None):
1047-
"""
1059+
r"""
10481060
Convert units from the Dataset to string attributes.
10491061
10501062
Will replace ``.attrs['units']`` on each variable with a string
10511063
representation of the ``pint.Unit`` instance.
10521064
10531065
Parameters
10541066
----------
1055-
format : str, optional
1067+
format : str, default: None
10561068
The format specification (as accepted by pint) used for the string
1057-
representations.
1069+
representations. If ``None``, the registry's default
1070+
(:py:attr:`pint.UnitRegistry.default_format`) is used instead.
10581071
10591072
Returns
10601073
-------
@@ -1069,13 +1082,13 @@ def dequantify(self, format=None):
10691082
Examples
10701083
--------
10711084
>>> ds = xr.Dataset({"a": ("x", [0, 1]), "b": ("y", [2, 3, 4])})
1072-
>>> q = ds.pint.quantify({"a": "m", "b": "s"})
1085+
>>> q = ds.pint.quantify({"a": "m / s", "b": "s"})
10731086
>>> q
10741087
<xarray.Dataset>
10751088
Dimensions: (x: 2, y: 3)
10761089
Dimensions without coordinates: x, y
10771090
Data variables:
1078-
a (x) int64 [m] 0 1
1091+
a (x) int64 [m/s] 0 1
10791092
b (y) int64 [s] 2 3 4
10801093
10811094
>>> d = q.pint.dequantify(format="P")
@@ -1084,7 +1097,7 @@ def dequantify(self, format=None):
10841097
array([0, 1])
10851098
Dimensions without coordinates: x
10861099
Attributes:
1087-
units: meter
1100+
units: meter/second
10881101
>>> d.b
10891102
<xarray.DataArray 'b' (y: 3)>
10901103
array([2, 3, 4])
@@ -1098,13 +1111,30 @@ def dequantify(self, format=None):
10981111
array([0, 1])
10991112
Dimensions without coordinates: x
11001113
Attributes:
1101-
units: m
1114+
units: m/s
11021115
>>> d.b
11031116
<xarray.DataArray 'b' (y: 3)>
11041117
array([2, 3, 4])
11051118
Dimensions without coordinates: y
11061119
Attributes:
11071120
units: s
1121+
1122+
Use the registry's default format
1123+
1124+
>>> pint_xarray.unit_registry.default_format = "~L"
1125+
>>> d = q.pint.dequantify()
1126+
>>> d.a
1127+
<xarray.DataArray 'a' (x: 2)>
1128+
array([0, 1])
1129+
Dimensions without coordinates: x
1130+
Attributes:
1131+
units: \frac{\mathrm{m}}{\mathrm{s}}
1132+
>>> d.b
1133+
<xarray.DataArray 'b' (y: 3)>
1134+
array([2, 3, 4])
1135+
Dimensions without coordinates: y
1136+
Attributes:
1137+
units: \mathrm{s}
11081138
"""
11091139
units = conversion.extract_unit_attributes(self.ds)
11101140
units.update(conversion.extract_units(self.ds))

0 commit comments

Comments
 (0)