rupython 1.1.6__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 +55 -65
- 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.6.dist-info → rupython-1.1.7.dist-info}/METADATA +1 -1
- {rupython-1.1.6.dist-info → rupython-1.1.7.dist-info}/RECORD +7 -7
- {rupython-1.1.6.dist-info → rupython-1.1.7.dist-info}/LICENSE +0 -0
- {rupython-1.1.6.dist-info → rupython-1.1.7.dist-info}/WHEEL +0 -0
- {rupython-1.1.6.dist-info → rupython-1.1.7.dist-info}/top_level.txt +0 -0
@@ -81,9 +81,7 @@ import sqlite3
|
|
81
81
|
'СУЩЕСТВУЕТ': 'EXISTS',
|
82
82
|
|
83
83
|
'ЦЕЛОЕ': 'INTEGER',
|
84
|
-
'
|
85
|
-
'ВЕЩЕСТВЕННОЕ': 'FLOAT',
|
86
|
-
'СТРОКА': 'VARCHAR',
|
84
|
+
'ВЕЩЕСТВЕННОЕ': 'REAL',
|
87
85
|
'ТЕКСТ': 'TEXT',
|
88
86
|
'ДАННЫЕ': 'BLOB',
|
89
87
|
'ДАТА': 'DATE',
|
@@ -256,113 +254,105 @@ def Перевести_код_запроса(текст):
|
|
256
254
|
запрос = Собрать_запрос(переведённые_токены)
|
257
255
|
return запрос
|
258
256
|
|
259
|
-
class Указатель(
|
257
|
+
class Указатель():
|
260
258
|
def __init__(здесь, курсор):
|
261
|
-
|
262
|
-
здесь.cursor = курсор
|
259
|
+
здесь._курсор = курсор
|
263
260
|
|
264
261
|
def Выполнить_запрос(здесь, запрос, параметры=()):
|
265
262
|
запрос = Перевести_код_запроса(запрос)
|
266
|
-
здесь.execute(запрос, параметры)
|
263
|
+
здесь._курсор.execute(запрос, параметры)
|
267
264
|
|
268
265
|
def Выполнить_запросы(здесь, запрос, последовательность_параметров):
|
269
266
|
запрос = Перевести_код_запроса(запрос)
|
270
|
-
здесь.executemany(запрос, последовательность_параметров)
|
267
|
+
здесь._курсор.executemany(запрос, последовательность_параметров)
|
271
268
|
|
272
|
-
def Выполнить_
|
273
|
-
скрипт = Перевести_код_запроса(
|
274
|
-
здесь.executescript(скрипт)
|
269
|
+
def Выполнить_сценарий(здесь, сценарий):
|
270
|
+
скрипт = Перевести_код_запроса(сценарий)
|
271
|
+
здесь._курсор.executescript(скрипт)
|
275
272
|
|
276
273
|
def Извлечь_запись(здесь):
|
277
|
-
return здесь.
|
274
|
+
return здесь._курсор.fetchone()
|
278
275
|
|
279
276
|
def Извлечь_записи(здесь, количество):
|
280
|
-
return здесь.
|
277
|
+
return здесь._курсор.fetchmany(количество)
|
281
278
|
|
282
279
|
def Извлечь_все_записи(здесь):
|
283
|
-
return здесь.
|
280
|
+
return здесь._курсор.fetchall()
|
284
281
|
|
285
|
-
def Закрыть(здесь): здесь.
|
282
|
+
def Закрыть(здесь): здесь._курсор.close()
|
286
283
|
|
287
284
|
@property
|
288
|
-
def Описание(здесь): return здесь.
|
285
|
+
def Описание(здесь): return здесь._курсор.description
|
289
286
|
|
290
287
|
@property
|
291
|
-
def Количество_строк(здесь): return здесь.
|
288
|
+
def Количество_строк(здесь): return здесь._курсор.rowcount
|
292
289
|
|
293
290
|
@property
|
294
|
-
def Последний_идентификатор(здесь): return здесь.
|
295
|
-
|
296
|
-
class Соединение(
|
297
|
-
def __init__(здесь,
|
298
|
-
|
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
|
+
)
|
299
317
|
|
300
318
|
def Создать_указатель(здесь):
|
301
|
-
курсор = здесь.cursor()
|
319
|
+
курсор = здесь._соединение.cursor()
|
302
320
|
return Указатель(курсор)
|
303
321
|
|
304
322
|
def Выполнить_запрос(здесь, запрос, параметры=()):
|
305
323
|
запрос = Перевести_код_запроса(запрос)
|
306
|
-
указатель = здесь.execute(запрос, параметры)
|
324
|
+
указатель = здесь._соединение.execute(запрос, параметры)
|
307
325
|
return Указатель(указатель)
|
308
326
|
|
309
327
|
def Выполнить_запросы(здесь, запрос, последовательность_параметров):
|
310
328
|
запрос = Перевести_код_запроса(запрос)
|
311
|
-
указатель = здесь.executemany(запрос, последовательность_параметров)
|
329
|
+
указатель = здесь._соединение.executemany(запрос, последовательность_параметров)
|
312
330
|
return Указатель(указатель)
|
313
331
|
|
314
|
-
def Выполнить_
|
315
|
-
скрипт = Перевести_код_запроса(
|
316
|
-
здесь.executescript(скрипт)
|
332
|
+
def Выполнить_сценарий(здесь, сценарий):
|
333
|
+
скрипт = Перевести_код_запроса(сценарий)
|
334
|
+
здесь._соединение.executescript(скрипт)
|
317
335
|
|
318
336
|
def Создать_функцию(здесь, имя, количество_параметров, функция):
|
319
|
-
здесь.create_function(имя, количество_параметров, функция)
|
337
|
+
здесь._соединение.create_function(имя, количество_параметров, функция)
|
320
338
|
|
321
339
|
def Создать_агрегатную_функцию(здесь, имя, количество_параметров, класс_агрегатной_функции):
|
322
|
-
здесь.create_aggregate(имя, количество_параметров, класс_агрегатной_функции)
|
340
|
+
здесь._соединение.create_aggregate(имя, количество_параметров, класс_агрегатной_функции)
|
323
341
|
|
324
342
|
def Создать_сопоставление(здесь, имя, функция):
|
325
|
-
здесь.create_collation(имя, функция)
|
343
|
+
здесь._соединение.create_collation(имя, функция)
|
326
344
|
|
327
|
-
def Закрыть(здесь): здесь.close()
|
345
|
+
def Закрыть(здесь): здесь._соединение.close()
|
328
346
|
|
329
|
-
def Утвердить(здесь): здесь.commit()
|
347
|
+
def Утвердить(здесь): здесь._соединение.commit()
|
330
348
|
|
331
|
-
def Откатить(здесь): здесь.rollback()
|
349
|
+
def Откатить(здесь): здесь._соединение.rollback()
|
332
350
|
|
333
351
|
@property
|
334
|
-
def В_транзакции(здесь): return здесь.in_transaction
|
352
|
+
def В_транзакции(здесь): return здесь._соединение.in_transaction
|
335
353
|
|
336
354
|
@property
|
337
|
-
def Изоляция(здесь): return здесь.isolation_level
|
355
|
+
def Изоляция(здесь): return здесь._соединение.isolation_level
|
338
356
|
|
339
357
|
@Изоляция.setter
|
340
|
-
def Изоляция(здесь, значение): здесь.isolation_level = значение
|
341
|
-
|
342
|
-
def Подключиться(
|
343
|
-
путь, *,
|
344
|
-
таймаут = 5.0,
|
345
|
-
обнаружение_типов = 0,
|
346
|
-
уровень_изоляции = None,
|
347
|
-
проверять_тот_же_ли_поток = True,
|
348
|
-
фабрика = Соединение,
|
349
|
-
кэш_инструкций = 128,
|
350
|
-
является_ссылкой = False
|
351
|
-
):
|
352
|
-
if уровень_изоляции == 'ОТЛОЖЕННО': уровень_изоляции = 'DEFERRED'
|
353
|
-
elif уровень_изоляции == 'НЕМЕДЛЕННО': уровень_изоляции = 'IMMEDIATE'
|
354
|
-
elif уровень_изоляции == 'ИСКЛЮЧИТЕЛЬНО': уровень_изоляции = 'EXCLUSIVE'
|
355
|
-
else: уровень_изоляции = None
|
356
|
-
|
357
|
-
соединение = sqlite3.connect(
|
358
|
-
путь,
|
359
|
-
timeout=таймаут,
|
360
|
-
detect_types=обнаружение_типов,
|
361
|
-
isolation_level=уровень_изоляции,
|
362
|
-
check_same_thread=проверять_тот_же_ли_поток,
|
363
|
-
factory=фабрика,
|
364
|
-
cached_statements=кэш_инструкций,
|
365
|
-
uri=является_ссылкой
|
366
|
-
)
|
367
|
-
|
368
|
-
return соединение
|
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,12 +1,12 @@
|
|
1
1
|
rupython/__main__.py,sha256=BxtsIK8PJuOOGVDKxqoscwJjjWWhZts7adicFuwUL6k,540
|
2
2
|
rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
|
3
|
-
rupython/Преобразователь.py,sha256=
|
4
|
-
rupython/Модули/БД.py,sha256=
|
3
|
+
rupython/Преобразователь.py,sha256=YaR4lZaQxgo4vEZFk0i4_1Nx41AoH3N0mSbV2KH3wEM,42790
|
4
|
+
rupython/Модули/БД.py,sha256=9Q3U634QBas1jvf898Lqt1EiMp8YpLGYv9_uXx6CU3I,15299
|
5
5
|
rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
|
6
6
|
rupython/Модули/РегВыр.py,sha256=yeXYfeDF2qw4DSKVdZVSFInMUW52U7Nq_KOJKvm4XnM,6349
|
7
7
|
rupython/Модули/Случ.py,sha256=oeVdSdFVb4X_T-nX2P7NSIhise1zUPIS4lk7h-67XSg,2689
|
8
|
-
rupython-1.1.
|
9
|
-
rupython-1.1.
|
10
|
-
rupython-1.1.
|
11
|
-
rupython-1.1.
|
12
|
-
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
|