rupython 1.1.5__py3-none-any.whl → 1.1.7__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 +358 -0
- rupython//342/225/250/320/257/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/233/342/225/250/342/226/222/342/225/244/320/220/342/225/250/342/226/221/342/225/250/342/225/226/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/225/241/342/225/250/342/225/227/342/225/244/320/234.py +32 -17
- {rupython-1.1.5.dist-info → rupython-1.1.7.dist-info}/METADATA +1 -1
- {rupython-1.1.5.dist-info → rupython-1.1.7.dist-info}/RECORD +7 -6
- {rupython-1.1.5.dist-info → rupython-1.1.7.dist-info}/LICENSE +0 -0
- {rupython-1.1.5.dist-info → rupython-1.1.7.dist-info}/WHEEL +0 -0
- {rupython-1.1.5.dist-info → rupython-1.1.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,358 @@
|
|
1
|
+
import sqlite3
|
2
|
+
|
3
|
+
Ошибка = sqlite3.Error
|
4
|
+
ОшибкаБазыДанных = sqlite3.DatabaseError
|
5
|
+
ОшибкаПрограммования = sqlite3.ProgrammingError
|
6
|
+
ОшибкаОперации = sqlite3.OperationalError
|
7
|
+
|
8
|
+
Разбор_объявленных_типов = sqlite3.PARSE_DECLTYPES
|
9
|
+
Разбор_названий_столбцов = sqlite3.PARSE_COLNAMES
|
10
|
+
Успешно = sqlite3.SQLITE_OK
|
11
|
+
Отказ = sqlite3.SQLITE_DENY
|
12
|
+
Игнорировать = sqlite3.SQLITE_IGNORE
|
13
|
+
Уровень_интерфейса_взаимодействия = sqlite3.apilevel
|
14
|
+
Стиль_параметров = sqlite3.paramstyle
|
15
|
+
Потокобезопасность = sqlite3.threadsafety
|
16
|
+
|
17
|
+
Словарь_перевода = {
|
18
|
+
'НАЧАТЬ': 'BEGIN',
|
19
|
+
'ЗАКОНЧИТЬ': 'END',
|
20
|
+
'ТРАНЗАКЦИЮ': 'TRANSACTION',
|
21
|
+
'ОТЛОЖЕННО': 'DEFERRED',
|
22
|
+
'НЕМЕДЛЕННО': 'IMMEDIATE',
|
23
|
+
'ИСКЛЮЧИТЕЛЬНО': 'EXCLUSIVE',
|
24
|
+
'ОТКАТИТЬ': 'ROLLBACK',
|
25
|
+
'ТОЧКА_СОХРАНЕНИЯ': 'SAVEPOINT',
|
26
|
+
|
27
|
+
'ВЫБРАТЬ': 'SELECT',
|
28
|
+
'ИЗ': 'FROM',
|
29
|
+
'ГДЕ': 'WHERE',
|
30
|
+
'УПОРЯДОЧИВ ПО': 'ORDER BY',
|
31
|
+
'ПО ВОЗРАСТАНИЮ': 'ASC',
|
32
|
+
'ПО УБЫВАНИЮ': 'DESC',
|
33
|
+
'ГРУППАМИ ПО': 'GROUP BY',
|
34
|
+
'ИМЕЮЩИМИ': 'HAVING',
|
35
|
+
'РАЗЛИЧАЮЩИЕСЯ': 'DISTINCT',
|
36
|
+
'ОБЪЕДИНИВ С': 'UNION',
|
37
|
+
'СОДЕРЖАЩИЕСЯ В': 'INTERSECT',
|
38
|
+
'ВСЕ': 'ALL',
|
39
|
+
'НЕКОТОРЫЕ': 'ANY',
|
40
|
+
'ИСКЛЮЧАЯ': 'EXCEPT',
|
41
|
+
'НЕ БОЛЕЕ': 'LIMIT',
|
42
|
+
'СО СМЕЩЕНИЕМ': 'OFFSET',
|
43
|
+
'ПРИСОЕДИНИВ': 'JOIN',
|
44
|
+
'ВНУТРЕННЕ': 'INNER',
|
45
|
+
'ВНЕШНЕ': 'OUTER',
|
46
|
+
'ПО ЛЕВОЙ': 'LEFT',
|
47
|
+
'ПО ПРАВОЙ': 'RIGHT',
|
48
|
+
'ПОЛНОСТЬЮ': 'FULL',
|
49
|
+
'ПО': 'ON',
|
50
|
+
'ПЕРЕКРЁСТНО': 'CROSS',
|
51
|
+
'ИСПОЛЬЗУЯ': 'USING',
|
52
|
+
|
53
|
+
'ДОБАВИТЬ В': 'INSERT INTO',
|
54
|
+
'ЗНАЧЕНИЯ': 'VALUES',
|
55
|
+
'ИЗМЕНИТЬ': 'UPDATE',
|
56
|
+
'УСТАНОВИВ': 'SET',
|
57
|
+
'УДАЛИТЬ': 'DELETE',
|
58
|
+
|
59
|
+
'ИЗМЕНИТЬ ТАБЛИЦУ': 'ALTER TABLE',
|
60
|
+
'ИЗМЕНИТЬ СТОЛБЕЦ': 'ALTER COLUMN',
|
61
|
+
'СОЗДАТЬ': 'CREATE',
|
62
|
+
'БАЗУ ДАННЫХ': 'DATABASE',
|
63
|
+
'ТАБЛИЦУ': 'TABLE',
|
64
|
+
'ДОБАВИВ': 'ADD',
|
65
|
+
'УДАЛИВ': 'DROP',
|
66
|
+
'ИНДЕКС': 'INDEX',
|
67
|
+
'УНИКАЛЬНЫЙ': 'UNIQUE',
|
68
|
+
'ПРЕДСТАВЛЕНИЕ': 'VIEW',
|
69
|
+
'СТОЛБЕЦ': 'COLUMN',
|
70
|
+
|
71
|
+
'ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NULL',
|
72
|
+
'НЕ ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NOT NULL',
|
73
|
+
'ПУСТО': 'NULL',
|
74
|
+
'И': 'AND',
|
75
|
+
'ИЛИ': 'OR',
|
76
|
+
'НЕ': 'NOT',
|
77
|
+
'ПОДОБНО': 'LIKE',
|
78
|
+
'МЕЖДУ': 'BETWEEN',
|
79
|
+
'В': 'IN',
|
80
|
+
'ЕСЛИ': 'IF',
|
81
|
+
'СУЩЕСТВУЕТ': 'EXISTS',
|
82
|
+
|
83
|
+
'ЦЕЛОЕ': 'INTEGER',
|
84
|
+
'ВЕЩЕСТВЕННОЕ': 'REAL',
|
85
|
+
'ТЕКСТ': 'TEXT',
|
86
|
+
'ДАННЫЕ': 'BLOB',
|
87
|
+
'ДАТА': 'DATE',
|
88
|
+
'ВРЕМЯ': 'TIME',
|
89
|
+
'ВРЕМЕННАЯ_МЕТКА': 'TIMESTAMP',
|
90
|
+
'ЛОГИЧЕСКОЕ': 'BOOLEAN',
|
91
|
+
|
92
|
+
'КЛЮЧ': 'KEY',
|
93
|
+
'ПЕРВИЧНЫЙ': 'PRIMARY',
|
94
|
+
'ВНЕШНИЙ': 'FOREIGN',
|
95
|
+
'ПРОВЕРЯТЬ': 'CHECK',
|
96
|
+
'КАК': 'AS',
|
97
|
+
'ДА': 'TRUE',
|
98
|
+
'НЕТ': 'FALSE',
|
99
|
+
'ПО_УМОЛЧАНИЮ': 'DEFAULT',
|
100
|
+
'САМОУВЕЛИЧИВАЮЩЕЕСЯ': 'AUTO_INCREMENT',
|
101
|
+
|
102
|
+
'КОЛИЧЕСТВО': 'COUNT',
|
103
|
+
'СУММА': 'SUM',
|
104
|
+
'СРЕДНЕЕ': 'AVG',
|
105
|
+
'МИНИМУМ': 'MIN',
|
106
|
+
'МАКСИМУМ': 'MAX',
|
107
|
+
'СЦЕПИТЬ': 'CONCAT',
|
108
|
+
'ДЛИНА': 'LENGTH',
|
109
|
+
'В_ЗАГЛАВНЫЕ': 'UPPER',
|
110
|
+
'В_СТРОЧНЫЕ': 'LOWER',
|
111
|
+
'ПОДСТРОКА': 'SUBSTRING',
|
112
|
+
'ЗАМЕНИТЬ': 'REPLACE',
|
113
|
+
'ОКРУГЛИТЬ': 'ROUND',
|
114
|
+
'ОКРУГЛИТЬ_ВНИЗ': 'FLOOR',
|
115
|
+
'ОКРУГЛИТЬ_ВВЕРХ': 'CEIL',
|
116
|
+
'МОДУЛЬ': 'ABS',
|
117
|
+
'ТЕКУЩАЯ_ДАТА': 'CURRENT_DATE',
|
118
|
+
'ТЕКУЩЕЕ_ВРЕМЯ': 'CURRENT_TIME',
|
119
|
+
'ТЕКУЩАЯ_ВРЕМЕННАЯ_МЕТКА': 'CURRENT_TIMESTAMP',
|
120
|
+
'ИЗВЛЕЧЬ': 'EXTRACT',
|
121
|
+
'ГОД': 'YEAR',
|
122
|
+
'МЕСЯЦ': 'MONTH',
|
123
|
+
'ДЕНЬ': 'DAY'
|
124
|
+
}
|
125
|
+
|
126
|
+
def Получить_токены(запрос):
|
127
|
+
токены = []
|
128
|
+
текущий_токен = ''
|
129
|
+
в_строке = False
|
130
|
+
в_комментарии = False
|
131
|
+
строка_символ = None
|
132
|
+
i = 0
|
133
|
+
|
134
|
+
while i < len(запрос):
|
135
|
+
символ = запрос[i]
|
136
|
+
|
137
|
+
if символ in ('"', "'") and not в_комментарии:
|
138
|
+
if в_строке and символ == строка_символ:
|
139
|
+
в_строке = False
|
140
|
+
текущий_токен += символ
|
141
|
+
токены.append(текущий_токен)
|
142
|
+
текущий_токен = ''
|
143
|
+
i += 1
|
144
|
+
continue
|
145
|
+
elif not в_строке:
|
146
|
+
в_строке = True
|
147
|
+
строка_символ = символ
|
148
|
+
if текущий_токен:
|
149
|
+
токены.append(текущий_токен)
|
150
|
+
текущий_токен = ''
|
151
|
+
текущий_токен = символ
|
152
|
+
i += 1
|
153
|
+
continue
|
154
|
+
|
155
|
+
if символ == '-' and i + 1 < len(запрос) and запрос[i + 1] == '-' and not в_строке:
|
156
|
+
if текущий_токен:
|
157
|
+
токены.append(текущий_токен)
|
158
|
+
текущий_токен = ''
|
159
|
+
в_комментарии = True
|
160
|
+
текущий_токен = '--'
|
161
|
+
i += 2
|
162
|
+
while i < len(запрос) and запрос[i] != '\n':
|
163
|
+
текущий_токен += запрос[i]
|
164
|
+
i += 1
|
165
|
+
токены.append(текущий_токен)
|
166
|
+
текущий_токен = ''
|
167
|
+
в_комментарии = False
|
168
|
+
continue
|
169
|
+
|
170
|
+
if символ == '/' and i + 1 < len(запрос) and запрос[i + 1] == '*' and not в_строке:
|
171
|
+
if текущий_токен:
|
172
|
+
токены.append(текущий_токен)
|
173
|
+
текущий_токен = ''
|
174
|
+
в_комментарии = True
|
175
|
+
текущий_токен = '/*'
|
176
|
+
i += 2
|
177
|
+
while i < len(запрос) - 1 and not (запрос[i] == '*' and запрос[i + 1] == '/'):
|
178
|
+
текущий_токен += запрос[i]
|
179
|
+
i += 1
|
180
|
+
if i < len(запрос) - 1:
|
181
|
+
текущий_токен += '*/'
|
182
|
+
i += 2
|
183
|
+
токены.append(текущий_токен)
|
184
|
+
текущий_токен = ''
|
185
|
+
в_комментарии = False
|
186
|
+
continue
|
187
|
+
|
188
|
+
if в_строке or в_комментарии:
|
189
|
+
текущий_токен += символ
|
190
|
+
i += 1
|
191
|
+
continue
|
192
|
+
|
193
|
+
if символ.isspace() or символ in (',', ';', '(', ')', '=', '<', '>', '!'):
|
194
|
+
if текущий_токен:
|
195
|
+
токены.append(текущий_токен)
|
196
|
+
текущий_токен = ''
|
197
|
+
if not символ.isspace():
|
198
|
+
токены.append(символ)
|
199
|
+
i += 1
|
200
|
+
continue
|
201
|
+
|
202
|
+
текущий_токен += символ
|
203
|
+
i += 1
|
204
|
+
|
205
|
+
if текущий_токен:
|
206
|
+
токены.append(текущий_токен)
|
207
|
+
|
208
|
+
return токены
|
209
|
+
|
210
|
+
def Перевести_токены(токены):
|
211
|
+
переведённые_токены = []
|
212
|
+
i = 0
|
213
|
+
|
214
|
+
while i < len(токены):
|
215
|
+
токен = токены[i]
|
216
|
+
|
217
|
+
if (токен.startswith('"') or токен.startswith("'") or
|
218
|
+
токен.startswith('--') or токен.startswith('/*') or
|
219
|
+
токен in (',', ';', '(', ')', '=', '<', '>', '!')):
|
220
|
+
переведённые_токены.append(токен)
|
221
|
+
i += 1
|
222
|
+
continue
|
223
|
+
|
224
|
+
найдено_ключевое_слово = False
|
225
|
+
for длина in range(5, 0, -1):
|
226
|
+
if i + длина <= len(токены):
|
227
|
+
фраза = ' '.join(токены[i:i + длина]).upper()
|
228
|
+
if фраза in Словарь_перевода:
|
229
|
+
переведённые_токены.append(Словарь_перевода[фраза])
|
230
|
+
i += длина
|
231
|
+
найдено_ключевое_слово = True
|
232
|
+
break
|
233
|
+
|
234
|
+
if not найдено_ключевое_слово:
|
235
|
+
переведённые_токены.append(токен)
|
236
|
+
i += 1
|
237
|
+
|
238
|
+
return переведённые_токены
|
239
|
+
|
240
|
+
def Собрать_запрос(токены):
|
241
|
+
запрос = ''
|
242
|
+
for i, токен in enumerate(токены):
|
243
|
+
if токен in (',', ';', '(', ')', '=', '<', '>', '!'):
|
244
|
+
запрос += токен
|
245
|
+
else:
|
246
|
+
if i > 0 and токены[i - 1] not in (' ', ',', ';', '(', '=', '<', '>', '!'):
|
247
|
+
запрос += ' '
|
248
|
+
запрос += токен
|
249
|
+
return запрос.strip()
|
250
|
+
|
251
|
+
def Перевести_код_запроса(текст):
|
252
|
+
токены = Получить_токены(текст)
|
253
|
+
переведённые_токены = Перевести_токены(токены)
|
254
|
+
запрос = Собрать_запрос(переведённые_токены)
|
255
|
+
return запрос
|
256
|
+
|
257
|
+
class Указатель():
|
258
|
+
def __init__(здесь, курсор):
|
259
|
+
здесь._курсор = курсор
|
260
|
+
|
261
|
+
def Выполнить_запрос(здесь, запрос, параметры=()):
|
262
|
+
запрос = Перевести_код_запроса(запрос)
|
263
|
+
здесь._курсор.execute(запрос, параметры)
|
264
|
+
|
265
|
+
def Выполнить_запросы(здесь, запрос, последовательность_параметров):
|
266
|
+
запрос = Перевести_код_запроса(запрос)
|
267
|
+
здесь._курсор.executemany(запрос, последовательность_параметров)
|
268
|
+
|
269
|
+
def Выполнить_сценарий(здесь, сценарий):
|
270
|
+
скрипт = Перевести_код_запроса(сценарий)
|
271
|
+
здесь._курсор.executescript(скрипт)
|
272
|
+
|
273
|
+
def Извлечь_запись(здесь):
|
274
|
+
return здесь._курсор.fetchone()
|
275
|
+
|
276
|
+
def Извлечь_записи(здесь, количество):
|
277
|
+
return здесь._курсор.fetchmany(количество)
|
278
|
+
|
279
|
+
def Извлечь_все_записи(здесь):
|
280
|
+
return здесь._курсор.fetchall()
|
281
|
+
|
282
|
+
def Закрыть(здесь): здесь._курсор.close()
|
283
|
+
|
284
|
+
@property
|
285
|
+
def Описание(здесь): return здесь._курсор.description
|
286
|
+
|
287
|
+
@property
|
288
|
+
def Количество_строк(здесь): return здесь._курсор.rowcount
|
289
|
+
|
290
|
+
@property
|
291
|
+
def Последний_идентификатор(здесь): return здесь._курсор.lastrowid
|
292
|
+
|
293
|
+
class Соединение():
|
294
|
+
def __init__(здесь,
|
295
|
+
путь, *,
|
296
|
+
таймаут = 5.0,
|
297
|
+
обнаружение_типов = 0,
|
298
|
+
уровень_изоляции = None,
|
299
|
+
проверять_тот_же_ли_поток = True,
|
300
|
+
кэш_инструкций = 128,
|
301
|
+
является_ссылкой = False
|
302
|
+
):
|
303
|
+
if уровень_изоляции == 'ОТЛОЖЕННО': уровень_изоляции = 'DEFERRED'
|
304
|
+
elif уровень_изоляции == 'НЕМЕДЛЕННО': уровень_изоляции = 'IMMEDIATE'
|
305
|
+
elif уровень_изоляции == 'ИСКЛЮЧИТЕЛЬНО': уровень_изоляции = 'EXCLUSIVE'
|
306
|
+
else: уровень_изоляции = None
|
307
|
+
|
308
|
+
здесь._соединение = sqlite3.connect(
|
309
|
+
путь,
|
310
|
+
timeout=таймаут,
|
311
|
+
detect_types=обнаружение_типов,
|
312
|
+
isolation_level=уровень_изоляции,
|
313
|
+
check_same_thread=проверять_тот_же_ли_поток,
|
314
|
+
cached_statements=кэш_инструкций,
|
315
|
+
uri=является_ссылкой
|
316
|
+
)
|
317
|
+
|
318
|
+
def Создать_указатель(здесь):
|
319
|
+
курсор = здесь._соединение.cursor()
|
320
|
+
return Указатель(курсор)
|
321
|
+
|
322
|
+
def Выполнить_запрос(здесь, запрос, параметры=()):
|
323
|
+
запрос = Перевести_код_запроса(запрос)
|
324
|
+
указатель = здесь._соединение.execute(запрос, параметры)
|
325
|
+
return Указатель(указатель)
|
326
|
+
|
327
|
+
def Выполнить_запросы(здесь, запрос, последовательность_параметров):
|
328
|
+
запрос = Перевести_код_запроса(запрос)
|
329
|
+
указатель = здесь._соединение.executemany(запрос, последовательность_параметров)
|
330
|
+
return Указатель(указатель)
|
331
|
+
|
332
|
+
def Выполнить_сценарий(здесь, сценарий):
|
333
|
+
скрипт = Перевести_код_запроса(сценарий)
|
334
|
+
здесь._соединение.executescript(скрипт)
|
335
|
+
|
336
|
+
def Создать_функцию(здесь, имя, количество_параметров, функция):
|
337
|
+
здесь._соединение.create_function(имя, количество_параметров, функция)
|
338
|
+
|
339
|
+
def Создать_агрегатную_функцию(здесь, имя, количество_параметров, класс_агрегатной_функции):
|
340
|
+
здесь._соединение.create_aggregate(имя, количество_параметров, класс_агрегатной_функции)
|
341
|
+
|
342
|
+
def Создать_сопоставление(здесь, имя, функция):
|
343
|
+
здесь._соединение.create_collation(имя, функция)
|
344
|
+
|
345
|
+
def Закрыть(здесь): здесь._соединение.close()
|
346
|
+
|
347
|
+
def Утвердить(здесь): здесь._соединение.commit()
|
348
|
+
|
349
|
+
def Откатить(здесь): здесь._соединение.rollback()
|
350
|
+
|
351
|
+
@property
|
352
|
+
def В_транзакции(здесь): return здесь._соединение.in_transaction
|
353
|
+
|
354
|
+
@property
|
355
|
+
def Изоляция(здесь): return здесь._соединение.isolation_level
|
356
|
+
|
357
|
+
@Изоляция.setter
|
358
|
+
def Изоляция(здесь, значение): здесь._соединение.isolation_level = значение
|
@@ -328,9 +328,9 @@ def Прочитать_слова(чтение_строки, путь_к_фай
|
|
328
328
|
except Exception as ошибка:
|
329
329
|
Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу)
|
330
330
|
|
331
|
-
def Выполнить_основные_замены(слова,
|
331
|
+
def Выполнить_основные_замены(слова, соответствия):
|
332
332
|
for номер, слово in enumerate(слова):
|
333
|
-
if (
|
333
|
+
if (номер == 0 or слова[номер - 1][1] != '.') and \
|
334
334
|
слово[0] == 1 and слово[1] in соответствия:
|
335
335
|
слова[номер] = (1, соответствия[слово[1]], слово[2])
|
336
336
|
|
@@ -625,21 +625,36 @@ def Посчитать_физические_строки(путь_к_файлу,
|
|
625
625
|
return логическая_строка
|
626
626
|
|
627
627
|
Переводы_ошибок = {
|
628
|
-
r
|
629
|
-
r
|
630
|
-
r
|
631
|
-
r
|
632
|
-
r
|
633
|
-
r
|
634
|
-
r'
|
635
|
-
r
|
636
|
-
r
|
637
|
-
r
|
638
|
-
r
|
639
|
-
r
|
640
|
-
r
|
641
|
-
r
|
642
|
-
r
|
628
|
+
r".*EOF in multi-line statement.*": r'Неожиданный конец файла при обработке многострочной инструкции.',
|
629
|
+
r"name '(\w+)' is not defined": r'Название "\1" не определено.',
|
630
|
+
r"unsupported operand type\(s\) for .+: '(\w+)' and '(\w+)'": r'Неподдерживаемая операция между типами "\1" и "\2".',
|
631
|
+
r"invalid literal for int\(\) with base \d+: '(.+)'": r'Недопустимое значение "\1" для преобразования в целое число.',
|
632
|
+
r"division by zero": r'Деление на ноль.',
|
633
|
+
r"list index out of range": r'Индекс за пределами списка.',
|
634
|
+
r"'(\w+)' object has no attribute '(\w+)'": r'Объект типа "\1" не имеет атрибута "\2".',
|
635
|
+
r"module '(\w+)' has no attribute '(\w+)'": r'Модуль "\1" не имеет атрибута "\2".',
|
636
|
+
r"cannot import name '(\w+)' from '(\w+)'": r'Не удалось импортовать "\1" из модуля "\2".',
|
637
|
+
r"no such file or directory: '(.+)'": r'Файл или директория "\1" не найдены.',
|
638
|
+
r"index (\d+) is out of range": r'Индекс \1 вне допустимого диапазона.',
|
639
|
+
r"key '(.+)' not found": r'Ключ "\1" не найден в словаре.',
|
640
|
+
r"KeyError: '(.+)'": r'Ключ "\1" отсутствует в словаре.',
|
641
|
+
r"invalid syntax": r'Синтаксическая ошибка в коде.',
|
642
|
+
r"expected .+, got .+": r'Ожидался один тип данных, получен другой.',
|
643
|
+
r"int\(\) argument must be a string, a bytes-like object or a number, not '(\w+)'": r'Аргумент функции Цел() должен быть строкой, байтовым объектом или числом, а не "\1".',
|
644
|
+
r"IndentationError: expected an indented block": r'Ожидался блок с отступом.',
|
645
|
+
r"IndentationError: unindent does not match any outer indentation level": r'Уровень отступа не соответствует внешнему блоку.',
|
646
|
+
r"TypeError: (\w+)\(\) takes \d+ positional arguments? but \d+ were given": r'Функция "\1" принимает меньше аргументов, чем было передано.',
|
647
|
+
r"ValueError: (.+)": r'Ошибка значения: \1.',
|
648
|
+
r"AttributeError: '(\w+)' object is not callable": r'Объект типа "\1" не является вызываемым.',
|
649
|
+
r"ImportError: No module named '(\w+)'": r'Ошибка импорта: модуль "\1" не найден.',
|
650
|
+
r"FileNotFoundError: \[Errno 2\] No such file or directory: '(.+)'": r'Файл "\1" не найден.',
|
651
|
+
r"IndexError: tuple index out of range": r'Индекс за пределами кортежа.',
|
652
|
+
r"SyntaxError: unexpected EOF while parsing": r'Неожиданный конец файла при разборе кода.',
|
653
|
+
r"ZeroDivisionError: float division by zero": r'Деление числа с плавающей точкой на ноль.',
|
654
|
+
r"TypeError: cannot unpack non-iterable (\w+) object": r'Невозможно распаковать неитерируемый объект типа "\1".',
|
655
|
+
r"MemoryError": r'Недостаточно памяти для выполнения операции.',
|
656
|
+
r"OverflowError: (.+)": r'Переполнение: \1.',
|
657
|
+
r"AssertionError": r'Ошибка проверки: условие не выполнено.'
|
643
658
|
}
|
644
659
|
|
645
660
|
def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу):
|
@@ -1,11 +1,12 @@
|
|
1
1
|
rupython/__main__.py,sha256=BxtsIK8PJuOOGVDKxqoscwJjjWWhZts7adicFuwUL6k,540
|
2
2
|
rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
|
3
|
-
rupython/Преобразователь.py,sha256=
|
3
|
+
rupython/Преобразователь.py,sha256=YaR4lZaQxgo4vEZFk0i4_1Nx41AoH3N0mSbV2KH3wEM,42790
|
4
|
+
rupython/Модули/БД.py,sha256=9Q3U634QBas1jvf898Lqt1EiMp8YpLGYv9_uXx6CU3I,15299
|
4
5
|
rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
|
5
6
|
rupython/Модули/РегВыр.py,sha256=yeXYfeDF2qw4DSKVdZVSFInMUW52U7Nq_KOJKvm4XnM,6349
|
6
7
|
rupython/Модули/Случ.py,sha256=oeVdSdFVb4X_T-nX2P7NSIhise1zUPIS4lk7h-67XSg,2689
|
7
|
-
rupython-1.1.
|
8
|
-
rupython-1.1.
|
9
|
-
rupython-1.1.
|
10
|
-
rupython-1.1.
|
11
|
-
rupython-1.1.
|
8
|
+
rupython-1.1.7.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
|
9
|
+
rupython-1.1.7.dist-info/METADATA,sha256=_K57p8V9E7pgrXmTqi7-rrBVmZPSnbsz0FZWdFrTUm4,13869
|
10
|
+
rupython-1.1.7.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
11
|
+
rupython-1.1.7.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
|
12
|
+
rupython-1.1.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|