%global srcname immutables
%bcond_without tests
Name: python-immutables
Version: 0.20
Release: 1%{?dist}
Summary: Immutable Collections
# The entire source code is Apache-2.0, except pythoncapi_compat.h, which is
# 0BSD. While this file is unbundled, it is a header-only library; its entire
# contents are compiled into the binary RPM, and packaging guidelines treat it
# as a static library. Its license therefore contributes to the license of the
# binary RPM. See discussion in
# https://src.fedoraproject.org/rpms/python-immutables/pull-request/2, and the
# (Rust-specific but relevant) policy
# https://docs.fedoraproject.org/en-US/legal/license-field/#_rust_packages.
License: Apache-2.0 AND 0BSD
URL: https://github.com/MagicStack/immutables
Source: %{pypi_source immutables}
BuildRequires: gcc
%global common_description %{expand:
An immutable mapping type for Python.
The underlying datastructure is a Hash Array Mapped Trie (HAMT) used in
Clojure, Scala, Haskell, and other functional languages. This implementation is
used in CPython 3.7 in the contextvars module (see PEP 550 and PEP 567 for more
details).
Immutable mappings based on HAMT have O(log N) performance for both set() and
get() operations, which is essentially O(1) for relatively small mappings.}
%description %{common_description}
%package -n python3-immutables
Summary: %{summary}
BuildRequires: python3-devel
BuildRequires: pyproject-rpm-macros
%if %{with tests}
BuildRequires: python3-pytest
%endif
# https://github.com/python/pythoncapi-compat
#
# Not yet packaged separately in Fedora (review request:
# https://bugzilla.redhat.com/show_bug.cgi?id=2154546).
#
# Upstream has never versioned this header; the contents of the file suggest
# that it corresponds to commit eaff3c172f94ed32ac38860c38d7a8fa27483e57
Provides: bundled(pythoncapi-compat) = 0^20230721giteaff3c1
%description -n python3-%{srcname} %{common_description}
%prep
%autosetup -n immutables-%{version} -p 1
# don't install source files
sed -e '/include_package_data=/ s/True/False/' -i setup.py
# delete mypy tests to avoid that dependency
rm tests/conftest.py tests/test_mypy.py
%generate_buildrequires
%pyproject_buildrequires
%build
%pyproject_wheel
%install
%pyproject_install
%pyproject_save_files immutables
%check
%if %{with tests}
%pytest --verbose
%else
%pyproject_check_import
%endif
%files -n python3-immutables -f %{pyproject_files}
%doc README.rst
%changelog
* Tue Dec 05 2023 Carl George <carlwgeorge@fedoraproject.org> - 0.20-1
- Update to version 0.20 rhbz#2232104
* Mon Jul 24 2023 Carl George <carl@george.computer> - 0.19-6
- Use upstream merged commit for Python 3.12 compatibility
* Fri Jul 21 2023 Carl George <carl@george.computer> - 0.19-5
- Python 3.12 compatibility, resolves rhbz#2220276
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.19-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 0.19-3
- Rebuilt for Python 3.12
* Mon Jan 09 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 0.19-2
- Unbundle pythoncapi-compat
* Fri Dec 16 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 0.19-1
- Update License to SPDX
- Indicate bundling of pythoncapi-compat header-only library
- Update to 0.19 (close RHBZ#2126990)
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.18-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 0.18-2
- Rebuilt for Python 3.11
* Wed Jun 01 2022 Carl George <carl@george.computer> - 0.18-1
- Latest upstream, resolves: rhbz#2092222
- Convert to pyproject macros
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.15-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.15-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 0.15-3
- Rebuilt for Python 3.10
* Wed Apr 21 2021 Carl George <carl@george.computer> - 0.15-2
- Include missing upstream license
- Disable package data in setup.py to avoid installing source files
* Wed Apr 21 2021 Carl George <carl@george.computer> - 0.15-1
- Initial package rhbz#1951868