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.
@@ -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
+ * Мова: Весь код, коментарі та документація написані українською мовою.