You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Provide constants in non-Latin scripts (Cyrillic, Greek, Arabic, Hebrew) #269
The parsing machinery is fully Unicode-clean — \w, .lower(), and the piece logic all handle non-Latin scripts — but the constant sets (titles, prefixes, conjunctions, suffixes) are almost entirely Latin-script. Verified on v1.3.0 that runtime additions work end-to-end with no code changes, e.g.:
>>>C=Constants()
>>>C.titles.add('г-н')
>>>C.prefixes.add('بن')
>>>HumanName("г-н Иван Петров", constants=C).title'г-н'>>>HumanName("محمد بن سلمان", constants=C).last'بن سلمان'
Unlike Latin transliterations (which collide across cultures and need opt-in flags), native-script constants cannot collide with Latin-script names, so they are viable as defaults. Only within-script ambiguity needs vetting.
Candidates:
Cyrillic titles:г-н, г-жа, д-р, проф, акад; Ukrainian пан, пані. (Abbreviated forms like проф. currently work only by accident via the leading-position period_abbreviation fallback; hyphenated г-н doesn't.)
Greek: titles κ, κα, κος, δρ, καθ; conjunction και
Arabic script prefixes:بن (bin), بنت (bint), ابن (ibn), أبو/ابو (abu), آل (Āl); title الشيخ. Excluded: standalone ال (normally attached, too ambiguous), conjunction و (attaches without a space)
Hebrew prefixes:בן (ben), בת (bat); title מר. Titles containing geresh/gershayim (ד"ר, גב') need testing against the nickname-extraction regexes first.
Out of scope: CJK (family-first order and unspaced segmentation — see #83), Cyrillic patronymic suffixes (already covered by the 1.3.0 regexes).
Coverage should be parsing-behavior tests per script, not assertions on set contents. Related: #265, #266.
Shipped in the 2.0 branch (PR #288): Cyrillic, Greek, Arabic, and Hebrew titles, conjunctions, and name particles from this issue's candidate lists are now in the default lexicon. Deferred pending further vetting: the Cyrillic мл/ст suffixes (the collision concern raised above) and the bare Greek κ title, which collides with the "Κ. Παπαδόπουλος" initial+surname shape (κα/κος/δρ/καθ shipped). The Hebrew geresh/gershayim titles shipped in both ASCII-quote and typographic-Unicode spellings — mid-word quotes turn out to be inert in the 2.0 delimiter extraction.
Activity
Add non-Latin default vocabulary (#269): Cyrillic, Greek, Arabic, Hebrew
Drop bare Greek κ and tighten the #269 allowlist rule
Make the SetManager doctest reprs addition-proof
derek73 commentedon Jul 18, 2026
Shipped in the 2.0 branch (PR #288): Cyrillic, Greek, Arabic, and Hebrew titles, conjunctions, and name particles from this issue's candidate lists are now in the default lexicon. Deferred pending further vetting: the Cyrillic
мл/стsuffixes (the collision concern raised above) and the bare Greekκtitle, which collides with the "Κ. Παπαδόπουλος" initial+surname shape (κα/κος/δρ/καθ shipped). The Hebrew geresh/gershayim titles shipped in both ASCII-quote and typographic-Unicode spellings — mid-word quotes turn out to be inert in the 2.0 delimiter extraction.test: give the non-interference gate teeth; close locale coverage gaps
docs: comment accuracy pass from the locale review
feat: Arabic-script bound given names (#269 follow-up)
feat: Arabic honorific titles and the conjunction و (#269 follow-up)
feat: Hebrew honorifics + post-nominals, Devanagari titles (#269 foll…
docs: move stranded recipes out of the release log
Add a second differential corpus harvested from the issue tracker
Fix three defects found reviewing this branch's own review fixes
3 remaining items
Close the respelling hatch, and widening spelled outside the class
Bound every rule by the corpus it claims, not by its category
Rename the particle vocabulary to the 2.0 terminology (#293)
Rename FIRST_NAME_TITLES to GIVEN_NAME_TITLES (#293)
feat(vocab): add "abd", and let a dual-membership word join
feat(vocab): add "abd", and let a dual-membership word join
feat(vocab): add "abd", and let a dual-membership word join
Add the Ukrainian conjunction й (derek73#267 comment, derek73#269 fol…
docs(particles): evidence records for the never-given members
Move mc and ste to never-given, add the Spanish/Portuguese articles (d…
fix(derek73#383/derek73#479): a single-letter connective joins only o…
docs(design)+tooling(differential): rebuild the derek73#495 decline o…
feat(titles): Devanagari honorifics
docs(design+release): Indic honorific vocabulary, recorded
Add a CLDR person-name corpus and an agreement ratchet against its st…