Skip to content

Commit

Permalink
Merge branch 'master' into array_ufunc_multiplication
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewgsavage committed Apr 3, 2024
2 parents 8bc5fc7 + f2e4081 commit da0058d
Show file tree
Hide file tree
Showing 123 changed files with 3,736 additions and 4,383 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: "3.11"
python-version: "3.12"

- name: Install dependencies
run: pip install "numpy>=1.21,<2.0.0"
run: pip install "numpy>=1.23,<2.0.0"

- name: Install bench dependencies
run: pip install .[bench]
Expand Down
26 changes: 17 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", "3.11"]
numpy: [null, "numpy>=1.21,<2.0.0"]
python-version: ["3.10", "3.11", "3.12"]
numpy: [null, "numpy>=1.23,<2.0.0"]
uncertainties: [null, "uncertainties==3.1.6", "uncertainties>=3.1.6,<4.0.0"]
extras: [null]
include:
- python-version: 3.9 # Minimal versions
- python-version: "3.10" # Minimal versions
numpy: "numpy"
extras: matplotlib==2.2.5
- python-version: 3.9
- python-version: "3.10"
numpy: "numpy"
uncertainties: "uncertainties"
extras: "sparse xarray netCDF4 dask[complete]==2023.4.0 graphviz babel==2.8"
extras: "sparse xarray netCDF4 dask[complete]==2023.4.0 graphviz babel==2.8 mip>=1.13"
runs-on: ubuntu-latest

env:
Expand Down Expand Up @@ -61,6 +61,14 @@ jobs:
if: ${{ matrix.extras != null }}
run: pip install ${{matrix.extras}}

- name: Install locales
if: ${{ matrix.extras != null }}
run: |
sudo apt-get install language-pack-es language-pack-fr language-pack-ro
sudo localedef -i es_ES -f UTF-8 es_ES
sudo localedef -i fr_FR -f UTF-8 fr_FR
sudo localedef -i ro_RO -f UTF-8 ro_RO
- name: Install dependencies
run: |
sudo apt install -y graphviz
Expand Down Expand Up @@ -92,8 +100,8 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", "3.11"]
numpy: [ "numpy>=1.21,<2.0.0" ]
python-version: ["3.10", "3.11", "3.12"]
numpy: [ "numpy>=1.23,<2.0.0" ]
runs-on: windows-latest

env:
Expand Down Expand Up @@ -153,8 +161,8 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", "3.11"]
numpy: [null, "numpy>=1.21,<2.0.0" ]
python-version: ["3.10", "3.11", "3.12"]
numpy: [null, "numpy>=1.23,<2.0.0" ]
runs-on: macos-latest

env:
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: Set up minimal Python version
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: "3.10"

- name: Get pip cache dir
id: pip-cache
Expand All @@ -30,6 +30,11 @@ jobs:
key: pip-docs
restore-keys: pip-docs

- name: Install locales
run: |
sudo apt-get install language-pack-fr
sudo localedef -i fr_FR -f UTF-8 fr_FR
- name: Install dependencies
run: |
sudo apt install -y pandoc
Expand Down
18 changes: 8 additions & 10 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
exclude: '^pint/_vendor'
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
rev: v4.5.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
- id: black-jupyter
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: 'v0.0.240'
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.7
hooks:
- id: ruff
args: ["--fix"]
args: ["--fix", "--show-fixes"]
types_or: [ python, pyi, jupyter ]
- id: ruff-format
types_or: [ python, pyi, jupyter ]
- repo: https://github.com/executablebooks/mdformat
rev: 0.7.16
rev: 0.7.17
hooks:
- id: mdformat
additional_dependencies:
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: 2
build:
os: ubuntu-22.04
tools:
python: "3.9"
python: "3.11"
sphinx:
configuration: docs/conf.py
fail_on_warning: false
Expand Down
34 changes: 28 additions & 6 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,16 +1,39 @@
Pint Changelog
==============

0.23 (unreleased)
0.24 (unreleased)
-----------------

