Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Quick Start Example
>>> russian.parse("Сидоров Иван Петрович").family
'Сидоров'
>>> locales.available()
('cs', 'hr', 'ja', 'ne', 'ru', 'sk', 'sl', 'tr_az', 'zh')
('cs', 'ga', 'gd', 'hr', 'ja', 'ne', 'pt_br', 'ru', 'sk', 'sl', 'tr_az', 'zh')

Learn more
----------
Expand Down
3 changes: 2 additions & 1 deletion docs/design/decisions/S11-suffix-word-that-is-also-a-name.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

- The floor holds before a generation word's case: a lower-case `fils` in a mixed-case name is the generation only where the name keeps a family word, so `Dumas fils` and `Pedro Junior fils` read family 'fils' — 2026-10-25 (Derek), #890, THE FLOOR.

- The abbreviations Brazilian filings write for the agnomens are agnomen spellings `same_as` their word, gated as it is: `fh`, `fo`, `filh` (filho), `net`, `nt` (neto), `sob`, `sobr` (sobrinho), each with a `family` reading, counted or declared, so that a name of two words keeps it (`Ana Fo` → family 'Fo'); `fil` and `sb` are refused on the word, and the single letters `F` and `N` are left as initials — 2026-10-27 #843.
- The abbreviations Brazilian filings write for the agnomens are agnomen spellings `same_as` their word, gated as it is: `fh`, `fo`, `filh` (filho), `net`, `nt` (neto), `sob`, `sobr` (sobrinho), each with a `family` reading, counted or declared, so that a name of two words keeps it (`Ana Fo` → family 'Fo'); `fil` is refused on the word, `sb` is read only under a Brazilian Portuguese choice, and the single letters `F` and `N` are left to read as the name word they are written as, an initial or, ending the name, the family (`JOSE CARLOS SILVA F` → family 'F'), under that choice too — 2026-10-27 #843; 2026-10-30 #753, phase 3h.

Open: none in this file.

