Skip to content

Read Никитич and Саввич as patronymics under locales.RU (#994) - #996

Merged
derek73 merged 1 commit into
masterfrom
fix/issue-994-nikitich-savvich
Nov 3, 2026
Merged

derek73 merged 1 commit into
masterfrom
fix/issue-994-nikitich-savvich

Conversation

@derek73

@derek73 derek73 commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Closes #994.

Никитич and Саввич are the masculine patronymics of Никита and Савва. They fit neither -ович nor -евич, so rules/O1 (the East Slavic rotation) never fired on them:

>>> parser_for(locales.RU).parse("Петров Иван Никитич")
# before (2.0.0 through 2.8.0, and master): family 'Никитич', given 'Петров', middle 'Иван'
# after:                                     family 'Петров',  given 'Иван',   middle 'Никитич'

Both join the irregular forms listed whole beside ильич and кузьмич, in Cyrillic (никитич|саввич) and Latin (nikitich|savvich). The pattern has three copies, and all three are changed: _pipeline/_vocab.py, config/regexes.py (the two held together by test_regex_sync.py), and locales/ru.py's DEVIATES predicate, which the non-interference gate reads. The feminines (Никитична, Саввична) already matched -ична.

Tests. Four _ROTATORS["ru"] rows (one per new alternation branch), the two words in both regex-collision tests, and a parse test in tests/test_east_slavic_patronymic_order.py. Negative control: against the pre-fix patterns, 7 of the new or extended tests fail.

Measurement. Scoring against datacoon/russiannames' 61,466 labelled Cyrillic names found the gap; that project's patronymic list gives Никитич a count of 1,225 and Саввич 160. snapshot.py reports no moves, since the snapshot parses the default policy, which this change doesn't reach. The release-log baseline (2.0.0 and 2.8.0 read family 'Никитич') was checked against the PyPI wheels.

Docs. A dated entry in decisions/O1 (with Кузмич excluded), and a release-log bullet. rules/O1 says "patronymic ending" without listing forms, so it needs no amendment. The surname-plus-initials gap found alongside this is #995 and is not touched here.

🤖 Generated with Claude Code

The masculine patronymics of Никита and Савва fit neither -ович nor
-евич, so `Петров Иван Никитич` under locales.RU read family 'Никитич'.
Both join the irregular forms listed whole beside Ильич and Кузьмич, in
Cyrillic and Latin, in all three copies of the pattern (_vocab, the
config regexes and the RU pack's declared-deviation predicate). Their
feminines already matched -ична.

Closes #994

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73 derek73 added bug vocabulary Per-word vocabulary model and language packs labels Nov 2, 2026
@derek73 derek73 self-assigned this Nov 2, 2026
@derek73 derek73 added this to the 3.0 milestone Nov 3, 2026
@derek73
derek73 merged commit ebb61dc into master Nov 3, 2026
13 checks passed
@derek73
derek73 deleted the fix/issue-994-nikitich-savvich branch November 3, 2026 00:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug vocabulary Per-word vocabulary model and language packs

Projects

None yet

1 participant