- Add `dim_sort` function to _formatter_helpers.
- Add `dim_order` and `default_sort_func` properties to FullFormatter.
(PR #1926, fixes Issue #1841)
- Fixed bug causing operations between arrays of quantity scalars and quantity holding
array resulting in incorrect units.
(PR #1677)

0.23 (2023-12-08)
-----------------

- Add _get_conversion_factor to registry with cache.
- Homogenize input and ouput of internal regitry functions to
facility typing, subclassing and wrapping.
(_yield_unit_triplets, )
- Generated downstream_status page to track the
state of downstream projects.
- Improve typing annotation.
- Updated to flexparser 0.2.
- Faster wraps
(PR #1862)
- Add codspeed github action.
- Move benchmarks to pytest-benchmarks.
- Support pytest on python 3.12 wrt Fraction formatting change
(#1818)
- Fixed Transformation type protocol.
(PR #1805, PR #1832)
- Documented to_preferred and created added an autoautoconvert_to_preferred registry option.
(PR #1803)
- Fixed bug causing operations between arrays of quantity scalars and quantity holding
array resulting in incorrect units.
(PR #1677)
- Enable Pint to parse uncertainty numbers.
(See #1611, #1614)
- Optimize matplotlib unit conversion for Quantity arrays
(PR #1819)
- Add numpy.linalg.norm implementation.
Expand Down Expand Up @@ -117,7 +140,7 @@ Pint Changelog
- Better support for uncertainties (See #1611, #1614)
- Implement `numpy.broadcast_arrays` (#1607)
- An ndim attribute has been added to Quantity and DataFrame has been added to upcast
types for pint-pandas compatibility. (#1596)
types for pint-pandas compatibility. (#1596)
- Fix a recursion error that would be raised when passing quantities to `cond` and `x`.
(Issue #1510, #1530)
- Update test_non_int tests for pytest.
Expand All @@ -126,7 +149,6 @@ types for pint-pandas compatibility. (#1596)
- Better support for pandas and dask.
- Fix masked arrays (with multiple values) incorrectly being passed through
setitem (Issue #1584)

- Add Quantity.to_preferred

0.19.2 (2022-04-23)
Expand Down
8 changes: 7 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@
:target: https://pypi.python.org/pypi/pint
:alt: Latest Version

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
:target: https://github.com/python/black
: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/
Expand Down
1 change: 1 addition & 0 deletions docs/changes.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.. include:: ../CHANGES
1 change: 1 addition & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#
# All configuration values have a default; values that are commented out
# serve to show the default.
from __future__ import annotations

import datetime
from importlib.metadata import version
Expand Down
14 changes: 8 additions & 6 deletions docs/getting/tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -427,8 +427,8 @@ If Babel_ is installed you can translate unit names to any language

.. doctest::

>>> accel.format_babel(locale='fr_FR')
'1.3 mètre par seconde²'
>>> ureg.formatter.format_quantity(accel, locale='fr_FR')
'1,3 mètres/secondes²'

You can also specify the format locale at the registry level either at creation:

Expand All @@ -440,20 +440,22 @@ or later:

.. doctest::

>>> ureg.set_fmt_locale('fr_FR')
>>> ureg.formatter.set_locale('fr_FR')

and by doing that, string formatting is now localized:

.. doctest::

>>> ureg.default_format = 'P'
>>> accel = 1.3 * ureg.parse_units('meter/second**2')
>>> str(accel)
'1.3 mètre par seconde²'
'1,3 mètres/secondes²'
>>> "%s" % accel
'1.3 mètre par seconde²'
'1,3 mètres/secondes²'
>>> "{}".format(accel)
'1.3 mètre par seconde²'
'1,3 mètres/secondes²'

If you want to customize string formatting, take a look at :ref:`formatting`.


.. _`default list of units`: https://github.com/hgrecco/pint/blob/master/pint/default_en.txt
Expand Down
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ Pint: makes units easy
Advanced topics <advanced/index>
ecosystem
API Reference <api/index>
changes

.. toctree::
:maxdepth: 1
Expand Down
37 changes: 34 additions & 3 deletions docs/user/angular_frequency.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,43 @@
.. _angular_frequency:


Angular Frequency
Angles and Angular Frequency
=================

Angles
------

pint treats angle quantities as `dimensionless`, following the conventions of SI. The base unit for angle is the `radian`.
The SI BIPM Brochure (Bureau International des Poids et Mesures) states:

.. note::

Plane and solid angles, when expressed in radians and steradians respectively, are in effect
also treated within the SI as quantities with the unit one (see section 5.4.8). The symbols rad
and sr are written explicitly where appropriate, in order to emphasize that, for radians or
steradians, the quantity being considered is, or involves the plane angle or solid angle
respectively. For steradians it emphasizes the distinction between units of flux and intensity
in radiometry and photometry for example. However, it is a long-established practice in
mathematics and across all areas of science to make use of rad = 1 and sr = 1.


This leads to behavior some users may find unintuitive. For example, since angles have no dimensionality, it is not possible to check whether a quantity has an angle dimension.

.. code-block:: python
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> angle = ureg('1 rad')
>>> angle.dimensionality
<UnitsContainer({})>
Angular Frequency
-----------------

`Hertz` is a unit for frequency, that is often also used for angular frequency. For example, a shaft spinning at `60 revolutions per minute` will often be said to spin at `1 Hz`, rather than `1 revolution per second`.

By default, pint treats angle quantities as `dimensionless`, so allows conversions between frequencies and angular frequencies. The base unit for angle is the `radian`. This leads to some unintuitive behaviour, as pint will convert angular frequencies into frequencies by converting angles into `radians`, rather than `revolutions`. This leads to converted values `2 * pi` larger than expected:
Since pint treats angle quantities as `dimensionless`, it allows conversions between frequencies and angular frequencies. This leads to some unintuitive behaviour, as pint will convert angular frequencies into frequencies by converting angles into `radians`, rather than `revolutions`. This leads to converted values `2 * pi` larger than expected:

.. code-block:: python
Expand All @@ -16,7 +47,7 @@ By default, pint treats angle quantities as `dimensionless`, so allows conversio
>>> angular_frequency.to('Hz')
<Quantity(6.28318531, 'hertz')>
pint follows the conventions of SI. The SI BIPM Brochure (Bureau International des Poids et Mesures) states:
The SI BIPM Brochure (Bureau International des Poids et Mesures) states:

.. note::

Expand Down
Loading

0 comments on commit da0058d

Please sign in to comment.