rupython 1.2.5__py3-none-any.whl → 1.2.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.
@@ -3,21 +3,12 @@ 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
-
18
6
  Разбор_объявленных_типов = sqlite3.PARSE_DECLTYPES
19
7
  Разбор_названий_столбцов = sqlite3.PARSE_COLNAMES
20
-
8
+ Успешно = sqlite3.SQLITE_OK
9
+ Отказ = sqlite3.SQLITE_DENY
10
+ Игнорировать = sqlite3.SQLITE_IGNORE
11
+ Уровень_интерфейса_взаимодействия = sqlite3.apilevel
21
12
  Стиль_параметров = sqlite3.paramstyle
22
13
  Потокобезопасность = sqlite3.threadsafety
23
14
 
@@ -29,9 +20,8 @@ import re as РегВыр
29
20
  'ОТЛОЖЕННО': 'DEFERRED',
30
21
  'НЕМЕДЛЕННО': 'IMMEDIATE',
31
22
  'ИСКЛЮЧИТЕЛЬНО': 'EXCLUSIVE',
32
- 'ОТКАТИТЬ': 'ROLLBACK TRANSACTION',
23
+ 'ОТКАТИТЬ': 'ROLLBACK',
33
24
  'ТОЧКА_СОХРАНЕНИЯ': 'SAVEPOINT',
34
- 'ОСВОБОДИТЬ': 'RELEASE SAVEPOINT',
35
25
  'НАСТРОИТЬ': 'PRAGMA',
36
26
 
37
27
  'ВЫБРАТЬ': 'SELECT',
@@ -57,7 +47,6 @@ import re as РегВыр
57
47
  'ПО ПРАВОЙ': 'RIGHT',
58
48
  'ПОЛНОСТЬЮ': 'FULL',
59
49
  'ПО': 'ON',
60
- 'К': 'TO',
61
50
  'ПЕРЕКРЁСТНО': 'CROSS',
62
51
  'ИСПОЛЬЗУЯ': 'USING',
63
52
 
@@ -66,7 +55,7 @@ import re as РегВыр
66
55
  'ЗНАЧЕНИЯ': 'VALUES',
67
56
  'ИЗМЕНИТЬ': 'UPDATE',
68
57
  'УСТАНОВИВ': 'SET',
69
- 'УДАЛИТЬ': 'DELETE',
58
+ 'УДАЛИТЬ ИЗ': 'DELETE FROM',
70
59
  'ПРИ КОНФЛИКТЕ': 'ON CONFLICT',
71
60
  'ВЫПОЛНЯТЬ': 'DO',
72
61
  'НИЧЕГО': 'NOTHING',
@@ -79,22 +68,23 @@ import re as РегВыр
79
68
  'ИЗМЕНИТЬ ТАБЛИЦУ': 'ALTER TABLE',
80
69
  'ИЗМЕНИТЬ СТОЛБЕЦ': 'ALTER COLUMN',
81
70
  'СОЗДАТЬ': 'CREATE',
71
+ 'УДАЛИТЬ': 'DROP',
82
72
  'БАЗУ ДАННЫХ': 'DATABASE',
83
73
  'ТАБЛИЦУ': 'TABLE',
84
74
  'ВРЕМЕННУЮ': 'TEMPORARY',
85
75
  'ДОБАВИВ': 'ADD',
86
76
  'УДАЛИВ': 'DROP',
87
77
  'ИНДЕКС': 'INDEX',
88
- 'СХЕМУ': 'SCHEME',
89
- 'ТАБЛИЦУ': 'TABLE',
78
+ 'СХЕМУ': 'SCHEMA',
90
79
  'УНИКАЛЬНЫЙ': 'UNIQUE',
91
80
  'ПРЕДСТАВЛЕНИЕ': 'VIEW',
92
81
  'СТОЛБЕЦ': 'COLUMN',
82
+ 'ТРИГГЕР': 'TRIGGER',
93
83
  'СТРОГО': 'STRICT',
94
- 'ПЕРЕИМЕНОВАТЬ В': 'RENAME TO',
95
84
 
96
85
  'ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NULL',
97
86
  'НЕ ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NOT NULL',
87
+ 'НЕ ПУСТОЕ': 'NOT NULL',
98
88
  'ПУСТО': 'NULL',
99
89
  'И': 'AND',
100
90
  'ИЛИ': 'OR',
