From 4b8cf7fb6e1a56a857ad6729ab1ef3fbb579b30b Mon Sep 17 00:00:00 2001 From: Derek Gulbranson Date: Sun, 11 Oct 2026 15:17:10 -0700 Subject: [PATCH 1/4] docs(readme): announce 2.4 instead of 2.0 and 2.1 The README is the PyPI project page, so it should lead with the release it ships in. The 2.0 compatibility promise stays as a pointer to Coming from 1.x, East Asian support becomes a standing feature sentence, and the quick start shows the credential reading. Checked with python -m doctest and readme_renderer. Co-Authored-By: Claude Opus 5.5 --- README.rst | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/README.rst b/README.rst index c80cda99..1cde940b 100644 --- a/README.rst +++ b/README.rst @@ -7,19 +7,24 @@ nameparser parses human names into seven fields β€” title, given, middle, family, suffix, nickname, maiden. Results are immutable, configuration is composable, and locale packs are opt-in. -πŸ“£ **nameparser 2.0 is out.** Existing ``HumanName`` code keeps working -through 2.x, and most 1.x code needs no changes. The `migration guide -`__ has the -field-by-field map. Please `open an issue -`__ for anything that -parses wrong. - -**2.1 adds East Asian name support.** Chinese, Japanese and Korean names -written in their own scripts are read family-first, unspaced Korean names -are split against the census surname list, and CJK honorifics are -recognized. See `East Asian names +πŸ“£ **nameparser 2.4 is out.** It reads post-nominal credentials much more +reliably β€” ``Jack MA`` is Jack with an MA and ``Jack Ma`` is the surname +Ma, and ``Jane Smith, PhD MA`` keeps both credentials together β€” recognizes +more naming conventions (Catalan, Irish, Finnish, Malay and others), and +writes credentials the usual way when it repairs case. The `release log +`__ has the +details. + +Chinese, Japanese and Korean names written in their own scripts are read +family-first, unspaced Korean names are split against the census surname +list, and CJK honorifics are recognized. See `East Asian names `__. +Existing ``HumanName`` code from 1.x keeps working through 2.x, and most +of it needs no changes; see `Coming from 1.x`_ below. Please `open an +issue `__ for anything +that parses wrong. + Installation ------------ @@ -52,6 +57,13 @@ Quick Start Example >>> name.render("{family}, {given}") 'de la Vega, Juan' + >>> parse("Jack MA").suffix # capitals mark a credential + 'MA' + >>> parse("Jack Ma").family # and a surname + 'Ma' + >>> parse("Jane Smith, PhD MA").suffix + 'PhD MA' + >>> parse("κΉ€λ―Όμ€€").family # Korean: unspaced, split on the census list 'κΉ€' >>> parse("ι«˜ζ©‹ みγͺみ").family # Japanese: kanji with kana, family first From 8c96889acfa2cd4ad6033dee311e367dee4094c3 Mon Sep 17 00:00:00 2001 From: Derek Gulbranson Date: Sun, 11 Oct 2026 15:27:41 -0700 Subject: [PATCH 2/4] docs(readme): say the credential reading uses letter case Co-Authored-By: Claude Opus 5.5 --- README.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 1cde940b..8aa0eae3 100644 --- a/README.rst +++ b/README.rst @@ -7,9 +7,10 @@ nameparser parses human names into seven fields β€” title, given, middle, family, suffix, nickname, maiden. Results are immutable, configuration is composable, and locale packs are opt-in. -πŸ“£ **nameparser 2.4 is out.** It reads post-nominal credentials much more -reliably β€” ``Jack MA`` is Jack with an MA and ``Jack Ma`` is the surname -Ma, and ``Jane Smith, PhD MA`` keeps both credentials together β€” recognizes +πŸ“£ **nameparser 2.4 is out.** It uses letter case to read post-nominal +credentials much more reliably β€” ``Jack MA`` is Jack with an MA and +``Jack Ma`` is the surname Ma, and ``Jane Smith, PhD MA`` keeps both +credentials together β€” recognizes more naming conventions (Catalan, Irish, Finnish, Malay and others), and writes credentials the usual way when it repairs case. The `release log `__ has the From d6872ba899ddef8069d8347eb5fc60137adece03 Mon Sep 17 00:00:00 2001 From: Derek Gulbranson Date: Sun, 11 Oct 2026 15:27:48 -0700 Subject: [PATCH 3/4] docs(readme): reflow the announcement paragraph Co-Authored-By: Claude Opus 5.5 --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 8aa0eae3..464118e6 100644 --- a/README.rst +++ b/README.rst @@ -10,9 +10,9 @@ composable, and locale packs are opt-in. πŸ“£ **nameparser 2.4 is out.** It uses letter case to read post-nominal credentials much more reliably β€” ``Jack MA`` is Jack with an MA and ``Jack Ma`` is the surname Ma, and ``Jane Smith, PhD MA`` keeps both -credentials together β€” recognizes -more naming conventions (Catalan, Irish, Finnish, Malay and others), and -writes credentials the usual way when it repairs case. The `release log +credentials together β€” recognizes more naming conventions (Catalan, +Irish, Finnish, Malay and others), and writes credentials the usual way +when it repairs case. The `release log `__ has the details. From 782d1b00cedd463cdc34c5b02b292ad479e2cdac Mon Sep 17 00:00:00 2001 From: Derek Gulbranson Date: Sun, 11 Oct 2026 15:29:39 -0700 Subject: [PATCH 4/4] docs(agents): add the README announcement to the release sweep The README is the PyPI project page; 2.4.0 nearly shipped announcing 2.0 and 2.1. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index aa04d448..d6097163 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -91,6 +91,12 @@ uv run sphinx-build -b html docs dist/docs # explicitly β€” every one of them has gone stale at least once. # - docs/*.rst: usage.rst examples and API surface, plus any file listing # config constants or HumanName kwargs +# - README.rst's announcement at the top: it is the PyPI project page +# (pyproject's `readme`), so it should lead with the release being +# shipped, drawn from the release log's summary. 2.4.0 nearly shipped +# still announcing 2.0 and 2.1. Check it with `python -m doctest +# README.rst` and `uv run --with readme_renderer python -m +# readme_renderer README.rst -o /tmp/readme.html` (PyPI's renderer) # - docstrings that autodoc renders (nameparser/_policy.py, _types.py, ...). # These ARE the API reference in modules.html, so a docs/*.rst-only sweep # structurally misses half the rendered page β€” that is how the guide and