A Python library for handling Ukrainian numerals (chyslivnyky) designed to convert numeric values into their textual representations in Ukrainian, taking into account grammatical features such as case, gender, and number.
Project description
Chyslivnyk - Бібліотека для українських числівників
Chyslivnyk - це Python-бібліотека, призначена для конвертації числових значень у їх текстові представлення українською мовою з урахуванням граматичних особливостей (відмінків, родів, чисел).
Ця бібліотека реалізована у вигляді класу Chyslivnyk, що дозволяє інкапсулювати логіку та дані, роблячи код більш структурованим.
Важливо: Ця бібліотека є базовою реалізацією. Відмінювання складних числівників в українській мові має багато нюансів, які можуть бути не повністю охоплені цією версією. Зокрема, повне відмінювання складених кількісних числівників (де всі компоненти змінюються) та складних порядкових числівників (де змінюється лише останній компонент) реалізовано спрощено або вимагає подальшого розширення словників та логіки.
Установлення
pip install chyslivnyk
Основне використання
Спочатку створіть екземпляр класу Chyslivnyk, а потім викликайте його методи. Імпортуйте необхідні константи (вони залишаються на рівні модуля для зручності):
from chyslivnyk import (
Chyslivnyk, # Імпортуємо клас
CASE_NOMINATIVE, CASE_GENITIVE, CASE_DATIVE, CASE_ACCUSATIVE, CASE_INSTRUMENTAL, CASE_LOCATIVE,
GENDER_MASCULINE, GENDER_FEMININE, GENDER_NEUTER, NUMBER_PLURAL
)
# Створіть екземпляр класу
numerals_converter = Chyslivnyk()
1. Кількісні числівники (цілі)
Використовуйте метод Chyslivnyk.get_cardinal().
# Називний відмінок
print(numerals_converter.get_cardinal(1)) # --> "один"
print(numerals_converter.get_cardinal(1, gender=GENDER_FEMININE)) # --> "одна"
print(numerals_converter.get_cardinal(5)) # --> "п'ять"
print(numerals_converter.get_cardinal(25)) # --> "двадцять п'ять"
print(numerals_converter.get_cardinal(101)) # --> "сто один"
print(numerals_converter.get_cardinal(200)) # --> "двісті"
print(numerals_converter.get_cardinal(1000)) # --> "тисяча"
print(numerals_converter.get_cardinal(2000)) # --> "дві тисячі"
print(numerals_converter.get_cardinal(12345678)) # --> "дванадцять мільйонів триста сорок п'ять тисяч шістсот сімдесят вісім"
# З родовим відмінком
print(numerals_converter.get_cardinal(25, case=CASE_GENITIVE)) # --> "двадцяти п'яти"
print(numerals_converter.get_cardinal(1, case=CASE_GENITIVE, gender=GENDER_FEMININE)) # --> "однієї"
print(numerals_converter.get_cardinal(40, case=CASE_INSTRUMENTAL)) # --> "сорока"
print(numerals_converter.get_cardinal(700, case=CASE_DATIVE)) # --> "семистам"
2. Збірні числівники
Використовуйте метод numerals_converter.get_collective(). Підтримує числа від 2 до 10.
print(numerals_converter.get_collective(2)) # --> "двоє"
print(numerals_converter.get_collective(5, case=CASE_GENITIVE)) # --> "п'ятьох"
print(numerals_converter.get_collective(7, case=CASE_INSTRUMENTAL)) # --> "сімома"
3. Дробові числівники
Використовуйте метод numerals_converter.get_fractional() для чисельника та знаменника, або numerals_converter.get_decimal_fractional() для десяткових дробів.
# З чисельником і знаменником
print(numerals_converter.get_fractional(1, 2)) # --> "одна друга"
print(numerals_converter.get_fractional(3, 4, case=CASE_DATIVE)) # --> "трьом четвертим"
print(numerals_converter.get_fractional(2, 5, case=CASE_GENITIVE)) # --> "двох п'ятих"
# З десятковим дробом
print(numerals_converter.get_decimal_fractional(0.5)) # --> "нуль цілих одна друга"
print(numerals_converter.get_decimal_fractional(3.14)) # --> "три цілих чотирнадцять сотих"
print(numerals_converter.get_decimal_fractional(1.25, case=CASE_INSTRUMENTAL)) # --> "однією цілою двадцятьма п'ятьма сотими"
4. Порядкові числівники
Використовуйте метод numerals_converter.get_ordinal().
print(numerals_converter.get_ordinal(1)) # --> "перший"
print(numerals_converter.get_ordinal(1, gender=GENDER_FEMININE)) # --> "перша"
print(numerals_converter.get_ordinal(5, case=CASE_GENITIVE)) # --> "п'ятого"
print(numerals_converter.get_ordinal(7, gender=GENDER_NEUTER, case=CASE_INSTRUMENTAL)) # --> "сьомим"
print(numerals_converter.get_ordinal(21)) # --> "двадцять перший"
print(numerals_converter.get_ordinal(21, gender=GENDER_FEMININE, case=CASE_DATIVE)) # --> "двадцять першій"
print(numerals_converter.get_ordinal(100)) # --> "сотий"
print(numerals_converter.get_ordinal(101)) # --> "сто перший"
print(numerals_converter.get_ordinal(121)) # --> "сто двадцять перший"
print(numerals_converter.get_ordinal(1000, gender=GENDER_FEMININE)) # --> "тисячна"
print(numerals_converter.get_ordinal(1000, number_type=NUMBER_PLURAL)) # --> "тисячні"а"
Особливості реалізації
- Клас Chyslivnyk: Вся логіка та дані інкапсульовані в одному класі.
- Обробка винятків: Методи викликають TypeError для некоректних типів вхідних даних та ValueError для недійсних граматичних параметрів або чисел поза підтримуваним діапазоном.
- Словники відмінювання: Використовуються внутрішні словники (тепер атрибути класу) для зберігання форм числівників у різних відмінках та родах. Це робить код більш читабельним та легким для розширення.
- Обмеження: Через складність української граматики, деякі аспекти (наприклад, повне відмінювання всіх складових частин дуже великих чисел або складених порядкових числівників типу "сто двадцять перший") реалізовано спрощено. Для повної академічної точності може знадобитися значне розширення словників та логіки.
- Мова: Весь код, коментарі та документація написані українською мовою.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chyslivnyk-0.1.0.tar.gz.
File metadata
- Download URL: chyslivnyk-0.1.0.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
168249f5d6860be921a871cfdd3057374a041eed63885a07cce8159ce7beacf1
|
|
| MD5 |
1e04f6d7ded90a68e2ce4f4d2494b062
|
|
| BLAKE2b-256 |
d2549d8ae2113959fa8a33452f357d1483d782fd3faff6c3a10f3fff9726e7c8
|
File details
Details for the file chyslivnyk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chyslivnyk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed27f32464913c3d5adc8d68136be3bb53fdac06c95d7bbbad81556dee7deb62
|
|
| MD5 |
3b161070b42aa6ba31ced2beb5c749d7
|
|
| BLAKE2b-256 |
1a1b47436793db45f0a798b74f0ef612842adf85ac8631c23006b69086756e01
|