Skip to main content

Physical quantities module

Project description

Latest Version Documentation License Python Versions CI Coverage Docs

Pint: makes units easy

Pint is a Python package to define, operate and manipulate physical quantities: the product of a numerical value and a unit of measurement. It allows arithmetic operations between them and conversions from and to different units.

It is distributed with a comprehensive list of physical units, prefixes and constants. Due to its modular design, you can extend (or even rewrite!) the complete list without changing the source code. It supports a lot of numpy mathematical operations without monkey patching or wrapping numpy.

It has a complete test coverage. It runs in Python 3.6+ with no other dependency. If you need Python 2.7 or 3.4/3.5 compatibility, use Pint 0.9. It is licensed under BSD.

It is extremely easy and natural to use:

>>> import pint
>>> ureg = pint.UnitRegistry()
>>> 3 * ureg.meter + 4 * ureg.cm
<Quantity(3.04, 'meter')>

and you can make good use of numpy if you want:

>>> import numpy as np
>>> [3, 4] * ureg.meter + [4, 3] * ureg.cm
<Quantity([ 3.04  4.03], 'meter')>
>>> np.sum(_)
<Quantity(7.07, 'meter')>

Quick Installation

To install Pint, simply:

$ pip install pint

or utilizing conda, with the conda-forge channel:

$ conda install -c conda-forge pint

and then simply enjoy it!

Documentation

Full documentation is available at http://pint.readthedocs.org/

GUI Website

This Website wraps Pint’s “dimensional analysis” methods to provide a GUI.

Design principles

Although there are already a few very good Python packages to handle physical quantities, no one was really fitting my needs. Like most developers, I programmed Pint to scratch my own itches.

Unit parsing: prefixed and pluralized forms of units are recognized without explicitly defining them. In other words: as the prefix kilo and the unit meter are defined, Pint understands kilometers. This results in a much shorter and maintainable unit definition list as compared to other packages.

Standalone unit definitions: units definitions are loaded from a text file which is simple and easy to edit. Adding and changing units and their definitions does not involve changing the code.

Advanced string formatting: a quantity can be formatted into string using PEP 3101 syntax. Extended conversion flags are given to provide symbolic, LaTeX and pretty formatting. Unit name translation is available if Babel is installed.

Free to choose the numerical type: You can use any numerical type (fraction, float, decimal, numpy.ndarray, etc). NumPy is not required but supported.

Awesome NumPy integration: When you choose to use a NumPy ndarray, its methods and ufuncs are supported including automatic conversion of units. For example numpy.arccos(q) will require a dimensionless q and the units of the output quantity will be radian.

Uncertainties integration: transparently handles calculations with quantities with uncertainties (like 3.14±0.01) meter via the uncertainties package.

Handle temperature: conversion between units with different reference points, like positions on a map or absolute temperature scales.

Dependency free: it depends only on Python and its standard library. It interacts with other packages like numpy and uncertainties if they are installed

Pandas integration: Thanks to Pandas Extension Types it is now possible to use Pint with Pandas. Operations on DataFrames and between columns are units aware, providing even more convenience for users of Pandas DataFrames. For full details, see the pint-pandas Jupyter notebook.

When you choose to use a NumPy ndarray, its methods and ufuncs are supported including automatic conversion of units. For example numpy.arccos(q) will require a dimensionless q and the units of the output quantity will be radian.

Pint is written and maintained by Hernan E. Grecco <hernan.grecco@gmail.com>.

Other contributors, listed alphabetically, are:

(If you think that your name belongs here, please let the maintainer know)

Pint Changelog

0.10.1 (2020-01-07)

  • 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 (2020-01-05)

  • 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

    (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 (2019-01-12)

  • 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 (2017-06-05)

  • 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 (2017-04-16)

  • 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 (2016-03-02)

  • Fixed backward incompatibility problem when parsing dimensionless units.

0.7.1 (2016-02-23)

  • Use NIST as source for most of the unit information.

  • Added message to assertQuantityEqual.

  • Added detection of circular dependencies in definitions.

0.7 (2016-02-20)

  • 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 (2014-11-07)

  • 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 (2014-07-31)

  • 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 (2014-06-03)

  • 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 (2014-05-07)

  • 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 (2014-02-14)

  • 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 (2014-01-12)

  • 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 (2013-12-17)

  • 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 (2013-11-29)

  • 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 (2013-10-22)

  • 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 (2013-09-15)

  • 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 (2013-09-02)

  • 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 (2013-07-02)

  • fix error raised while converting from a single unit to one expressed as the relation between many. (Issue #29)

0.2 (2013-05-13)

  • 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)

Version 0.1.3 (2013-01-07)

  • abbreviated quantity string formating.

  • complete Python 2.7 compatibility.

  • implemented pickle support for Quantities objects.

  • extended NumPy support.

  • various bugfixes.

Version 0.1.2 (2012-08-12)

  • experimenal NumPy support.

  • included default unit definitions file. (Issue #1, thanks fish2000)

  • better testing.

  • various bugfixes.

  • fixed some units definitions. (Issue #4, thanks craigholm)

Version 0.1.1 (2012-07-31)

  • better packaging and installation.

Version 0.1 (2012-07-26)

  • first public release.

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

Pint-0.10.1.tar.gz (265.8 kB view hashes)

Uploaded Source

Built Distribution

Pint-0.10.1-py2.py3-none-any.whl (192.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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