rupython 1.2.3__py3-none-any.whl → 1.2.5__py3-none-any.whl
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.
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/241/342/225/250/320/244.py +17 -5
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/244/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/226/221/342/225/250/320/242/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/235/342/225/244/320/237.py +90 -15
- {rupython-1.2.3.dist-info → rupython-1.2.5.dist-info}/METADATA +5 -1
- {rupython-1.2.3.dist-info → rupython-1.2.5.dist-info}/RECORD +7 -7
- {rupython-1.2.3.dist-info → rupython-1.2.5.dist-info}/LICENSE +0 -0
- {rupython-1.2.3.dist-info → rupython-1.2.5.dist-info}/WHEEL +0 -0
- {rupython-1.2.3.dist-info → rupython-1.2.5.dist-info}/top_level.txt +0 -0
@@ -3,12 +3,21 @@ import re as РегВыр
|
|
3
3
|
|
4
4
|
Ошибка = sqlite3.Error
|
5
5
|
|
6
|
+
Успешно = sqlite3.SQLITE_OK # Успешное выполнение
|
7
|
+
Отказ = sqlite3.SQLITE_DENY # Отказ в операции
|
8
|
+
Пропустить = sqlite3.SQLITE_IGNORE # Игнорирование операции
|
9
|
+
Занято = sqlite3.SQLITE_BUSY # База данных занята
|
10
|
+
Заблоковано = sqlite3.SQLITE_LOCKED # База или таблица заблокирована
|
11
|
+
Переполнено = sqlite3.SQLITE_FULL # Диск или база переполнены
|
12
|
+
|
13
|
+
# Уровни изоляции транзакций
|
14
|
+
Отложенно = "DEFERRED"
|
15
|
+
Немедленно = "IMMEDIATE"
|
16
|
+
Исключительно = "EXCLUSIVE"
|
17
|
+
|
6
18
|
Разбор_объявленных_типов = sqlite3.PARSE_DECLTYPES
|
7
19
|
Разбор_названий_столбцов = sqlite3.PARSE_COLNAMES
|
8
|
-
|
9
|
-
Отказ = sqlite3.SQLITE_DENY
|
10
|
-
Игнорировать = sqlite3.SQLITE_IGNORE
|
11
|
-
Уровень_интерфейса_взаимодействия = sqlite3.apilevel
|
20
|
+
|
12
21
|
Стиль_параметров = sqlite3.paramstyle
|
13
22
|
Потокобезопасность = sqlite3.threadsafety
|
14
23
|
|
@@ -20,8 +29,9 @@ import re as РегВыр
|
|
20
29
|
'ОТЛОЖЕННО': 'DEFERRED',
|
21
30
|
'НЕМЕДЛЕННО': 'IMMEDIATE',
|
22
31
|
'ИСКЛЮЧИТЕЛЬНО': 'EXCLUSIVE',
|
23
|
-
'ОТКАТИТЬ': 'ROLLBACK',
|
32
|
+
'ОТКАТИТЬ': 'ROLLBACK TRANSACTION',
|
24
33
|
'ТОЧКА_СОХРАНЕНИЯ': 'SAVEPOINT',
|
34
|
+
'ОСВОБОДИТЬ': 'RELEASE SAVEPOINT',
|
25
35
|
'НАСТРОИТЬ': 'PRAGMA',
|
26
36
|
|
27
37
|
'ВЫБРАТЬ': 'SELECT',
|
@@ -47,6 +57,7 @@ import re as РегВыр
|
|
47
57
|
'ПО ПРАВОЙ': 'RIGHT',
|
48
58
|
'ПОЛНОСТЬЮ': 'FULL',
|
49
59
|
'ПО': 'ON',
|
60
|
+
'К': 'TO',
|
50
61
|
'ПЕРЕКРЁСТНО': 'CROSS',
|
51
62
|
'ИСПОЛЬЗУЯ': 'USING',
|
52
63
|
|
@@ -80,6 +91,7 @@ import re as РегВыр
|
|
80
91
|
'ПРЕДСТАВЛЕНИЕ': 'VIEW',
|
81
92
|
'СТОЛБЕЦ': 'COLUMN',
|
82
93
|
'СТРОГО': 'STRICT',
|
94
|
+
'ПЕРЕИМЕНОВАТЬ В': 'RENAME TO',
|
83
95
|
|
84
96
|
'ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NULL',
|
85
97
|
'НЕ ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NOT NULL',
|
@@ -31,6 +31,28 @@ from rupython import __Общие_функции__
|
|
31
31
|
'минут': 'minutes', 'часов': 'hours', 'недель': 'weeks'
|
32
32
|
}
|
33
33
|
|
34
|
+
Месяцы_родительный = {
|
35
|
+
1: 'января', 2: 'февраля', 3: 'марта', 4: 'апреля',
|
36
|
+
5: 'мая', 6: 'июня', 7: 'июля', 8: 'августа',
|
37
|
+
9: 'сентября', 10: 'октября', 11: 'ноября', 12: 'декабря'
|
38
|
+
}
|
39
|
+
|
40
|
+
Дни_недели_полные = {
|
41
|
+
1: 'понедельник', 2: 'вторник', 3: 'среда', 4: 'четверг',
|
42
|
+
5: 'пятница', 6: 'суббота', 7: 'воскресенье'
|
43
|
+
}
|
44
|
+
|
45
|
+
Дни_недели_краткие = {
|
46
|
+
1: 'Пн', 2: 'Вт', 3: 'Ср', 4: 'Чт',
|
47
|
+
5: 'Пт', 6: 'Сб', 7: 'Вс'
|
48
|
+
}
|
49
|
+
|
50
|
+
def Склонение_после_числительного(число, слова):
|
51
|
+
return str(число) + ' ' + \
|
52
|
+
(слова[2] if число % 100 >= 5 and число % 100 <= 20 else \
|
53
|
+
(слова[0] if число % 10 == 1 else \
|
54
|
+
(слова[1] if число % 10 >= 2 and число % 10 <= 4 else слова[2])))
|
55
|
+
|
34
56
|
def Перевести_формат(формат):
|
35
57
|
for русский, питоновский in Словарь_спецификаторов.items():
|
36
58
|
формат = формат.replace(русский, питоновский)
|
@@ -49,29 +71,41 @@ class Дата_и_время:
|
|
49
71
|
def Сейчас(часовой_пояс=None):
|
50
72
|
return Дата_и_время(datetime.datetime.now(часовой_пояс))
|
51
73
|
|
52
|
-
@staticmethod
|
53
|
-
def До_сейчас():
|
54
|
-
return Дата_и_время(datetime.datetime.utcnow())
|
55
|
-
|
56
74
|
@staticmethod
|
57
75
|
def Из_метки_времени(метка_времени, часовой_пояс=None):
|
58
76
|
return Дата_и_время(datetime.datetime.fromtimestamp(метка_времени, часовой_пояс))
|
59
77
|
|
60
78
|
@staticmethod
|
61
|
-
def Из_
|
62
|
-
return Дата_и_
|
79
|
+
def Из_строки(строка):
|
80
|
+
return Дата_и_время.Разобрать(строка, Формат_даты_и_времени)
|
63
81
|
|
64
82
|
@staticmethod
|
65
83
|
def Разобрать(строка, формат):
|
66
84
|
формат = Перевести_формат(формат)
|
67
85
|
return Дата_и_время(datetime.datetime.strptime(строка, формат))
|
68
86
|
|
69
|
-
def
|
87
|
+
def В_формат(здесь, формат):
|
70
88
|
формат = Перевести_формат(формат)
|
71
89
|
return здесь._дата_время.strftime(формат)
|
72
90
|
|
73
|
-
def
|
74
|
-
|
91
|
+
def __str__(строка):
|
92
|
+
формат = Перевести_формат(Формат_даты_и_времени)
|
93
|
+
return здесь._дата_время.strftime(формат)
|
94
|
+
|
95
|
+
def Словами(здесь, формат='полный'):
|
96
|
+
день_недели = здесь.Номер_дня_недели()
|
97
|
+
if формат == 'полный':
|
98
|
+
return f"{Дни_недели_полные[день_недели]}, {здесь.День} {Месяцы_родительный[здесь.Месяц]} {здесь.Год} года, {здесь.Часов:02d}:{здесь.Минут:02d}"
|
99
|
+
elif формат == 'краткий':
|
100
|
+
return f"{Дни_недели_краткие[день_недели]}, {здесь.День} {Месяцы_родительный[здесь.Месяц]} {здесь.Год} г."
|
101
|
+
elif формат == 'дата':
|
102
|
+
return f"{здесь.День} {Месяцы_родительный[здесь.Месяц]} {здесь.Год} года"
|
103
|
+
elif формат == 'время':
|
104
|
+
return f"{здесь.Часов:02d}:{здесь.Минут:02d}"
|
105
|
+
elif формат == 'день_недели':
|
106
|
+
return Дни_недели_полные[день_недели]
|
107
|
+
else:
|
108
|
+
raise ValueError("Неподдерживаемый формат")
|
75
109
|
|
76
110
|
def В_метку_времени(здесь):
|
77
111
|
return здесь._дата_время.timestamp()
|
@@ -177,12 +211,16 @@ class Дата:
|
|
177
211
|
def От_даты(порядковый_номер):
|
178
212
|
return Дата(datetime.date.fromordinal(порядковый_номер))
|
179
213
|
|
180
|
-
def
|
214
|
+
def В_формат(здесь, формат):
|
181
215
|
формат = Перевести_формат(формат)
|
182
216
|
return здесь._дата.strftime(формат)
|
183
217
|
|
184
|
-
def
|
185
|
-
|
218
|
+
def __str__(здесь):
|
219
|
+
формат = Перевести_формат(Формат_даты)
|
220
|
+
return здесь._дата.strftime(формат)
|
221
|
+
|
222
|
+
def Из_строки(строка):
|
223
|
+
return Время(Дата_и_время.Разобрать(строка, Формат_времени)._дата_время.time())
|
186
224
|
|
187
225
|
def День_недели(здесь):
|
188
226
|
return здесь._дата.isoweekday()
|
@@ -249,12 +287,13 @@ class Время:
|
|
249
287
|
)
|
250
288
|
здесь._время = datetime.time(*ПА, **ИА)
|
251
289
|
|
252
|
-
def
|
290
|
+
def В_формат(здесь, формат):
|
253
291
|
формат = Перевести_формат(формат)
|
254
292
|
return здесь._время.strftime(формат)
|
255
293
|
|
256
|
-
def
|
257
|
-
|
294
|
+
def __str__(здесь):
|
295
|
+
формат = Перевести_формат(Формат_времени)
|
296
|
+
return здесь._время.strftime(формат)
|
258
297
|
|
259
298
|
def Заменить(здесь, **ИА):
|
260
299
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
@@ -347,6 +386,42 @@ class Интервал:
|
|
347
386
|
def Вычесть(здесь, другой):
|
348
387
|
return Интервал(дней=(здесь._интервал - другой._интервал).days, секунд=(здесь._интервал - другой._интервал).seconds, микросекунд=(здесь._интервал - другой._интервал).microseconds)
|
349
388
|
|
389
|
+
def __str__(здесь):
|
390
|
+
части = []
|
391
|
+
if здесь.Дней:
|
392
|
+
части.append(Склонение_после_числительного(здесь.Дней, ['день', 'дня', 'дней']))
|
393
|
+
секунд = здесь.Секунд
|
394
|
+
if секунд >= 3600:
|
395
|
+
часов = секунд // 3600
|
396
|
+
части.append(Склонение_после_числительного(часов, ['час', 'часа', 'часов']))
|
397
|
+
секунд %= 3600
|
398
|
+
if секунд >= 60:
|
399
|
+
минут = секунд // 60
|
400
|
+
части.append(Склонение_после_числительного(минут, ['минута', 'минуты', 'минут']))
|
401
|
+
секунд %= 60
|
402
|
+
if секунд:
|
403
|
+
части.append(Склонение_после_числительного(секунд, ['секунда', 'секунды', 'секунд']))
|
404
|
+
return ' '.join(части) or '0 секунд'
|
405
|
+
|
406
|
+
@staticmethod
|
407
|
+
def Из_строки(строка):
|
408
|
+
части = строка.split()
|
409
|
+
ИА = {}
|
410
|
+
i = 0
|
411
|
+
while i < len(части):
|
412
|
+
число = int(части[i])
|
413
|
+
единица = части[i + 1]
|
414
|
+
if 'день' in единица or 'дня' in единица or 'дней' in единица:
|
415
|
+
ИА['дней'] = число
|
416
|
+
elif 'час' in единица:
|
417
|
+
ИА['часов'] = число
|
418
|
+
elif 'минут' in единица:
|
419
|
+
ИА['минут'] = число
|
420
|
+
elif 'секунд' in единица:
|
421
|
+
ИА['секунд'] = число
|
422
|
+
i += 2
|
423
|
+
return Интервал(**ИА)
|
424
|
+
|
350
425
|
def __add__(здесь, другой):
|
351
426
|
if isinstance(другой, Интервал):
|
352
427
|
return здесь.Добавить(другой)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: rupython
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.5
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
5
5
|
Description-Content-Type: text/markdown
|
6
6
|
License-File: LICENSE
|
@@ -12,6 +12,10 @@ License-File: LICENSE
|
|
12
12
|
* Повышение производительности труда работников, выполняющих задачи автоматизации процессов и формализации алгоритмов, за счёт применения лексики на родном им языке, что априори повышает усвоение и читаемость кода.
|
13
13
|
* Упрощение освоения навыков алгоритмизации и составления компьютерных программ учащимися путём устранения искусственного препятствия в виде необходимости оперировать лексикой иностранного языка.
|
14
14
|
|
15
|
+
Когда-то, в эпоху, когда железо и разум сливались в первых советских вычислительных машинах, русские ЯП были не просто инструментом — они были голосом нации, стремящейся к технологическому величию. В цехах заводов, на полигонах оборонных предприятий и в тиши академических кабинетов инструкции программного кода звучали на русском языке, воплощая мощь отечественной промышленности и науки. Сегодня, когда цифровой мир задаёт ритм жизни, возрождение русских ЯП становится не просто возможностью, но и необходимостью — способом вернуть себе право творить технологии на родном языке.
|
16
|
+
|
17
|
+
Алгоритмические языки на русской лексической базе повышают производительность труда разработчиков, поскольку работа на знакомом языке не требует от них приложения ненужных умственных усилий для переключения на иностранный язык, чем снижается когнитивная нагрузка, улучшается читаемость и качество создаваемого кода и повышается эффективность коммуникации в команде. Русский код априори является более понятным и воспринимаемым интуитивно в контексте культурных и языковых особенностей русских людей, снижая порог вхождения и устраняя искусственный барьер в виде необходимости овладения иностранным языком на уровне, достаточном для беглого чтения кода.
|
18
|
+
|
15
19
|
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
16
20
|
|
17
21
|
### Установка
|
@@ -2,13 +2,13 @@ rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
|
|
2
2
|
rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
|
3
3
|
rupython/__Общие_функции__.py,sha256=FLbN5hhnnXXqAwqRRNJ2Y_0fXAAYCC_7Pn06_DZjX3w,826
|
4
4
|
rupython/Преобразователь.py,sha256=-0oxZb63T3s50sT-0jiH3cA4KqRs3qVpaGsfSyAb8TY,47550
|
5
|
-
rupython/Модули/БД.py,sha256=
|
6
|
-
rupython/Модули/ДатаВремя.py,sha256=
|
5
|
+
rupython/Модули/БД.py,sha256=LXMY-CIZxERUUcbWY0Mruab_w4RzKPDNwWGtf1tEXjs,24571
|
6
|
+
rupython/Модули/ДатаВремя.py,sha256=YdpACxtHXt57zV7uYpZJZeH3T4bMd6orud-Y34DqWTI,25087
|
7
7
|
rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
|
8
8
|
rupython/Модули/РегВыр.py,sha256=T3yxVP-B5AwAzbUTjWpog3HCzRTGLZ58CEQpfA-0dsY,6341
|
9
9
|
rupython/Модули/Случ.py,sha256=foIuQo2QZ5z0iyxp9fn4NaunSx96vYzC2pRjwaT2FD8,2723
|
10
|
-
rupython-1.2.
|
11
|
-
rupython-1.2.
|
12
|
-
rupython-1.2.
|
13
|
-
rupython-1.2.
|
14
|
-
rupython-1.2.
|
10
|
+
rupython-1.2.5.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
|
11
|
+
rupython-1.2.5.dist-info/METADATA,sha256=Qci9TgF0CPYyDpfZ7qH1QvV1p4DyhjqygRS1p4SblVU,29768
|
12
|
+
rupython-1.2.5.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
13
|
+
rupython-1.2.5.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
|
14
|
+
rupython-1.2.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|