Skip to content

Commit 5f80c9a

Browse files
committed
v2.6.0: reStructuredText parser, PyPI top-500 ecosystem scan
1 parent 153d57b commit 5f80c9a

3 files changed

Lines changed: 18 additions & 3 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,22 @@ Parse, query, and validate changelogs in Python and CI.
44

55
## [Unreleased]
66

7+
## [2.6.0] - 2026-08-04
8+
79
### Added
810

911
- reStructuredText changelog parser (`patchnotes.parse(text, format="rst")`, or automatic for `.rst` files). Learns the document's own heading hierarchy from section adornments, skips directives and comments, and reduces inline rST markup to plain text. Issue codes match the markdown parser's, so quality is comparable across formats.
1012
- `research/`: an ecosystem scan over the 500 most-downloaded PyPI packages, measuring how many keep a changelog a machine can read. Results and method in `research/FINDINGS.md`.
1113

1214
### Changed
1315

16+
- `.rst` files now parse with the reStructuredText parser. Previously the extension matched no format and fell through to the markdown parser, which recovered setext-underlined headers but little else — so `parse_file("CHANGES.rst")` may now return more releases, different entries, and different issue codes than it did in 2.5.x. Setext-underlined *markdown* is unaffected: the two shapes are ambiguous, so rST is auto-detected only on content markdown cannot produce.
1417
- CI now dogfoods the badge: `ci.yml` publishes patchnotes' own changelog badge to the `gh-pages` branch on every push to main, and skips publishing on pull requests so fork PRs don't need a write token.
18+
- The sdist no longer ships `research/`, `examples/`, or `.github/`. The wheel was already scoped to the package; the sdist was picking up everything untracked by `.gitignore`, including ~220 KB of ecosystem-scan data.
19+
20+
### Fixed
21+
22+
- `__version__` now matches the released version. It was left at `2.5.0` when 2.5.1 shipped, so `patchnotes --version` and `patchnotes.__version__` under-reported by a patch release. The `check-version` command compares the changelog against `pyproject.toml`, which was correct, so nothing caught it — `patchnotes/__init__.py` is now part of the release checklist.
1523

1624
## [2.5.1] - 2026-08-04
1725

‎patchnotes/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
register_format,
6464
)
6565

66-
__version__ = "2.5.0"
66+
__version__ = "2.6.0"
6767
__all__ = [
6868
"parse",
6969
"parse_file",

‎pyproject.toml‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "patchnotes"
7-
version = "2.5.1"
8-
description = "Parse, query, and validate changelogs (Keep a Changelog markdown, YAML) in Python and CI"
7+
version = "2.6.0"
8+
description = "Parse, query, and validate changelogs (Keep a Changelog markdown, reStructuredText, YAML) in Python and CI"
99
readme = "README.md"
1010
license = { text = "MIT" }
1111
requires-python = ">=3.10"
@@ -22,6 +22,7 @@ classifiers = [
2222
"Programming Language :: Python :: 3.13",
2323
"Topic :: Software Development :: Libraries",
2424
"Topic :: Text Processing :: Markup :: Markdown",
25+
"Topic :: Text Processing :: Markup :: reStructuredText",
2526
"Typing :: Typed",
2627
]
2728

@@ -42,6 +43,12 @@ Repository = "https://github.com/Londopy/patchnotes"
4243
[tool.hatch.build.targets.wheel]
4344
packages = ["patchnotes"]
4445

46+
[tool.hatch.build.targets.sdist]
47+
# The ecosystem scan is research output, not package content. It is archived
48+
# on Zenodo and lives in the repository; shipping ~220 KB of scan data to
49+
# every `pip download` serves no one.
50+
exclude = ["research/", "examples/", ".github/"]
51+
4552
[tool.pytest.ini_options]
4653
testpaths = ["tests"]
4754

0 commit comments

Comments
 (0)