@@ -130,7 +120,7 @@ import re as РегВыр
130
120
  'ДА': 'TRUE',
131
121
  'НЕТ': 'FALSE',
132
122
  'ПО_УМОЛЧАНИЮ': 'DEFAULT',
133
- 'САМОУВЕЛИЧИВАЮЩЕЕСЯ': 'AUTO_INCREMENT',
123
+ 'САМОУВЕЛИЧИВАЮЩЕЕСЯ': 'AUTOINCREMENT',
134
124
  'ССЫЛАЕТСЯ НА': 'REFERENCES',
135
125
 
136
126
  'ОТОБРАВ': 'FILTER',
@@ -143,7 +133,7 @@ import re as РегВыр
143
133
  'ДЛИНА': 'LENGTH',
144
134
  'В_ЗАГЛАВНЫЕ': 'UPPER',
145
135
  'В_СТРОЧНЫЕ': 'LOWER',
146
- 'ПОДСТРОКА': 'SUBSTRING',
136
+ 'ПОДСТРОКА': 'SUBSTR',
147
137
  'ЗАМЕНИТЬ': 'REPLACE',
148
138
  'ОКРУГЛИТЬ': 'ROUND',
149
139
  'ОКРУГЛИТЬ_ВНИЗ': 'FLOOR',
@@ -155,7 +145,56 @@ import re as РегВыр
155
145
  'ИЗВЛЕЧЬ': 'EXTRACT',
156
146
  'ГОД': 'YEAR',
157
147
  'МЕСЯЦ': 'MONTH',
158
- 'ДЕНЬ': 'DAY'
148
+ 'ДЕНЬ': 'DAY',
149
+
150
+ 'СЛУЧАЙНОЕ': 'RANDOM',
151
+ 'ТИП_ДАННЫХ': 'TYPEOF',
152
+ 'ПОСЛЕДНИЙ_ИДЕНТИФИКАТОР': 'LAST_INSERT_ROWID',
153
+ 'ЗНАК': 'SIGN',
154
+ 'ЕСЛИ_ПУСТО': 'IFNULL',
155
+ 'ЯВЛЯЕТСЯ_ПУСТЫМ': 'NULLIF',
156
+ 'СОВПАДЕНИЕ': 'LIKE',
157
+ 'ГЛОБАЛЬНОЕ_СОВПАДЕНИЕ': 'GLOB',
158
+ 'ОБРЕЗАТЬ': 'TRIM',
159
+ 'ОБРЕЗАТЬ_СЛЕВА': 'LTRIM',
160
+ 'ОБРЕЗАТЬ_СПРАВА': 'RTRIM',
161
+ 'ОБЩЕЕ': 'TOTAL',
162
+ 'СТАНДАРТНОЕ_ОТКЛОНЕНИЕ': 'STDDEV',
163
+ 'ДИСПЕРСИЯ': 'VARIANCE',
164
+ 'СТРОКА_В_ЧИСЛО': 'CAST',
165
+ 'МАКСИМАЛЬНАЯ_ДЛИНА': 'MAXLEN',
166
+ 'МИНИМАЛЬНАЯ_ДЛИНА': 'MINLEN',
167
+ 'СЖАТЬ': 'COMPRESS',
168
+ 'РАСЖАТЬ': 'UNCOMPRESS',
169
+ 'ВЫЧИСЛИТЬ_ХЭШ': 'HEX',
170
+ 'ЗАКОДОВАТЬ_64': 'BASE64',
171
+ 'РАСКОДОВАТЬ_64': 'UNBASE64',
172
+
173
+ 'ВКЛЮЧЕНО': 'ON',
174
+ 'ОТКЛЮЧЕНО': 'OFF',
175
+ 'Синхронизация': 'synchronous',
176
+ 'Журнал': 'journal_mode',
177
+ 'Размер_кэша': 'cache_size',
178
+ 'Режим_блокования': 'locking_mode',
179
+ 'Самоочищение': 'auto_vacuum',
180
+ 'Ключ_шифрования': 'key',
181
+ 'Чтение_без_утверждения': 'read_uncommitted',
182
+ 'Режим_чтения': 'query_only',
183
+ 'Кодование': 'encoding',
184
+ 'Размер_страницы': 'page_size',
185
+ 'Максимум_страниц': 'max_page_count',
186
+ 'Временное_хранилище': 'temp_store',
187
+ 'Предел_анализа': 'analysis_limit',
188
+ 'Проверка_целостности': 'integrity_check',
189
+ 'Быстрая_проверка': 'quick_check',
190
+ 'Внешние_ключи': 'foreign_keys',
191
+ 'Пропускать_проверки': 'ignore_check_constraints',
192
+ 'Рекурсивные_триггеры': 'recursive_triggers',
193
+ 'Список_сопоставлений': 'collation_list',
194
+ 'Информация_о_таблице': 'table_info',
195
+ 'Информация_об_индексе': 'index_info',
196
+ 'Список_индексов': 'index_list',
197
+ 'Список_таблиц': 'table_list'
159
198
  }
