Skip to content

Sweep stale prose for the 3.0.0 release - #1079

Merged
derek73 merged 11 commits into
masterfrom
docs/3-0-stale-prose-sweep
Nov 5, 2026
Merged

derek73 merged 11 commits into
masterfrom
docs/3-0-stale-prose-sweep

Conversation

@derek73

@derek73 derek73 commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

Step 0 of the release checklist for 3.0.0: the stale-prose sweep. Each site the checklist names was read against the 3.0 tree, with every doubtful claim run. It changes no behavior: only docs, docstrings, message strings, comments and case notes.

What changed, by site

docs/migrate.rst

  • "Changed in 3.0" listed only the render change. It now has 13 shapes, each with a doctest, for the 3.0 bullets whose 1.4 reading moved: Graf Lambsdorff, Sta. Maria / Delos Reyes, María del Carmen, طارق عبد العزيز, Ortega y Gasset VI, the bracketed clauses (PhD, MBA) / (JP), Dumas père, Pr / Profesor, KC / MSW, U+2063, the given names Maj / Gen / Pharaoh / Saint with Brig Gen, Silva, Junior Carlos, and the case repair of ST, DELA and MACHADO. Each 1.4 reading was measured against the 1.4.0 wheel.
  • "Finding the sites" now says to upgrade to 2.8.2, not 2.8.1. It adds the config.surnames import and the unwarned read of a Lexicon set field.
  • The intro no longer says "Further output changes come with the 3.0 alphas". There are no alphas.

README.rst

  • The 3.0 announcement mentions reading-based Lexicon configuration, render in written order and the language packs.
  • The upgrade advice says 2.8.2 and names the unwarned Lexicon field read.
  • python -m doctest README.rst and PyPI's readme_renderer are both clean.

docs/usage.rst, concepts.rst, modules.rst, index.rst

  • References to internal Lexicon fields (after_given_titles, suffix_acronyms_ambiguous, given_name_abbreviations, emptying titles) became the 3.0 calls (words(...), readings_of(...)).
  • 1.x last_list became family in STABLE_TAGS.
  • "2.0 API" framing was dropped where it no longer holds.

docs/customize.rst, locales.rst

  • ES_AR is mentioned beside ES's given-name list and in the composition paragraph.
  • render()'s description covers the views and the default layout in read order.
  • The pack intro and "what a pack is for" include packs that choose languages.
  • The CLI paragraph covers language tags and --strict.
  • The rules_patch users are listed in full.

Autodoc docstrings and messages (_types.py, _locale.py, locales/__init__.py, locales/ja.py)

  • AmbiguityKind docs no longer cite internal Lexicon.title_phrases and conjunctions_ambiguous, or "planned for 2.x".
  • surname1's folded-middle example was wrong against rules/R11 (the first-surname views) and is fixed.
  • Locale names its languages.
  • The ja ImportError quotes 'nameparser[ja]' for zsh.
  • About 50 raise and warn paths were triggered, and every snippet they offer ran (22 also under mypy --strict). The one not run is segmenter=locales.ja_segmenter(): namedivider-python isn't installed in this checkout.

Pipeline stage headers (_assemble, _assign, _classify, _post_rules, _script_segment) and ParseState's ownership map

  • Consumes/Produces/Reads now match the code, checked with the checklist's grep plus aliased reads.
  • _classify over-claimed given_names and missed title_case_name_words.
  • _assign reads the title-phrase sets for H9 (the title phrase).
  • post_rules writes S1's set-apart roles and R11's first-surname tag.

tests/v2/cases.py notes

docs/design/

AGENTS.md files and nameparser/vocab/README.md

