rupython 1.2.7__py3-none-any.whl → 1.2.8__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 +94 -57
- 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/252/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/227/342/225/250/342/225/241/342/225/250/342/225/221/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/225.py +426 -0
- {rupython-1.2.7.dist-info → rupython-1.2.8.dist-info}/METADATA +1 -1
- {rupython-1.2.7.dist-info → rupython-1.2.8.dist-info}/RECORD +7 -6
- {rupython-1.2.7.dist-info → rupython-1.2.8.dist-info}/LICENSE +0 -0
- {rupython-1.2.7.dist-info → rupython-1.2.8.dist-info}/WHEEL +0 -0
- {rupython-1.2.7.dist-info → rupython-1.2.8.dist-info}/top_level.txt +0 -0
@@ -8,7 +8,6 @@ import re as РегВыр
|
|
8
8
|
Успешно = sqlite3.SQLITE_OK
|
9
9
|
Отказ = sqlite3.SQLITE_DENY
|
10
10
|
Игнорировать = sqlite3.SQLITE_IGNORE
|
11
|
-
Уровень_интерфейса_взаимодействия = sqlite3.apilevel
|
12
11
|
Стиль_параметров = sqlite3.paramstyle
|
13
12
|
Потокобезопасность = sqlite3.threadsafety
|
14
13
|
|
@@ -23,7 +22,6 @@ import re as РегВыр
|
|
23
22
|
'ОТКАТИТЬ': 'ROLLBACK',
|
24
23
|
'ТОЧКА_СОХРАНЕНИЯ': 'SAVEPOINT',
|
25
24
|
'НАСТРОИТЬ': 'PRAGMA',
|
26
|
-
|
27
25
|
'ВЫБРАТЬ': 'SELECT',
|
28
26
|
'ИЗ': 'FROM',
|
29
27
|
'ГДЕ': 'WHERE',
|
@@ -49,7 +47,6 @@ import re as РегВыр
|
|
49
47
|
'ПО': 'ON',
|
50
48
|
'ПЕРЕКРЁСТНО': 'CROSS',
|
51
49
|
'ИСПОЛЬЗУЯ': 'USING',
|
52
|
-
|
53
50
|
'ВСТАВИТЬ ИЛИ ___ В': 'INSERT OR ___ INTO',
|
54
51
|
'ДОБАВИТЬ В': 'INSERT INTO',
|
55
52
|
'ЗНАЧЕНИЯ': 'VALUES',
|
@@ -64,7 +61,6 @@ import re as РегВыр
|
|
64
61
|
'ЗАМЕНИТЬ': 'REPLACE',
|
65
62
|
'ОТКАТИТЬ': 'ROLLBACK',
|
66
63
|
'СБОЙ': 'FAIL',
|
67
|
-
|
68
64
|
'ИЗМЕНИТЬ ТАБЛИЦУ': 'ALTER TABLE',
|
69
65
|
'ИЗМЕНИТЬ СТОЛБЕЦ': 'ALTER COLUMN',
|
70
66
|
'СОЗДАТЬ': 'CREATE',
|
@@ -81,7 +77,6 @@ import re as РегВыр
|
|
81
77
|
'СТОЛБЕЦ': 'COLUMN',
|
82
78
|
'ТРИГГЕР': 'TRIGGER',
|
83
79
|
'СТРОГО': 'STRICT',
|
84
|
-
|
85
80
|
'ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NULL',
|
86
81
|
'НЕ ЯВЛЯЕТСЯ ПУСТЫМ': 'IS NOT NULL',
|
87
82
|
'НЕ ПУСТОЕ': 'NOT NULL',
|
@@ -95,14 +90,12 @@ import re as РегВыр
|
|
95
90
|
'ЕСЛИ': 'IF',
|
96
91
|
'СУЩЕСТВУЕТ': 'EXISTS',
|
97
92
|
'БЕЗ': 'WITHOUT',
|
98
|
-
|
99
93
|
'ОПРЕДЕЛИВ': 'WITH',
|
100
94
|
'ВЫБОР': 'CASE',
|
101
95
|
'ПРИ': 'WHEN',
|
102
96
|
'ЭТО': 'THEN',
|
103
97
|
'КОНЕЦ': 'END',
|
104
98
|
'РЕКУРСИВНО': 'RECURSIVE',
|
105
|
-
|
106
99
|
'ЦЕЛОЕ': 'INTEGER',
|
107
100
|
'ВЕЩЕСТВЕННОЕ': 'REAL',
|
108
101
|
'ТЕКСТ': 'TEXT',
|
@@ -111,7 +104,6 @@ import re as РегВыр
|
|
111
104
|
'ВРЕМЯ': 'TIME',
|
112
105
|
'ВРЕМЕННАЯ_МЕТКА': 'TIMESTAMP',
|
113
106
|
'ЛОГИЧЕСКОЕ': 'BOOLEAN',
|
114
|
-
|
115
107
|
'КЛЮЧ': 'KEY',
|
116
108
|
'ПЕРВИЧНЫЙ': 'PRIMARY',
|
117
109
|
'ВНЕШНИЙ': 'FOREIGN',
|
@@ -122,7 +114,6 @@ import re as РегВыр
|
|
122
114
|
'ПО_УМОЛЧАНИЮ': 'DEFAULT',
|
123
115
|
'САМОУВЕЛИЧИВАЮЩЕЕСЯ': 'AUTOINCREMENT',
|
124
116
|
'ССЫЛАЕТСЯ НА': 'REFERENCES',
|
125
|
-
|
126
117
|
'ОТОБРАВ': 'FILTER',
|
127
118
|
'КОЛИЧЕСТВО': 'COUNT',
|
128
119
|
'СУММА': 'SUM',
|
@@ -146,7 +137,6 @@ import re as РегВыр
|
|
146
137
|
'ГОД': 'YEAR',
|
147
138
|
'МЕСЯЦ': 'MONTH',
|
148
139
|
'ДЕНЬ': 'DAY',
|
149
|
-
|
150
140
|
'СЛУЧАЙНОЕ': 'RANDOM',
|
151
141
|
'ТИП_ДАННЫХ': 'TYPEOF',
|
152
142
|
'ПОСЛЕДНИЙ_ИДЕНТИФИКАТОР': 'LAST_INSERT_ROWID',
|
@@ -169,7 +159,6 @@ import re as РегВыр
|
|
169
159
|
'ВЫЧИСЛИТЬ_ХЭШ': 'HEX',
|
170
160
|
'ЗАКОДОВАТЬ_64': 'BASE64',
|
171
161
|
'РАСКОДОВАТЬ_64': 'UNBASE64',
|
172
|
-
|
173
162
|
'ВКЛЮЧЕНО': 'ON',
|
174
163
|
'ОТКЛЮЧЕНО': 'OFF',
|
175
164
|
'Синхронизация': 'synchronous',
|
@@ -208,6 +197,11 @@ def Получить_токены(запрос):
|
|
208
197
|
while i < len(запрос):
|
209
198
|
символ = запрос[i]
|
210
199
|
|
200
|
+
if символ == '\\' and в_строке and i + 1 < len(запрос):
|
201
|
+
текущий_токен += символ + запрос[i + 1]
|
202
|
+
i += 2
|
203
|
+
continue
|
204
|
+
|
211
205
|
if символ in ('"', "'") and not в_комментарии:
|
212
206
|
if в_строке and символ == строка_символ:
|
213
207
|
в_строке = False
|
@@ -275,10 +269,10 @@ def Получить_токены(запрос):
|
|
275
269
|
|
276
270
|
текущий_токен += символ
|
277
271
|
i += 1
|
278
|
-
|
272
|
+
|
279
273
|
if текущий_токен:
|
280
274
|
токены.append(текущий_токен)
|
281
|
-
|
275
|
+
|
282
276
|
return токены
|
283
277
|
|
284
278
|
def Перевести_токены(токены):
|
@@ -313,7 +307,7 @@ def Перевести_токены(токены):
|
|
313
307
|
i += длина
|
314
308
|
найдено_ключевое_слово = True
|
315
309
|
break
|
316
|
-
|
310
|
+
|
317
311
|
if найдено_ключевое_слово:
|
318
312
|
break
|
319
313
|
|
@@ -322,17 +316,7 @@ def Перевести_токены(токены):
|
|
322
316
|
i += длина
|
323
317
|
найдено_ключевое_слово = True
|
324
318
|
break
|
325
|
-
|
326
|
-
if not найдено_ключевое_слово:
|
327
|
-
# Специальная обработка для значений PRAGMA
|
328
|
-
if токен.upper() == 'ДА':
|
329
|
-
переведённые_токены.append('ON')
|
330
|
-
elif токен.upper() == 'НЕТ':
|
331
|
-
переведённые_токены.append('OFF')
|
332
|
-
else:
|
333
|
-
переведённые_токены.append(токен)
|
334
|
-
i += 1
|
335
|
-
|
319
|
+
|
336
320
|
return переведённые_токены
|
337
321
|
|
338
322
|
def Собрать_запрос(токены):
|
@@ -354,7 +338,7 @@ def Перевести_код_запроса(текст):
|
|
354
338
|
|
355
339
|
Переводы_ошибок = {
|
356
340
|
r"no such table: (.+)": r'Таблица "\1" не существует.',
|
357
|
-
r"database is locked": r'База данных
|
341
|
+
r"database is locked": r'База данных заблокирована.',
|
358
342
|
r"near \"(.+)\": syntax error": r'Синтаксическая ошибка около "\1".',
|
359
343
|
r"table (.+) already exists": r'Таблица "\1" уже существует.',
|
360
344
|
r"no such column: (.+)": r'Столбец "\1" не существует.',
|
@@ -365,7 +349,7 @@ def Перевести_код_запроса(текст):
|
|
365
349
|
r"no such index: (.+)": r'Индекс "\1" не существует.',
|
366
350
|
r"too many SQL variables": r'Слишком много переменных в запросе.',
|
367
351
|
r"maximum recursion depth exceeded": r'Превышена максимальная глубина рекурсии в запросе.',
|
368
|
-
r"no such database: (.+)": r'База данных "\1" не существует.',
|
352
|
+
r"no such database: (.+)": r'База данных "\1" не существует.',
|
369
353
|
r"incomplete input": r'Неполный запрос.',
|
370
354
|
r"malformed database schema \((.+)\)": r'Некорректная схема базы данных: \1.',
|
371
355
|
r"file is not a database": r'Файл не является базой данных.',
|
@@ -415,39 +399,58 @@ class Указатель():
|
|
415
399
|
try:
|
416
400
|
запрос = Перевести_код_запроса(запрос)
|
417
401
|
здесь._курсор.execute(запрос, параметры)
|
418
|
-
except Ошибка as ош:
|
402
|
+
except Ошибка as ош:
|
403
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
419
404
|
|
420
405
|
def Выполнить_запросы(здесь, запрос, последовательность_параметров):
|
421
406
|
try:
|
422
407
|
запрос = Перевести_код_запроса(запрос)
|
423
408
|
здесь._курсор.executemany(запрос, последовательность_параметров)
|
424
|
-
except Ошибка as ош:
|
409
|
+
except Ошибка as ош:
|
410
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
425
411
|
|
426
412
|
def Выполнить_сценарий(здесь, сценарий):
|
427
413
|
try:
|
428
414
|
скрипт = Перевести_код_запроса(сценарий)
|
429
415
|
здесь._курсор.executescript(скрипт)
|
430
|
-
except Ошибка as ош:
|
416
|
+
except Ошибка as ош:
|
417
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
431
418
|
|
432
419
|
def Извлечь_запись(здесь):
|
433
|
-
|
420
|
+
try:
|
421
|
+
return здесь._курсор.fetchone()
|
422
|
+
except Ошибка as ош:
|
423
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
434
424
|
|
435
425
|
def Извлечь_записи(здесь, количество):
|
436
|
-
|
426
|
+
try:
|
427
|
+
return здесь._курсор.fetchmany(количество)
|
428
|
+
except Ошибка as ош:
|
429
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
437
430
|
|
438
431
|
def Извлечь_все_записи(здесь):
|
439
|
-
|
432
|
+
try:
|
433
|
+
return здесь._курсор.fetchall()
|
434
|
+
except Ошибка as ош:
|
435
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
440
436
|
|
441
|
-
def Закрыть(здесь):
|
437
|
+
def Закрыть(здесь):
|
438
|
+
try:
|
439
|
+
здесь._курсор.close()
|
440
|
+
except Ошибка as ош:
|
441
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
442
442
|
|
443
443
|
@property
|
444
|
-
def Описание(здесь):
|
444
|
+
def Описание(здесь):
|
445
|
+
return здесь._курсор.description
|
445
446
|
|
446
447
|
@property
|
447
|
-
def Количество_строк(здесь):
|
448
|
+
def Количество_строк(здесь):
|
449
|
+
return здесь._курсор.rowcount
|
448
450
|
|
449
451
|
@property
|
450
|
-
def Последний_идентификатор(здесь):
|
452
|
+
def Последний_идентификатор(здесь):
|
453
|
+
return здесь._курсор.lastrowid
|
451
454
|
|
452
455
|
class Соединение():
|
453
456
|
def __init__(здесь,
|
@@ -474,63 +477,97 @@ class Соединение():
|
|
474
477
|
cached_statements=кэш_инструкций,
|
475
478
|
uri=является_ссылкой
|
476
479
|
)
|
477
|
-
except Ошибка as ош:
|
480
|
+
except Ошибка as ош:
|
481
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
482
|
+
|
483
|
+
def __enter__(здесь):
|
484
|
+
return здесь
|
485
|
+
|
486
|
+
def __exit__(здесь, exc_type, exc_value, traceback):
|
487
|
+
здесь.Закрыть()
|
478
488
|
|
479
489
|
def Создать_указатель(здесь):
|
480
490
|
try:
|
481
491
|
курсор = здесь._соединение.cursor()
|
482
492
|
return Указатель(курсор)
|
483
|
-
except Ошибка as ош:
|
493
|
+
except Ошибка as ош:
|
494
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
484
495
|
|
485
496
|
def Выполнить_запрос(здесь, запрос, параметры=()):
|
486
497
|
try:
|
487
498
|
запрос = Перевести_код_запроса(запрос)
|
488
499
|
указатель = здесь._соединение.execute(запрос, параметры)
|
489
500
|
return Указатель(указатель)
|
490
|
-
except Ошибка as ош:
|
501
|
+
except Ошибка as ош:
|
502
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
491
503
|
|
492
504
|
def Выполнить_запросы(здесь, запрос, параметры):
|
493
505
|
try:
|
494
506
|
запрос = Перевести_код_запроса(запрос)
|
495
507
|
указатель = здесь._соединение.executemany(запрос, параметры)
|
496
508
|
return Указатель(указатель)
|
497
|
-
except Ошибка as ош:
|
509
|
+
except Ошибка as ош:
|
510
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
498
511
|
|
499
512
|
def Выполнить_сценарий(здесь, сценарий):
|
500
513
|
try:
|
501
514
|
скрипт = Перевести_код_запроса(сценарий)
|
502
515
|
здесь._соединение.executescript(скрипт)
|
503
|
-
except Ошибка as ош:
|
516
|
+
except Ошибка as ош:
|
517
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
504
518
|
|
505
519
|
def Создать_функцию(здесь, имя, количество_параметров, функция):
|
506
|
-
try:
|
507
|
-
|
520
|
+
try:
|
521
|
+
здесь._соединение.create_function(имя, количество_параметров, функция)
|
522
|
+
except Ошибка as ош:
|
523
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
508
524
|
|
509
525
|
def Создать_агрегатную_функцию(здесь, имя, число_аргументов, класс):
|
510
|
-
try:
|
511
|
-
|
526
|
+
try:
|
527
|
+
здесь._соединение.create_aggregate(имя, число_аргументов, класс)
|
528
|
+
except Ошибка as ош:
|
529
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
512
530
|
|
513
531
|
def Создать_сопоставление(здесь, имя, функция):
|
514
|
-
try:
|
515
|
-
|
532
|
+
try:
|
533
|
+
здесь._соединение.create_collation(имя, функция)
|
534
|
+
except Ошибка as ош:
|
535
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
536
|
+
|
537
|
+
def Прервать(здесь):
|
538
|
+
try:
|
539
|
+
здесь._соединение.interrupt()
|
540
|
+
except Ошибка as ош:
|
541
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
516
542
|
|
517
543
|
def Закрыть(здесь):
|
518
|
-
try:
|
519
|
-
|
544
|
+
try:
|
545
|
+
здесь._соединение.close()
|
546
|
+
except Ошибка as ош:
|
547
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
520
548
|
|
521
549
|
def Утвердить(здесь):
|
522
|
-
try:
|
523
|
-
|
550
|
+
try:
|
551
|
+
здесь._соединение.commit()
|
552
|
+
except Ошибка as ош:
|
553
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
524
554
|
|
525
555
|
def Откатить(здесь):
|
526
|
-
try:
|
527
|
-
|
556
|
+
try:
|
557
|
+
здесь._соединение.rollback()
|
558
|
+
except Ошибка as ош:
|
559
|
+
raise Ошибка(Перевести_ошибку(ош)) from ош
|
528
560
|
|
529
561
|
@property
|
530
|
-
def В_транзакции(здесь):
|
562
|
+
def В_транзакции(здесь):
|
563
|
+
return здесь._соединение.in_transaction
|
531
564
|
|
532
565
|
@property
|
533
|
-
def Изоляция(здесь):
|
566
|
+
def Изоляция(здесь):
|
567
|
+
return здесь._соединение.isolation_level
|
534
568
|
|
535
569
|
@Изоляция.setter
|
536
|
-
def Изоляция(здесь, значение):
|
570
|
+
def Изоляция(здесь, значение):
|
571
|
+
if значение not in (None, 'DEFERRED', 'IMMEDIATE', 'EXCLUSIVE'):
|
572
|
+
raise ValueError(f"Недопустимый уровень изоляции: {значение}")
|
573
|
+
здесь._соединение.isolation_level = значение
|
@@ -0,0 +1,426 @@
|
|
1
|
+
Да, заебень недостающие методы. Вот поправленный код: import collections
|
2
|
+
import collections.abc
|
3
|
+
|
4
|
+
_Последовательность = collections.abc.Sequence
|
5
|
+
_Изменяемая_последовательность = collections.abc.MutableSequence
|
6
|
+
_Отображение = collections.abc.Mapping
|
7
|
+
_Изменяемое_отображение = collections.abc.MutableMapping
|
8
|
+
|
9
|
+
class Именованный_кортеж(_Последовательность):
|
10
|
+
def __init__(здесь, имя, поля):
|
11
|
+
здесь._namedtuple = collections.namedtuple(имя, поля)
|
12
|
+
|
13
|
+
def __call__(здесь, *ПА, **ИА):
|
14
|
+
return здесь._namedtuple(*ПА, **ИА)
|
15
|
+
|
16
|
+
def __getattr__(здесь, имя):
|
17
|
+
return getattr(здесь._namedtuple, имя)
|
18
|
+
|
19
|
+
def __getitem__(здесь, индекс):
|
20
|
+
return здесь._namedtuple.__getitem__(индекс)
|
21
|
+
|
22
|
+
def __len__(здесь):
|
23
|
+
return len(здесь._namedtuple)
|
24
|
+
|
25
|
+
def __iter__(здесь):
|
26
|
+
return iter(здесь._namedtuple)
|
27
|
+
|
28
|
+
def __contains__(здесь, элемент):
|
29
|
+
return элемент in здесь._namedtuple
|
30
|
+
|
31
|
+
def __reversed__(здесь):
|
32
|
+
return reversed(здесь._namedtuple)
|
33
|
+
|
34
|
+
class Двусторонняя_очередь(_Последовательность):
|
35
|
+
def __init__(здесь, перебираемый = None, максимальная_длина = None):
|
36
|
+
здесь._deque = collections.deque(перебираемый or [], maxlen=максимальная_длина)
|
37
|
+
|
38
|
+
def Добавить_в_начало(здесь, элемент):
|
39
|
+
здесь._deque.appendleft(элемент)
|
40
|
+
|
41
|
+
def Добавить_в_конец(здесь, элемент):
|
42
|
+
здесь._deque.append(элемент)
|
43
|
+
|
44
|
+
def Удалить_с_начала(здесь):
|
45
|
+
if not здесь._deque:
|
46
|
+
raise IndexError("Очередь пуста")
|
47
|
+
return здесь._deque.popleft()
|
48
|
+
|
49
|
+
def Удалить_с_конца(здесь):
|
50
|
+
if not здесь._deque:
|
51
|
+
raise IndexError("Очередь пуста")
|
52
|
+
return здесь._deque.pop()
|
53
|
+
|
54
|
+
def Очистить(здесь):
|
55
|
+
здесь._deque.clear()
|
56
|
+
|
57
|
+
def Длина(здесь):
|
58
|
+
return len(здесь._deque)
|
59
|
+
|
60
|
+
def Расширить_в_начало(здесь, перебираемый):
|
61
|
+
здесь._deque.extendleft(перебираемый)
|
62
|
+
|
63
|
+
def Расширить_в_конец(здесь, перебираемый):
|
64
|
+
здесь._deque.extend(перебираемый)
|
65
|
+
|
66
|
+
def Повернуть(здесь, количество):
|
67
|
+
здесь._deque.rotate(количество)
|
68
|
+
|
69
|
+
def Перевернуть(здесь):
|
70
|
+
здесь._deque.reverse()
|
71
|
+
|
72
|
+
def Количество(здесь, элемент):
|
73
|
+
return sum(1 for x in здесь._deque if x == элемент)
|
74
|
+
|
75
|
+
def Индекс(здесь, элемент, начало=0, конец = None):
|
76
|
+
if конец is None:
|
77
|
+
конец = len(здесь._deque)
|
78
|
+
for i, x in enumerate(здесь._deque):
|
79
|
+
if начало <= i < конец and x == элемент:
|
80
|
+
return i
|
81
|
+
raise ValueError(f"{элемент} не найден в диапазоне")
|
82
|
+
|
83
|
+
def __getitem__(здесь, индекс):
|
84
|
+
return здесь._deque[индекс]
|
85
|
+
|
86
|
+
def __setitem__(здесь, индекс, значение):
|
87
|
+
здесь._deque[индекс] = значение
|
88
|
+
|
89
|
+
def __delitem__(здесь, индекс):
|
90
|
+
del здесь._deque[индекс]
|
91
|
+
|
92
|
+
def __len__(здесь):
|
93
|
+
return len(здесь._deque)
|
94
|
+
|
95
|
+
def __iter__(здесь):
|
96
|
+
return iter(здесь._deque)
|
97
|
+
|
98
|
+
def __contains__(здесь, элемент):
|
99
|
+
return элемент in здесь._deque
|
100
|
+
|
101
|
+
def __reversed__(здесь):
|
102
|
+
return iter(reversed(здесь._deque))
|
103
|
+
|
104
|
+
def insert(здесь, индекс, значение):
|
105
|
+
здесь._deque.rotate(-индекс)
|
106
|
+
здесь._deque.appendleft(значение)
|
107
|
+
здесь._deque.rotate(индекс)
|
108
|
+
|
109
|
+
def __str__(здесь):
|
110
|
+
return str(list(здесь._deque))
|
111
|
+
|
112
|
+
class Счётчик(_Отображение):
|
113
|
+
def __init__(здесь, перебираемый = None):
|
114
|
+
здесь._counter = collections.Counter(перебираемый or [])
|
115
|
+
|
116
|
+
def Обновить(здесь, перебираемый):
|
117
|
+
здесь._counter.update(перебираемый)
|
118
|
+
|
119
|
+
def Наиболее_частые(здесь, количество = None):
|
120
|
+
return здесь._counter.most_common(количество)
|
121
|
+
|
122
|
+
def Элементы(здесь):
|
123
|
+
return здесь._counter.elements()
|
124
|
+
|
125
|
+
def Получить(здесь, ключ, по_умолчанию = None):
|
126
|
+
return здесь._counter.get(ключ, по_умолчанию)
|
127
|
+
|
128
|
+
def __getitem__(здесь, ключ):
|
129
|
+
return здесь._counter[ключ]
|
130
|
+
|
131
|
+
def __iter__(здесь):
|
132
|
+
return iter(здесь._counter)
|
133
|
+
|
134
|
+
def __len__(здесь):
|
135
|
+
return len(здесь._counter)
|
136
|
+
|
137
|
+
def __contains__(здесь, ключ):
|
138
|
+
return ключ in здесь._counter
|
139
|
+
|
140
|
+
def __str__(здесь):
|
141
|
+
return str(здесь._counter)
|
142
|
+
|
143
|
+
class Упорядоченный_словарь(_Изменяемое_отображение):
|
144
|
+
def __init__(здесь, *ПА, **ИА):
|
145
|
+
здесь._ordered_dict = collections.OrderedDict(*ПА, **ИА)
|
146
|
+
|
147
|
+
def Вставить(здесь, ключ, значение):
|
148
|
+
здесь._ordered_dict[ключ] = значение
|
149
|
+
|
150
|
+
def Удалить(здесь, ключ, по_умолчанию = None):
|
151
|
+
return здесь._ordered_dict.pop(ключ, по_умолчанию)
|
152
|
+
|
153
|
+
def Удалить_последний(здесь):
|
154
|
+
return здесь._ordered_dict.popitem()
|
155
|
+
|
156
|
+
def Получить(здесь, ключ, по_умолчанию = None):
|
157
|
+
return здесь._ordered_dict.get(ключ, по_умолчанию)
|
158
|
+
|
159
|
+
def Установить_по_умолчанию(здесь, ключ, по_умолчанию = None):
|
160
|
+
return здесь._ordered_dict.setdefault(ключ, по_умолчанию)
|
161
|
+
|
162
|
+
def Ключи(здесь):
|
163
|
+
return list(здесь._ordered_dict.keys())
|
164
|
+
|
165
|
+
def Значения(здесь):
|
166
|
+
return list(здесь._ordered_dict.values())
|
167
|
+
|
168
|
+
def Элементы(здесь):
|
169
|
+
return list(здесь._ordered_dict.items())
|
170
|
+
|
171
|
+
def __getitem__(здесь, ключ):
|
172
|
+
return здесь._ordered_dict[ключ]
|
173
|
+
|
174
|
+
def __setitem__(здесь, ключ, значение):
|
175
|
+
здесь._ordered_dict[ключ] = значение
|
176
|
+
|
177
|
+
def __delitem__(здесь, ключ):
|
178
|
+
del здесь._ordered_dict[ключ]
|
179
|
+
|
180
|
+
def __iter__(здесь):
|
181
|
+
return iter(здесь._ordered_dict)
|
182
|
+
|
183
|
+
def __len__(здесь):
|
184
|
+
return len(здесь._ordered_dict)
|
185
|
+
|
186
|
+
def __contains__(здесь, ключ):
|
187
|
+
return ключ in здесь._ordered_dict
|
188
|
+
|
189
|
+
def __str__(здесь):
|
190
|
+
return str(здесь._ordered_dict)
|
191
|
+
|
192
|
+
class Словарь_по_умолчанию(_Изменяемое_отображение):
|
193
|
+
def __init__(здесь, функция_по_умолчанию = None, *ПА, **ИА):
|
194
|
+
здесь._default_dict = collections.defaultdict(функция_по_умолчанию, *ПА, **ИА)
|
195
|
+
|
196
|
+
def Получить(здесь, ключ, по_умолчанию = None):
|
197
|
+
return здесь._default_dict.get(ключ, по_умолчанию)
|
198
|
+
|
199
|
+
def Установить_по_умолчанию(здесь, ключ, по_умолчанию = None):
|
200
|
+
return здесь._default_dict.setdefault(ключ, по_умолчанию)
|
201
|
+
|
202
|
+
def Удалить(здесь, ключ, по_умолчанию = None):
|
203
|
+
return здесь._default_dict.pop(ключ, по_умолчанию)
|
204
|
+
|
205
|
+
def __getitem__(здесь, ключ):
|
206
|
+
return здесь._default_dict[ключ]
|
207
|
+
|
208
|
+
def __setitem__(здесь, ключ, значение):
|
209
|
+
здесь._default_dict[ключ] = значение
|
210
|
+
|
211
|
+
def __delitem__(здесь, ключ):
|
212
|
+
del здесь._default_dict[ключ]
|
213
|
+
|
214
|
+
def __iter__(здесь):
|
215
|
+
return iter(здесь._default_dict)
|
216
|
+
|
217
|
+
def __len__(здесь):
|
218
|
+
return len(здесь._default_dict)
|
219
|
+
|
220
|
+
def __contains__(здесь, ключ):
|
221
|
+
return ключ in здесь._default_dict
|
222
|
+
|
223
|
+
def Ключи(здесь):
|
224
|
+
return list(здесь._default_dict.keys())
|
225
|
+
|
226
|
+
def Значения(здесь):
|
227
|
+
return list(здесь._default_dict.values())
|
228
|
+
|
229
|
+
def Элементы(здесь):
|
230
|
+
return list(здесь._default_dict.items())
|
231
|
+
|
232
|
+
def __str__(здесь):
|
233
|
+
return str(здесь._default_dict)
|
234
|
+
|
235
|
+
class Слоистый_словарь(_Изменяемое_отображение):
|
236
|
+
def __init__(здесь, *словари):
|
237
|
+
здесь._chainmap = collections.ChainMap(*словари)
|
238
|
+
|
239
|
+
def Новый_дочерний(здесь, словарь = None):
|
240
|
+
return Цепной_словарь(словарь or {}, *здесь._chainmap.maps)
|
241
|
+
|
242
|
+
def Родители(здесь):
|
243
|
+
return Цепной_словарь(*здесь._chainmap.maps[1:])
|
244
|
+
|
245
|
+
def Получить(здесь, ключ, по_умолчанию = None):
|
246
|
+
return здесь._chainmap.get(ключ, по_умолчанию)
|
247
|
+
|
248
|
+
def Установить_по_умолчанию(здесь, ключ, по_умолчанию = None):
|
249
|
+
return здесь._chainmap.setdefault(ключ, по_умолчанию)
|
250
|
+
|
251
|
+
def Удалить(здесь, ключ, по_умолчанию = None):
|
252
|
+
return здесь._chainmap.pop(ключ, по_умолчанию)
|
253
|
+
|
254
|
+
def __getitem__(здесь, ключ):
|
255
|
+
return здесь._chainmap[ключ]
|
256
|
+
|
257
|
+
def __setitem__(здесь, ключ, значение):
|
258
|
+
здесь._chainmap[ключ] = значение
|
259
|
+
|
260
|
+
def __delitem__(здесь, ключ):
|
261
|
+
del здесь._chainmap[ключ]
|
262
|
+
|
263
|
+
def __iter__(здесь):
|
264
|
+
return iter(здесь._chainmap)
|
265
|
+
|
266
|
+
def __len__(здесь):
|
267
|
+
return len(здесь._chainmap)
|
268
|
+
|
269
|
+
def __contains__(здесь, ключ):
|
270
|
+
return ключ in здесь._chainmap
|
271
|
+
|
272
|
+
def Ключи(здесь):
|
273
|
+
return list(здесь._chainmap.keys())
|
274
|
+
|
275
|
+
def Значения(здесь):
|
276
|
+
return list(здесь._chainmap.values())
|
277
|
+
|
278
|
+
def Элементы(здесь):
|
279
|
+
return list(здесь._chainmap.items())
|
280
|
+
|
281
|
+
def __str__(здесь):
|
282
|
+
return str(здесь._chainmap)
|
283
|
+
|
284
|
+
class Собственный_словарь(_Изменяемое_отображение):
|
285
|
+
def __init__(здесь, *ПА, **ИА):
|
286
|
+
здесь._user_dict = collections.UserDict(*ПА, **ИА)
|
287
|
+
|
288
|
+
def Получить(здесь, ключ, по_умолчанию = None):
|
289
|
+
return здесь._user_dict.get(ключ, по_умолчанию)
|
290
|
+
|
291
|
+
def Установить_по_умолчанию(здесь, ключ, по_умолчанию = None):
|
292
|
+
return здесь._user_dict.setdefault(ключ, по_умолчанию)
|
293
|
+
|
294
|
+
def Удалить(здесь, ключ, по_умолчанию = None):
|
295
|
+
return здесь._user_dict.pop(ключ, по_умолчанию)
|
296
|
+
|
297
|
+
def __getitem__(здесь, ключ):
|
298
|
+
return здесь._user_dict[ключ]
|
299
|
+
|
300
|
+
def __setitem__(здесь, ключ, значение):
|
301
|
+
здесь._user_dict[ключ] = значение
|
302
|
+
|
303
|
+
def __delitem__(здесь, ключ):
|
304
|
+
del здесь._user_dict[ключ]
|
305
|
+
|
306
|
+
def __iter__(здесь):
|
307
|
+
return iter(здесь._user_dict)
|
308
|
+
|
309
|
+
def __len__(здесь):
|
310
|
+
return len(здесь._user_dict)
|
311
|
+
|
312
|
+
def __contains__(здесь, ключ):
|
313
|
+
return ключ in здесь._user_dict
|
314
|
+
|
315
|
+
def Ключи(здесь):
|
316
|
+
return list(здесь._user_dict.keys())
|
317
|
+
|
318
|
+
def Значения(здесь):
|
319
|
+
return list(здесь._user_dict.values())
|
320
|
+
|
321
|
+
def Элементы(здесь):
|
322
|
+
return list(здесь._user_dict.items())
|
323
|
+
|
324
|
+
def __str__(здесь):
|
325
|
+
return str(здесь._user_dict)
|
326
|
+
|
327
|
+
class Собственный_список(_Последовательность):
|
328
|
+
def __init__(здесь, перебираемый = None):
|
329
|
+
здесь._user_list = collections.UserList(перебираемый or [])
|
330
|
+
|
331
|
+
def Добавить(здесь, элемент):
|
332
|
+
здесь._user_list.append(элемент)
|
333
|
+
|
334
|
+
def Вставить(здесь, индекс, элемент):
|
335
|
+
здесь._user_list.insert(индекс, элемент)
|
336
|
+
|
337
|
+
def Удалить(здесь, индекс = None):
|
338
|
+
if индекс is None:
|
339
|
+
return здесь._user_list.pop()
|
340
|
+
return здесь._user_list.pop(индекс)
|
341
|
+
|
342
|
+
def Очистить(здесь):
|
343
|
+
здесь._user_list.clear()
|
344
|
+
|
345
|
+
def Количество(здесь, элемент):
|
346
|
+
return здесь._user_list.count(элемент)
|
347
|
+
|
348
|
+
def Индекс(здесь, элемент, начало=0, конец = None):
|
349
|
+
return здесь._user_list.index(элемент, начало, конец or len(здесь._user_list))
|
350
|
+
|
351
|
+
def __getitem__(здесь, индекс):
|
352
|
+
return здесь._user_list[индекс]
|
353
|
+
|
354
|
+
def __setitem__(здесь, индекс, значение):
|
355
|
+
здесь._user_list[индекс] = значение
|
356
|
+
|
357
|
+
def __delitem__(здесь, индекс):
|
358
|
+
del здесь._user_list[индекс]
|
359
|
+
|
360
|
+
def __len__(здесь):
|
361
|
+
return len(здесь._user_list)
|
362
|
+
|
363
|
+
def __iter__(здесь):
|
364
|
+
return iter(здесь._user_list)
|
365
|
+
|
366
|
+
def __contains__(здесь, элемент):
|
367
|
+
return элемент in здесь._user_list
|
368
|
+
|
369
|
+
def __reversed__(здесь):
|
370
|
+
return reversed(здесь._user_list)
|
371
|
+
|
372
|
+
def __str__(здесь):
|
373
|
+
return str(здесь._user_list)
|
374
|
+
|
375
|
+
class Собственная_строка(_Последовательность):
|
376
|
+
def __init__(здесь, строка=""):
|
377
|
+
здесь._user_string = collections.UserString(строка)
|
378
|
+
|
379
|
+
def __getitem__(здесь, индекс):
|
380
|
+
return здесь._user_string[индекс]
|
381
|
+
|
382
|
+
def __len__(здесь):
|
383
|
+
return len(здесь._user_string)
|
384
|
+
|
385
|
+
def __iter__(здесь):
|
386
|
+
return iter(здесь._user_string)
|
387
|
+
|
388
|
+
def __contains__(здесь, элемент):
|
389
|
+
return элемент in здесь._user_string
|
390
|
+
|
391
|
+
def __reversed__(здесь):
|
392
|
+
return reversed(здесь._user_string)
|
393
|
+
|
394
|
+
def __str__(здесь):
|
395
|
+
return str(здесь._user_string)
|
396
|
+
|
397
|
+
class Собственное_множество(collections.abc.MutableSet):
|
398
|
+
def __init__(здесь, перебираемый = None):
|
399
|
+
здесь._set = set(перебираемый or [])
|
400
|
+
|
401
|
+
def Добавить(здесь, элемент):
|
402
|
+
здесь._set.add(элемент)
|
403
|
+
|
404
|
+
def Удалить(здесь, элемент):
|
405
|
+
try:
|
406
|
+
здесь._set.remove(элемент)
|
407
|
+
except KeyError:
|
408
|
+
raise KeyError(f"Элемент {элемент} не найден")
|
409
|
+
|
410
|
+
def Отбросить(здесь, элемент):
|
411
|
+
здесь._set.discard(элемент)
|
412
|
+
|
413
|
+
def Очистить(здесь):
|
414
|
+
здесь._set.clear()
|
415
|
+
|
416
|
+
def __contains__(здесь, элемент):
|
417
|
+
return элемент in здесь._set
|
418
|
+
|
419
|
+
def __iter__(здесь):
|
420
|
+
return iter(здесь._set)
|
421
|
+
|
422
|
+
def __len__(здесь):
|
423
|
+
return len(здесь._set)
|
424
|
+
|
425
|
+
def __str__(здесь):
|
426
|
+
return str(здесь._set)
|
@@ -2,13 +2,14 @@ rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
|
|
2
2
|
rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
|
3
3
|
rupython/__Общие_функции__.py,sha256=eiDtxw8MVlZ8rZZC2N-NkYqmf2F-XCczHubUnzVKWJA,856
|
4
4
|
rupython/Преобразователь.py,sha256=mF6rQPRqI4k1yhFMO8WQ-166s_NsIyY2F8DxK8uACQs,48449
|
5
|
-
rupython/Модули/БД.py,sha256=
|
5
|
+
rupython/Модули/БД.py,sha256=8NBZuIbUQLCih-nlOLdANRhdQrXUqRTbS5p7dGCvZyQ,28315
|
6
6
|
rupython/Модули/ДатаВремя.py,sha256=YdpACxtHXt57zV7uYpZJZeH3T4bMd6orud-Y34DqWTI,25087
|
7
|
+
rupython/Модули/Коллекции.py,sha256=pJ1L38_8lF9VRvXQhUPPGu49tJkYlpR_3sC-ruxYsCU,16830
|
7
8
|
rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
|
8
9
|
rupython/Модули/РегВыр.py,sha256=T3yxVP-B5AwAzbUTjWpog3HCzRTGLZ58CEQpfA-0dsY,6341
|
9
10
|
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.
|
11
|
+
rupython-1.2.8.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
|
12
|
+
rupython-1.2.8.dist-info/METADATA,sha256=r9hgX95eThpbZt2NBGo3pkXleB3xk1K1vrtSLPZdH_M,29768
|
13
|
+
rupython-1.2.8.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
14
|
+
rupython-1.2.8.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
|
15
|
+
rupython-1.2.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|