160
199
 
161
200
  def Получить_токены(запрос):
@@ -285,7 +324,13 @@ def Перевести_токены(токены):
285
324
  break
286
325
 
287
326
  if not найдено_ключевое_слово:
288
- переведённые_токены.append(токен)
327
+ # Специальная обработка для значений PRAGMA
328
+ if токен.upper() == 'ДА':
329
+ переведённые_токены.append('ON')
330
+ elif токен.upper() == 'НЕТ':
331
+ переведённые_токены.append('OFF')
332
+ else:
333
+ переведённые_токены.append(токен)
289
334
  i += 1
290
335
 
291
336
  return переведённые_токены
@@ -320,6 +365,7 @@ def Перевести_код_запроса(текст):
320
365
  r"no such index: (.+)": r'Индекс "\1" не существует.',
321
366
  r"too many SQL variables": r'Слишком много переменных в запросе.',
322
367
  r"maximum recursion depth exceeded": r'Превышена максимальная глубина рекурсии в запросе.',
368
+ r"no such database: (.+)": r'База данных "\1" не существует.', # Добавлено
323
369
  r"incomplete input": r'Неполный запрос.',
324
370
  r"malformed database schema \((.+)\)": r'Некорректная схема базы данных: \1.',
325
371
  r"file is not a database": r'Файл не является базой данных.',
@@ -345,7 +391,12 @@ def Перевести_код_запроса(текст):
345
391
  r"no such module: (.+)": r'Модуль "\1" не существует.',
346
392
  r"parameters are of unsupported type": r'Параметры имеют неподдерживаемый тип.',
347
393
  r"interrupted": r'Операция была прервана.',
348
- r"out of memory": r'Недостаточно памяти для выполнения операции.'
394
+ r"out of memory": r'Недостаточно памяти для выполнения операции.',
395
+ r"no such pragma: (.+)": r'Настройка "\1" не существует.',
396
+ r"invalid value for pragma (.+)": r'Недопустимое значение для настройки "\1".',
397
+ r"unsupported journal mode: (.+)": r'Неподдерживаемый режим журнала: \1.',
398
+ r"invalid encoding: (.+)": r'Недопустимая кодировка: \1.',
399
+ r"invalid synchronous value: (.+)": r'Недопустимое значение синхронизации: \1.'
349
400
  }
350
401
 
351
402
  def Перевести_ошибку(исключение):
@@ -456,7 +507,7 @@ class Соединение():
456
507
  except Ошибка as ош: raise Ошибка(Перевести_ошибку(ош)) from ош
457
508
 
458
509
  def Создать_агрегатную_функцию(здесь, имя, число_аргументов, класс):
459
- try: здесь._соединение.create_aggregate(имя, число_аргументов)
510
+ try: здесь._соединение.create_aggregate(имя, число_аргументов, класс)
460
511
  except Ошибка as ош: raise Ошибка(Перевести_ошибку(ош)) from ош
461
512
 
462
513
  def Создать_сопоставление(здесь, имя, функция):
@@ -5,7 +5,7 @@ import os as ОС
5
5
  import sys as Система
6
6
  import importlib as Импортование
7
7
  import re as РегВыр
8
- from io import StringIO as СтроковыйВВ
8
+ from io import StringIO as Текстовый_ВВ
9
9
 
