.. image:: https://img.shields.io/pypi/v/pint.svg
:target: https://pypi.python.org/pypi/pint
:alt: Latest Version
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
:target: https://github.com/astral-sh/ruff
:alt: Ruff
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/format.json
:target: https://github.com/astral-sh/ruff
:alt: Ruff-Format
.. image:: https://readthedocs.org/projects/pint/badge/
:target: https://pint.readthedocs.org/
:alt: Documentation
.. image:: https://img.shields.io/pypi/l/pint.svg
:target: https://pypi.python.org/pypi/pint
:alt: License
.. image:: https://img.shields.io/pypi/pyversions/pint.svg
:target: https://pypi.python.org/pypi/pint
:alt: Python Versions
.. image:: https://github.com/hgrecco/pint/workflows/CI/badge.svg
:target: https://github.com/hgrecco/pint/actions?query=workflow%3ACI
:alt: CI
.. image:: https://github.com/hgrecco/pint/workflows/Lint/badge.svg
:target: https://github.com/hgrecco/pint/actions?query=workflow%3ALint
:alt: LINTER
.. image:: https://coveralls.io/repos/github/hgrecco/pint/badge.svg?branch=master
:target: https://coveralls.io/github/hgrecco/pint?branch=master
:alt: Coverage
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.9+ with no other dependency.
It is licensed under BSD.
It is extremely easy and natural to use:
.. code-block:: python
>>> 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:
.. code-block:: python
>>> 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:
.. code-block:: bash
$ pip install pint
or utilizing conda, with the conda-forge channel:
.. code-block:: bash
$ conda install -c conda-forge pint
and then simply enjoy it!
Documentation
-------------
Full documentation is available at http://pint.readthedocs.org/
Command-line converter
----------------------
A command-line script `pint-convert` provides a quick way to convert between
units or get conversion factors.
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`_.
Pint is maintained by a community of scientists, programmers and enthusiasts around the world.
See AUTHORS_ for a complete list.
To review an ordered list of notable changes for each version of a project,
see CHANGES_
.. _Website: http://www.dimensionalanalysis.org/
.. _`comprehensive list of physical units, prefixes and constants`: https://github.com/hgrecco/pint/blob/master/pint/default_en.txt
.. _`uncertainties package`: https://pythonhosted.org/uncertainties/
.. _`NumPy`: http://www.numpy.org/
.. _`PEP 3101`: https://www.python.org/dev/peps/pep-3101/
.. _`Babel`: http://babel.pocoo.org/
.. _`Pandas Extension Types`: https://pandas.pydata.org/pandas-docs/stable/development/extending.html#extension-types
.. _`pint-pandas Jupyter notebook`: https://github.com/hgrecco/pint-pandas/blob/master/notebooks/pint-pandas.ipynb
.. _`AUTHORS`: https://github.com/hgrecco/pint/blob/master/AUTHORS
.. _`CHANGES`: https://github.com/hgrecco/pint/blob/master/CHANGES
Raw data
{
"_id": null,
"home_page": null,
"name": "Pint",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "\"Hernan E. Grecco\" <hernan.grecco@gmail.com>, Jules Ch\u00e9ron <julescheron@gmail.com>",
"keywords": "physical, quantities, unit, conversion, science",
"author": null,
"author_email": "\"Hernan E. Grecco\" <hernan.grecco@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz",
"platform": null,
"description": ".. image:: https://img.shields.io/pypi/v/pint.svg\n :target: https://pypi.python.org/pypi/pint\n :alt: Latest Version\n\n.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\n :target: https://github.com/astral-sh/ruff\n :alt: Ruff\n\n.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/format.json\n :target: https://github.com/astral-sh/ruff\n :alt: Ruff-Format\n\n.. image:: https://readthedocs.org/projects/pint/badge/\n :target: https://pint.readthedocs.org/\n :alt: Documentation\n\n.. image:: https://img.shields.io/pypi/l/pint.svg\n :target: https://pypi.python.org/pypi/pint\n :alt: License\n\n.. image:: https://img.shields.io/pypi/pyversions/pint.svg\n :target: https://pypi.python.org/pypi/pint\n :alt: Python Versions\n\n.. image:: https://github.com/hgrecco/pint/workflows/CI/badge.svg\n :target: https://github.com/hgrecco/pint/actions?query=workflow%3ACI\n :alt: CI\n\n.. image:: https://github.com/hgrecco/pint/workflows/Lint/badge.svg\n :target: https://github.com/hgrecco/pint/actions?query=workflow%3ALint\n :alt: LINTER\n\n.. image:: https://coveralls.io/repos/github/hgrecco/pint/badge.svg?branch=master\n :target: https://coveralls.io/github/hgrecco/pint?branch=master\n :alt: Coverage\n\n\nPint: makes units easy\n======================\n\nPint is a Python package to define, operate and manipulate physical\nquantities: the product of a numerical value and a unit of measurement.\nIt allows arithmetic operations between them and conversions from and\nto different units.\n\nIt is distributed with a comprehensive list of physical units, prefixes\nand constants. Due to its modular design, you can extend (or even rewrite!)\nthe complete list without changing the source code. It supports a lot of\nnumpy mathematical operations **without monkey patching or wrapping numpy**.\n\nIt has a complete test coverage. It runs in Python 3.9+ with no other dependency.\nIt is licensed under BSD.\n\nIt is extremely easy and natural to use:\n\n.. code-block:: python\n\n >>> import pint\n >>> ureg = pint.UnitRegistry()\n >>> 3 * ureg.meter + 4 * ureg.cm\n <Quantity(3.04, 'meter')>\n\nand you can make good use of numpy if you want:\n\n.. code-block:: python\n\n >>> import numpy as np\n >>> [3, 4] * ureg.meter + [4, 3] * ureg.cm\n <Quantity([ 3.04 4.03], 'meter')>\n >>> np.sum(_)\n <Quantity(7.07, 'meter')>\n\n\nQuick Installation\n------------------\n\nTo install Pint, simply:\n\n.. code-block:: bash\n\n $ pip install pint\n\nor utilizing conda, with the conda-forge channel:\n\n.. code-block:: bash\n\n $ conda install -c conda-forge pint\n\nand then simply enjoy it!\n\n\nDocumentation\n-------------\n\nFull documentation is available at http://pint.readthedocs.org/\n\n\nCommand-line converter\n----------------------\n\nA command-line script `pint-convert` provides a quick way to convert between\nunits or get conversion factors.\n\n\nDesign principles\n-----------------\n\nAlthough there are already a few very good Python packages to handle physical\nquantities, no one was really fitting my needs. Like most developers, I\nprogrammed Pint to scratch my own itches.\n\n**Unit parsing**: prefixed and pluralized forms of units are recognized without\nexplicitly defining them. In other words: as the prefix *kilo* and the unit\n*meter* are defined, Pint understands *kilometers*. This results in a much\nshorter and maintainable unit definition list as compared to other packages.\n\n**Standalone unit definitions**: units definitions are loaded from a text file\nwhich is simple and easy to edit. Adding and changing units and their\ndefinitions does not involve changing the code.\n\n**Advanced string formatting**: a quantity can be formatted into string using\n`PEP 3101`_ syntax. Extended conversion flags are given to provide symbolic,\nLaTeX and pretty formatting. Unit name translation is available if Babel_ is\ninstalled.\n\n**Free to choose the numerical type**: You can use any numerical type\n(`fraction`, `float`, `decimal`, `numpy.ndarray`, etc). NumPy_ is not required\nbut supported.\n\n**Awesome NumPy integration**: When you choose to use a NumPy_ ndarray, its methods and\nufuncs are supported including automatic conversion of units. For example\n`numpy.arccos(q)` will require a dimensionless `q` and the units of the output\nquantity will be radian.\n\n**Uncertainties integration**: transparently handles calculations with\nquantities with uncertainties (like 3.14\u00b10.01 meter) via the `uncertainties\npackage`_.\n\n**Handle temperature**: conversion between units with different reference\npoints, like positions on a map or absolute temperature scales.\n\n**Dependency free**: it depends only on Python and its standard library. It interacts with other packages\nlike numpy and uncertainties if they are installed\n\n**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`_.\n\n\nPint is maintained by a community of scientists, programmers and enthusiasts around the world.\nSee AUTHORS_ for a complete list.\n\nTo review an ordered list of notable changes for each version of a project,\nsee CHANGES_\n\n\n.. _Website: http://www.dimensionalanalysis.org/\n.. _`comprehensive list of physical units, prefixes and constants`: https://github.com/hgrecco/pint/blob/master/pint/default_en.txt\n.. _`uncertainties package`: https://pythonhosted.org/uncertainties/\n.. _`NumPy`: http://www.numpy.org/\n.. _`PEP 3101`: https://www.python.org/dev/peps/pep-3101/\n.. _`Babel`: http://babel.pocoo.org/\n.. _`Pandas Extension Types`: https://pandas.pydata.org/pandas-docs/stable/development/extending.html#extension-types\n.. _`pint-pandas Jupyter notebook`: https://github.com/hgrecco/pint-pandas/blob/master/notebooks/pint-pandas.ipynb\n.. _`AUTHORS`: https://github.com/hgrecco/pint/blob/master/AUTHORS\n.. _`CHANGES`: https://github.com/hgrecco/pint/blob/master/CHANGES\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "Physical quantities module",
"version": "0.24.4",
"project_urls": {
"Documentation": "https://pint.readthedocs.io/",
"Homepage": "https://github.com/hgrecco/pint"
},
"split_keywords": [
"physical",
" quantities",
" unit",
" conversion",
" science"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b716bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c",
"md5": "dc19eca995cbd8b30bf0e6f7b996a494",
"sha256": "aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659"
},
"downloads": -1,
"filename": "Pint-0.24.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dc19eca995cbd8b30bf0e6f7b996a494",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 302029,
"upload_time": "2024-11-07T16:29:43",
"upload_time_iso_8601": "2024-11-07T16:29:43.976747Z",
"url": "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "20bb52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea",
"md5": "0c2dde9f06c74f27fd8f5c5a93e08df2",
"sha256": "35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80"
},
"downloads": -1,
"filename": "pint-0.24.4.tar.gz",
"has_sig": false,
"md5_digest": "0c2dde9f06c74f27fd8f5c5a93e08df2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 342225,
"upload_time": "2024-11-07T16:29:46",
"upload_time_iso_8601": "2024-11-07T16:29:46.061051Z",
"url": "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-07 16:29:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hgrecco",
"github_project": "pint",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "pint"
}