Files
python-pint/python-pint.spec
2024-01-04 08:43:23 -05:00

118 lines
3.7 KiB
RPMSpec

Name: python-pint
Version: 0.19.2
Release: %autorelease
Summary: Physical quantities module
# The entire source is BSD-3-Clause, except:
# - pint/_vendor/appdirs.py is MIT, but is unbundled in %%prep
# - pint/_vendor/flexcache.py is also BSD-3-Clause, but is unbundled in
# %%prep
License: BSD-3-Clause
URL: https://github.com/hgrecco/pint
Source0: %{pypi_source Pint}
# Fix test as NumPy 1.25 changes the rules for equality operator
# https://github.com/hgrecco/pint/commit/b3b18277ecc682bff7ca1fa9e48992f7ec68e47f
#
# Fixes:
#
# test_equal_zero_nan_NP fails with numpy 1.25.1
# https://github.com/hgrecco/pint/issues/1825
Patch: %{url}/commit/b3b18277ecc682bff7ca1fa9e48992f7ec68e47f.patch
# add min and max to the array function overrides
# https://github.com/hgrecco/pint/commit/1b2b0592f88a1c9fdf9b5649ebade19fa81adea4
#
# Fixes several failures in TestNumpyUnclassified
#
# Cherry-picked to 0.19.
Patch: 0001-add-min-and-max-to-the-array-function-overrides.patch
# Downstream-only: Backport fix for importlib.resources.path removal
#
# Imitate current versions of flexparser, which was split out as a
# separate library in later releases of pint.
#
# This is resolved in current upstream releases of pint; see
# https://src.fedoraproject.org/rpms/python-pint/pull-request/10.
#
# Fixes:
#
# python-pint fails to build with Python 3.13: AttributeError: module
# 'importlib.resources' has no attribute 'path'
# https://bugzilla.redhat.com/show_bug.cgi?id=2256746
Patch: 0001-Downstream-only-Backport-fix-for-importlib.resources.patch
BuildArch: noarch
%global _description %{expand:
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.}
%description %{_description}
%package -n python3-pint
Summary: %{summary}
%description -n python3-pint %{_description}
# We omit the “uncertainties” extra because python-uncertainties is not yet
# packaged.
%pyproject_extras_subpkg -n python3-pint numpy
%prep
%autosetup -n Pint-%{version} -p1
# We are not sure where this was bundled from, but we are pretty sure it was
# bundled from somewhere! We are not building HTML documentation, so we do not
# need it.
rm -rvf docs/_themes
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters
sed -r -i '/pytest-cov/d' setup.cfg
# Unbundle python-appdirs
# http://github.com/ActiveState/appdirs
# Provides: bundled(python3dist(appdirs)) = 1.4.4
rm -vf pint/_vendor/appdirs.py
# Unbundle python-flexcache
# https://github.com/hgrecco/flexcache
# Provides: bundled(python3dist(flexcache)) = 0.2
rm -vf pint/_vendor/flexcache.py
# Add devendored dependencies back in as regular dependencies
sed -r -i 's/^setup_requires/install_requires = appdirs; flexcache\n&/' \
setup.cfg
# The find-then-modify pattern keeps us from discarding mtimes on sources that
# do not need modification.
find pint -type f -exec \
gawk '/^from (\.*|pint)\._vendor import (appdirs|flexcache)/ {
print FILENAME; nextfile }' '{}' '+' |
xargs -r -t sed -r -i \
-e 's/^from (\.*|pint)\._vendor (import (appdirs))/\2/' \
-e 's/^(from )(\.*|pint)\._vendor( import (flexcache))/\1\4\3/'
%generate_buildrequires
# We omit the “uncertainties” extra because python-uncertainties is not yet
# packaged.
%pyproject_buildrequires -x numpy,test
%build
%pyproject_wheel
%install
%pyproject_install
%pyproject_save_files pint
%check
%pytest
%files -n python3-pint -f %{pyproject_files}
%{_bindir}/pint-convert
%changelog
%autochangelog