Changelog
### 0.10.1
```
-------------------
- Fixed bug introduced in 0.10 that prevented creation of size-zero Quantities
from NumPy arrays by multiplication.
(Issue 977, Thanks Jon Thielen)
- Fixed several Sphinx issues. Fixed intersphinx hooks to all classes missing.
(Issue 881, Thanks Guido Imperiale)
- Fixed __array__ signature to match numpy docs (Issue 974, Thanks Ryan May)
```
### 0.10
```
-----------------
- **BREAKING CHANGE**:
Boolean value of Quantities with offsets units is ambiguous, and so, now a ValueError
is raised when attempting to cast such a Quantity to boolean.
(Issue 965, Thanks Jon Thielen)
- **BREAKING CHANGE**:
`__array_ufunc__` has been implemented on `pint.Unit` to permit
multiplication/division by units on the right of ufunc-reliant array types (like
Sparse) with proper respect for the type casting hierarchy. However, until [an
upstream issue with NumPy is resolved](https://github.com/numpy/numpy/issues/15200),
this breaks creation of Masked Array Quantities by multiplication on the right.
Read Pint's [NumPy support
documentation](https://pint.readthedocs.io/en/latest/numpy.html) for more details.
(Issues 963 and 966, Thanks Jon Thielen)
- Documentation on Pint's array type compatibility has been added to the NumPy support
page, including a graph of the duck array type casting hierarchy as understood by Pint
for N-dimensional arrays.
(Issue 963, Thanks Jon Thielen, Stephan Hoyer, and Guido Imperiale)
- Improved compatibility for downcast duck array types like Sparse.COO. A collection
of basic tests has been added.
(Issue 963, Thanks Jon Thielen)
- Improvements to wraps and check:
- fail upon decoration (not execution) by checking wrapped function signature against
wraps/check arguments.
(might BREAK test code)
- wraps only accepts strings and Units (not quantities) to avoid confusion with magnitude.
(might BREAK code not conforming to documentation)
- when strict=True, strings that can be parsed to quantities are accepted as arguments.
- Add revolutions per second (rps)
- Improved compatibility for upcast types like xarray's DataArray or Dataset, to which
Pint Quantities now fully defer for arithmetic and NumPy operations. A collection of
basic tests for proper deferral has been added (for full integration tests, see
xarray's test suite). The list of upcast types is available at
`pint.compat.upcast_types` in the API.
(Issue 959, Thanks Jon Thielen)
- Moved docstrings to Numpy Docs
(Issue 958)
- Added tests for immutability of the magnitude's type under common operations
(Issue 957, Thanks Jon Thielen)
- Switched test configuration to pytest and added tests of Pint's matplotlib support.
(Issue 954, Thanks Jon Thielen)
- Deprecate array protocol fallback except where explicitly defined (`__array__`,
`__array_priority__`, `__array_function__`, `__array_ufunc__`). The fallback will
remain until the next minor version, or if the environment variable
`PINT_ARRAY_PROTOCOL_FALLBACK` is set to 0.
(Issue 953, Thanks Jon Thielen)
- Removed eval usage when creating UnitDefinition and PrefixDefinition from string.
(Issue 942)
- Added `fmt_locale` argument to registry.
(Issue 904)
- Better error message when Babel is not installed.
(Issue 899)
- It is now possible to redefine units within a context, and use pint for currency
conversions. Read
- https://pint.readthedocs.io/en/latest/contexts.html
- https://pint.readthedocs.io/en/latest/currencies.html
(Issue 938, Thanks Guido Imperiale)
- NaN (any capitalization) in a definitions file is now treated as a number
(Issue 938, Thanks Guido Imperiale)
- Added slinch to Avoirdupois group
(Issue 936, Thanks awcox21)
- Fix bug where ureg.disable_contexts() would fail to fully disable throwaway contexts
(Issue 932, Thanks Guido Imperiale)
- Use black, flake8, and isort on the project
(Issues 929, 931, and 937, Thanks Guido Imperiale)
- Auto-increase package version at every commit when pint is installed from the git tip,
e.g. pip install git+https://github.com/hgrecco/pint.git.
(Issues 930 and 934, Thanks Guido Imperiale and KOLANICH)
- Fix HTML (Jupyter Notebook) and LateX representation of some units
(Issues 927 / 928 / 933, Thanks Guido Imperiale)
- Fixed the definition of RKM unit as gf / tex
(Issue 921, Thanks Giuseppe Corbelli)
- **BREAKING CHANGE**:
Implement NEP-18 <https://numpy.org/neps/nep-0018-array-function-protocol.html> for
Pint Quantities. Most NumPy functions that previously stripped units when applied to
Pint Quantities will now return Quantities with proper units (on NumPy v1.16 with
the array_function protocol enabled or v1.17+ by default) instead of ndarrays. Any
non-explictly-handled functions will now raise a "no implementation found" TypeError
instead of stripping units. The previous behavior is maintained for NumPy < v1.16 and
when the array_function protocol is disabled.
(Issue 905, Thanks Jon Thielen and andrewgsavage)
- Implementation of NumPy ufuncs has been refactored to share common utilities with
NumPy function implementations
(Issue 905, Thanks Jon Thielen)
- Pint Quantities now support the `` matrix mulitiplication operator (on NumPy v1.16+),
as well as the `dot`, `flatten`, `astype`, and `item` methods.
(Issue 905, Thanks Jon Thielen)
- **BREAKING CHANGE**:
Fix crash when applying pprint to large sets of Units.
DefinitionSyntaxError is now a subclass of SyntaxError (was ValueError).
DimensionalityError and OffsetUnitCalculusError are now subclasses of TypeError (was
ValueError).
(Issue 915, Thanks Guido Imperiale)
- All Exceptions can now be pickled and can be accessed from the top-level package.
(Issue 915, Thanks Guido Imperiale)
- Mark regex as raw strings to avoid unnecessary warnings.
(Issue 913, Thanks keewis)
- Implement registry-based string preprocessing as list of callables.
(Issues 429 and 851, thanks Jon Thielen)
- Context activation and deactivation is now instantaneous; drastically reduced memory
footprint of a context (it used to be ~1.6MB per context; now it's a few bytes)
(Issues 909 / 923 / 938, Thanks Guido Imperiale)
- **BREAKING CHANGE**:
Drop support for Python < 3.6, numpy < 1.14, and uncertainties < 3.0;
if you still need them, please install pint 0.9.
Pint now adheres to NEP-29 <https://numpy.org/neps/nep-0029-deprecation_policy.html>
as a rolling dependencies version policy.
(Issues 908 and 910, Thanks Guido Imperiale)
- Show proper code location of UnitStrippedWarning exception.
(Issue 907, thanks Martin K. Scherer)
- Reimplement _Quantity.__iter__ to return an iterator.
(Issues 751 and 760, Thanks Jon Thielen)
- Add http://www.dimensionalanalysis.org/ to README
(Thanks Shiri Avni)
- Allow for user defined units formatting.
(Issue 873, Thanks Ryan Clary)
- Quantity, Unit, and Measurement are now accessible as top-level classes
(pint.Quantity, pint.Unit, pint.Measurement) and can be
instantiated without explicitly creating a UnitRegistry
(Issue 880, Thanks Guido Imperiale)
- Contexts don't need to have a name anymore
(Issue 870, Thanks Guido Imperiale)
- "Board feet" unit added top default registry
(Issue 869, Thanks Guido Imperiale)
- New syntax to add aliases to already existing definitions
(Issue 868, Thanks Guido Imperiale)
- copy.deepcopy() can now copy a UnitRegistry
(Issues 864 and 877, Thanks Guido Imperiale)
- Enabled many tests in test_issues when numpy is not available
(Issue 863, Thanks Guido Imperiale)
- Document the '_' symbols found in the definitions files
(Issue 862, Thanks Guido Imperiale)
- Improve OffsetUnitCalculusError message.
(Issue 839, Thanks Christoph Buchner)
- Atomic units for intensity and electric field.
(Issue 834, Thanks Øyvind Sigmundson Schøyen)
- Allow np arrays of scalar quantities to be plotted.
(Issue 825, Thanks andrewgsavage)
- Updated gravitational constant to CODATA 2018.
(Issue 816, Thanks Jellby)
- Update to new SI definition and CODATA 2018.
(Issue 811, Thanks Jellby)
- Allow units with aliases but no symbol.
(Issue 808, Thanks Jellby)
- Fix definition of dimensionless units and constants.
(Issue 805, Thanks Jellby)
- Added RKM unit (used in textile industry).
(Issue 802, Thanks Giuseppe Corbelli)
- Remove __name__ method definition in BaseRegistry.
(Issue 787, Thanks Carlos Pascual)
- Added t_force, short_ton_force and long_ton_force.
(Issue 796, Thanks Jan Hein de Jong)
- Fixed error message of DefinitionSyntaxError
(Issue 791, Thanks Clément Pit-Claudel)
- Expanded the potential use of Decimal type to parsing.
(Issue 788, Thanks Francisco Couzo)
- Fixed gram name to allow translation by babel.
(Issue 776, Thanks Hervé Cauwelier)
- Default group should only have orphan units.
(Issue 766, Thanks Jules Chéron)
- Added custom constructors from_sequence and from_list.
(Issue 761, Thanks deniz195)
- Add quantity formatting with ndarray.
(Issue 559, Thanks Jules Chéron)
- Add pint-pandas notebook docs
(Issue 754, Thanks andrewgsavage)
- Use µ as default abbreviation for micro.
(Issue 666, Thanks Eric Prestat)
```
### 0.9
```
----------------
- Add support for registering with matplotlib's unit handling
(Issue 317, thanks dopplershift)
- Add converters for matplotlib's unit support.
(Issue 317, thanks Ryan May)
- Fix unwanted side effects in auto dimensionality reduction.
(Issue 516, thanks Ben Loer)
- Allow dimensionality check for non Quantity arguments.
- Make Quantity and UnitContainer objects hashable.
(Issue 286, thanks Nevada Sanchez)
- Fix unit tests errors with numpy >=1.13.
(Issue 577, thanks cpascual)
- Avoid error in in-place exponentiation with numpy > 1.11.
(Issue 577, thanks cpascual)
- fix compatible units in context.
(thanks enrico)
- Added warning for unsupported ufunc.
(Issue 626, thanks kanhua)
- Improve IPython pretty printers.
(Issue 590, thanks tecki)
- Drop Support for Python 2.6, 3.0, 3.1 and 3.2.
(Issue 567)
- Prepare for deprecation announced in Python 3.7
(Issue 747, thanks Simon Willison)
- Added several new units and Systems
(Issues 749, 737, )
- Started experimental pandas support
(Issue 746 and others. Thanks andrewgsavage, znicholls and others)
- wraps and checks now supports kwargs and defaults.
(Issue 660, thanks jondoesntgit)
```
### 0.8.1
```
------------------
- Add support for datetime math.
(Issue 510, thanks robertd)
- Fixed _repr_html_ in Python 2.7.
(Issue 512)
- Implemented BaseRegistry.auto_reduce_dimensions.
(Issue 500, thanks robertd)
- Fixed dimension compatibility bug introduced on Registry refactoring
(Issue 523, thanks dalito)
```
### 0.8
```
----------------
- Refactored the Registry in multiple classes for better separation of concerns and clarity.
- Implemented support for defining multiple units per `define` call (one definition per line).
(Issue 462)
- In pow and ipow, allow array exponents (with len > 1) when base is dimensionless.
(Issue 483)
- Wraps now gets the canonical name of the unit when passed as string.
(Issue 468)
- NumPy exp and log keeps the type
(Issue 95)
- Implemented a function decorator to ensure that a context is active (with_context)
(Issue 465)
- Add warning when a System contains an unknown Group.
(Issue 472)
- Add conda-forge installation snippet.
(Issue 485, thanks stadelmanma)
- Properly support floor division and modulo.
(Issue 474, thanks tecki)
- Measurement Correlated variable fix.
(Issue 463, thanks tadhgmister)
- Implement degree sign handling.
(Issue 449, thanks iamthad)
- Change `UndefinedUnitError` to inherit from `AttributeError`
(Issue 480, thanks jhidding)
- Simplified travis for faster testing.
- Fixed order units in siunitx formatting.
(Issue 441)
- Changed Systems lister to return a list instead of frozenset.
(Issue 425, thanks GloriaVictis)
- Fixed issue with negative values in to_compact() method.
(Issue 443, thanks nowox)
- Improved defintions.
(Issues 448, thanks gdonval)
- Improved Parser to support capital "E" on scientific notation.
(Issue 390, thanks javenoneal)
- Make sure that prefixed units are defined on the registry when unpickling.
(Issue 405)
- Automatic unit names translation through babel.
(Issue 338, thanks alexbodn)
- Support pickling Unit objects.
(Issue 349)
- Add support for wavenumber/kayser in spectroscopy context.
(Issue 321, thanks gerritholl)
- Improved formatting.
(thanks endolith and others)
- Add support for inline comments in definitions file.
(Issue 366)
- Implement Unit.__deepcopy__.
(Issue 357, thanks noahl)
- Allow changing shape for Quantities with numpy arrays.
(Issue 344, thanks tecki)
```
### 0.7.2
```
------------------
- Fixed backward incompatibility problem when parsing dimensionless units.
```
### 0.7.1
```
------------------
- Use NIST as source for most of the unit information.
- Added message to assertQuantityEqual.
- Added detection of circular dependencies in definitions.
```
### 0.7
```
----------------
- Added Systems and groups.
(Issue 215, 315)
- Implemented references for wraps decorator.
(Issue 195)
- Added check decorator to UnitRegistry.
(Issue 283, thanks kaidokert)
- Added compact conversion.
(See 224, thanks Ryan Dwyer)
- Added compact formating code.
(Issue 240)
- New Unit Class.
(thanks Matthieu Dartiailh)
- Refactor UnitRegistry.
(thanks Matthieu Dartiailh)
- Move definitions, errors, and converters into their own modules.
(thanks Matthieu Dartiailh)
- UnitsContainer is now immutable
(Issue 202, thanks Matthieu Dartiailh)
- New parser and evaluator.
(Issue 226, thanks Aaron Coleman)
- Added support for Unicode identifiers.
- Added m_as as way top retrieve the magnitude in different units.
(Issue 227)
- Added Short form for magnitude and units.
(Issue 234)
- Improved deepcopy.
(Issue 252, thanks Emilien Kofman)
- Improved testing infrastructure.
- Improved docs.
(thanks Ryan Dwyer, Martin Thoma, Andrea Zonca)
- Fixed short names on electron_volt and hartree.
- Fixed definitions of scruple and drachm.
(Issue 262, thanks takowl)
- Fixed troy ounce to 480 'grains'.
(thanks elifab)
- Added 'quad' as a unit of energy (= 10**15 Btu).
(thanks Ed Schofield)
- Added "hectare" as a supported unit of area and 'ha' as the symbol for hectare.
(thanks Ed Schofield)
- Added peak sun hour and Langley.
(thanks Ed Schofield)
- Added photometric units: lumen & lux.
(Issue 230, thanks janpipek)
- A fraction magnitude quantity is conserved
(Issue 323, thanks emilienkofman)
- Improved conversion performance by removing unnecessart try/except.
(Issue 251)
- Added to_tuple and from_tuple to facilitate serialization.
- Fixed support for NumPy 1.10 due to a change in the Default casting rule
(Issue 320)
- Infrastructure: Added doctesting.
- Infrastructure: Better way to specify exclude matrix in travis.
```
### 0.6
```
----------------
- Fix operations with measurments and user defined units.
(Issue 204)
- Faster conversions through caching and other performance improvements.
(Issue 193, thanks MatthieuDartiailh)
- Better error messages on Quantity.__setitem__.
(Issue 191)
- Fixed abbreviation of fluid_ounce.
(Issue 187, thanks hsoft)
- Defined Angstrom symbol.
(Issue 181, thanks JonasOlson)
- Removed fetching version from git repo as it triggers XCode installation on OSX.
(Issue 178, thanks deanishe)
- Improved context documentation.
(Issue 176 and 179, thanks rsking84)
- Added Chemistry context.
(Issue 179, thanks rsking84)
- Fix help(UnitRegisty)
(Issue 168)
- Optimized "get_dimensionality" and "get_base_name".
(Issue 166 and 167, thanks jbmohler)
- Renamed ureg.parse_units parameter "to_delta" to "as_delta" to make clear.
that no conversion happens. Accordingly, the parameter/property
"default_to_delta" of UnitRegistry was renamed to "default_as_delta".
(Issue 158, thanks dalit)
- Fixed problem when adding two uncertainties.
(thanks dalito)
- Full support for Offset units (e.g. temperature)
(Issue 88, 143, 147 and 161, thanks dalito)
```
### 0.5.2
```
------------------
- Changed travis config to use miniconda for faster testing.
- Added wheel configuration to setup.cfg.
- Ensure resource streams are closed after reading.
- Require setuptools.
(Issue 169)
- Implemented real, imag and T Quantity properties.
(Issue 171)
- Implemented __int__ and __long__ for Quantity
(Issue 170)
- Fixed SI prefix error on ureg.convert.
(Issue 156, thanks jdreaver)
- Fixed parsing of multiparemeter contexts.
(Issue 174)
```
### 0.5.1
```
------------------
- Implemented a standard way to change the registry used in unpickling operations.
(Issue 148)
- Fix bug where conversion would fail due to caching.
(Issue 140, thanks jdreaver)
- Allow assigning Not a Number to a quantity array.
(Issue 127)
- Decoupled Quantity in place and not in place unit conversion methods.
- Return None in functions that modify quantities in place.
- Improved testing infrastructure to check for unwanted warnings.
- Added test function at the package level to run all tests.
```
### 0.5
```
----------------
- Improved test suite helper functions.
- Print honors default format w/o format().
(Issue 132, thanks mankoff)
- Fixed sum() by treating number zero as a special case.
(Issue 122, thanks rec)
- Improved behaviour in ScaleConverter, OffsetConverter and Quantity.to.
(Issue 120)
- Reimplemented loading of default definitions to allow Pint in a cx_freeze or similar package.
(Issue 118, thanks jbmohler)
- Implemented parsing of pretty printed units.
(Issue 117, thanks jpgrayson)
- Fixed representation of dimensionless quantities.
(Issue 112, thanks rec)
- Raise error when invalid formatting code is given.
(Issue 111, thanks rec)
- Default registry to lazy load, raise error on redefinition
(Issue 108, thanks rec, aepsil0n)
- Added condensed format.
(Issue 107, thanks rec)
- Added UnitRegistry () operator to parse expression replacing [].
(Issue 106, thanks rec)
- Optional case insensitive unit parsing.
(Issue 105, thanks rec, jeremyfreeman, dbrnz)
- Change the Quantity mutability depending on magnitude type.
(Issue 104, thanks rec)
- Implemented API to list compatible units.
(Issue 89)
- Implemented cache of key UnitRegistry methods.
- Rewrote the Measurement class to use uncertainties.
(Issue 24)
```
### 0.4.2
```
------------------
- Python 2.6 support
(Issue 96, thanks tiagocoutinho)
- Fixed symbol for inch.
(Issue 102, thanks cybertoast)
- Stop raising AttributeError when wrapping funcs without all of the attributes.
(Issue 100, thanks jturner314)
- Fixed warning appearing in Py2.x when comparing a Numpy Array with an empty string.
(Issue 98, thanks jturner314)
- Add links to AUR packages in docs.
(Issue 91, thanks jturner314)
- Fixed garbage collection related problem.
(Issue 92, thanks jturner314)
```
### 0.4.1
```
------------------
- Integer Division with Arrays.
(Issue 80, thanks jdreaver)
- Improved Documentation.
(Issue 83, thanks choloepus)
- Removed 'h' alias for hour due to conflict with Planck's constant.
(Issue 82, thanks choloepus)
- Improved get_base_units for non-multiplicative units.
(Issue 85, thanks exxus)
- Refactored code for multiplication.
(Issue 84, thanks jturner314)
- Removed 'R' alias for roentgen as it collides with molar_gas_constant.
(Issue 87, thanks rsking84)
- Improved naming of temperature units and multiplication of non-multiplicative units.
(Issue 86, tahsnk exxus)
```
### 0.4
```
----------------
- Introduced Contexts: relation between incompatible dimensions.
(Issue 65)
- Fixed get_base_units for non multiplicative units.
(Related to issue 66)
- Implemented default formatting for quantities.
- Changed comparison between Quantities containing NumPy arrays.
(Issue 75) - BACKWARDS INCOMPATIBLE CHANGE
- Fixes for NumPy 1.8 due to changes in handling binary ops.
(Issue 73)
```
### 0.3.3
```
------------------
- ParseHelper can now parse units named like python keywords.
(Issue 69)
- Fix comparison of quantities.
(Issue 74)
- Fix Inequality operator.
(Issue 70, thanks muggenhor)
- Improved travis configuration.
(thanks muggenhor)
```
### 0.3.2
```
------------------
- Fix get_dimensionality for non multiplicative units.
(Issue 66)
- Proper handling of import directive inside a file read using pkg_resources.
(Issue 68)
```
### 0.3.1
```
------------------
- fix right division on python 2.7
(Issue 58, thanks natezb)
- fix formatting of fractional exponentials between 0 and 1.
(Issue 62, thanks jdreaver)
- fix installation as egg.
(Issue 61)
- fix handling of strange values as input of Quantity.
(Issue 53)
- math operations between quantities of different registries now raise a ValueError.
(Issue 52)
```
### 0.3
```
----------------
- support for IPython autocomplete and rich display.
(Issues 30 and 31)
- support for import directive in definitions file.
(Issue 22)
- support for wrapping functions to make them pint-aware.
(Issue 16)
- support for comparing UnitsContainer to string.
(Issue 35)
- fix error raised while converting from a single unit to one expressed as
the relation between many.
(Issue 29)
- fix error raised when unit symbol is missing.
(Issue 41)
- fix error raised when magnitude is Decimal.
(Issue 46, thanks danielsokolowski)
- support for non-installed pint.
(Issue 42, thanks danielsokolowski)
- support for application of numpy function on non-ndarray magnitudes.
(Issue 44)
- support for math operations on dimensionless Quantities (written with units).
(Issue 45)
- fix obtaining dimensionless quantity from string.
(Issue 50)
- fix adding and comparing numbers to a dimensionless quantity (written with units).
(Issue 54)
- Support for iter in Quantity.
(Issue 55, thanks natezb)
```
### 0.2.1
```
------------------
- fix error raised while converting from a single unit to one expressed as
the relation between many.
(Issue 29)
```
### 0.2
```
----------------
- support for Measurement (Quantity +/- error).
- implemented buckingham pi theorem for dimensional analysis.
- support for temperature units and temperature difference units.
- parser can infers if the user mean temperature or temperature difference.
- support for derived dimensions (e.g. [speed] = [length] / [time]).
- refactored the code into multiple files.
- refactored code to isolate definitions and converters.
- refactored formatter out of UnitParser class.
- added tox and travis config files for CI.
- comprehensive NumPy testing including almost all ufuncs.
- full NumPy support (features is not longer experimental).
- fixed bug preventing from having independent registries.
(Issue 10, thanks bwanders)
- forces real division as default for Quantities.
(Issue 7, thanks dbrnz)
- improved default unit definition file.
(Issue 13, thanks r-barnes)
- smarter parser supporting spaces as multiplications and other nice features.
(Issue 13, thanks r-barnes)
- moved testsuite inside package.
- short forms of binary prefixes, more units and fix to less than comparison.
(Issue 20, thanks muggenhor)
- pint is now zip-safe
(Issue 23, thanks muggenhor)
```
### 0.1.3
```
--------------------------
- abbreviated quantity string formating.
- complete Python 2.7 compatibility.
- implemented pickle support for Quantities objects.
- extended NumPy support.
- various bugfixes.
```
### 0.1.2
```
--------------------------
- experimenal NumPy support.
- included default unit definitions file.
(Issue 1, thanks fish2000)
- better testing.
- various bugfixes.
- fixed some units definitions.
(Issue 4, thanks craigholm)
```
### 0.1.1
```
--------------------------
- better packaging and installation.
```
### 0.1
```
--------------------------
- first public release.
```
Links
- PyPI: https://pypi.org/project/pint
- Changelog: https://pyup.io/changelogs/pint/
- Repo: https://github.com/hgrecco/pint
This PR pins pint to the latest release 0.10.1.
Changelog
### 0.10.1 ``` ------------------- - Fixed bug introduced in 0.10 that prevented creation of size-zero Quantities from NumPy arrays by multiplication. (Issue 977, Thanks Jon Thielen) - Fixed several Sphinx issues. Fixed intersphinx hooks to all classes missing. (Issue 881, Thanks Guido Imperiale) - Fixed __array__ signature to match numpy docs (Issue 974, Thanks Ryan May) ``` ### 0.10 ``` ----------------- - **BREAKING CHANGE**: Boolean value of Quantities with offsets units is ambiguous, and so, now a ValueError is raised when attempting to cast such a Quantity to boolean. (Issue 965, Thanks Jon Thielen) - **BREAKING CHANGE**: `__array_ufunc__` has been implemented on `pint.Unit` to permit multiplication/division by units on the right of ufunc-reliant array types (like Sparse) with proper respect for the type casting hierarchy. However, until [an upstream issue with NumPy is resolved](https://github.com/numpy/numpy/issues/15200), this breaks creation of Masked Array Quantities by multiplication on the right. Read Pint's [NumPy support documentation](https://pint.readthedocs.io/en/latest/numpy.html) for more details. (Issues 963 and 966, Thanks Jon Thielen) - Documentation on Pint's array type compatibility has been added to the NumPy support page, including a graph of the duck array type casting hierarchy as understood by Pint for N-dimensional arrays. (Issue 963, Thanks Jon Thielen, Stephan Hoyer, and Guido Imperiale) - Improved compatibility for downcast duck array types like Sparse.COO. A collection of basic tests has been added. (Issue 963, Thanks Jon Thielen) - Improvements to wraps and check: - fail upon decoration (not execution) by checking wrapped function signature against wraps/check arguments. (might BREAK test code) - wraps only accepts strings and Units (not quantities) to avoid confusion with magnitude. (might BREAK code not conforming to documentation) - when strict=True, strings that can be parsed to quantities are accepted as arguments. - Add revolutions per second (rps) - Improved compatibility for upcast types like xarray's DataArray or Dataset, to which Pint Quantities now fully defer for arithmetic and NumPy operations. A collection of basic tests for proper deferral has been added (for full integration tests, see xarray's test suite). The list of upcast types is available at `pint.compat.upcast_types` in the API. (Issue 959, Thanks Jon Thielen) - Moved docstrings to Numpy Docs (Issue 958) - Added tests for immutability of the magnitude's type under common operations (Issue 957, Thanks Jon Thielen) - Switched test configuration to pytest and added tests of Pint's matplotlib support. (Issue 954, Thanks Jon Thielen) - Deprecate array protocol fallback except where explicitly defined (`__array__`, `__array_priority__`, `__array_function__`, `__array_ufunc__`). The fallback will remain until the next minor version, or if the environment variable `PINT_ARRAY_PROTOCOL_FALLBACK` is set to 0. (Issue 953, Thanks Jon Thielen) - Removed eval usage when creating UnitDefinition and PrefixDefinition from string. (Issue 942) - Added `fmt_locale` argument to registry. (Issue 904) - Better error message when Babel is not installed. (Issue 899) - It is now possible to redefine units within a context, and use pint for currency conversions. Read - https://pint.readthedocs.io/en/latest/contexts.html - https://pint.readthedocs.io/en/latest/currencies.html (Issue 938, Thanks Guido Imperiale) - NaN (any capitalization) in a definitions file is now treated as a number (Issue 938, Thanks Guido Imperiale) - Added slinch to Avoirdupois group (Issue 936, Thanks awcox21) - Fix bug where ureg.disable_contexts() would fail to fully disable throwaway contexts (Issue 932, Thanks Guido Imperiale) - Use black, flake8, and isort on the project (Issues 929, 931, and 937, Thanks Guido Imperiale) - Auto-increase package version at every commit when pint is installed from the git tip, e.g. pip install git+https://github.com/hgrecco/pint.git. (Issues 930 and 934, Thanks Guido Imperiale and KOLANICH) - Fix HTML (Jupyter Notebook) and LateX representation of some units (Issues 927 / 928 / 933, Thanks Guido Imperiale) - Fixed the definition of RKM unit as gf / tex (Issue 921, Thanks Giuseppe Corbelli) - **BREAKING CHANGE**: Implement NEP-18 <https://numpy.org/neps/nep-0018-array-function-protocol.html> for Pint Quantities. Most NumPy functions that previously stripped units when applied to Pint Quantities will now return Quantities with proper units (on NumPy v1.16 with the array_function protocol enabled or v1.17+ by default) instead of ndarrays. Any non-explictly-handled functions will now raise a "no implementation found" TypeError instead of stripping units. The previous behavior is maintained for NumPy < v1.16 and when the array_function protocol is disabled. (Issue 905, Thanks Jon Thielen and andrewgsavage) - Implementation of NumPy ufuncs has been refactored to share common utilities with NumPy function implementations (Issue 905, Thanks Jon Thielen) - Pint Quantities now support the `` matrix mulitiplication operator (on NumPy v1.16+), as well as the `dot`, `flatten`, `astype`, and `item` methods. (Issue 905, Thanks Jon Thielen) - **BREAKING CHANGE**: Fix crash when applying pprint to large sets of Units. DefinitionSyntaxError is now a subclass of SyntaxError (was ValueError). DimensionalityError and OffsetUnitCalculusError are now subclasses of TypeError (was ValueError). (Issue 915, Thanks Guido Imperiale) - All Exceptions can now be pickled and can be accessed from the top-level package. (Issue 915, Thanks Guido Imperiale) - Mark regex as raw strings to avoid unnecessary warnings. (Issue 913, Thanks keewis) - Implement registry-based string preprocessing as list of callables. (Issues 429 and 851, thanks Jon Thielen) - Context activation and deactivation is now instantaneous; drastically reduced memory footprint of a context (it used to be ~1.6MB per context; now it's a few bytes) (Issues 909 / 923 / 938, Thanks Guido Imperiale) - **BREAKING CHANGE**: Drop support for Python < 3.6, numpy < 1.14, and uncertainties < 3.0; if you still need them, please install pint 0.9. Pint now adheres to NEP-29 <https://numpy.org/neps/nep-0029-deprecation_policy.html> as a rolling dependencies version policy. (Issues 908 and 910, Thanks Guido Imperiale) - Show proper code location of UnitStrippedWarning exception. (Issue 907, thanks Martin K. Scherer) - Reimplement _Quantity.__iter__ to return an iterator. (Issues 751 and 760, Thanks Jon Thielen) - Add http://www.dimensionalanalysis.org/ to README (Thanks Shiri Avni) - Allow for user defined units formatting. (Issue 873, Thanks Ryan Clary) - Quantity, Unit, and Measurement are now accessible as top-level classes (pint.Quantity, pint.Unit, pint.Measurement) and can be instantiated without explicitly creating a UnitRegistry (Issue 880, Thanks Guido Imperiale) - Contexts don't need to have a name anymore (Issue 870, Thanks Guido Imperiale) - "Board feet" unit added top default registry (Issue 869, Thanks Guido Imperiale) - New syntax to add aliases to already existing definitions (Issue 868, Thanks Guido Imperiale) - copy.deepcopy() can now copy a UnitRegistry (Issues 864 and 877, Thanks Guido Imperiale) - Enabled many tests in test_issues when numpy is not available (Issue 863, Thanks Guido Imperiale) - Document the '_' symbols found in the definitions files (Issue 862, Thanks Guido Imperiale) - Improve OffsetUnitCalculusError message. (Issue 839, Thanks Christoph Buchner) - Atomic units for intensity and electric field. (Issue 834, Thanks Øyvind Sigmundson Schøyen) - Allow np arrays of scalar quantities to be plotted. (Issue 825, Thanks andrewgsavage) - Updated gravitational constant to CODATA 2018. (Issue 816, Thanks Jellby) - Update to new SI definition and CODATA 2018. (Issue 811, Thanks Jellby) - Allow units with aliases but no symbol. (Issue 808, Thanks Jellby) - Fix definition of dimensionless units and constants. (Issue 805, Thanks Jellby) - Added RKM unit (used in textile industry). (Issue 802, Thanks Giuseppe Corbelli) - Remove __name__ method definition in BaseRegistry. (Issue 787, Thanks Carlos Pascual) - Added t_force, short_ton_force and long_ton_force. (Issue 796, Thanks Jan Hein de Jong) - Fixed error message of DefinitionSyntaxError (Issue 791, Thanks Clément Pit-Claudel) - Expanded the potential use of Decimal type to parsing. (Issue 788, Thanks Francisco Couzo) - Fixed gram name to allow translation by babel. (Issue 776, Thanks Hervé Cauwelier) - Default group should only have orphan units. (Issue 766, Thanks Jules Chéron) - Added custom constructors from_sequence and from_list. (Issue 761, Thanks deniz195) - Add quantity formatting with ndarray. (Issue 559, Thanks Jules Chéron) - Add pint-pandas notebook docs (Issue 754, Thanks andrewgsavage) - Use µ as default abbreviation for micro. (Issue 666, Thanks Eric Prestat) ``` ### 0.9 ``` ---------------- - Add support for registering with matplotlib's unit handling (Issue 317, thanks dopplershift) - Add converters for matplotlib's unit support. (Issue 317, thanks Ryan May) - Fix unwanted side effects in auto dimensionality reduction. (Issue 516, thanks Ben Loer) - Allow dimensionality check for non Quantity arguments. - Make Quantity and UnitContainer objects hashable. (Issue 286, thanks Nevada Sanchez) - Fix unit tests errors with numpy >=1.13. (Issue 577, thanks cpascual) - Avoid error in in-place exponentiation with numpy > 1.11. (Issue 577, thanks cpascual) - fix compatible units in context. (thanks enrico) - Added warning for unsupported ufunc. (Issue 626, thanks kanhua) - Improve IPython pretty printers. (Issue 590, thanks tecki) - Drop Support for Python 2.6, 3.0, 3.1 and 3.2. (Issue 567) - Prepare for deprecation announced in Python 3.7 (Issue 747, thanks Simon Willison) - Added several new units and Systems (Issues 749, 737, ) - Started experimental pandas support (Issue 746 and others. Thanks andrewgsavage, znicholls and others) - wraps and checks now supports kwargs and defaults. (Issue 660, thanks jondoesntgit) ``` ### 0.8.1 ``` ------------------ - Add support for datetime math. (Issue 510, thanks robertd) - Fixed _repr_html_ in Python 2.7. (Issue 512) - Implemented BaseRegistry.auto_reduce_dimensions. (Issue 500, thanks robertd) - Fixed dimension compatibility bug introduced on Registry refactoring (Issue 523, thanks dalito) ``` ### 0.8 ``` ---------------- - Refactored the Registry in multiple classes for better separation of concerns and clarity. - Implemented support for defining multiple units per `define` call (one definition per line). (Issue 462) - In pow and ipow, allow array exponents (with len > 1) when base is dimensionless. (Issue 483) - Wraps now gets the canonical name of the unit when passed as string. (Issue 468) - NumPy exp and log keeps the type (Issue 95) - Implemented a function decorator to ensure that a context is active (with_context) (Issue 465) - Add warning when a System contains an unknown Group. (Issue 472) - Add conda-forge installation snippet. (Issue 485, thanks stadelmanma) - Properly support floor division and modulo. (Issue 474, thanks tecki) - Measurement Correlated variable fix. (Issue 463, thanks tadhgmister) - Implement degree sign handling. (Issue 449, thanks iamthad) - Change `UndefinedUnitError` to inherit from `AttributeError` (Issue 480, thanks jhidding) - Simplified travis for faster testing. - Fixed order units in siunitx formatting. (Issue 441) - Changed Systems lister to return a list instead of frozenset. (Issue 425, thanks GloriaVictis) - Fixed issue with negative values in to_compact() method. (Issue 443, thanks nowox) - Improved defintions. (Issues 448, thanks gdonval) - Improved Parser to support capital "E" on scientific notation. (Issue 390, thanks javenoneal) - Make sure that prefixed units are defined on the registry when unpickling. (Issue 405) - Automatic unit names translation through babel. (Issue 338, thanks alexbodn) - Support pickling Unit objects. (Issue 349) - Add support for wavenumber/kayser in spectroscopy context. (Issue 321, thanks gerritholl) - Improved formatting. (thanks endolith and others) - Add support for inline comments in definitions file. (Issue 366) - Implement Unit.__deepcopy__. (Issue 357, thanks noahl) - Allow changing shape for Quantities with numpy arrays. (Issue 344, thanks tecki) ``` ### 0.7.2 ``` ------------------ - Fixed backward incompatibility problem when parsing dimensionless units. ``` ### 0.7.1 ``` ------------------ - Use NIST as source for most of the unit information. - Added message to assertQuantityEqual. - Added detection of circular dependencies in definitions. ``` ### 0.7 ``` ---------------- - Added Systems and groups. (Issue 215, 315) - Implemented references for wraps decorator. (Issue 195) - Added check decorator to UnitRegistry. (Issue 283, thanks kaidokert) - Added compact conversion. (See 224, thanks Ryan Dwyer) - Added compact formating code. (Issue 240) - New Unit Class. (thanks Matthieu Dartiailh) - Refactor UnitRegistry. (thanks Matthieu Dartiailh) - Move definitions, errors, and converters into their own modules. (thanks Matthieu Dartiailh) - UnitsContainer is now immutable (Issue 202, thanks Matthieu Dartiailh) - New parser and evaluator. (Issue 226, thanks Aaron Coleman) - Added support for Unicode identifiers. - Added m_as as way top retrieve the magnitude in different units. (Issue 227) - Added Short form for magnitude and units. (Issue 234) - Improved deepcopy. (Issue 252, thanks Emilien Kofman) - Improved testing infrastructure. - Improved docs. (thanks Ryan Dwyer, Martin Thoma, Andrea Zonca) - Fixed short names on electron_volt and hartree. - Fixed definitions of scruple and drachm. (Issue 262, thanks takowl) - Fixed troy ounce to 480 'grains'. (thanks elifab) - Added 'quad' as a unit of energy (= 10**15 Btu). (thanks Ed Schofield) - Added "hectare" as a supported unit of area and 'ha' as the symbol for hectare. (thanks Ed Schofield) - Added peak sun hour and Langley. (thanks Ed Schofield) - Added photometric units: lumen & lux. (Issue 230, thanks janpipek) - A fraction magnitude quantity is conserved (Issue 323, thanks emilienkofman) - Improved conversion performance by removing unnecessart try/except. (Issue 251) - Added to_tuple and from_tuple to facilitate serialization. - Fixed support for NumPy 1.10 due to a change in the Default casting rule (Issue 320) - Infrastructure: Added doctesting. - Infrastructure: Better way to specify exclude matrix in travis. ``` ### 0.6 ``` ---------------- - Fix operations with measurments and user defined units. (Issue 204) - Faster conversions through caching and other performance improvements. (Issue 193, thanks MatthieuDartiailh) - Better error messages on Quantity.__setitem__. (Issue 191) - Fixed abbreviation of fluid_ounce. (Issue 187, thanks hsoft) - Defined Angstrom symbol. (Issue 181, thanks JonasOlson) - Removed fetching version from git repo as it triggers XCode installation on OSX. (Issue 178, thanks deanishe) - Improved context documentation. (Issue 176 and 179, thanks rsking84) - Added Chemistry context. (Issue 179, thanks rsking84) - Fix help(UnitRegisty) (Issue 168) - Optimized "get_dimensionality" and "get_base_name". (Issue 166 and 167, thanks jbmohler) - Renamed ureg.parse_units parameter "to_delta" to "as_delta" to make clear. that no conversion happens. Accordingly, the parameter/property "default_to_delta" of UnitRegistry was renamed to "default_as_delta". (Issue 158, thanks dalit) - Fixed problem when adding two uncertainties. (thanks dalito) - Full support for Offset units (e.g. temperature) (Issue 88, 143, 147 and 161, thanks dalito) ``` ### 0.5.2 ``` ------------------ - Changed travis config to use miniconda for faster testing. - Added wheel configuration to setup.cfg. - Ensure resource streams are closed after reading. - Require setuptools. (Issue 169) - Implemented real, imag and T Quantity properties. (Issue 171) - Implemented __int__ and __long__ for Quantity (Issue 170) - Fixed SI prefix error on ureg.convert. (Issue 156, thanks jdreaver) - Fixed parsing of multiparemeter contexts. (Issue 174) ``` ### 0.5.1 ``` ------------------ - Implemented a standard way to change the registry used in unpickling operations. (Issue 148) - Fix bug where conversion would fail due to caching. (Issue 140, thanks jdreaver) - Allow assigning Not a Number to a quantity array. (Issue 127) - Decoupled Quantity in place and not in place unit conversion methods. - Return None in functions that modify quantities in place. - Improved testing infrastructure to check for unwanted warnings. - Added test function at the package level to run all tests. ``` ### 0.5 ``` ---------------- - Improved test suite helper functions. - Print honors default format w/o format(). (Issue 132, thanks mankoff) - Fixed sum() by treating number zero as a special case. (Issue 122, thanks rec) - Improved behaviour in ScaleConverter, OffsetConverter and Quantity.to. (Issue 120) - Reimplemented loading of default definitions to allow Pint in a cx_freeze or similar package. (Issue 118, thanks jbmohler) - Implemented parsing of pretty printed units. (Issue 117, thanks jpgrayson) - Fixed representation of dimensionless quantities. (Issue 112, thanks rec) - Raise error when invalid formatting code is given. (Issue 111, thanks rec) - Default registry to lazy load, raise error on redefinition (Issue 108, thanks rec, aepsil0n) - Added condensed format. (Issue 107, thanks rec) - Added UnitRegistry () operator to parse expression replacing []. (Issue 106, thanks rec) - Optional case insensitive unit parsing. (Issue 105, thanks rec, jeremyfreeman, dbrnz) - Change the Quantity mutability depending on magnitude type. (Issue 104, thanks rec) - Implemented API to list compatible units. (Issue 89) - Implemented cache of key UnitRegistry methods. - Rewrote the Measurement class to use uncertainties. (Issue 24) ``` ### 0.4.2 ``` ------------------ - Python 2.6 support (Issue 96, thanks tiagocoutinho) - Fixed symbol for inch. (Issue 102, thanks cybertoast) - Stop raising AttributeError when wrapping funcs without all of the attributes. (Issue 100, thanks jturner314) - Fixed warning appearing in Py2.x when comparing a Numpy Array with an empty string. (Issue 98, thanks jturner314) - Add links to AUR packages in docs. (Issue 91, thanks jturner314) - Fixed garbage collection related problem. (Issue 92, thanks jturner314) ``` ### 0.4.1 ``` ------------------ - Integer Division with Arrays. (Issue 80, thanks jdreaver) - Improved Documentation. (Issue 83, thanks choloepus) - Removed 'h' alias for hour due to conflict with Planck's constant. (Issue 82, thanks choloepus) - Improved get_base_units for non-multiplicative units. (Issue 85, thanks exxus) - Refactored code for multiplication. (Issue 84, thanks jturner314) - Removed 'R' alias for roentgen as it collides with molar_gas_constant. (Issue 87, thanks rsking84) - Improved naming of temperature units and multiplication of non-multiplicative units. (Issue 86, tahsnk exxus) ``` ### 0.4 ``` ---------------- - Introduced Contexts: relation between incompatible dimensions. (Issue 65) - Fixed get_base_units for non multiplicative units. (Related to issue 66) - Implemented default formatting for quantities. - Changed comparison between Quantities containing NumPy arrays. (Issue 75) - BACKWARDS INCOMPATIBLE CHANGE - Fixes for NumPy 1.8 due to changes in handling binary ops. (Issue 73) ``` ### 0.3.3 ``` ------------------ - ParseHelper can now parse units named like python keywords. (Issue 69) - Fix comparison of quantities. (Issue 74) - Fix Inequality operator. (Issue 70, thanks muggenhor) - Improved travis configuration. (thanks muggenhor) ``` ### 0.3.2 ``` ------------------ - Fix get_dimensionality for non multiplicative units. (Issue 66) - Proper handling of import directive inside a file read using pkg_resources. (Issue 68) ``` ### 0.3.1 ``` ------------------ - fix right division on python 2.7 (Issue 58, thanks natezb) - fix formatting of fractional exponentials between 0 and 1. (Issue 62, thanks jdreaver) - fix installation as egg. (Issue 61) - fix handling of strange values as input of Quantity. (Issue 53) - math operations between quantities of different registries now raise a ValueError. (Issue 52) ``` ### 0.3 ``` ---------------- - support for IPython autocomplete and rich display. (Issues 30 and 31) - support for import directive in definitions file. (Issue 22) - support for wrapping functions to make them pint-aware. (Issue 16) - support for comparing UnitsContainer to string. (Issue 35) - fix error raised while converting from a single unit to one expressed as the relation between many. (Issue 29) - fix error raised when unit symbol is missing. (Issue 41) - fix error raised when magnitude is Decimal. (Issue 46, thanks danielsokolowski) - support for non-installed pint. (Issue 42, thanks danielsokolowski) - support for application of numpy function on non-ndarray magnitudes. (Issue 44) - support for math operations on dimensionless Quantities (written with units). (Issue 45) - fix obtaining dimensionless quantity from string. (Issue 50) - fix adding and comparing numbers to a dimensionless quantity (written with units). (Issue 54) - Support for iter in Quantity. (Issue 55, thanks natezb) ``` ### 0.2.1 ``` ------------------ - fix error raised while converting from a single unit to one expressed as the relation between many. (Issue 29) ``` ### 0.2 ``` ---------------- - support for Measurement (Quantity +/- error). - implemented buckingham pi theorem for dimensional analysis. - support for temperature units and temperature difference units. - parser can infers if the user mean temperature or temperature difference. - support for derived dimensions (e.g. [speed] = [length] / [time]). - refactored the code into multiple files. - refactored code to isolate definitions and converters. - refactored formatter out of UnitParser class. - added tox and travis config files for CI. - comprehensive NumPy testing including almost all ufuncs. - full NumPy support (features is not longer experimental). - fixed bug preventing from having independent registries. (Issue 10, thanks bwanders) - forces real division as default for Quantities. (Issue 7, thanks dbrnz) - improved default unit definition file. (Issue 13, thanks r-barnes) - smarter parser supporting spaces as multiplications and other nice features. (Issue 13, thanks r-barnes) - moved testsuite inside package. - short forms of binary prefixes, more units and fix to less than comparison. (Issue 20, thanks muggenhor) - pint is now zip-safe (Issue 23, thanks muggenhor) ``` ### 0.1.3 ``` -------------------------- - abbreviated quantity string formating. - complete Python 2.7 compatibility. - implemented pickle support for Quantities objects. - extended NumPy support. - various bugfixes. ``` ### 0.1.2 ``` -------------------------- - experimenal NumPy support. - included default unit definitions file. (Issue 1, thanks fish2000) - better testing. - various bugfixes. - fixed some units definitions. (Issue 4, thanks craigholm) ``` ### 0.1.1 ``` -------------------------- - better packaging and installation. ``` ### 0.1 ``` -------------------------- - first public release. ```Links
- PyPI: https://pypi.org/project/pint - Changelog: https://pyup.io/changelogs/pint/ - Repo: https://github.com/hgrecco/pint