Provide constants in non-Latin scripts (Cyrillic, Greek, Arabic, Hebrew) #269
Description
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-positionperiod_abbreviationfallback; hyphenatedг-нdoesn't.) - Cyrillic conjunctions:
и; Ukrainianі/та(interacts with theinitial-regex question, see Should a bare 'И' parse as an initial or the conjunction 'and'? (e.g. 'Хосе И Мария Сантос') #267) - Cyrillic suffixes:
мл/ст(junior/senior) — needs within-script collision vetting - 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.
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
4 remaining items
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…
Give the conjunctions, bound given names and birth markers their lang…