17
0
Files
python-packaging/python-packaging.spec
Markéta Machová 1b06e16e8c Accepting request 1330006 from home:ecsos:python
- update to 26.0:
  * Features:
    - PEP 751: support pylock (PR #900)
    - PEP 794: import name metadata (PR #948)
    - Support for writing metadata to a file (PR #846)
    - Support __replace__ on Version (PR #1003)
    - Support positional pattern matching for Version and SpecifierSet (PR #1004)
  * Behavior adaptations:
    - PEP 440 handling of prereleases for Specifier.contains,
      SpecifierSet.contains, and SpecifierSet.filter (PR #897)
    - Handle PEP 440 edge case in SpecifierSet.filter (PR #942)
    - Adjust arbitrary equality intersection preservation in SpecifierSet (PR #951)
    - Return False instead of raising for .contains with invalid version (PR #932)
    - Support arbitrary equality on arbitrary strings for Specifier
      and SpecifierSet’s filter and contains method. (PR #954)
    - Only try to parse as Version on certain marker keys,
      return False on unequal ordered comparisons (PR #939)
  * Fixes:
    - Update _hash when unpickling Tag() (PR #860)
    - Correct comment and simplify implicit prerelease handling in
      Specifier.prereleases (PR #896)
    - Use explicit _GLibCVersion NamedTuple in _manylinux (PR #868)
    - Detect invalid license expressions containing () (PR #879)
    - Correct regex for metadata 'name' format (PR #925)
    - Improve the message around expecting a semicolon (PR #833)
    - Support nested parens in license expressions (PR #931)
    - Add space before at symbol in Requirements string (PR #953)
    - A root logger use found, use a packaging logger instead (PR #965)
    - Better support for subclassing Marker and Requirement (PR #1022)
    - Normalize all extras, not just if it comes first (PR #1024)
    - Don’t produce a broken repr if Marker fails to construct (PR #1033)
  * Performance:
    - Avoid recompiling regexes in the tokenizer for a 3x speedup (PR #1019)
    - Improve performance in _manylinux.py (PR #869)
    - Minor cleanups to Version (PR #913)
    - Skip redundant creation of Version’s in specifier comparison (PR #986)
    - Cache the Specifier’s Version (PR #985)
    - Make Version a little faster (PR #987)
    - Minor Version regex cleanup (PR #990)
    - Faster regex on Python 3.11.5+ for Version (PR #988, PR #1055)
    - Lazily calculate _key in Version (PR #989, PR #1048)
    - Faster canonicalize_version (PR #993)
    - Use re.fullmatch in a couple more places (PR #992, PR #1029)
    - Use map instead of generator (PR #996)
    - Deprecate ._version (_Version, a NamedTuple) (PR #995, PR #1062)
    - Avoid duplicate Version creation in canonicalize_version (PR #994)
    - Add __slots__ to core classes (PR #1001, PR #1002, PR #1032)
    - Use Version.__replace__ in specifier comparison (PR #999)
    - Use _get_spec_version in more places in Specifier (PR #1005)
    - Pull set construction out of function (PR #1012)
    - Letter normalization dict for prereleases and the like (PR #1014)
    - Use str.partition in _parse_project_urls (PR #1013)
    - Avoid normalizing extras again when comparing (PR #1028)
    - Speed up Version.__str__ by about 10% (PR #997)
    - Much faster canonicalize_name by avoiding a regex
      (PR #1030, PR #1047, PR #1064)
    - Faster zero stripping (PR #1058)
  * Type annotations:
    - Fix a type annotation (PR #907)
    - Fix type hint of function used with contextlib.contextmanager (PR #1046)
    - Fix tags return type in parse_wheel_filename docs (PR #973)
    - Add type hint for _version in .version.Version (PR #927)
    - Changed static type annotations in prereleases setter method
      in specifier.py (PR #930)
    - Statically type our test suite (PR #982)
  * Internal:
    - Test and declare support for Python 3.14 (PR #901)
    - Change our license metadata to use an SPDX license expression
      (PR #881, PR #924)
    - Expand the Ruff checks run on our codebase (PR #835, PR #957,
      PR #959, PR #963, PR #956, PR #961, PR #964, PR #958, PR #960,
      PR #968, PR #967, PR #966, PR #969, PR #980, PR #979, PR #962,
      PR #984, PR #972)
    - Add spell checking (PR #904, PR #910, PR #1015)
    - Improve links back to source in the documentation (PR #991)
    - Add case insensitivity tests for arbitrary equality (PR #975)
    - Fix incorrectly implicitly concatenated string in specifiers test (PR #946)
    - Simpler else instead of assert in a check (PR #1027, PR #1031)
    - Synchronize documentation and code for markers (PR #1008)
    - Use the GitHub Actions slim runner for the all pass check (PR #1021)
    - Use actionlint to check CI workflows (PR #1052)
    - Use Trusted Publishing (PR #893, PR #1043, PR #1045, PR #1051)
    - Use zizmor to check CI (PR #1035)
    - Test on first public release of CPython 3.11 and newer (PR #1056)
  Since the final release candidate: Faster canonicalize_name,
  especially on Python 3.12 and 3.13, where performance regressed
  previously (PR #1064), and reintroduce (deprecated) support for
  Version._.version (PR #1062).

OBS-URL: https://build.opensuse.org/request/show/1330006
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=89
2026-01-30 11:49:47 +00:00

134 lines
4.4 KiB
RPMSpec

#
# spec file for package python-packaging
#
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define modname packaging
# in order to avoid rewriting for subpackage generator
%define mypython python
%global flavor @BUILD_FLAVOR@%{nil}
%if 0%{?suse_version} >= 1650
%if "%{flavor}" == "primary"
# this one is goes into Ring0: Bootstrap for primary python stack
%define pprefix %{primary_python}
%define pythons %{primary_python}
# Avoid cycle with python-rpm-packaging requiring python3-packaging
#!BuildIgnore: python3-packaging
%endif
%if "%{flavor}" == ""
# The rest is in Ring1
%define pprefix python
%{expand:%%define skip_%{primary_python} 1}
BuildRequires: python3-packaging
%endif
%else
# backport and option d projects for 15.X having one or more python in the buildset don't need the Ring split for bootstrap
%if "%{flavor}" == "primary"
%define python_module() invalid-multibuild-flavor-for-15.X
ExclusiveArch: do-not-build
%else
%define pprefix python
%endif
%endif
%if "%{flavor}" == "test"
%define pprefix python
%define psuffix -test
%bcond_without test
%else
%bcond_with test
%endif
%{?sle15_python_module_pythons}
Name: %{pprefix}-packaging%{?psuffix}
Version: 26.0
Release: 0
Summary: Core utilities for Python packages
License: Apache-2.0 AND BSD-2-Clause
URL: https://packaging.pypa.io/
#SourceRepository: https://github.com/pypa/packaging
Source: https://files.pythonhosted.org/packages/source/p/packaging/packaging-%{version}.tar.gz
BuildRequires: %{python_module base >= 3.7}
# python-flit-core is bootstrapped in Ring0 as well
BuildRequires: %{python_module flit-core >= 3.3}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
#!BuildIgnore: post-build-checks-malwarescan
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module packaging = %{version}}
BuildRequires: %{python_module pretend}
BuildRequires: %{python_module pytest >= 6.2}
BuildRequires: %{python_module tomli-w}
%endif
%if "%{flavor}" == "primary"
# See boo#1186870, we can't provide ourselves to pythondistdeps.py
Provides: %{mypython}%{python_version}dist(%{modname}) = %{version}-%{release}
Provides: %{mypython}3-%{modname} = %{version}-%{release}
Provides: %{mypython}3dist(%{modname}) = %{version}-%{release}
Obsoletes: %{mypython}3-%{modname} < %{version}-%{release}
Requires: %{mypython}(abi) = %{python_version}
%endif
%python_subpackages
%description
Reusable core utilities for various Python Packaging interoperability specifications.
This library provides utilities that implement the interoperability specifications
which have clearly one correct behaviour (eg: PEP 440) or benefit greatly from having
a single shared implementation (eg: PEP 425).
%prep
%autosetup -p1 -n packaging-%{version}
%if !%{with test}
%build
%{python_expand # build using pythonXX-base bundled pip with the installed flit-core backend
$python -m venv venv-%{$python_bin_suffix} --system-site-packages
venv-%{$python_bin_suffix}/bin/pip wheel %{pyproject_wheel_args} .
}
%endif
%if !%{with test}
%install
%{python_expand # install wheel (into venv sitelib) and move to buildroot system sitelib
venv-%{$python_bin_suffix}/bin/pip install %{pyproject_install_args} packaging==%{version}
venvsite=%{buildroot}${PWD}/venv-%{$python_bin_suffix}/lib/python%{$python_bin_suffix}/site-packages
mkdir -p %{buildroot}%{$python_sitelib}
mv ${venvsite}/packaging* %{buildroot}%{$python_sitelib}/
pushd %{buildroot}
rmdir -p $(realpath --relative-to ${PWD} ${venvsite})
popd
%fdupes %{buildroot}%{$python_sitelib}
}
%endif
%if %{with test}
%check
%pytest
%endif
%if !%{with test}
%files %{python_files}
%license LICENSE LICENSE.APACHE LICENSE.BSD
%doc README.rst
%{python_sitelib}/packaging
%{python_sitelib}/packaging-%{version}.dist-info
%endif
%changelog