Skip to content

Genitive впродовж/упродовж; locative hour after о/об - #8

Merged
egorsmkv merged 5 commits into
ThirdLetterC:mainfrom
Dzenik:fix-vprodovzh-genitive
Sep 16, 2026
Merged

egorsmkv merged 5 commits into
ThirdLetterC:mainfrom
Dzenik:fix-vprodovzh-genitive

Conversation

@Dzenik

@Dzenik Dzenik commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor
  1. «Впродовж» / «упродовж» керують родовим відмінком, як «протягом», але були відсутні в prep_case, case_prep_re і counted_genitive_re, тому число лишалось у називному.

До: «Впродовж 15 хвилин» → «Впродовж п'ятнадцять хвилин»
Після: «Впродовж 15 хвилин» → «Впродовж п'ятнадцяти хвилин»

Також додано до патерну bare_cyrillic_century_before_start («Впродовж XVIII та початку …»).

  1. Час після «о» / «об» тепер у місцевому відмінку: normalize_time ігнорував прийменник і завжди давав називний.

До: «о 10:30» → «о десять годин тридцять хвилин»
Після: «о 10:30» → «о десятій годині тридцять хвилин»

Хвилини/секунди без змін; без «о» лишається називний; «00:00» — «опівночі».

@Dzenik Dzenik changed the title Handle впродовж/упродовж as genitive prepositions Genitive впродовж/упродовж; locative hour after о/об Sep 16, 2026
@egorsmkv

Copy link
Copy Markdown
Contributor

Це драфт?

@Dzenik
Dzenik force-pushed the fix-vprodovzh-genitive branch from 5e4775a to 07c9d7c Compare September 16, 2026 12:09
@Dzenik

Dzenik commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Ні, це не драфт — PR готовий до рев'ю.

Щойно перебазував гілку на актуальний main і розв'язав конфлікт (після розбиття passes_numeric.cpp на модулі) — обидва фікси перенесено на нову структуру файлів:

  1. впродовж / упродовж → родовий відмінок, як протягом (passes_numeric_context.cpp, internal.cpp, passes_numeric_ranges.cpp);
  2. година після о / об → місцевий відмінок («о десятій годині тридцять хвилин», passes_numeric_units.cpp).

Перевірено локально (Clang 22, Python 3.14): python_binding_tests.py — 19/20, єдина помилка — pre-existing regex_error на бектіках, не пов'язана з цими змінами.

@egorsmkv

Copy link
Copy Markdown
Contributor

Ок. Тоді додай ще зміни в файл changelog та апни версію.

@Dzenik

Dzenik commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Додав третім комітом: секція [0.4.7] в CHANGELOG.md з описом обох фіксів і бамп версії 0.4.6 → 0.4.7 у pyproject.toml, CMakeLists.txt, uv.lock та прикладі тега в README.md (за вашим патерном бампів).

Зібрано й перевірено локально як normalize-uk 0.4.7 — обидва кейси поводяться як описано в PR.

@egorsmkv

Copy link
Copy Markdown
Contributor

@Dzenik треба і тести оновити щоб не падали

https://github.com/ThirdLetterC/normalize_uk-cpp/actions/runs/35097826704/job/104810337048?pr=8

@Dzenik

Dzenik commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Тести оновлено новим комітом:

  • uktextnorm_sentence_golden.tsv: о 06:05:09 → «о шостій годині …», О 10:30 PM → «О десятій годині … вечора»;
  • uktextnorm_tests.cpp: оновлено очікування Зустріч о 06:06, додано кейси на впродовж / упродовж і місцевий відмінок після о;
  • python_binding_tests.py: додано Зустріч о 10:30 і Впродовж 15 хвилин.
    Заодно поширив локалізацію на am_pm («О 10:30 PM»), щоб правило для о діяло однаково.

Локально перевірено (Clang 22): sentence_tests зелені, Python-біндинги 19/20 (єдина помилка — pre-existing regex_error на бектіках, відтворюється і без моїх змін). Зауважу: на моїй машині uktextnorm_tests падає з 0xC0000409, коли stdout перехоплено (ctest/pipe), але чистий main там падає так само — це специфіка середовища (LLVM 22 + VS2026 STL, 1MB стек), не цього PR. На CI (main зелений) такого нема, тож дивіться статус CI тут.

@egorsmkv

Copy link
Copy Markdown
Contributor

Знову падають

@Dzenik

Dzenik commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Подивився логи CI: на всіх платформах падав рівно один кейс — time with seconds («Зустріч о 12:34:56»), який я пропустив при оновленні тестів. Виправив очікування на «о дванадцятій годині …» і запушив. Все інше (включно з ISO-датами, де локатива нема — там інший шлях) — зелене.

@egorsmkv
egorsmkv merged commit bd45dd5 into ThirdLetterC:main Sep 16, 2026
4 checks passed
@egorsmkv

Copy link
Copy Markdown
Contributor

Дякую за покращення бібліотеки!

@Dzenik
Dzenik deleted the fix-vprodovzh-genitive branch September 16, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants