Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-hatch-fancy-pypi-readme for 
openSUSE:Factory checked in at 2024-01-08 23:44:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-hatch-fancy-pypi-readme (Old)
 and      /work/SRC/openSUSE:Factory/.python-hatch-fancy-pypi-readme.new.21961 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-hatch-fancy-pypi-readme"

Mon Jan  8 23:44:04 2024 rev:6 rq:1137420 version:24.1.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-hatch-fancy-pypi-readme/python-hatch-fancy-pypi-readme.changes
    2023-05-23 14:53:32.806129332 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-hatch-fancy-pypi-readme.new.21961/python-hatch-fancy-pypi-readme.changes
 2024-01-08 23:44:22.360371268 +0100
@@ -1,0 +2,22 @@
+Sun Jan  7 18:17:04 UTC 2024 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- update to 24.1.0:
+  The last release [broke
+  
_scikit-build-core_](https://github.com/scikit-build/scikit-build-core/issues/592)
+  so this one adds a default argument value. No user-visible
+  changes.
+  *  Added a default to an internal API that is used by
+     *scikit-build-core*.
+
+-------------------------------------------------------------------
+Sun Jan  7 18:15:38 UTC 2024 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- update to 23.2.0:
+  There's only one change but I think it's really cool: you can now
+  add the package version into your PyPI readme by adding the
+  string `$HFPR_VERSION` to it!
+    * `$HFPR_VERSION` is now replaced by the package version in the
+    PyPI readme. The version is not available in CLI mode, therefore
+    it's replaced by the dummy value of `42.0`.
+
+-------------------------------------------------------------------

Old:
----
  hatch_fancy_pypi_readme-23.1.0.tar.gz

New:
----
  hatch_fancy_pypi_readme-24.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-hatch-fancy-pypi-readme.spec ++++++
--- /var/tmp/diff_new_pack.qr1fNY/_old  2024-01-08 23:44:22.976393665 +0100
+++ /var/tmp/diff_new_pack.qr1fNY/_new  2024-01-08 23:44:22.980393811 +0100
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-hatch-fancy-pypi-readme%{psuffix}
-Version:        23.1.0
+Version:        24.1.0
 Release:        0
 Summary:        Fancy PyPI READMEs with Hatch
 License:        MIT

++++++ hatch_fancy_pypi_readme-23.1.0.tar.gz -> 
hatch_fancy_pypi_readme-24.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/.github/CONTRIBUTING.md 
new/hatch_fancy_pypi_readme-24.1.0/.github/CONTRIBUTING.md
--- old/hatch_fancy_pypi_readme-23.1.0/.github/CONTRIBUTING.md  2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/.github/CONTRIBUTING.md  2024-01-01 
10:18:10.000000000 +0100
@@ -24,7 +24,7 @@
   You won't get any feedback until it's green unless you ask for it.
   For the CI to pass, the coverage must be 100%.
   If you have problems to test something, open anyway and ask for advice.
-  In some situations, we may agree to add an `# pragma: no cover`.
+  In some situations, we may agree to add a `# pragma: no cover`.
 - Once you've addressed review feedback, make sure to bump the pull request 
with a short note, so we know you're done.
 - Don’t break backwards-compatibility.
 
@@ -33,39 +33,27 @@
 
 You can (and should) run our test suite using [*tox*].
 However, you’ll probably want a more traditional environment as well.
-We highly recommend to develop using the latest Python release because we try 
to take advantage of modern features whenever possible.
 
-First create a [virtual environment](https://virtualenv.pypa.io/) so you don't 
break your system-wide Python installation.
-It’s out of scope for this document to list all the ways to manage virtual 
environments in Python, but if you don’t already have a pet way, take some 
time to look at tools like 
[*direnv*](https://hynek.me/til/python-project-local-venvs/), 
[*virtualfish*](https://virtualfish.readthedocs.io/), and 
[*virtualenvwrapper*](https://virtualenvwrapper.readthedocs.io/).
+We recommend using the Python version from the `.python-version-default` file 
in the project's root directory, because that's the one that is used in the CI 
by default, too.
 
-Next, get an up to date checkout of the *hatch-fancy-pypi-readme* repository:
+If you're using [*direnv*](https://direnv.net), you can automate the creation 
of the project virtual environment with the correct Python version by adding 
the following `.envrc` to the project root:
 
-```console
-$ git clone g...@github.com:hynek/hatch-fancy-pypi-readme.git
-```
-
-or if you want to use git via `https`:
-
-```console
-$ git clone https://github.com/hynek/hatch-fancy-pypi-readme.git
+```bash
+layout python python$(cat .python-version-default)
 ```
 
-Change into the newly created directory and **after activating your virtual 
environment** install an editable version of *hatch-fancy-pypi-readme* along 
with its tests requirements:
+You can now install the package with its development dependencies into the 
virtual environment:
 
 ```console
-$ cd hatch-fancy-pypi-readme
-$ pip install --upgrade pip setuptools  # PLEASE don't skip this step
-$ pip install -e '.[dev]'
+$ pip install -e .[dev]
 ```
 
-At this point,
+Now you can run the test suite:
 
 ```console
 $ python -m pytest
 ```
 
-should work and pass.
-
 To avoid committing code that violates our style guide, we strongly advise you 
to install [*pre-commit*] and its hooks:
 
 ```console
@@ -78,8 +66,8 @@
 $ pre-commit run --all-files
 ```
 
-and our CI has integration with `pre-commit.ci <https://pre-commit.ci>`_.
-But it's way more comfortable to run it locally and *git* catching avoidable 
errors.
+and our CI has integration with [pre-commit.ci](https://pre-commit.ci).
+But it's way more comfortable to run it locally and Git catching avoidable 
errors.
 
 
 ## Code
@@ -190,6 +178,6 @@
 [CI]: https://github.com/hynek/hatch-fancy-pypi-readme/actions
 [Hynek Schlawack]: https://hynek.me/about/
 [*pre-commit*]: https://pre-commit.com/
-[*tox*]: https://https://tox.wiki/
+[*tox*]: https://tox.wiki/
 [semantic newlines]: https://rhodesmill.org/brandon/2012/one-sentence-per-line/
 [*reStructuredText*]: 
https://www.sphinx-doc.org/en/stable/usage/restructuredtext/basics.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/.github/workflows/ci.yml 
new/hatch_fancy_pypi_readme-24.1.0/.github/workflows/ci.yml
--- old/hatch_fancy_pypi_readme-23.1.0/.github/workflows/ci.yml 2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/.github/workflows/ci.yml 2024-01-01 
10:18:10.000000000 +0100
@@ -12,30 +12,56 @@
 env:
   FORCE_COLOR: "1" # Make tools pretty.
   PYTHONIOENCODING: utf-8
-  TOX_TESTENV_PASSENV: FORCE_COLOR
   PIP_DISABLE_PIP_VERSION_CHECK: "1"
   PIP_NO_PYTHON_VERSION_WARNING: "1"
-  SETUPTOOLS_SCM_PRETEND_VERSION: "1.0" # avoid warnings about shallow checkout
-  PYTHON_LATEST: "3.11"
 
 jobs:
+  build-package:
+    name: Build & verify package
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+
+      - uses: hynek/build-and-inspect-python-package@v2
+
   tests:
     name: Tests on ${{ matrix.python-version }}
     runs-on: ubuntu-latest
+    needs: build-package
 
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        python-version:
+          - "3.7"
+          - "3.8"
+          - "3.9"
+          - "3.10"
+          - "3.11"
+          - "3.12"
 
     steps:
-      - uses: actions/checkout@v3
+      - name: Download pre-built packages
+        uses: actions/download-artifact@v4
+        with:
+          name: Packages
+          path: dist
+      - run: tar xf dist/*.tar.gz --strip-components=1  # needed for config 
files
       - uses: actions/setup-python@v4
         with:
+          cache: pip
           python-version: ${{ matrix.python-version }}
-      - run: python -Im pip install --upgrade wheel tox
+          allow-prereleases: true
 
-      - run: python -Im tox run -f py$(echo ${{ matrix.python-version }} | tr 
-d .)
+      - run: python -Im pip install tox
+
+      - run: |
+          python -Im tox run \
+            --installpkg dist/*.whl \
+            -f py$(echo ${{ matrix.python-version }} | tr -d .)
 
       - name: Upload coverage data
         uses: actions/upload-artifact@v3
@@ -47,14 +73,14 @@
   coverage:
     runs-on: ubuntu-latest
     needs: tests
+    if: always()
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: actions/setup-python@v4
         with:
-          python-version: ${{ env.PYTHON_LATEST }}
-
-      - run: python -Im pip install --upgrade coverage[toml]
+          cache: pip
+          python-version-file: .python-version-default
 
       - name: Download coverage data
         uses: actions/download-artifact@v3
@@ -63,12 +89,20 @@
 
       - name: Combine coverage and fail if it's <100%.
         run: |
+          python -Im pip install --upgrade coverage[toml]
+
           python -Im coverage combine
           python -Im coverage html --skip-covered --skip-empty
+
+          # Report and write to summary.
+          python -Im coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
+
+          # Report again and fail if under 100%.
           python -Im coverage report --fail-under=100
 
+
       - name: Upload HTML report if check failed.
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: html-report
           path: htmlcov
@@ -77,13 +111,21 @@
   mypy:
     name: Mypy
     runs-on: ubuntu-latest
+    needs: build-package
 
     steps:
-      - uses: actions/checkout@v3
+      - name: Download pre-built packages
+        uses: actions/download-artifact@v4
+        with:
+          name: Packages
+          path: dist
+      - run: tar xf dist/*.tar.gz --strip-components=1  # needed for config 
files
       - uses: actions/setup-python@v4
         with:
-          python-version: ${{ env.PYTHON_LATEST }}
-      - run: python -Im pip install --upgrade wheel tox
+          cache: pip
+          python-version-file: .python-version-default
+
+      - run: python -Im pip install tox
 
       - run: python -Im tox run -e mypy
 
@@ -95,10 +137,12 @@
         os: [ubuntu-latest, windows-latest]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: actions/setup-python@v4
         with:
-          python-version: ${{ env.PYTHON_LATEST }}
+          cache: pip
+          python-version-file: .python-version-default
+
       - run: python -Im pip install -e .[dev]
       - run: python -Ic 'import hatch_fancy_pypi_readme'
       - run: python -m hatch_fancy_pypi_readme tests/example_pyproject.toml
@@ -111,6 +155,7 @@
     needs:
       - coverage
       - install-dev
+      - mypy
 
     runs-on: ubuntu-latest
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/.github/workflows/pypi-package.yml 
new/hatch_fancy_pypi_readme-24.1.0/.github/workflows/pypi-package.yml
--- old/hatch_fancy_pypi_readme-23.1.0/.github/workflows/pypi-package.yml       
2023-05-22 08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/.github/workflows/pypi-package.yml       
2024-01-01 10:18:10.000000000 +0100
@@ -5,8 +5,6 @@
   push:
     branches: [main]
     tags: ["*"]
-  pull_request:
-    branches: [main]
   release:
     types:
       - published
@@ -23,8 +21,8 @@
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v3
-      - uses: hynek/build-and-inspect-python-package@v1
+      - uses: actions/checkout@v4
+      - uses: hynek/build-and-inspect-python-package@v2
 
   # Upload to Test PyPI on every tag on main.
   release-test-pypi:
@@ -36,7 +34,7 @@
 
     steps:
       - name: Download packages built by build-and-inspect-python-package
-        uses: actions/download-artifact@v3
+        uses: actions/download-artifact@v4
         with:
           name: Packages
           path: dist
@@ -56,7 +54,7 @@
 
     steps:
       - name: Download packages built by build-and-inspect-python-package
-        uses: actions/download-artifact@v3
+        uses: actions/download-artifact@v4
         with:
           name: Packages
           path: dist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/.gitignore 
new/hatch_fancy_pypi_readme-24.1.0/.gitignore
--- old/hatch_fancy_pypi_readme-23.1.0/.gitignore       2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/.gitignore       2024-01-01 
10:18:10.000000000 +0100
@@ -14,3 +14,4 @@
 dist
 htmlcov
 tmp
+Justfile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/.pre-commit-config.yaml 
new/hatch_fancy_pypi_readme-24.1.0/.pre-commit-config.yaml
--- old/hatch_fancy_pypi_readme-23.1.0/.pre-commit-config.yaml  2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/.pre-commit-config.yaml  2024-01-01 
10:18:10.000000000 +0100
@@ -4,18 +4,18 @@
 
 repos:
   - repo: https://github.com/psf/black
-    rev: 23.3.0
+    rev: 23.12.1
     hooks:
       - id: black
 
-  - repo: https://github.com/charliermarsh/ruff-pre-commit
-    rev: v0.0.269
+  - repo: https://github.com/astral-sh/ruff-pre-commit
+    rev: v0.1.9
     hooks:
       - id: ruff
         args: [--fix, --exit-non-zero-on-fix]
 
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.4.0
+    rev: v4.5.0
     hooks:
       - id: trailing-whitespace
       - id: end-of-file-fixer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/.python-version-default 
new/hatch_fancy_pypi_readme-24.1.0/.python-version-default
--- old/hatch_fancy_pypi_readme-23.1.0/.python-version-default  1970-01-01 
01:00:00.000000000 +0100
+++ new/hatch_fancy_pypi_readme-24.1.0/.python-version-default  2024-01-01 
10:18:10.000000000 +0100
@@ -0,0 +1 @@
+3.12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/CHANGELOG.md 
new/hatch_fancy_pypi_readme-24.1.0/CHANGELOG.md
--- old/hatch_fancy_pypi_readme-23.1.0/CHANGELOG.md     2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/CHANGELOG.md     2024-01-01 
10:18:10.000000000 +0100
@@ -10,6 +10,23 @@
 
 <!-- changelog follows -->
 
+
+## 
[24.1.0](https://github.com/hynek/hatch-fancy-pypi-readme/compare/23.2.0...24.1.0)
 - 2024-01-01
+
+### Fixed
+
+- Added a default to an internal API that is used by *scikit-build-core*.
+
+
+## 
[23.2.0](https://github.com/hynek/hatch-fancy-pypi-readme/compare/23.1.0...23.2.0)
 - 2023-12-31
+
+### Added
+
+- `$HFPR_VERSION` is now replaced by the package version in the PyPI readme.
+  The version is not available in CLI mode, therefore it's replaced by the 
dummy value of `42.0`.
+  [#39](https://github.com/hynek/hatch-fancy-pypi-readme/pull/39)
+
+
 ## 
[23.1.0](https://github.com/hynek/hatch-fancy-pypi-readme/compare/22.8.0...23.1.0)
 - 2023-05-22
 
 ### Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/PKG-INFO 
new/hatch_fancy_pypi_readme-24.1.0/PKG-INFO
--- old/hatch_fancy_pypi_readme-23.1.0/PKG-INFO 2023-05-22 08:59:35.000000000 
+0200
+++ new/hatch_fancy_pypi_readme-24.1.0/PKG-INFO 2024-01-01 10:18:10.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: hatch-fancy-pypi-readme
-Version: 23.1.0
+Version: 24.1.0
 Summary: Fancy PyPI READMEs with Hatch
 Project-URL: Documentation, 
https://github.com/hynek/hatch-fancy-pypi-readme#readme
 Project-URL: Changelog, 
https://github.com/hynek/hatch-fancy-pypi-readme/blob/main/CHANGELOG.md
@@ -20,6 +20,7 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Topic :: Software Development :: Build Tools
 Requires-Python: >=3.7
 Requires-Dist: hatchling
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/README.md 
new/hatch_fancy_pypi_readme-24.1.0/README.md
--- old/hatch_fancy_pypi_readme-23.1.0/README.md        2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/README.md        2024-01-01 
10:18:10.000000000 +0100
@@ -1,9 +1,10 @@
 # Your ✨Fancy✨ Project Deserves a ✨Fancy✨ PyPI Readme!
 
-[![PyPI - 
Version](https://img.shields.io/pypi/v/hatch-fancy-pypi-readme.svg)](https://pypi.org/project/hatch-fancy-pypi-readme)
-[![PyPI - Python 
Version](https://img.shields.io/pypi/pyversions/hatch-fancy-pypi-readme.svg)](https://pypi.org/project/hatch-fancy-pypi-readme)
 [![Hatch 
project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)
 [![License: 
MIT](https://img.shields.io/badge/license-MIT-C06524)](https://github.com/hynek/hatch-fancy-pypi-readme/blob/main/LICENSE.txt)
+[![PyPI - 
Version](https://img.shields.io/pypi/v/hatch-fancy-pypi-readme.svg)](https://pypi.org/project/hatch-fancy-pypi-readme)
+[![PyPI - Python 
Version](https://img.shields.io/pypi/pyversions/hatch-fancy-pypi-readme.svg)](https://pypi.org/project/hatch-fancy-pypi-readme)
+[![Downloads](https://static.pepy.tech/badge/hatch-fancy-pypi-readme/month)](https://pepy.tech/project/hatch-fancy-pypi-readme)
 
 *hatch-fancy-pypi-readme* is a [Hatch] metadata plugin for everyone who cares 
about the first impression of their project’s PyPI landing page.
 It allows you to define your PyPI project description in terms of concatenated 
fragments that are based on **static strings**, **files**, and most importantly:
@@ -15,7 +16,7 @@
 Do you want your PyPI readme to be the project readme, but without badges, 
followed by the license file, and the changelog section for *only the last* 
release?
 You’ve come to the right place!
 
-> **Note**
+> [!NOTE]
 > “PyPI project description”, “PyPI landing page”, and “PyPI 
 > readme” all refer to the same thing.
 > In *setuptools* it’s called `long_description` and is the text shown on a 
 > project’s PyPI page.
 > We refer to it as “readme” because that’s how it’s called in [PEP 
 > 621](https://peps.python.org/pep-0621/)-based `pyproject.toml` files.
@@ -23,18 +24,22 @@
 
 ### Showcases 🧐
 
-<!-- Please add your project in alphabetic order, except leave 
hatch-fancy-pypi-readme last. -->
-- [*Awkward Array*](https://pypi.org/project/awkward/) 
([`pyproject.toml`](https://github.com/scikit-hep/awkward/blob/main/pyproject.toml))
-- [*Black*](https://pypi.org/project/black/) 
([`pyproject.toml`](https://github.com/psf/black/blob/main/pyproject.toml))
+<!-- Please add your project in alphabetic order, except leave 
hatch-fancy-pypi-readme last. If your project is lower-case, add it emphasized 
(surrounded by *), otherwise leave it plain. -->
+- [*attrs*](https://pypi.org/project/attrs/) 
([`pyproject.toml`](https://github.com/python-attrs/attrs/blob/main/pyproject.toml))
+- [Awkward Array](https://pypi.org/project/awkward/) 
([`pyproject.toml`](https://github.com/scikit-hep/awkward/blob/main/pyproject.toml))
+- [Black](https://pypi.org/project/black/) 
([`pyproject.toml`](https://github.com/psf/black/blob/main/pyproject.toml))
 - [*doc2dash*](https://pypi.org/project/doc2dash/) 
([`pyproject.toml`](https://github.com/hynek/doc2dash/blob/main/pyproject.toml))
 - [*environ-config*](https://pypi.org/project/environ-config/) 
([`pyproject.toml`](https://github.com/hynek/environ-config/blob/main/pyproject.toml))
 - [*jsonschema*](https://pypi.org/project/jsonschema/) 
([`pyproject.toml`](https://github.com/python-jsonschema/jsonschema/blob/main/pyproject.toml))
-- [*Gradio*](https://pypi.org/project/gradio/) 
([`pyproject.toml`](https://github.com/gradio-app/gradio/blob/main/pyproject.toml))
+- [Gradio](https://pypi.org/project/gradio/) 
([`pyproject.toml`](https://github.com/gradio-app/gradio/blob/main/pyproject.toml))
 - [*httpx*](https://pypi.org/project/httpx/) 
([`pyproject.toml`](https://github.com/encode/httpx/blob/master/pyproject.toml))
+- [OpenLLM](https://github.com/bentoml/OpenLLM) 
([`pyproject.toml`](https://github.com/bentoml/OpenLLM/blob/main/openllm-python/pyproject.toml))
+- [Pydantic](https://pypi.org/project/pydantic/) 
([`pyproject.toml`](https://github.com/pydantic/pydantic/blob/main/pyproject.toml))
 - [*pytermgui*](https://pypi.org/project/pytermgui/) 
([`pyproject.toml`](https://github.com/bczsalba/pytermgui/blob/master/pyproject.toml))
 - [*scikit-build*](https://pypi.org/project/scikit-build/) 
([`pyproject.toml`](https://github.com/scikit-build/scikit-build/blob/main/pyproject.toml))
 - [*stamina*](https://pypi.org/project/stamina/) 
([`pyproject.toml`](https://github.com/hynek/stamina/blob/main/pyproject.toml))
 - [*structlog*](https://pypi.org/project/structlog/) 
([`pyproject.toml`](https://github.com/hynek/structlog/blob/main/pyproject.toml))
+- [Twisted](https://pypi.org/project/twisted/) 
([`pyproject.toml`](https://github.com/twisted/twisted/blob/trunk/pyproject.toml))
 
 *hatch-fancy-pypi-readme* doesn’t use itself to avoid a circular dependency 
that can be problematic in some cases.
 The shoemaker’s kids always go barefoot.
@@ -79,7 +84,7 @@
 dynamic = ["readme"]
 ```
 
-> **Note**:
+> [!IMPORTANT]
 > Don’t forget to remove the old `readme` key!
 
 Next, you add a `[tool.hatch.metadata.hooks.fancy-pypi-readme]` section.
@@ -148,7 +153,7 @@
 
   to find it.
 
-Both Markdown and *reST* have comments (`<!-- this is a Markdown comment -->` 
and `.. this is a reST comment`) that you can use for invisible markers:
+Both Markdown and reStructuredText (reST) have comments (`<!-- this is a 
Markdown comment -->` and `.. this is a reST comment`) that you can use for 
invisible markers:
 
 ```markdown
 # Boring Header
@@ -180,7 +185,7 @@
 
 to your readme.
 
-> **Note**
+> [!TIP]
 >
 > - You can insert the same file **multiple times** – each time a different 
 > part!
 > - The order of the options in a fragment block does *not* matter.
@@ -219,7 +224,7 @@
 
 ```toml
 [[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
-# Regular TOML strings (double quotes) do.
+# Regular TOML strings (double quotes) do need escaping.
 pattern = "#(\\d+)"
 replacement = 
"[#\\1](https://github.com/hynek/hatch-fancy-pypi-readme/issues/\\1)"
 ```
@@ -227,6 +232,14 @@
 Again, please check out our [example configuration][example-config] for a 
complete example.
 
 
+### Referencing Packaging Metadata
+
+If the final readme contains the string `$HFPR_VERSION`, it is replaced by the 
current package version.
+
+When running *hatch-fancy-pypi-readme* in CLI mode (as described in the next 
section), packaging metadata is not available.
+In that case `$HFPR_VERSION` is hardcoded to `42.0` so you can still test your 
readme.
+
+
 ## CLI Interface
 
 For faster feedback loops, *hatch-fancy-pypi-readme* comes with a CLI 
interface that takes a `pyproject.toml` file as an argument and renders out the 
readme that would go into respective package.
@@ -240,7 +253,7 @@
 
 
 ```shell
-pipx run hatch-fancy-pypi-readme
+$ pipx run hatch-fancy-pypi-readme
 ```
 
 ---
@@ -257,7 +270,7 @@
 
 ![rich-cli output](rich-cli-out.svg)
 
-> **Warning**
+> [!WARNING]
 > While the execution model is somewhat different from the [Hatch]-Python 
 > packaging pipeline, it uses the same configuration validator and text 
 > renderer, so the fidelity should be high.
 >
 > It will **not** help you debug **packaging issues**, though.
@@ -267,17 +280,7 @@
 > If you ensure that *hatch-fancy-pypi-readme* is installed in your Hatch 
 > environment (that means where the `hatch` CLI command lives – not your 
 > development environment), you can also let Hatch render it for you:
 >
 > - `hatch project metadata readme` gives you a rendered version of the readme.
-> - `hatch project metadata | jq -r .readme.text` gives you the raw Markdown 
(needs [*jq*](https://stedolan.github.io/jq/)).
-
-
-## Project Links
-
-- **License**: [MIT](LICENSE.txt)
-- **Supported Python Versions**: 3.7 and later (follows [Hatch])
-- [**Documentation**](https://github.com/hynek/hatch-fancy-pypi-readme#readme)
-- [**Changelog**](CHANGELOG.md)
-- [**PyPI**](https://pypi.org/project/hatch-fancy-pypi-readme/)
-- [**Source Code**](https://github.com/hynek/hatch-fancy-pypi-readme)
+> - `hatch project metadata | jq -r .readme.text` gives you the raw Markdown 
(needs [*jq*](https://jqlang.github.io/jq/)).
 
 
 [example-config]: tests/example_pyproject.toml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/pyproject.toml 
new/hatch_fancy_pypi_readme-24.1.0/pyproject.toml
--- old/hatch_fancy_pypi_readme-23.1.0/pyproject.toml   2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/pyproject.toml   2024-01-01 
10:18:10.000000000 +0100
@@ -5,7 +5,7 @@
 
 [project]
 name = "hatch-fancy-pypi-readme"
-version = "23.1.0"
+version = "24.1.0"
 description = "Fancy PyPI READMEs with Hatch"
 requires-python = ">=3.7"
 keywords = ["hatch", "pypi", "readme", "documentation"]
@@ -23,6 +23,7 @@
   "Programming Language :: Python :: 3.9",
   "Programming Language :: Python :: 3.10",
   "Programming Language :: Python :: 3.11",
+  "Programming Language :: Python :: 3.12",
 ]
 dependencies = [
   "hatchling",
@@ -122,37 +123,25 @@
 
 [tool.ruff]
 src = ["src", "tests"]
-select = [
-  "E",   # pycodestyle
-  "W",   # pycodestyle
-  "F",   # Pyflakes
-  "UP",  # pyupgrade
-  "N",   # pep8-naming
-  "YTT", # flake8-2020
-  "S",   # flake8-bandit
-  "B",   # flake8-bugbear
-  "C4",  # flake8-comprehensions
-  "T10", # flake8-debugger
-  "ISC", # flake8-implicit-str-concat
-  "RET", # flake8-return
-  "SIM", # flake8-simplify
-  "DTZ", # flake8-datetimez
-  "I",   # isort
-  "PGH", # pygrep-hooks
-  "PLC", # Pylint
-  "PIE", # flake8-pie
-  "RUF", # ruff
-]
+select = ["ALL"]
 
 ignore = [
-  "E501", # leave line-length enforcement to Black
+  "ANN",      # Mypy is better at this.
+  "C901",     # Leave complexity to me.
+  "COM",      # Leave commas to Black.
+  "D",        # We have different ideas about docstrings.
+  "E501",     # leave line-length enforcement to Black
+  "PLR0912",  # Leave complexity to me.
+  "TRY301",   # Raise in try blocks can totally make sense.
 ]
 
 [tool.ruff.per-file-ignores]
+"src/hatch_fancy_pypi_readme/_cli.py" = ["T201"]  # need print in CLI
 "tests/*" = [
+  "PLC1901", # empty strings are falsey, but are less specific in tests
+  "PT005",   # we use always underscores and explicit names
   "S101",    # assert
   "SIM300",  # Yoda rocks in tests
-  "PLC1901", # empty strings are falsey, but are less specific in tests
 ]
 
 [tool.ruff.isort]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/__main__.py 
new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/__main__.py
--- old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/__main__.py  
2023-05-22 08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/__main__.py  
2024-01-01 10:18:10.000000000 +0100
@@ -52,7 +52,7 @@
     hatch_toml = _maybe_load_hatch_toml(args.hatch_toml)
 
     out: TextIO
-    out = open(args.o, "w") if args.o else sys.stdout  # noqa: SIM115
+    out = Path(args.o).open("w") if args.o else sys.stdout  # noqa: SIM115
 
     with closing(out):
         cli_run(pyproject, hatch_toml, out)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/_builder.py 
new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/_builder.py
--- old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/_builder.py  
2023-05-22 08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/_builder.py  
2024-01-01 10:18:10.000000000 +0100
@@ -4,20 +4,26 @@
 
 from __future__ import annotations
 
-from ._fragments import Fragment
-from ._substitutions import Substituter
+from typing import TYPE_CHECKING
+
+
+if TYPE_CHECKING:
+    from ._fragments import Fragment
+    from ._substitutions import Substituter
 
 
 def build_text(
-    fragments: list[Fragment], substitutions: list[Substituter]
+    fragments: list[Fragment],
+    substitutions: list[Substituter],
+    version: str = "",
 ) -> str:
-    rv = []
-    for f in fragments:
-        rv.append(f.render())
-
-    text = "".join(rv)
+    """
+    Try avoiding breaking the API unnecessarily; it's used directly by
+    scikit-build-core.
+    """
+    text = "".join(f.render() for f in fragments)
 
     for sub in substitutions:
         text = sub.substitute(text)
 
-    return text
+    return text.replace("$HFPR_VERSION", version)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/_cli.py 
new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/_cli.py
--- old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/_cli.py      
2023-05-22 08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/_cli.py      
2024-01-01 10:18:10.000000000 +0100
@@ -65,7 +65,7 @@
             + "\n".join(f"- {msg}" for msg in e.errors),
         )
 
-    print(build_text(config.fragments, config.substitutions), file=out)
+    print(build_text(config.fragments, config.substitutions, "42.0"), file=out)
 
 
 def _fail(msg: str) -> NoReturn:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/hooks.py 
new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/hooks.py
--- old/hatch_fancy_pypi_readme-23.1.0/src/hatch_fancy_pypi_readme/hooks.py     
2023-05-22 08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/src/hatch_fancy_pypi_readme/hooks.py     
2024-01-01 10:18:10.000000000 +0100
@@ -20,15 +20,18 @@
         """
         Update the project table's metadata.
         """
-
         config = load_and_validate_config(self.config)
 
         metadata["readme"] = {
             "content-type": config.content_type,
-            "text": build_text(config.fragments, config.substitutions),
+            "text": build_text(
+                config.fragments,
+                config.substitutions,
+                version=metadata.get("version", ""),
+            ),
         }
 
 
-@hookimpl  # type: ignore[misc]
+@hookimpl
 def hatch_register_metadata_hook() -> type[MetadataHookInterface]:
     return FancyReadmeMetadataHook
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/tests/test_builder.py 
new/hatch_fancy_pypi_readme-24.1.0/tests/test_builder.py
--- old/hatch_fancy_pypi_readme-23.1.0/tests/test_builder.py    2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/tests/test_builder.py    2024-01-01 
10:18:10.000000000 +0100
@@ -11,8 +11,8 @@
         """
         A single text fragment becomes the readme.
         """
-        assert "This is the README!" == build_text(
-            [TextFragment("This is the README!")], []
+        assert "This is the README for 1.0!" == build_text(
+            [TextFragment("This is the README for $HFPR_VERSION!")], [], "1.0"
         )
 
     def test_multiple_text_fragment(self):
@@ -26,4 +26,5 @@
                 TextFragment("This is the README!"),
             ],
             [],
+            "1.0",
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/tests/test_end_to_end.py 
new/hatch_fancy_pypi_readme-24.1.0/tests/test_end_to_end.py
--- old/hatch_fancy_pypi_readme-23.1.0/tests/test_end_to_end.py 2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/tests/test_end_to_end.py 2024-01-01 
10:18:10.000000000 +0100
@@ -16,7 +16,7 @@
     return run("build", *args, check=check)
 
 
-@pytest.mark.slow
+@pytest.mark.slow()
 def test_build(new_project):
     """
     Build a fake project end-to-end and verify wheel contents.
@@ -58,7 +58,7 @@
     )
 
 
-@pytest.mark.slow
+@pytest.mark.slow()
 def test_invalid_config(new_project):
     """
     Missing config makes the build fail with a meaningful error message.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatch_fancy_pypi_readme-23.1.0/tests/test_substitutions.py 
new/hatch_fancy_pypi_readme-24.1.0/tests/test_substitutions.py
--- old/hatch_fancy_pypi_readme-23.1.0/tests/test_substitutions.py      
2023-05-22 08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/tests/test_substitutions.py      
2024-01-01 10:18:10.000000000 +0100
@@ -47,7 +47,7 @@
         )
 
     @pytest.mark.parametrize(
-        "pat,repl,text,expect",
+        ("pat", "repl", "text", "expect"),
         [
             (
                 r"#(\d+)",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/tests/utils.py 
new/hatch_fancy_pypi_readme-24.1.0/tests/utils.py
--- old/hatch_fancy_pypi_readme-23.1.0/tests/utils.py   2023-05-22 
08:59:35.000000000 +0200
+++ new/hatch_fancy_pypi_readme-24.1.0/tests/utils.py   2024-01-01 
10:18:10.000000000 +0100
@@ -9,7 +9,7 @@
 
 
 def run(*args, check=True):
-    process = subprocess.run(
+    process = subprocess.run(  # noqa: PLW1510
         [sys.executable, "-m", *args],  # noqa: S603
         stdout=subprocess.PIPE,
         stderr=subprocess.STDOUT,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatch_fancy_pypi_readme-23.1.0/tox.ini 
new/hatch_fancy_pypi_readme-24.1.0/tox.ini
--- old/hatch_fancy_pypi_readme-23.1.0/tox.ini  2023-05-22 08:59:35.000000000 
+0200
+++ new/hatch_fancy_pypi_readme-24.1.0/tox.ini  2024-01-01 10:18:10.000000000 
+0100
@@ -3,17 +3,22 @@
 env_list =
     pre-commit,
     mypy,
-    py37,
-    py38,
-    py39,
-    py310,
-    py311,
-    py3{7,10,11}-cli,
+    py3{7,8,9,10,11,12},
+    py3{7,10,11,12}-cli,
     coverage-report
-isolated_build = true
 
 
-[testenv:py3{7,10,11}-cli]
+[testenv]
+package = wheel
+wheel_build_env = .pkg
+extras = tests
+pass_env =
+    FORCE_COLOR
+    NO_COLOR
+commands = pytest {posargs}
+
+
+[testenv:py3{7,10,12}-cli]
 deps = coverage[toml]
 commands =
     # Use -o only once, so we exercise both code paths.
@@ -33,18 +38,14 @@
 commands = mypy src
 
 
-[testenv]
-extras = tests
-commands = pytest {posargs}
-
-
-[testenv:py31{0,1}]
+[testenv:py31{0,2}]
 deps = coverage[toml]
 commands = coverage run -m pytest {posargs}
 
 
 [testenv:coverage-report]
-base_python = python3.11
+; Keep version in-sync with .python-version-default
+base_python = python3.12
 deps = coverage[toml]
 skip_install = true
 commands =

Reply via email to