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
<[email protected]>
+
+- 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
<[email protected]>
+
+- 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 [email protected]: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!
-[](https://pypi.org/project/hatch-fancy-pypi-readme)
-[](https://pypi.org/project/hatch-fancy-pypi-readme)
[](https://github.com/pypa/hatch)
[](https://github.com/hynek/hatch-fancy-pypi-readme/blob/main/LICENSE.txt)
+[](https://pypi.org/project/hatch-fancy-pypi-readme)
+[](https://pypi.org/project/hatch-fancy-pypi-readme)
+[](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 @@

-> **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)
[email protected]
[email protected]()
def test_build(new_project):
"""
Build a fake project end-to-end and verify wheel contents.
@@ -58,7 +58,7 @@
)
[email protected]
[email protected]()
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 =