Decided items, applied

  • rules/P9 (a particle that is also a suffix word, beside a family comma): it gains fenced examples for SMITH VD V, JOHN and its one-case smith vd v, john, each with deviates: #1080. Ask one predicate for every roman-numeral rule (#752, phase 2f) #886 moved both readings in 2.7, and the fix is in 3.x. The rules corpus and the snapshot gain the two names; no reading moved.
  • decisions/O6 (two family names): its Open line carries only the ñ question (Should "Maria Begona Lopez" under locales.ES keep Begona out of the family, as "María Begoña López" does? #1081). The per-region clause is dropped: ES_AR answers the case Should two_family_names leave a known given name out of the family, so "José Luis Pérez" keeps family "Pérez"? #959 raised.
  • decisions/vocabulary-model, phase 2's pool: the Standing line is now shipped tense, matching the entries that record it. 2a–2m shipped piecemeal, 2g's credentials landed through the pool, and the gate stays at its own sites (item 4). Since 4i-b a configured Lexicon compiles its pool. 3a's reading index is not that pool: it holds the vocabulary files' readings only.
  • Retargeted to "unbuilt, 3.x":
    • The Policy .pyi stub, with a dated 3-0-reevaluations entry; the differential-ledger Standing line points at it.
    • The reserved vocabulary names bare_only, leading_only, trailing_only and separators, with a dated vocabulary-model entry. The change covers tools/vocab/build.py's RESERVED and its message ("reserved, unbuilt, for 3.x"), nameparser/vocab/README.md's table, the RFC's two present-tense lines and test_vocab's rows together.
  • 2.x translation messages:
    • remove(suffix_acronyms={'ma'}) now offers lexicon.remove('ma', kind='credential'), keeping the Filipino same_as='maría'. The translator first tries leaving alone a kind one of whose readings already holds what is wanted, keeping the exact-compile check, and it carries a held same_as through. The 2.x pickle path keeps its old skip.
    • A bare Lexicon(surnames={'kim'}, titles={'dr'}) offers Lexicon(surnames={'kim'}).add(...), so the offered code no longer calls an unbound lexicon.
    • New tests run the offered code: a bare constructor, a replace of an edited lexicon, and ma. Three of the rows fail on the pre-fix code.
  • API reference:
    • "Added in 3.0." is on every public member new since 2.8.0, found by diffing the public members against the 2.8.0 wheel.
    • Docstrings now cover the seven role properties, family_base, family_particles, surnames, given_names, as_dict, Lexicon.default, Lexicon.empty and PolicyPatch.two_given_names, so autodoc renders them.
    • The nameparser.locales.ja cross-reference is fixed.
    • modules.rst's "The 2.0 API" is now "Classes and functions".
    • locales.rst's Spanish and Portuguese titles section has a label.
  • locales.rst's promise: it now says what the non-interference gate tests: over the test corpus and each pack's example names, every name a pack reads differently from the default is one its declared surface covers. That surface is a shape for a rule (three name words for the packs that read two family names), or the words a choice changes. Every pack passes the gate, ES, CS, SK and ES_AR included.
  • cases.py notes: accepted as swept.

Checks

  • uv run pytest passes on 3.11 and 3.15: 37,279 passed, 29 skipped, 5 xfailed. The -n0 -m serial pass also passes (54).
  • uv run mypy and uv run ruff check are clean.
  • sphinx-build -b doctest gives 0 failures, and -b html gives no warnings.
  • The design-docs review ran on every docs/design commit, and a code review ran on the fix commit. Their findings are fixed in the later commits, except one, below.
  • There are no open Dependabot PRs, and uv.lock pins namedivider-python 0.4.2, the latest on PyPI.

Per-region lists, declined

Not in scope here, as planned: the moved-names report, release notes (including the 3.0 entry's "under development" line), CITATION.cff, the version, the tag and the pickle check.

🤖 Generated with Claude Code

derek73 and others added 3 commits November 5, 2026 00:07
….2's warnings

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…docs for stale prose

User docs, autodoc docstrings and messages, the pipeline stages'
Consumes/Produces/Reads lines and ParseState's ownership map, the notes
in tests/v2/cases.py, docs/design/ and the AGENTS.md files and vocab
README, each read against the 3.0 tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
H9's Precedence modifier clause in 3.0 terms (a caller's other title
reading), decisions/H9's pointers to the entries that hold its claims,
and vocabulary-model's phase 3 line in the shipped tense. H9's budget
record re-recorded, 778 -> 784 words: the clause reads no new signal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73 derek73 added this to the 3.0 milestone Nov 5, 2026
@derek73 derek73 added the docs Documentation fixes and updates label Nov 5, 2026
@derek73 derek73 self-assigned this Nov 5, 2026
Translate a 2.x removal without rewriting another file's reading (ma's
Filipino same_as) and offer a bare Lexicon() call's fix on a lexicon it
names, each with a test that runs the offered code; retarget the .pyi
stub and the reserved vocabulary names to unbuilt, 3.x; give the API
reference's undocumented members docstrings and mark every 3.0 member
'Added in 3.0.'; state locales.rst's promise as the gate tests it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
derek73 and others added 7 commits November 5, 2026 01:10
…s pool as built piecemeal

P9 gains its fenced example with a deviates marker (#886 moved the
reading in 2.7); O6's Open line carries the ñ question alone; the
vocabulary-model Standing line no longer reads phase 2's one pool as
pending. Also a test of a 2.x replace on an edited lexicon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Log entries for the .pyi stub (3-0-reevaluations) and the reserved
vocabulary names (vocabulary-model), with the Standing lines and the
RFC pointed at them; P9's one-case shape fenced under #1080 too; the
phase 2 pool line restated to match the entries that record it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two names new to the corpus, no reading moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dated entry answers the question the #961 review and the #1061 entry
left Open above, on the figures those entries already record.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name the three passages that point at the Open line, say what cut it,
add the one per-region list figure on record, and scope the measure
bullet to the switches it measured.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gentina (decisions/O6)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The switch figure is the maximum over every Spanish group, Peru's; the
per-country-list finding is cited; the measured population is stated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73
derek73 merged commit 2d91f6b into master Nov 5, 2026
11 of 13 checks passed
@derek73
derek73 deleted the docs/3-0-stale-prose-sweep branch November 5, 2026 09:38
derek73 added a commit that referenced this pull request Nov 5, 2026
….md read (#1094)

Step 0 now opens with a /simplify pass over every module the cycle changed
that has not had one, run before the stale-prose sweep since the passes
rewrite the comments the sweep reads. The sweep's AGENTS.md line names all
six files, read after the last behavior PR merges: 3.0's sweep (#1079)
read four of the six. The initials gotcha now names 3.0's initials(spec,
separator) rather than v1's initials_separator/initials_format.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation fixes and updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant