==================
Packaging updates and notes for downstreams
-------------------------------------------
- Declared Python 3.12 and PyPy 3.8-3.10 supported officially
in the distribution package metadata.
*Related issues and pull requests on GitHub:*
:issue:`553`.
- Replaced the packaging is replaced from an old-fashioned :file:`setup.py` to an
in-tree :pep:`517` build backend -- by :user:`webknjaz`.
Whenever the end-users or downstream packagers need to build ``frozenlist``
from source (a Git checkout or an sdist), they may pass a ``config_settings``
flag ``pure-python``. If this flag is not set, a C-extension will be built
and included into the distribution.
Here is how this can be done with ``pip``:
.. code-block:: console
$ python3 -m pip install . --config-settings=pure-python=
This will also work with ``-e | --editable``.
The same can be achieved via ``pypa/build``:
.. code-block:: console
$ python3 -m build --config-setting=pure-python=
Adding ``-w | --wheel`` can force ``pypa/build`` produce a wheel from source
directly, as opposed to building an ``sdist`` and then building from it.
*Related issues and pull requests on GitHub:*
:issue:`560`.
Contributor-facing changes
--------------------------
- It is now possible to request line tracing in Cython builds using the
``with-cython-tracing`` :pep:`517` config setting
-- :user:`webknjaz`.
This can be used in CI and development environment to measure coverage
on Cython modules, but is not normally useful to the end-users or
downstream packagers.
Here's a usage example:
.. code-block:: console
$ python3 -Im pip install . --config-settings=with-cython-tracing=true
For editable installs, this setting is on by default. Otherwise, it's
off unless requested explicitly.
The following produces C-files required for the Cython coverage
plugin to map the measurements back to the PYX-files:
.. code-block:: console
$ python -Im pip install -e .
Alternatively, the ``FROZENLIST_CYTHON_TRACING=1`` environment variable
can be set to do the same as the :pep:`517` config setting.
*Related issues and pull requests on GitHub:*
:issue:`560`.
- Coverage collection has been implemented for the Cython modules
-- by :user:`webknjaz`.
It will also be reported to Codecov from any non-release CI jobs.
*Related issues and pull requests on GitHub:*
:issue:`561`.
- A step-by-step :doc:`Release Guide <contributing/release_guide>` guide has
been added, describing how to release *frozenlist* -- by :user:`webknjaz`.
This is primarily targeting the maintainers.
*Related issues and pull requests on GitHub:*
:issue:`563`.
- Detailed :doc:`Contributing Guidelines <contributing/guidelines>` on
authoring the changelog fragments have been published in the
documentation -- by :user:`webknjaz`.
*Related issues and pull requests on GitHub:*
:issue:`564`.
----