=========
Changelog
=========

..
    You should *NOT* be adding new change log entries to this file, this
    file is managed by towncrier. You *may* edit previous change logs to
    fix problems like typo corrections or such.
    To add a new change log entry, please see
    https://pip.pypa.io/en/latest/development/#adding-a-news-entry
    we named the news folder "changes".

    WARNING: Don't drop the next directive!

.. 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
=====

*(2025-10-08)*


Bug fixes
---------

- Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`.

  *Related issues and pull requests on GitHub:*
  :issue:`162`.


Contributor-facing changes
--------------------------

- Fixes the default value for the ``os``
  parameter in ``reusable-build-wheel.yml``
  to be ``ubuntu-latest`` instead of
  ``ubuntu``.

  *Related issues and pull requests on GitHub:*
  :issue:`155`.


----


0.4.0
=====

*(2025-10-04)*


Features
--------

- Optimized propcache by replacing sentinel :py:class:`object` for checking if
  the :py:class:`object` is ``NULL`` and changed :py:class:`dict` API for
  Python C-API -- by :user:`Vizonex`.

  *Related issues and pull requests on GitHub:*
  :issue:`121`.


Contributor-facing changes
--------------------------

- Builds have been added for arm64 Windows
  wheels and the ``reusable-build-wheel.yml``
  workflow has been modified to allow for
  an OS value (``windows-11-arm``) which
  does not include the ``-latest`` postfix
  -- by :user:`finnagin`.

  *Related issues and pull requests on GitHub:*
  :issue:`133`.

- Added CI for CPython 3.14 -- by :user:`kumaraditya303`.

  *Related issues and pull requests on GitHub:*
  :issue:`140`.


----


0.3.2
=====

*(2025-06-09)*


Improved documentation
----------------------

- Fixed incorrect decorator usage in the :func:`~propcache.api.under_cached_property` example code -- by :user:`meanmail`.

  *Related issues and pull requests on GitHub:*
  :issue:`109`.


Packaging updates and notes for downstreams
-------------------------------------------

- Updated to use Cython 3.1 universally across the build path -- by :user:`lysnikolaou`.

  *Related issues and pull requests on GitHub:*
  :issue:`117`.

- Made Cython line tracing opt-in via the ``with-cython-tracing`` build config setting -- by :user:`bdraco`.

  Previously, line tracing was enabled by default in :file:`pyproject.toml`, which caused build issues for some users and made wheels nearly twice as slow.

  Now line tracing is only enabled when explicitly requested via ``pip install . --config-setting=with-cython-tracing=true`` or by setting the ``PROPCACHE_CYTHON_TRACING`` environment variable.

  *Related issues and pull requests on GitHub:*
  :issue:`118`.


----


0.3.1
=====

*(2025-03-25)*


Bug fixes
---------

- Improved typing annotations, fixing some type errors under correct usage
  and improving typing robustness generally -- by :user:`Dreamsorcerer`.

  *Related issues and pull requests on GitHub:*
  :issue:`103`.


----


0.3.0
=====

*(2025-02-20)*


Features
--------

- Implemented support for the free-threaded build of CPython 3.13 -- by :user:`lysnikolaou`.

  *Related issues and pull requests on GitHub:*
  :issue:`84`.


Packaging updates and notes for downstreams
-------------------------------------------

- Started building wheels for the free-threaded build of CPython 3.13 -- by :user:`lysnikolaou`.

  *Related issues and pull requests on GitHub:*
  :issue:`84`.


Contributor-facing changes
--------------------------

- GitHub Actions CI/CD is now configured to manage caching pip-ecosystem
  dependencies using `re-actors/cache-python-deps`_ -- an action by
  :user:`webknjaz` that takes into account ABI stability and the exact
  version of Python runtime.

  .. _`re-actors/cache-python-deps`:
     https://github.com/marketplace/actions/cache-python-deps

  *Related issues and pull requests on GitHub:*
  :issue:`93`.


----


0.2.1
=====

*(2024-12-01)*


Bug fixes
---------

- Stopped implicitly allowing the use of Cython pre-release versions when
  building the distribution package -- by :user:`ajsanchezsanz` and
  :user:`markgreene74`.

  *Related commits on GitHub:*
  :commit:`64df0a6`.

- Fixed ``wrapped`` and ``func`` not being accessible in the Cython versions of :func:`propcache.api.cached_property` and :func:`propcache.api.under_cached_property` decorators -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`72`.


Removals and backward incompatible breaking changes
---------------------------------------------------

- Removed support for Python 3.8 as it has reached end of life -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`57`.


Packaging updates and notes for downstreams
-------------------------------------------

- Stopped implicitly allowing the use of Cython pre-release versions when
  building the distribution package -- by :user:`ajsanchezsanz` and
  :user:`markgreene74`.

  *Related commits on GitHub:*
  :commit:`64df0a6`.


----


0.2.0
=====

*(2024-10-07)*


Bug fixes
---------

- Fixed loading the C-extensions on Python 3.8 -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`26`.


Features
--------

- Improved typing for the :func:`propcache.api.under_cached_property` decorator -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`38`.


Improved documentation
----------------------

- Added API documentation for the :func:`propcache.api.cached_property` and :func:`propcache.api.under_cached_property` decorators -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`16`.


Packaging updates and notes for downstreams
-------------------------------------------

- Moved :func:`propcache.api.under_cached_property` and :func:`propcache.api.cached_property` to `propcache.api` -- by :user:`bdraco`.

  Both decorators remain importable from the top-level package, however importing from `propcache.api` is now the recommended way to use them.

  *Related issues and pull requests on GitHub:*
  :issue:`19`, :issue:`24`, :issue:`32`.

- Converted project to use a src layout -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`22`, :issue:`29`, :issue:`37`.


----


0.1.0
=====

*(2024-10-03)*


Features
--------

- Added ``armv7l`` wheels -- by :user:`bdraco`.

  *Related issues and pull requests on GitHub:*
  :issue:`5`.


----


0.0.0
=====

*(2024-10-02)*


- Initial release.
