Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-propcache for
openSUSE:Factory checked in at 2026-06-29 17:29:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-propcache (Old)
and /work/SRC/openSUSE:Factory/.python-propcache.new.11887 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-propcache"
Mon Jun 29 17:29:27 2026 rev:8 rq:1362134 version:0.5.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-propcache/python-propcache.changes
2026-04-13 23:18:04.394111118 +0200
+++
/work/SRC/openSUSE:Factory/.python-propcache.new.11887/python-propcache.changes
2026-06-29 17:29:44.352754847 +0200
@@ -1,0 +2,36 @@
+Sun Jun 28 09:42:27 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.5.2:
+ * Added support for newer type hints and remove Optional and
+ Union from all annotations -- by :user:`Vizonex` Related
+ issues and pull requests on GitHub: :issue:`193`.
+ * Dropped support for Python 3.9 as it has reached end of life.
+ Related issues and pull requests on GitHub: :issue:`216`.
+ * Changed the Cython build dependency from ~= 3.1.0 to >=
+ 3.2.0, removing the upper version bound to avoid conflicts
+ for downstream packagers -- by :user:`jameshilliard` and
+ :user:`gundalow`. The upstream Cython version is pinned to
+ 3.2.4 in the CI/CD environment. Related issues and pull
+ requests on GitHub: :issue:`184`, :issue:`188`, :issue:`214`.
+ * Start building and shipping riscv64 wheels -- by
+ :user:`justeph`. Related issues and pull requests on GitHub:
+ :issue:`194`.
+ * The PEP 517 build backend now supports a new build-inplace
+ config setting (and PROPCACHE_BUILD_INPLACE environment
+ variable) for controlling whether to build the project in-
+ tree or in a temporary directory. It only affects wheels and
+ is set up to build in a temporary directory by default. It
+ does not affect editable wheel builds; they will keep being
+ built in-tree regardless. Here's an example of using this
+ setting: $ python -m build --config-setting=build-
+ inplace=true Additionally, when building wheels in an
+ automatically created temporary directory, the build backend
+ now normalizes the respective file system path to a
+ deterministic source checkout directory by injecting the
+ -ffile-prefix-map compiler option into the CFLAGS environment
+ variable, as suggested by known reproducible build practices.
+ The effect is that downstreams will get reproducible build
+ results. Related issues and pull requests on GitHub:
+ :issue:`218`.
+
+-------------------------------------------------------------------
Old:
----
propcache-0.4.1.tar.gz
New:
----
propcache-0.5.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-propcache.spec ++++++
--- /var/tmp/diff_new_pack.AKJt6J/_old 2026-06-29 17:29:45.724801480 +0200
+++ /var/tmp/diff_new_pack.AKJt6J/_new 2026-06-29 17:29:45.732801752 +0200
@@ -18,21 +18,21 @@
%{?sle15_python_module_pythons}
Name: python-propcache
-Version: 0.4.1
+Version: 0.5.2
Release: 0
Summary: Accelerated property cache
License: Apache-2.0
URL: https://github.com/aio-libs/propcache
Source:
https://files.pythonhosted.org/packages/source/p/propcache/propcache-%{version}.tar.gz
Patch0: reproducible.patch
-BuildRequires: %{python_module Cython >= 3.1.4}
+BuildRequires: %{python_module Cython}
BuildRequires: %{python_module covdefaults}
BuildRequires: %{python_module expandvars}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest >= 8.4.2}
-BuildRequires: %{python_module pytest-cov}
+BuildRequires: %{python_module pytest-cov >= 7.1.0}
BuildRequires: %{python_module pytest-xdist}
-BuildRequires: %{python_module setuptools >= 47}
+BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
++++++ propcache-0.4.1.tar.gz -> propcache-0.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/CHANGES.rst
new/propcache-0.5.2/CHANGES.rst
--- old/propcache-0.4.1/CHANGES.rst 2025-10-08 20:09:05.000000000 +0200
+++ new/propcache-0.5.2/CHANGES.rst 2026-05-08 22:03:25.000000000 +0200
@@ -14,6 +14,103 @@
.. towncrier release notes start
+0.5.2
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.1
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.0
+=====
+
+*(2026-05-08)*
+
+
+Features
+--------
+
+- Added support for newer type hints and remove ``Optional`` and ``Union``
from all annotations
+ -- by :user:`Vizonex`
+
+ *Related issues and pull requests on GitHub:*
+ :issue:`193`.
+
+
+Removals and backward incompatible breaking changes
+---------------------------------------------------
+
+- Dropped support for Python 3.9 as it has reached end of life.
+
+ *Related issues and pull requests on GitHub:*
+ :issue:`216`.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Changed the Cython build dependency from ``~= 3.1.0`` to ``>= 3.2.0``,
+ removing the upper version bound to avoid conflicts for downstream packagers
+ -- by :user:`jameshilliard` and :user:`gundalow`.
+
+ The upstream Cython version is pinned to 3.2.4 in the CI/CD environment.
+
+ *Related issues and pull requests on GitHub:*
+ :issue:`184`, :issue:`188`, :issue:`214`.
+
+- Start building and shipping riscv64 wheels
+ -- by :user:`justeph`.
+
+ *Related issues and pull requests on GitHub:*
+ :issue:`194`.
+
+- The :pep:`517` build backend now supports a new ``build-inplace``
+ config setting (and ``PROPCACHE_BUILD_INPLACE`` environment variable)
+ for controlling whether to build the project in-tree or in a
+ temporary directory. It only affects wheels and is set up to build
+ in a temporary directory by default. It does not affect editable
+ wheel builds; they will keep being built in-tree regardless.
+
+ Here's an example of using this setting:
+
+ .. code-block:: console
+
+ $ python -m build --config-setting=build-inplace=true
+
+ Additionally, when building wheels in an automatically created
+ temporary directory, the build backend now normalizes the
+ respective file system path to a deterministic source checkout
+ directory by injecting the ``-ffile-prefix-map`` compiler option
+ into the ``CFLAGS`` environment variable, as suggested by known
+ `reproducible build practices
+ <https://reproducible-builds.org/docs/build-path/>`__.
+
+ The effect is that downstreams will get reproducible build results.
+
+ *Related issues and pull requests on GitHub:*
+ :issue:`218`.
+
+
+----
+
+
0.4.1
=====
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/PKG-INFO new/propcache-0.5.2/PKG-INFO
--- old/propcache-0.4.1/PKG-INFO 2025-10-08 20:09:12.999469300 +0200
+++ new/propcache-0.5.2/PKG-INFO 2026-05-08 22:03:32.322956600 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: propcache
-Version: 0.4.1
+Version: 0.5.2
Summary: Accelerated property cache
Home-page: https://github.com/aio-libs/propcache
Author: Andrew Svetlov
@@ -24,7 +24,6 @@
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
@@ -32,7 +31,7 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: NOTICE
@@ -41,7 +40,7 @@
propcache
=========
-The module provides a fast implementation of cached properties for Python 3.9+.
+The module provides a fast implementation of cached properties for Python
3.10+.
.. image::
https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg
:target: https://github.com/aio-libs/propcache/actions?query=workflow%3ACI
@@ -153,6 +152,103 @@
.. towncrier release notes start
+0.5.2
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.1
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.0
+=====
+
+*(2026-05-08)*
+
+
+Features
+--------
+
+- Added support for newer type hints and remove ``Optional`` and ``Union``
from all annotations
+ -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__
+
+ *Related issues and pull requests on GitHub:*
+ `#193 <https://github.com/aio-libs/propcache/issues/193>`__.
+
+
+Removals and backward incompatible breaking changes
+---------------------------------------------------
+
+- Dropped support for Python 3.9 as it has reached end of life.
+
+ *Related issues and pull requests on GitHub:*
+ `#216 <https://github.com/aio-libs/propcache/issues/216>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Changed the Cython build dependency from ``~= 3.1.0`` to ``>= 3.2.0``,
+ removing the upper version bound to avoid conflicts for downstream packagers
+ -- by `@jameshilliard <https://github.com/sponsors/jameshilliard>`__ and
`@gundalow <https://github.com/sponsors/gundalow>`__.
+
+ The upstream Cython version is pinned to 3.2.4 in the CI/CD environment.
+
+ *Related issues and pull requests on GitHub:*
+ `#184 <https://github.com/aio-libs/propcache/issues/184>`__, `#188
<https://github.com/aio-libs/propcache/issues/188>`__, `#214
<https://github.com/aio-libs/propcache/issues/214>`__.
+
+- Start building and shipping riscv64 wheels
+ -- by `@justeph <https://github.com/sponsors/justeph>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#194 <https://github.com/aio-libs/propcache/issues/194>`__.
+
+- The `PEP 517 <https://peps.python.org/pep-517>`__ build backend now supports
a new ``build-inplace``
+ config setting (and ``PROPCACHE_BUILD_INPLACE`` environment variable)
+ for controlling whether to build the project in-tree or in a
+ temporary directory. It only affects wheels and is set up to build
+ in a temporary directory by default. It does not affect editable
+ wheel builds; they will keep being built in-tree regardless.
+
+ Here's an example of using this setting:
+
+ .. code-block:: console
+
+ $ python -m build --config-setting=build-inplace=true
+
+ Additionally, when building wheels in an automatically created
+ temporary directory, the build backend now normalizes the
+ respective file system path to a deterministic source checkout
+ directory by injecting the ``-ffile-prefix-map`` compiler option
+ into the ``CFLAGS`` environment variable, as suggested by known
+ `reproducible build practices
+ <https://reproducible-builds.org/docs/build-path/>`__.
+
+ The effect is that downstreams will get reproducible build results.
+
+ *Related issues and pull requests on GitHub:*
+ `#218 <https://github.com/aio-libs/propcache/issues/218>`__.
+
+
+----
+
+
0.4.1
=====
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/README.rst
new/propcache-0.5.2/README.rst
--- old/propcache-0.4.1/README.rst 2025-10-08 20:09:05.000000000 +0200
+++ new/propcache-0.5.2/README.rst 2026-05-08 22:03:25.000000000 +0200
@@ -1,7 +1,7 @@
propcache
=========
-The module provides a fast implementation of cached properties for Python 3.9+.
+The module provides a fast implementation of cached properties for Python
3.10+.
.. image::
https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg
:target: https://github.com/aio-libs/propcache/actions?query=workflow%3ACI
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/docs/spelling_wordlist.txt
new/propcache-0.5.2/docs/spelling_wordlist.txt
--- old/propcache-0.4.1/docs/spelling_wordlist.txt 2025-10-08
20:09:05.000000000 +0200
+++ new/propcache-0.5.2/docs/spelling_wordlist.txt 2026-05-08
22:03:25.000000000 +0200
@@ -41,6 +41,8 @@
reencoding
requote
requoting
+riscv
+riscv64
runtimes
sdist
src
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/packaging/pep517_backend/_backend.py
new/propcache-0.5.2/packaging/pep517_backend/_backend.py
--- old/propcache-0.4.1/packaging/pep517_backend/_backend.py 2025-10-08
20:09:05.000000000 +0200
+++ new/propcache-0.5.2/packaging/pep517_backend/_backend.py 2026-05-08
22:03:25.000000000 +0200
@@ -77,6 +77,12 @@
PURE_PYTHON_CONFIG_SETTING = 'pure-python'
"""Config setting name toggle that is used to opt out of making C-exts."""
+BUILD_INPLACE_CONFIG_SETTING = 'build-inplace'
+"""Config setting name toggle for building C-exts in-place."""
+
+BUILD_INPLACE_ENV_VAR = 'PROPCACHE_BUILD_INPLACE'
+"""Environment variable name toggle for building C-exts in-place."""
+
PURE_PYTHON_ENV_VAR = 'PROPCACHE_NO_EXTENSIONS'
"""Environment variable name toggle used to opt out of making C-exts."""
@@ -135,6 +141,19 @@
)
+def _build_inplace(
+ config_settings: _ConfigDict | None = None,
+ *,
+ default: bool = False,
+) -> bool:
+ return _get_setting_value(
+ config_settings,
+ BUILD_INPLACE_CONFIG_SETTING,
+ BUILD_INPLACE_ENV_VAR,
+ default=default,
+ )
+
+
@contextmanager
def patched_distutils_cmd_install() -> Iterator[None]:
"""Make `install_lib` of `install` cmd always use `platlib`.
@@ -217,7 +236,7 @@
@contextmanager
-def _in_temporary_directory(src_dir: Path) -> t.Iterator[None]:
+def _in_temporary_directory(src_dir: Path) -> t.Iterator[Path]:
with TemporaryDirectory(prefix='.tmp-propcache-pep517-') as tmp_dir:
tmp_dir_path = Path(tmp_dir)
root_tmp_dir_path = tmp_dir_path.parent
@@ -232,7 +251,7 @@
symlinks=True,
)
os.chdir(tmp_src_dir)
- yield
+ yield tmp_src_dir
@contextmanager
@@ -275,6 +294,10 @@
print("**********************", file=_standard_error_stream)
print("* Accelerated build *", file=_standard_error_stream)
+ print(
+ f'* Build location: {"in-tree" if build_inplace else "tmp dir"} *',
+ file=_standard_error_stream,
+ )
print("**********************", file=_standard_error_stream)
if not IS_CPYTHON:
_warn_that(
@@ -285,15 +308,21 @@
stacklevel=999,
)
+ original_src_dir = Path.cwd().resolve()
build_dir_ctx = (
nullcontext() if build_inplace
- else _in_temporary_directory(src_dir=Path.cwd().resolve())
+ else _in_temporary_directory(src_dir=original_src_dir)
)
- with build_dir_ctx:
+ with build_dir_ctx as tmp_build_dir:
config = _get_local_cython_config()
cythonize_args = _make_cythonize_cli_args_from_config(config,
cython_line_tracing_requested)
- with _patched_cython_env(config['env'], cython_line_tracing_requested):
+ with _patched_cython_env(
+ config['env'],
+ cython_line_tracing_requested,
+ original_source_directory=original_src_dir,
+ temporary_build_directory=tmp_build_dir,
+ ):
_cythonize_cli_cmd(cythonize_args) # type: ignore[no-untyped-call]
with patched_distutils_cmd_install():
with patched_dist_has_ext_modules():
@@ -317,7 +346,7 @@
"""
with maybe_prebuild_c_extensions(
line_trace_cython_when_unset=False,
- build_inplace=False,
+ build_inplace=_build_inplace(config_settings, default=False),
config_settings=config_settings,
):
return _setuptools_build_wheel(
@@ -342,9 +371,17 @@
:param metadata_directory: :file:`.dist-info` directory path.
"""
+ mandatory_build_inplace = True
+ if not _build_inplace(config_settings, default=mandatory_build_inplace):
+ _warn_that(
+ 'Editable builds require C-extensions to be produced in-tree',
+ RuntimeWarning,
+ stacklevel=999,
+ )
+
with maybe_prebuild_c_extensions(
line_trace_cython_when_unset=True,
- build_inplace=True,
+ build_inplace=mandatory_build_inplace,
config_settings=config_settings,
):
return _setuptools_build_editable(
@@ -376,7 +413,7 @@
if is_pure_python_build:
c_ext_build_deps = []
else:
- c_ext_build_deps = ['Cython ~= 3.1.0']
+ c_ext_build_deps = ['Cython >= 3.2.0']
return _setuptools_get_requires_for_build_wheel(
config_settings=config_settings,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/propcache-0.4.1/packaging/pep517_backend/_cython_configuration.py
new/propcache-0.5.2/packaging/pep517_backend/_cython_configuration.py
--- old/propcache-0.4.1/packaging/pep517_backend/_cython_configuration.py
2025-10-08 20:09:05.000000000 +0200
+++ new/propcache-0.5.2/packaging/pep517_backend/_cython_configuration.py
2026-05-08 22:03:25.000000000 +0200
@@ -3,6 +3,7 @@
from __future__ import annotations
import os
+import sys
from collections.abc import Iterator
from contextlib import contextmanager
from pathlib import Path
@@ -103,7 +104,13 @@
@contextmanager
-def patched_env(env: dict[str, str], cython_line_tracing_requested: bool) ->
Iterator[None]:
+def patched_env(
+ env: dict[str, str],
+ cython_line_tracing_requested: bool,
+ *,
+ original_source_directory: Path | None = None,
+ temporary_build_directory: Path | None = None,
+) -> Iterator[None]:
"""Temporary set given env vars.
:param env: tmp env vars to set
@@ -115,11 +122,23 @@
expanded_env = {name: expandvars(var_val) for name, var_val in
env.items()} # type: ignore[no-untyped-call]
os.environ.update(expanded_env)
+ extra_cflags: list[str] = []
if cython_line_tracing_requested:
- os.environ['CFLAGS'] = ' '.join((
- os.getenv('CFLAGS', ''),
- '-DCYTHON_TRACE_NOGIL=1', # Implies CYTHON_TRACE=1
- )).strip()
+ extra_cflags.append('-DCYTHON_TRACE_NOGIL=1') # Implies CYTHON_TRACE=1
+ # When building in a temporary directory, rewrite the random tmp dir
+ # path back to the original source directory so the compiled artifacts
+ # are reproducible. `-ffile-prefix-map` is a GCC/Clang flag and is not
+ # understood by MSVC, so skip it on Windows.
+ # Ref: https://github.com/aio-libs/propcache/issues/68
+ if temporary_build_directory is not None and sys.platform != 'win32':
+ assert original_source_directory is not None
+ extra_cflags.append(
+
f'-ffile-prefix-map={temporary_build_directory!s}={original_source_directory!s}',
+ )
+ if extra_cflags:
+ os.environ['CFLAGS'] = ' '.join(
+ (os.getenv('CFLAGS', ''), *extra_cflags),
+ ).strip()
try:
yield
finally:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/propcache-0.4.1/packaging/pep517_backend/_transformers.py
new/propcache-0.5.2/packaging/pep517_backend/_transformers.py
--- old/propcache-0.4.1/packaging/pep517_backend/_transformers.py
2025-10-08 20:09:05.000000000 +0200
+++ new/propcache-0.5.2/packaging/pep517_backend/_transformers.py
2026-05-08 22:03:25.000000000 +0200
@@ -3,10 +3,9 @@
from collections.abc import Iterable, Iterator, Mapping
from itertools import chain
from re import sub as _substitute_with_regexp
-from typing import Union
-def _emit_opt_pairs(opt_pair: tuple[str, Union[dict[str, str], str]]) ->
Iterator[str]:
+def _emit_opt_pairs(opt_pair: tuple[str, dict[str, str] | str]) ->
Iterator[str]:
flag, flag_value = opt_pair
flag_opt = f"--{flag!s}"
if isinstance(flag_value, dict):
@@ -18,7 +17,7 @@
def get_cli_kwargs_from_config(
- kwargs_map: dict[str, Union[str, dict[str, str]]],
+ kwargs_map: dict[str, str | dict[str, str]],
) -> list[str]:
"""Make a list of options with values from config."""
return list(chain.from_iterable(map(_emit_opt_pairs, kwargs_map.items())))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/pyproject.toml
new/propcache-0.5.2/pyproject.toml
--- old/propcache-0.4.1/pyproject.toml 2025-10-08 20:09:05.000000000 +0200
+++ new/propcache-0.5.2/pyproject.toml 2026-05-08 22:03:25.000000000 +0200
@@ -4,7 +4,7 @@
# NOTE: provisioning of the in-tree build backend located under
# NOTE: `packaging/pep517_backend/`.
"expandvars",
- "setuptools >= 47", # Minimum required for `version = attr:`
+ "setuptools >= 82.0.1", # Minimum required for `version = attr:`
"tomli; python_version < '3.11'",
]
backend-path = ["packaging"] # requires `pip >= 20` or `pep517 >= 0.6.0`
@@ -75,6 +75,10 @@
]
test-requires = "-r requirements/test.txt"
test-command = "pytest -v --no-cov {project}/tests"
+# Free-threaded CPython under armv7l QEMU emulation crashes with SIGBUS when
+# importing the C extension; the wheel runs fine on real armv7l hardware, so
+# build and ship it but skip the emulated post-build test.
+test-skip = "*t-musllinux_armv7l"
# don't build PyPy wheels, install from source instead
skip = "pp*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/requirements/codspeed.txt
new/propcache-0.5.2/requirements/codspeed.txt
--- old/propcache-0.4.1/requirements/codspeed.txt 2025-10-08
20:09:05.000000000 +0200
+++ new/propcache-0.5.2/requirements/codspeed.txt 2026-05-08
22:03:25.000000000 +0200
@@ -1,3 +1,3 @@
-r test.txt
cffi<2.0.0;python_version<"3.14"
-pytest-codspeed==4.1.1
+pytest-codspeed==4.5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/requirements/cython.txt
new/propcache-0.5.2/requirements/cython.txt
--- old/propcache-0.4.1/requirements/cython.txt 2025-10-08 20:09:05.000000000
+0200
+++ new/propcache-0.5.2/requirements/cython.txt 2026-05-08 22:03:25.000000000
+0200
@@ -1 +1 @@
-cython==3.1.4
+cython==3.2.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/requirements/doc-spelling.txt
new/propcache-0.5.2/requirements/doc-spelling.txt
--- old/propcache-0.4.1/requirements/doc-spelling.txt 2025-10-08
20:09:05.000000000 +0200
+++ new/propcache-0.5.2/requirements/doc-spelling.txt 2026-05-08
22:03:25.000000000 +0200
@@ -1,2 +1,2 @@
-r doc.txt
-sphinxcontrib-spelling==8.0.1; platform_system!="Windows" # We only use it in
Azure CI
+sphinxcontrib-spelling==8.0.2; platform_system!="Windows" # We only use it in
Azure CI
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/requirements/doc.txt
new/propcache-0.5.2/requirements/doc.txt
--- old/propcache-0.4.1/requirements/doc.txt 2025-10-08 20:09:05.000000000
+0200
+++ new/propcache-0.5.2/requirements/doc.txt 2026-05-08 22:03:25.000000000
+0200
@@ -1,4 +1,4 @@
-r towncrier.txt
-myst-parser >= 0.10.0
+myst-parser >= 3.0.1
sphinx==8.2.3
sphinxcontrib-towncrier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/requirements/lint.txt
new/propcache-0.5.2/requirements/lint.txt
--- old/propcache-0.4.1/requirements/lint.txt 2025-10-08 20:09:05.000000000
+0200
+++ new/propcache-0.5.2/requirements/lint.txt 2026-05-08 22:03:25.000000000
+0200
@@ -1 +1 @@
-pre-commit==4.3.0
+pre-commit==4.5.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/requirements/test.txt
new/propcache-0.5.2/requirements/test.txt
--- old/propcache-0.4.1/requirements/test.txt 2025-10-08 20:09:05.000000000
+0200
+++ new/propcache-0.5.2/requirements/test.txt 2026-05-08 22:03:25.000000000
+0200
@@ -1,5 +1,5 @@
-r cython.txt
covdefaults
pytest==8.4.2
-pytest-cov>=2.3.1
+pytest-cov>=7.1.0
pytest-xdist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/setup.cfg
new/propcache-0.5.2/setup.cfg
--- old/propcache-0.4.1/setup.cfg 2025-10-08 20:09:13.000469200 +0200
+++ new/propcache-0.5.2/setup.cfg 2026-05-08 22:03:32.324733000 +0200
@@ -36,7 +36,6 @@
Programming Language :: Cython
Programming Language :: Python
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
@@ -51,7 +50,7 @@
propcache
[options]
-python_requires = >=3.9
+python_requires = >=3.10
package_dir =
=src
packages =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/src/propcache/__init__.py
new/propcache-0.5.2/src/propcache/__init__.py
--- old/propcache-0.4.1/src/propcache/__init__.py 2025-10-08
20:09:05.000000000 +0200
+++ new/propcache-0.5.2/src/propcache/__init__.py 2026-05-08
22:03:25.000000000 +0200
@@ -4,7 +4,7 @@
_PUBLIC_API = ("cached_property", "under_cached_property")
-__version__ = "0.4.1"
+__version__ = "0.5.2"
__all__ = ()
# Imports have moved to `propcache.api` in 0.2.0+.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/src/propcache/_helpers_py.py
new/propcache-0.5.2/src/propcache/_helpers_py.py
--- old/propcache-0.4.1/src/propcache/_helpers_py.py 2025-10-08
20:09:05.000000000 +0200
+++ new/propcache-0.5.2/src/propcache/_helpers_py.py 2026-05-08
22:03:25.000000000 +0200
@@ -1,9 +1,11 @@
"""Various helper functions."""
+from __future__ import annotations
+
import sys
-from collections.abc import Mapping
+from collections.abc import Callable, Mapping
from functools import cached_property
-from typing import Any, Callable, Generic, Optional, Protocol, TypeVar, Union,
overload
+from typing import Any, Generic, Protocol, TypeVar, overload
__all__ = ("under_cached_property", "cached_property")
@@ -39,16 +41,16 @@
self.name = wrapped.__name__
@overload
- def __get__(self, inst: None, owner: Optional[type[object]] = None) ->
Self: ...
+ def __get__(self, inst: None, owner: type[object] | None = None) -> Self:
...
@overload
def __get__(
- self, inst: _CacheImpl[Any], owner: Optional[type[object]] = None
+ self, inst: _CacheImpl[Any], owner: type[object] | None = None
) -> _T: ...
def __get__(
- self, inst: Optional[_CacheImpl[Any]], owner: Optional[type[object]] =
None
- ) -> Union[_T, Self]:
+ self, inst: _CacheImpl[Any] | None, owner: type[object] | None = None
+ ) -> _T | Self:
if inst is None:
return self
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/propcache-0.4.1/src/propcache.egg-info/PKG-INFO
new/propcache-0.5.2/src/propcache.egg-info/PKG-INFO
--- old/propcache-0.4.1/src/propcache.egg-info/PKG-INFO 2025-10-08
20:09:12.000000000 +0200
+++ new/propcache-0.5.2/src/propcache.egg-info/PKG-INFO 2026-05-08
22:03:32.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: propcache
-Version: 0.4.1
+Version: 0.5.2
Summary: Accelerated property cache
Home-page: https://github.com/aio-libs/propcache
Author: Andrew Svetlov
@@ -24,7 +24,6 @@
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
@@ -32,7 +31,7 @@
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: NOTICE
@@ -41,7 +40,7 @@
propcache
=========
-The module provides a fast implementation of cached properties for Python 3.9+.
+The module provides a fast implementation of cached properties for Python
3.10+.
.. image::
https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg
:target: https://github.com/aio-libs/propcache/actions?query=workflow%3ACI
@@ -153,6 +152,103 @@
.. towncrier release notes start
+0.5.2
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.1
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.0
+=====
+
+*(2026-05-08)*
+
+
+Features
+--------
+
+- Added support for newer type hints and remove ``Optional`` and ``Union``
from all annotations
+ -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__
+
+ *Related issues and pull requests on GitHub:*
+ `#193 <https://github.com/aio-libs/propcache/issues/193>`__.
+
+
+Removals and backward incompatible breaking changes
+---------------------------------------------------
+
+- Dropped support for Python 3.9 as it has reached end of life.
+
+ *Related issues and pull requests on GitHub:*
+ `#216 <https://github.com/aio-libs/propcache/issues/216>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Changed the Cython build dependency from ``~= 3.1.0`` to ``>= 3.2.0``,
+ removing the upper version bound to avoid conflicts for downstream packagers
+ -- by `@jameshilliard <https://github.com/sponsors/jameshilliard>`__ and
`@gundalow <https://github.com/sponsors/gundalow>`__.
+
+ The upstream Cython version is pinned to 3.2.4 in the CI/CD environment.
+
+ *Related issues and pull requests on GitHub:*
+ `#184 <https://github.com/aio-libs/propcache/issues/184>`__, `#188
<https://github.com/aio-libs/propcache/issues/188>`__, `#214
<https://github.com/aio-libs/propcache/issues/214>`__.
+
+- Start building and shipping riscv64 wheels
+ -- by `@justeph <https://github.com/sponsors/justeph>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#194 <https://github.com/aio-libs/propcache/issues/194>`__.
+
+- The `PEP 517 <https://peps.python.org/pep-517>`__ build backend now supports
a new ``build-inplace``
+ config setting (and ``PROPCACHE_BUILD_INPLACE`` environment variable)
+ for controlling whether to build the project in-tree or in a
+ temporary directory. It only affects wheels and is set up to build
+ in a temporary directory by default. It does not affect editable
+ wheel builds; they will keep being built in-tree regardless.
+
+ Here's an example of using this setting:
+
+ .. code-block:: console
+
+ $ python -m build --config-setting=build-inplace=true
+
+ Additionally, when building wheels in an automatically created
+ temporary directory, the build backend now normalizes the
+ respective file system path to a deterministic source checkout
+ directory by injecting the ``-ffile-prefix-map`` compiler option
+ into the ``CFLAGS`` environment variable, as suggested by known
+ `reproducible build practices
+ <https://reproducible-builds.org/docs/build-path/>`__.
+
+ The effect is that downstreams will get reproducible build results.
+
+ *Related issues and pull requests on GitHub:*
+ `#218 <https://github.com/aio-libs/propcache/issues/218>`__.
+
+
+----
+
+
0.4.1
=====
++++++ reproducible.patch ++++++
--- /var/tmp/diff_new_pack.AKJt6J/_old 2026-06-29 17:29:45.908807734 +0200
+++ /var/tmp/diff_new_pack.AKJt6J/_new 2026-06-29 17:29:45.916808006 +0200
@@ -2,11 +2,11 @@
index 7245be9..ad4dd85 100644
--- a/packaging/pep517_backend/_backend.py
+++ b/packaging/pep517_backend/_backend.py
-@@ -321,7 +321,7 @@ def build_wheel(
+@@ -346,7 +346,7 @@ def build_wheel(
"""
with maybe_prebuild_c_extensions(
line_trace_cython_when_unset=False,
-- build_inplace=False,
+- build_inplace=_build_inplace(config_settings, default=False),
+ build_inplace=True,
config_settings=config_settings,
):