chyslivnyk 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chyslivnyk-0.1.0/LICENSE +21 -0
- chyslivnyk-0.1.0/PKG-INFO +113 -0
- chyslivnyk-0.1.0/README.md +95 -0
- chyslivnyk-0.1.0/chyslivnyk/__init__.py +978 -0
- chyslivnyk-0.1.0/chyslivnyk.egg-info/PKG-INFO +113 -0
- chyslivnyk-0.1.0/chyslivnyk.egg-info/SOURCES.txt +8 -0
- chyslivnyk-0.1.0/chyslivnyk.egg-info/dependency_links.txt +1 -0
- chyslivnyk-0.1.0/chyslivnyk.egg-info/top_level.txt +2 -0
- chyslivnyk-0.1.0/pyproject.toml +35 -0
- chyslivnyk-0.1.0/setup.cfg +4 -0
chyslivnyk-0.1.0/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 AntonSikidin
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,113 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: chyslivnyk
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary: 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.
|
5
|
+
Author-email: Anton Sikidin <anton.sikidin@gmail.com>
|
6
|
+
Project-URL: Homepage, https://github.com/AntonSikidin/Chyslivnyk
|
7
|
+
Project-URL: Issues, https://github.com/AntonSikidin/Chyslivnyk/issues
|
8
|
+
Keywords: ukrainian,numerals,chyslivnyk
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
10
|
+
Classifier: Operating System :: OS Independent
|
11
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
12
|
+
Classifier: Intended Audience :: Developers
|
13
|
+
Classifier: Natural Language :: Ukrainian
|
14
|
+
Requires-Python: >=3.7
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
License-File: LICENSE
|
17
|
+
Dynamic: license-file
|
18
|
+
|
19
|
+
# Chyslivnyk - Бібліотека для українських числівників
|
20
|
+
|
21
|
+
`Chyslivnyk` - це Python-бібліотека, призначена для конвертації числових значень у їх текстові представлення українською мовою з урахуванням граматичних особливостей (відмінків, родів, чисел).
|
22
|
+
|
23
|
+
Ця бібліотека реалізована у вигляді класу `Chyslivnyk`, що дозволяє інкапсулювати логіку та дані, роблячи код більш структурованим.
|
24
|
+
|
25
|
+
**Важливо:** Ця бібліотека є базовою реалізацією. Відмінювання складних числівників в українській мові має багато нюансів, які можуть бути не повністю охоплені цією версією. Зокрема, повне відмінювання складених кількісних числівників (де всі компоненти змінюються) та складних порядкових числівників (де змінюється лише останній компонент) реалізовано спрощено або вимагає подальшого розширення словників та логіки.
|
26
|
+
|
27
|
+
## Установлення
|
28
|
+
|
29
|
+
|
30
|
+
```bash
|
31
|
+
pip install chyslivnyk
|
32
|
+
```
|
33
|
+
|
34
|
+
# Основне використання
|
35
|
+
|
36
|
+
Спочатку створіть екземпляр класу Chyslivnyk, а потім викликайте його методи. Імпортуйте необхідні константи (вони залишаються на рівні модуля для зручності):
|
37
|
+
```Python
|
38
|
+
from chyslivnyk import (
|
39
|
+
Chyslivnyk, # Імпортуємо клас
|
40
|
+
CASE_NOMINATIVE, CASE_GENITIVE, CASE_DATIVE, CASE_ACCUSATIVE, CASE_INSTRUMENTAL, CASE_LOCATIVE,
|
41
|
+
GENDER_MASCULINE, GENDER_FEMININE, GENDER_NEUTER, NUMBER_PLURAL
|
42
|
+
)
|
43
|
+
|
44
|
+
# Створіть екземпляр класу
|
45
|
+
numerals_converter = Chyslivnyk()
|
46
|
+
```
|
47
|
+
|
48
|
+
# 1. Кількісні числівники (цілі)
|
49
|
+
Використовуйте метод Chyslivnyk.get_cardinal().
|
50
|
+
|
51
|
+
```Python
|
52
|
+
# Називний відмінок
|
53
|
+
print(numerals_converter.get_cardinal(1)) # --> "один"
|
54
|
+
print(numerals_converter.get_cardinal(1, gender=GENDER_FEMININE)) # --> "одна"
|
55
|
+
print(numerals_converter.get_cardinal(5)) # --> "п'ять"
|
56
|
+
print(numerals_converter.get_cardinal(25)) # --> "двадцять п'ять"
|
57
|
+
print(numerals_converter.get_cardinal(101)) # --> "сто один"
|
58
|
+
print(numerals_converter.get_cardinal(200)) # --> "двісті"
|
59
|
+
print(numerals_converter.get_cardinal(1000)) # --> "тисяча"
|
60
|
+
print(numerals_converter.get_cardinal(2000)) # --> "дві тисячі"
|
61
|
+
print(numerals_converter.get_cardinal(12345678)) # --> "дванадцять мільйонів триста сорок п'ять тисяч шістсот сімдесят вісім"
|
62
|
+
|
63
|
+
# З родовим відмінком
|
64
|
+
print(numerals_converter.get_cardinal(25, case=CASE_GENITIVE)) # --> "двадцяти п'яти"
|
65
|
+
print(numerals_converter.get_cardinal(1, case=CASE_GENITIVE, gender=GENDER_FEMININE)) # --> "однієї"
|
66
|
+
print(numerals_converter.get_cardinal(40, case=CASE_INSTRUMENTAL)) # --> "сорока"
|
67
|
+
print(numerals_converter.get_cardinal(700, case=CASE_DATIVE)) # --> "семистам"
|
68
|
+
```
|
69
|
+
|
70
|
+
# 2. Збірні числівники
|
71
|
+
Використовуйте метод numerals_converter.get_collective(). Підтримує числа від 2 до 10.
|
72
|
+
```Python
|
73
|
+
print(numerals_converter.get_collective(2)) # --> "двоє"
|
74
|
+
print(numerals_converter.get_collective(5, case=CASE_GENITIVE)) # --> "п'ятьох"
|
75
|
+
print(numerals_converter.get_collective(7, case=CASE_INSTRUMENTAL)) # --> "сімома"
|
76
|
+
```
|
77
|
+
|
78
|
+
# 3. Дробові числівники
|
79
|
+
Використовуйте метод numerals_converter.get_fractional() для чисельника та знаменника, або numerals_converter.get_decimal_fractional() для десяткових дробів.
|
80
|
+
```Python
|
81
|
+
# З чисельником і знаменником
|
82
|
+
print(numerals_converter.get_fractional(1, 2)) # --> "одна друга"
|
83
|
+
print(numerals_converter.get_fractional(3, 4, case=CASE_DATIVE)) # --> "трьом четвертим"
|
84
|
+
print(numerals_converter.get_fractional(2, 5, case=CASE_GENITIVE)) # --> "двох п'ятих"
|
85
|
+
|
86
|
+
# З десятковим дробом
|
87
|
+
print(numerals_converter.get_decimal_fractional(0.5)) # --> "нуль цілих одна друга"
|
88
|
+
print(numerals_converter.get_decimal_fractional(3.14)) # --> "три цілих чотирнадцять сотих"
|
89
|
+
print(numerals_converter.get_decimal_fractional(1.25, case=CASE_INSTRUMENTAL)) # --> "однією цілою двадцятьма п'ятьма сотими"
|
90
|
+
```
|
91
|
+
|
92
|
+
# 4. Порядкові числівники
|
93
|
+
Використовуйте метод numerals_converter.get_ordinal().
|
94
|
+
```Python
|
95
|
+
print(numerals_converter.get_ordinal(1)) # --> "перший"
|
96
|
+
print(numerals_converter.get_ordinal(1, gender=GENDER_FEMININE)) # --> "перша"
|
97
|
+
print(numerals_converter.get_ordinal(5, case=CASE_GENITIVE)) # --> "п'ятого"
|
98
|
+
print(numerals_converter.get_ordinal(7, gender=GENDER_NEUTER, case=CASE_INSTRUMENTAL)) # --> "сьомим"
|
99
|
+
print(numerals_converter.get_ordinal(21)) # --> "двадцять перший"
|
100
|
+
print(numerals_converter.get_ordinal(21, gender=GENDER_FEMININE, case=CASE_DATIVE)) # --> "двадцять першій"
|
101
|
+
print(numerals_converter.get_ordinal(100)) # --> "сотий"
|
102
|
+
print(numerals_converter.get_ordinal(101)) # --> "сто перший"
|
103
|
+
print(numerals_converter.get_ordinal(121)) # --> "сто двадцять перший"
|
104
|
+
print(numerals_converter.get_ordinal(1000, gender=GENDER_FEMININE)) # --> "тисячна"
|
105
|
+
print(numerals_converter.get_ordinal(1000, number_type=NUMBER_PLURAL)) # --> "тисячні"а"
|
106
|
+
```
|
107
|
+
|
108
|
+
## Особливості реалізації
|
109
|
+
* Клас Chyslivnyk: Вся логіка та дані інкапсульовані в одному класі.
|
110
|
+
* Обробка винятків: Методи викликають TypeError для некоректних типів вхідних даних та ValueError для недійсних граматичних параметрів або чисел поза підтримуваним діапазоном.
|
111
|
+
* Словники відмінювання: Використовуються внутрішні словники (тепер атрибути класу) для зберігання форм числівників у різних відмінках та родах. Це робить код більш читабельним та легким для розширення.
|
112
|
+
* Обмеження: Через складність української граматики, деякі аспекти (наприклад, повне відмінювання всіх складових частин дуже великих чисел або складених порядкових числівників типу "сто двадцять перший") реалізовано спрощено. Для повної академічної точності може знадобитися значне розширення словників та логіки.
|
113
|
+
* Мова: Весь код, коментарі та документація написані українською мовою.
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# Chyslivnyk - Бібліотека для українських числівників
|
2
|
+
|
3
|
+
`Chyslivnyk` - це Python-бібліотека, призначена для конвертації числових значень у їх текстові представлення українською мовою з урахуванням граматичних особливостей (відмінків, родів, чисел).
|
4
|
+
|
5
|
+
Ця бібліотека реалізована у вигляді класу `Chyslivnyk`, що дозволяє інкапсулювати логіку та дані, роблячи код більш структурованим.
|
6
|
+
|
7
|
+
**Важливо:** Ця бібліотека є базовою реалізацією. Відмінювання складних числівників в українській мові має багато нюансів, які можуть бути не повністю охоплені цією версією. Зокрема, повне відмінювання складених кількісних числівників (де всі компоненти змінюються) та складних порядкових числівників (де змінюється лише останній компонент) реалізовано спрощено або вимагає подальшого розширення словників та логіки.
|
8
|
+
|
9
|
+
## Установлення
|
10
|
+
|
11
|
+
|
12
|
+
```bash
|
13
|
+
pip install chyslivnyk
|
14
|
+
```
|
15
|
+
|
16
|
+
# Основне використання
|
17
|
+
|
18
|
+
Спочатку створіть екземпляр класу Chyslivnyk, а потім викликайте його методи. Імпортуйте необхідні константи (вони залишаються на рівні модуля для зручності):
|
19
|
+
```Python
|
20
|
+
from chyslivnyk import (
|
21
|
+
Chyslivnyk, # Імпортуємо клас
|
22
|
+
CASE_NOMINATIVE, CASE_GENITIVE, CASE_DATIVE, CASE_ACCUSATIVE, CASE_INSTRUMENTAL, CASE_LOCATIVE,
|
23
|
+
GENDER_MASCULINE, GENDER_FEMININE, GENDER_NEUTER, NUMBER_PLURAL
|
24
|
+
)
|
25
|
+
|
26
|
+
# Створіть екземпляр класу
|
27
|
+
numerals_converter = Chyslivnyk()
|
28
|
+
```
|
29
|
+
|
30
|
+
# 1. Кількісні числівники (цілі)
|
31
|
+
Використовуйте метод Chyslivnyk.get_cardinal().
|
32
|
+
|
33
|
+
```Python
|
34
|
+
# Називний відмінок
|
35
|
+
print(numerals_converter.get_cardinal(1)) # --> "один"
|
36
|
+
print(numerals_converter.get_cardinal(1, gender=GENDER_FEMININE)) # --> "одна"
|
37
|
+
print(numerals_converter.get_cardinal(5)) # --> "п'ять"
|
38
|
+
print(numerals_converter.get_cardinal(25)) # --> "двадцять п'ять"
|
39
|
+
print(numerals_converter.get_cardinal(101)) # --> "сто один"
|
40
|
+
print(numerals_converter.get_cardinal(200)) # --> "двісті"
|
41
|
+
print(numerals_converter.get_cardinal(1000)) # --> "тисяча"
|
42
|
+
print(numerals_converter.get_cardinal(2000)) # --> "дві тисячі"
|
43
|
+
print(numerals_converter.get_cardinal(12345678)) # --> "дванадцять мільйонів триста сорок п'ять тисяч шістсот сімдесят вісім"
|
44
|
+
|
45
|
+
# З родовим відмінком
|
46
|
+
print(numerals_converter.get_cardinal(25, case=CASE_GENITIVE)) # --> "двадцяти п'яти"
|
47
|
+
print(numerals_converter.get_cardinal(1, case=CASE_GENITIVE, gender=GENDER_FEMININE)) # --> "однієї"
|
48
|
+
print(numerals_converter.get_cardinal(40, case=CASE_INSTRUMENTAL)) # --> "сорока"
|
49
|
+
print(numerals_converter.get_cardinal(700, case=CASE_DATIVE)) # --> "семистам"
|
50
|
+
```
|
51
|
+
|
52
|
+
# 2. Збірні числівники
|
53
|
+
Використовуйте метод numerals_converter.get_collective(). Підтримує числа від 2 до 10.
|
54
|
+
```Python
|
55
|
+
print(numerals_converter.get_collective(2)) # --> "двоє"
|
56
|
+
print(numerals_converter.get_collective(5, case=CASE_GENITIVE)) # --> "п'ятьох"
|
57
|
+
print(numerals_converter.get_collective(7, case=CASE_INSTRUMENTAL)) # --> "сімома"
|
58
|
+
```
|
59
|
+
|
60
|
+
# 3. Дробові числівники
|
61
|
+
Використовуйте метод numerals_converter.get_fractional() для чисельника та знаменника, або numerals_converter.get_decimal_fractional() для десяткових дробів.
|
62
|
+
```Python
|
63
|
+
# З чисельником і знаменником
|
64
|
+
print(numerals_converter.get_fractional(1, 2)) # --> "одна друга"
|
65
|
+
print(numerals_converter.get_fractional(3, 4, case=CASE_DATIVE)) # --> "трьом четвертим"
|
66
|
+
print(numerals_converter.get_fractional(2, 5, case=CASE_GENITIVE)) # --> "двох п'ятих"
|
67
|
+
|
68
|
+
# З десятковим дробом
|
69
|
+
print(numerals_converter.get_decimal_fractional(0.5)) # --> "нуль цілих одна друга"
|
70
|
+
print(numerals_converter.get_decimal_fractional(3.14)) # --> "три цілих чотирнадцять сотих"
|
71
|
+
print(numerals_converter.get_decimal_fractional(1.25, case=CASE_INSTRUMENTAL)) # --> "однією цілою двадцятьма п'ятьма сотими"
|
72
|
+
```
|
73
|
+
|
74
|
+
# 4. Порядкові числівники
|
75
|
+
Використовуйте метод numerals_converter.get_ordinal().
|
76
|
+
```Python
|
77
|
+
print(numerals_converter.get_ordinal(1)) # --> "перший"
|
78
|
+
print(numerals_converter.get_ordinal(1, gender=GENDER_FEMININE)) # --> "перша"
|
79
|
+
print(numerals_converter.get_ordinal(5, case=CASE_GENITIVE)) # --> "п'ятого"
|
80
|
+
print(numerals_converter.get_ordinal(7, gender=GENDER_NEUTER, case=CASE_INSTRUMENTAL)) # --> "сьомим"
|
81
|
+
print(numerals_converter.get_ordinal(21)) # --> "двадцять перший"
|
82
|
+
print(numerals_converter.get_ordinal(21, gender=GENDER_FEMININE, case=CASE_DATIVE)) # --> "двадцять першій"
|
83
|
+
print(numerals_converter.get_ordinal(100)) # --> "сотий"
|
84
|
+
print(numerals_converter.get_ordinal(101)) # --> "сто перший"
|
85
|
+
print(numerals_converter.get_ordinal(121)) # --> "сто двадцять перший"
|
86
|
+
print(numerals_converter.get_ordinal(1000, gender=GENDER_FEMININE)) # --> "тисячна"
|
87
|
+
print(numerals_converter.get_ordinal(1000, number_type=NUMBER_PLURAL)) # --> "тисячні"а"
|
88
|
+
```
|
89
|
+
|
90
|
+
## Особливості реалізації
|
91
|
+
* Клас Chyslivnyk: Вся логіка та дані інкапсульовані в одному класі.
|
92
|
+
* Обробка винятків: Методи викликають TypeError для некоректних типів вхідних даних та ValueError для недійсних граматичних параметрів або чисел поза підтримуваним діапазоном.
|
93
|
+
* Словники відмінювання: Використовуються внутрішні словники (тепер атрибути класу) для зберігання форм числівників у різних відмінках та родах. Це робить код більш читабельним та легким для розширення.
|
94
|
+
* Обмеження: Через складність української граматики, деякі аспекти (наприклад, повне відмінювання всіх складових частин дуже великих чисел або складених порядкових числівників типу "сто двадцять перший") реалізовано спрощено. Для повної академічної точності може знадобитися значне розширення словників та логіки.
|
95
|
+
* Мова: Весь код, коментарі та документація написані українською мовою.
|