Expand All @@ -24,3 +24,4 @@ Open: none in this file.
- 2026-10-25 (Derek), #890 (its accepted lower-case `fils` superseded by 2026-10-25 (Derek), #890, THE FLOOR) — A SUFFIX WORD IN FRONT OF AN AGNOMEN IS NO WORD TO SPARE. SUPERSEDES: the ACCEPTED sentence of 2026-10-25 #752 on a generation word or dotted initials in front of an agnomen. Derek approved the fix before merge, on the language-packs session's finding: the entry above accepted that a generation word or credential straight before an agnomen joined it in the suffix, leaving no family name, as a cost of 5 tse names, but that count was of capitals only, and the shape is ordinary in mixed case (`Pedro Junior Filho`, `Pedro Júnior Neto`, `Pedro Jr. Filho`, each read with no family name). One word was counted twice: the count took `Junior` as the agnomen's word to spare and the peel then took `Junior` as a suffix; and an unambiguous suffix word in front made the agnomen a credential by rules/S7's company. A generation word that is also a name now counts only the name words in front of it, skipping what the trailing run takes there (a suffix word, a numeral of two or more letters read as the generation, which the review of the fix found still counted in `Pedro VI Filho`, a member of the ambiguous class its writing makes a suffix, `Pedro MA Filho`, and a bare member any of those carries in front of it, `Pedro Junior Ma Filho` and `Pedro Junior do Filho`, the second review's), and keeps no company, so `Pedro Junior Filho` reads given 'Pedro', middle 'Junior', family 'Filho' as master did, while `Pedro Alves Junior Filho` still reads suffix 'Junior Filho'; dotted initials in front read as master did too (`PEDRO C.M. FILHO` → middle 'C.M.', family 'FILHO'), and so does a credential (`Pedro PhD Neto` → family 'Neto'). The count asks a scan that stops at the first word the walk keeps, not the walk itself: asking the walk over the words in front was tried and is exponential on a run of agnomens, quadratic when memoized, and the scaling guard (`agnomens`, `carried_agnomens` in tests/v2/test_benchmark.py) refuses both. The lower-case `fils` of a mixed-case name is settled by its case and not the count, so `Pedro Junior fils` still reads suffix 'Junior fils' (rules/S11's Accepted).
- 2026-10-25 (Derek), #890, THE FLOOR — A NAME KEEPS ITS FAMILY WORD BEFORE A GENERATION WORD'S CASE IS READ. SUPERSEDES: the lower-case `fils` sentence of 2026-10-25 (Derek), #890, and the 2026-10-25 #752 entry's reading of `Dumas fils`. Derek: "apply the floor to fils too". In the gate the agreed design orders (decisions/vocabulary-model, 2026-10-23 #752), the floor, a name keeping a word to address, is the first step and the form cue the second, so case may settle a generation word against the name only where the floor already holds. A lower-case `fils` in a mixed-case name had been taken with no word to spare, as an acronym's capitals are, so `Dumas fils` read given 'Dumas' with no family name and `Pedro Junior fils` suffix 'Junior fils'. Both now read family 'fils', as master did; `Alexandre Dumas fils` and `Pedro Alves Junior fils` keep the suffix, `Marie Fils` her family name, and after a comma, where a family is already named, lower case still settles it (`Dumas, Alexandre fils` → suffix 'fils'). The same holds after a comma with no name before it, the review of the fix found: `, Dr. fils` and `(Pe), Dr. fils` had read suffix 'fils' with no family, the comma decision taking the lower case where no family is named, and read family 'fils' now, as master did; and its second review found the head's name-word count too generous for this, a joined salutation (`Mr. and Mrs., fils`) and a lone name word behind a given-name title (`Sir Alexandre, fils`) counting one where no family remains, so at the first slot after a comma a generation word's lower case adds nothing to rules/C4's count, which reads two name words before the comma first: `Dumas, fils` reads given 'fils', family 'Dumas', as master did, and `Alexandre Dumas, fils` suffix 'fils'. An acronym keeps its capitals' lean with no word to spare (rules/S6, `Jack MA`); an agnomen has no case to weigh, so no other gated word changes. Measured with `--base` against master 225f3d6f: no corpus name moves against the commit before.
- 2026-10-27 #843 — THE AGNOMENS' ABBREVIATIONS ARE SPELLINGS OF THE AGNOMEN. Brazilian donors' filings (tse-donors) abbreviate the agnomen where the registry spells it, and #843's last comment counted the filed/registry pairs identical but for that last word (2026-10-25): FILHO as FH 230, FO 99, FILH 17, F 15, FIL 10; NETO as NT 122, NET 12, N 6; SOBRINHO as SOBR 19, SB 11, SOB 4. After #890 the registry's agnomen read as the suffix and the filed abbreviation as the family name, so each such pair read apart. Each abbreviation is now an `agnomen` reading `same_as` its word in `pt-BR.toml`, with a `family` reading (dated counts where `tools/name_usage.py` found bearers, `fo` US Census 238 and `net` 118; a declared one otherwise, as `filha` has), so S11's count gates it exactly as it gates the word. Measured with `tools/differential/measure.py --base` against master 6ae585f3: tse-donors moves 1,555 names (fh 801, nt 492, fo 166, sobr 51, filh 21, net 17, sob 7), and 1,481 filed/registry pairs now read alike, none apart; PSC has no move; elsewhere 6 names move fields, five of them no person's name (an organization's acronym after a particle in four JRC-Names spellings, and an FEC committee name) and one an FEC person's name in surname, given-name order ending in NET, which moves from middle to suffix as `Smith, John NET` does, a cost accepted with S11's (rules/S5 reads the given part's last word by its writing); 17 more gain a report. The words also move the comma shapes, which is what a credential reading of `nt` (13 NPPES providers) would want: `John Smith, NT` read given 'NT', family 'John Smith' on master and reads suffix 'NT' now, and `Smith, John NT` and `Smith, John NET` move from middle to suffix; `John Smith, NET` was a suffix already. Two were measured and refused on the word, with the reason as an `excluded` entry: `fil`, a Slavic and Polish surname (US Census 220), which took two UK PSC filers' surname Fil to the suffix, one a regression, against 11 tse moves; and `sb`, also the S.B. degree that 23 ClinicalTrials.gov officials write, which `capitalized(force=True)` recased to `Sb` and which would read as Sobrinho's spelling. The single letters `F` and `N` are not listed: written exactly as an initial is, nothing in the writing tells them apart, so `JOSE SILVA F` keeps family 'F'. `Fº`, the ordinal spelling, appears in no tse-donors pair (filings are in plain capitals), so it was not listed.
- 2026-10-30 #753, phase 3h — `SB` IS SOBRINHO'S SPELLING UNDER A BRAZILIAN PORTUGUESE CHOICE; `F` AND `N` STAY OUT, THE CHOICE INCLUDED. The 2026-10-27 #843 entry left `sb` refused for its collision with the S.B. degree and `F` and `N` as initials, both for a `pt-BR` pack. `sb` is now an agnomen reading `default = false` in pt-BR.toml, gated by the count as `sobrinho` is, with `cased = "SB"`; `locales.PT_BR` turns it on, and it moved 13 tse-donors names beyond what choosing `pt` moves, the registry spelling SOBRINHO in each. `F` and `N`, turned on the same way, read the letter as the agnomen where the registry abbreviated a surname with it about twice as often as where it wrote the agnomen (`F` 104 to 48, `N` 59 to 18, filed/registry pairs, each counted under the first letter the reading took), so each is an `excluded` agnomen with those counts, and `JOSE CARLOS SILVA F` keeps family 'F' under the pack. Accepted: under the pack a written S.B. degree is read as Sobrinho too, so `Howard S. Gordon, MD SB` fills `generation` with `SB` (5 ctgov-officials names). The measurement and recipe are in decisions/vocabulary-model's 2026-10-30 phase 3h entry.
Loading
Loading