10
10
  Служебные_слова = {
11
11
  'Да': 'True',
@@ -396,7 +396,7 @@ def Обработать_f_строки(слова, путь_к_файлу):
396
396
  Вывести_текст_исключения(искл, 'при разборе f-строки', путь_к_файлу)
397
397
  выражение = содержимое[нач_поз:поз-1]
398
398
  try:
399
- токены_выражения = list(Разборщик_слов.generate_tokens(СтроковыйВВ(выражение).readline))
399
+ токены_выражения = list(Разборщик_слов.generate_tokens(Текстовый_ВВ(выражение).readline))
400
400
  токены_выражения = [(ток.type, ток.string, отступов) for ток in токены_выражения if ток.type != Разборщик_слов.ENDMARKER]
401
401
  Выполнить_основные_замены(токены_выражения, Служебные_слова)
402
402
  Выполнить_основные_замены(токены_выражения, Специальные_названия)
@@ -696,11 +696,17 @@ def Посчитать_физические_строки(путь_к_файлу,
696
696
  r"KeyError: '(.+)'": r'Ключ "\1" отсутствует в словаре.',
697
697
  r"invalid syntax\. Perhaps you forgot a comma\?": r'Ошибочный синтаксис. Может быть, вы забыли запятую?',
698
698
  r"invalid syntax": r'Синтаксическая ошибка в коде.',
699
+ r"unrecognized token: \"(.+?)\"": r'Неизвестный токен: "\1".',
699
700
  r"expected .+, got .+": r'Ожидался один тип данных, получен другой.',
700
- r"int\(\) argument must be a string, a bytes-like object or a number, not '(\w+)'": r'Аргумент функции Цел() должен быть строкой, байтовым объектом или числом, а не "\1".',
701
+ r"int\(\) argument must be a string, a bytes-like object or a number, not '(\w+)'": r'Аргумент функции "Цел()" должен быть строкой, байтовым объектом или числом, а не "\1".',
701
702
  r"IndentationError: expected an indented block": r'Ожидался блок с отступом.',
702
703
  r"IndentationError: unindent does not match any outer indentation level": r'Уровень отступа не соответствует внешнему блоку.',
703
704
  r"TypeError: (\w+)\(\) takes \d+ positional arguments? but \d+ were given": r'Функция "\1" принимает меньше аргументов, чем было передано.',
705
+ r"'(.+)' is an invalid keyword argument for (.+)": r'"\1" не является верным названием аргумента для "\2".',
706
+ r"(.+) takes exactly one argument \((\d+) given\)": r'"\1" принимает ровно один аргумент (получено \2).',
707
+ r"(.+) takes exactly (\d+) arguments \((\d+) given\)": r'"\1" принимает аргументы в количестве ровно \2 (получено \3).',
708
+ r"(.+) takes at most (\d+) arguments \((\d+) given\)": r'"\1" принимает аргументы в количестве не более \2 (получено \3).',
709
+ r"(.+) takes at least (\d+) arguments \((\d+) given\)": r'"\1" принимает аргументы в количестве не менее \2 (получено \3).',
704
710
  r"ValueError: (.+)": r'Ошибка значения: \1.',
705
711
  r"AttributeError: '(\w+)' object is not callable": r'Объект типа "\1" не является вызываемым.',
706
712
  r"ImportError: No module named '(\w+)'": r'Ошибка импорта: модуль "\1" не найден.',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.2.5
3
+ Version: 1.2.7
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,14 +1,14 @@
1
1
  rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
2
2
  rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
3
- rupython/__Общие_функции__.py,sha256=FLbN5hhnnXXqAwqRRNJ2Y_0fXAAYCC_7Pn06_DZjX3w,826
4
- rupython/Преобразователь.py,sha256=-0oxZb63T3s50sT-0jiH3cA4KqRs3qVpaGsfSyAb8TY,47550
5
- rupython/Модули/БД.py,sha256=LXMY-CIZxERUUcbWY0Mruab_w4RzKPDNwWGtf1tEXjs,24571
3
+ rupython/__Общие_функции__.py,sha256=eiDtxw8MVlZ8rZZC2N-NkYqmf2F-XCczHubUnzVKWJA,856
4
+ rupython/Преобразователь.py,sha256=mF6rQPRqI4k1yhFMO8WQ-166s_NsIyY2F8DxK8uACQs,48449
5
+ rupython/Модули/БД.py,sha256=3910eO3_rdfKrwR8wusgEZ-gNBZhXEdVg4aiJefz-2E,27306
6
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.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,,
10
+ rupython-1.2.7.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
11
+ rupython-1.2.7.dist-info/METADATA,sha256=d4qGP1x4E3yyi-HpMhhz6QlQoLefpAERxN1lROhLpNc,29768
12
+ rupython-1.2.7.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
13
+ rupython-1.2.7.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
14
+ rupython-1.2.7.dist-info/RECORD,,