rupython 1.4.9__tar.gz → 1.4.11__tar.gz
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-1.4.9 → rupython-1.4.11}/PKG-INFO +2 -2
- {rupython-1.4.9 → rupython-1.4.11}/README.md +1 -1
- rupython-1.4.11/rupython/__/320/227/320/260/320/263/320/276/320/273/320/276/320/262/320/276/321/207/320/275/321/213/320/271_/320/272/320/276/320/264__.py +280 -0
- rupython-1.4.11/rupython//320/237/321/200/320/265/320/276/320/261/321/200/320/260/320/267/320/276/320/262/320/260/321/202/320/265/320/273/321/214.py +816 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython.egg-info/PKG-INFO +2 -2
- {rupython-1.4.9 → rupython-1.4.11}/setup.py +1 -1
- rupython-1.4.9/rupython/__/320/227/320/260/320/263/320/276/320/273/320/276/320/262/320/276/321/207/320/275/321/213/320/271_/320/272/320/276/320/264__.py +0 -279
- rupython-1.4.9/rupython//320/237/321/200/320/265/320/276/320/261/321/200/320/260/320/267/320/276/320/262/320/260/321/202/320/265/320/273/321/214.py +0 -816
- {rupython-1.4.9 → rupython-1.4.11}/LICENSE +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython/__main__.py +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython/__/320/236/320/261/321/211/320/270/320/265_/321/204/321/203/320/275/320/272/321/206/320/270/320/270__.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/220/321/201/320/270/320/275/321/205/321/200/320/276/320/275/320/275/320/276/321/201/321/202/321/214.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/221/320/224.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/224/320/260/321/202/320/260/320/222/321/200/320/265/320/274/321/217.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/232/320/276/320/273/320/273/320/265/320/272/321/206/320/270/320/270.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/232/321/203/321/207/320/260.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/234/320/260/321/202/320/265/320/274.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/236/321/207/320/265/321/200/320/265/320/264/321/214.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/237/320/276/321/202/320/276/320/272/320/270.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/240/320/265/320/263/320/222/321/213/321/200.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/270/321/201/321/202/320/265/320/274/320/260.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/244/320/260/320/271/320/273/321/213.py" +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython.egg-info/SOURCES.txt +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython.egg-info/dependency_links.txt +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/rupython.egg-info/top_level.txt +0 -0
- {rupython-1.4.9 → rupython-1.4.11}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rupython
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.11
|
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
|
5
5
|
Home-page: https://gitflic.ru/project/russky/rupython
|
|
6
6
|
Author: Сообщество русских программистов
|
|
@@ -669,7 +669,7 @@ x = 0
|
|
|
669
669
|
- `Писать(данные)` — запись данных (строки или байтов).
|
|
670
670
|
- `Позиция()` — возвращает текущую позицию указателя.
|
|
671
671
|
- `Задать_позицию(смещение[, откуда])` — изменение позиции указателя файла.
|
|
672
|
-
-
|
|
672
|
+
- `Обрезать([размер])` — усечение файла до заданного размера.
|
|
673
673
|
- `Отделить()` — отделяет базовый поток от оболочки.
|
|
674
674
|
- `Закрыть()` — закрывает файл.
|
|
675
675
|
|
|
@@ -643,7 +643,7 @@ x = 0
|
|
|
643
643
|
- `Писать(данные)` — запись данных (строки или байтов).
|
|
644
644
|
- `Позиция()` — возвращает текущую позицию указателя.
|
|
645
645
|
- `Задать_позицию(смещение[, откуда])` — изменение позиции указателя файла.
|
|
646
|
-
-
|
|
646
|
+
- `Обрезать([размер])` — усечение файла до заданного размера.
|
|
647
647
|
- `Отделить()` — отделяет базовый поток от оболочки.
|
|
648
648
|
- `Закрыть()` — закрывает файл.
|
|
649
649
|
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import gc
|
|
2
|
+
import ctypes
|
|
3
|
+
|
|
4
|
+
import sys as Система
|
|
5
|
+
import os as ОС
|
|
6
|
+
|
|
7
|
+
from _io import BufferedReader, BufferedWriter, TextIOWrapper
|
|
8
|
+
|
|
9
|
+
def Установить_поле(класс, атрибут, значение):
|
|
10
|
+
сл = gc.get_referents(класс.__dict__)[0]
|
|
11
|
+
сл[атрибут] = значение
|
|
12
|
+
if callable(значение):
|
|
13
|
+
сл[атрибут].__name__ = значение.__name__
|
|
14
|
+
сл[атрибут].__qualname__ = значение.__qualname__
|
|
15
|
+
сл[атрибут].__kwdefaults__ = значение.__kwdefaults__
|
|
16
|
+
ctypes.pythonapi.PyType_Modified(ctypes.py_object(класс))
|
|
17
|
+
|
|
18
|
+
Встроенные_поля = {
|
|
19
|
+
('str', 'bytes', 'bytearray'): {
|
|
20
|
+
'find': 'Найти',
|
|
21
|
+
'rfind': 'Найти_с_конца',
|
|
22
|
+
'index': 'Положение',
|
|
23
|
+
'rindex': 'Положение_с_конца',
|
|
24
|
+
'replace': 'Заменить',
|
|
25
|
+
'split': 'Разбить',
|
|
26
|
+
'isdigit': 'Из_цифр',
|
|
27
|
+
'isalpha': 'Из_букв',
|
|
28
|
+
'isalnum': 'Из_цифробукв',
|
|
29
|
+
'islower': 'Из_строчных',
|
|
30
|
+
'isupper': 'Из_заглавных',
|
|
31
|
+
'isspace': 'Из_пробелов',
|
|
32
|
+
'istitle': 'Слова_с_заглавных',
|
|
33
|
+
'upper': 'В_заглавные',
|
|
34
|
+
'lower': 'В_строчные',
|
|
35
|
+
'startswith': 'Начинается',
|
|
36
|
+
'endswith': 'Кончается',
|
|
37
|
+
'join': 'Сцепить', # Присоединить
|
|
38
|
+
'capitalize': 'Начать_с_заглавной',
|
|
39
|
+
'center': 'Отцентровать',
|
|
40
|
+
'count': 'Число_вхождений',
|
|
41
|
+
'expandtabs': 'Табуляции_в_пробелы',
|
|
42
|
+
'lstrip': 'Удалить_в_начале',
|
|
43
|
+
'rstrip': 'Удалить_в_конце',
|
|
44
|
+
'strip': 'Удалить_по_бокам',
|
|
45
|
+
'partition': 'Разделить',
|
|
46
|
+
'rpartition': 'Разделить_с_конца',
|
|
47
|
+
'swapcase': 'Обратить_регистр',
|
|
48
|
+
'title': 'Начать_слова_с_заглавных',
|
|
49
|
+
'zfill': 'Дополнить_нулями',
|
|
50
|
+
'ljust': 'Дополнить_справа',
|
|
51
|
+
'rjust': 'Дополнить_слева'
|
|
52
|
+
},
|
|
53
|
+
'str': {
|
|
54
|
+
'format': 'Формат',
|
|
55
|
+
'encode': 'Закодовать'
|
|
56
|
+
},
|
|
57
|
+
('bytes', 'bytearray'): {
|
|
58
|
+
'decode': 'Раскодовать'
|
|
59
|
+
},
|
|
60
|
+
('list', 'bytearray'): {
|
|
61
|
+
'append': 'Добавить',
|
|
62
|
+
'clear': 'Очистить',
|
|
63
|
+
'copy': 'Копия',
|
|
64
|
+
'count': 'Число_вхождений',
|
|
65
|
+
'extend': 'Дополнить', # Присоединить
|
|
66
|
+
'index': 'Положение',
|
|
67
|
+
'insert': 'Вставить',
|
|
68
|
+
'pop': 'Вытащить',
|
|
69
|
+
'remove': 'Удалить',
|
|
70
|
+
'reverse': 'Обратить'
|
|
71
|
+
},
|
|
72
|
+
'list': {
|
|
73
|
+
'sort': ( 'Упорядочить', { 'key': 'ключ', 'reverse': 'обратно' } )
|
|
74
|
+
},
|
|
75
|
+
'dict': {
|
|
76
|
+
'clear': 'Очистить',
|
|
77
|
+
'copy': 'Копия',
|
|
78
|
+
'fromkeys': 'Из_ключей',
|
|
79
|
+
'get': 'Получить',
|
|
80
|
+
'items': 'Элементы',
|
|
81
|
+
'keys': 'Ключи',
|
|
82
|
+
'values': 'Значения',
|
|
83
|
+
'pop': 'Вытащить',
|
|
84
|
+
'popitem': 'Вытащить_последнее',
|
|
85
|
+
'setdefault': 'Получить_или_добавить',
|
|
86
|
+
'update': 'Обновить',
|
|
87
|
+
'values': 'Значения'
|
|
88
|
+
},
|
|
89
|
+
'tuple': {
|
|
90
|
+
'index': 'Положение',
|
|
91
|
+
'count': 'Число_вхождений'
|
|
92
|
+
},
|
|
93
|
+
('set', 'frozenset'): {
|
|
94
|
+
'isdisjoint': 'Не_пересекаются',
|
|
95
|
+
'issubset': 'Подмножество',
|
|
96
|
+
'issuperset': 'Надмножество',
|
|
97
|
+
'union': 'Объединение',
|
|
98
|
+
'intersection': 'Пересечение',
|
|
99
|
+
'difference': 'Разница',
|
|
100
|
+
'symmetric_difference': 'СимметрРазница',
|
|
101
|
+
'copy': 'Копия'
|
|
102
|
+
},
|
|
103
|
+
'set': {
|
|
104
|
+
'update': 'Дополнить',
|
|
105
|
+
'intersection_update': 'Пересечь',
|
|
106
|
+
'difference_update': 'Вычесть',
|
|
107
|
+
'symmetric_difference_update': 'СимметрВычесть',
|
|
108
|
+
'add': 'Добавить',
|
|
109
|
+
'remove': 'Удалить',
|
|
110
|
+
'discard': 'Убрать',
|
|
111
|
+
'pop': 'Вытащить',
|
|
112
|
+
'clear': 'Очистить'
|
|
113
|
+
},
|
|
114
|
+
'int': {
|
|
115
|
+
'bit_length': 'Длина_в_битах', # Битовая_длина
|
|
116
|
+
'to_bytes': ( 'В_байты', { 'length': 'длина', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (2, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ), # Возр, Убыв
|
|
117
|
+
'from_bytes': ( 'Из_байтов', { 'bytes': 'байты', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (1, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ), # Возр, Убыв
|
|
118
|
+
'.numerator': 'числитель',
|
|
119
|
+
'.denominator': 'знаменатель'
|
|
120
|
+
},
|
|
121
|
+
'float': {
|
|
122
|
+
'is_integer': 'Целое'
|
|
123
|
+
},
|
|
124
|
+
('float', 'bytes', 'bytearray'): {
|
|
125
|
+
'hex': 'В_шестн',
|
|
126
|
+
'fromhex': 'Из_шестн'
|
|
127
|
+
},
|
|
128
|
+
('int', 'float'): {
|
|
129
|
+
'as_integer_ratio': 'В_дробь'
|
|
130
|
+
},
|
|
131
|
+
('int', 'float', 'complex'): {
|
|
132
|
+
'.real': 'действ_часть',
|
|
133
|
+
'.imag': 'мнимая_часть',
|
|
134
|
+
'conjugate': 'Cопряжённое'
|
|
135
|
+
},
|
|
136
|
+
('BufferedReader', 'BufferedWriter', 'TextIOWrapper'): {
|
|
137
|
+
'read': 'Прочитать', # Читать
|
|
138
|
+
'readline': 'Прочитать_строку', # Читать_строку
|
|
139
|
+
'write': 'Записать', # Писать
|
|
140
|
+
'tell': 'Позиция',
|
|
141
|
+
'seek': 'Задать_позицию',
|
|
142
|
+
'truncate': 'Обрезать', # Усечь
|
|
143
|
+
'detach': 'Отделить',
|
|
144
|
+
'flush': 'Выгрузить',
|
|
145
|
+
'close': 'Закрыть',
|
|
146
|
+
'.closed': 'закрыт'
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
for классы, таблица in Встроенные_поля.items():
|
|
151
|
+
if type(классы) != tuple: классы = [классы]
|
|
152
|
+
for класс in классы:
|
|
153
|
+
for название, замена in таблица.items():
|
|
154
|
+
if type(замена) == tuple:
|
|
155
|
+
замещающая_функция = 'def __' + класс + '_' + название + '__(*ПА, **ИА):\n'
|
|
156
|
+
for н, з in замена[1].items():
|
|
157
|
+
замещающая_функция += ' if "' + з + '" in ИА: ИА["' + н + '"] = ИА.pop("' + з + '")\n'
|
|
158
|
+
if len(замена) > 2:
|
|
159
|
+
for зам_арг, знач_зам in замена[2].items():
|
|
160
|
+
if зам_арг[0] != -1:
|
|
161
|
+
замещающая_функция += ' if len(ПА) > ' + str(зам_арг[0]) + ' and ПА[' + str(зам_арг[0]) + '] in ' + str(list(знач_зам.keys())) + ':\n'
|
|
162
|
+
замещающая_функция += ' ПА = ПА[:' + str(зам_арг[0]) + '] + tuple([' + str(знач_зам) + '[ПА[' + str(зам_арг[0]) + ']]]) + ПА[' + str(зам_арг[0] + 1) + ':]\n'
|
|
163
|
+
if зам_арг[1] != '':
|
|
164
|
+
замещающая_функция += ' if "' + зам_арг[1] + '" in ИА.keys() and ИА["' + зам_арг[1] + '"] in ' + str(list(знач_зам.keys())) + ':\n'
|
|
165
|
+
замещающая_функция += ' ИА["' + зам_арг[1] + '"] = ' + str(знач_зам) + '[ИА["' + зам_арг[1] + '"]]\n'
|
|
166
|
+
замещающая_функция += ' return ' + класс + '.' + название + '(*ПА, **ИА)'
|
|
167
|
+
exec(замещающая_функция)
|
|
168
|
+
exec("Установить_поле(" + класс + ", '" + замена[0] + "', __" + класс + "_" + название + "__)")
|
|
169
|
+
exec('del __' + класс + '_' + название + '__')
|
|
170
|
+
else:
|
|
171
|
+
if название[0] == '.':
|
|
172
|
+
eval("Установить_поле(" + класс + ", '" + замена + "', " + класс + название + ")")
|
|
173
|
+
else:
|
|
174
|
+
eval("Установить_поле(" + класс + ", '" + замена + "', lambda *ПА, **ИА: " + класс + "." + название + "(*ПА, **ИА))")
|
|
175
|
+
|
|
176
|
+
Система.path.insert(0, ОС.path.dirname(__file__) + '/Модули')
|
|
177
|
+
Система.path.insert(0, ОС.path.dirname(__file__) + '/Модули/Дополнительно')
|
|
178
|
+
|
|
179
|
+
Архив_заменяющих_функций = {}
|
|
180
|
+
|
|
181
|
+
def Заменить_преобразование_в_строку(класс, функция):
|
|
182
|
+
CFUNC_TYPE = ctypes.CFUNCTYPE(ctypes.py_object, ctypes.py_object)
|
|
183
|
+
Ф = CFUNC_TYPE(функция)
|
|
184
|
+
Архив_заменяющих_функций[id(класс)] = Ф
|
|
185
|
+
class К(ctypes.Structure):
|
|
186
|
+
_fields_ = [
|
|
187
|
+
('начало', ctypes.c_ssize_t * 17),
|
|
188
|
+
('tp_str', CFUNC_TYPE)
|
|
189
|
+
]
|
|
190
|
+
О = К.from_address(id(класс))
|
|
191
|
+
О.tp_str = Ф
|
|
192
|
+
|
|
193
|
+
Обёртка__Вещ_в_стр = lambda экземпляр: Вещ_в_стр(экземпляр).replace('.', ',').replace('inf', 'Бскн')
|
|
194
|
+
Вещ_в_стр = float.__str__
|
|
195
|
+
Заменить_преобразование_в_строку(float, Обёртка__Вещ_в_стр)
|
|
196
|
+
|
|
197
|
+
Обёртка__Логич_в_стр = lambda экземпляр: Логич_в_стр(экземпляр).replace('True', 'Да').replace('False', 'Нет')
|
|
198
|
+
Логич_в_стр = bool.__str__
|
|
199
|
+
Заменить_преобразование_в_строку(bool, Обёртка__Логич_в_стр)
|
|
200
|
+
|
|
201
|
+
Обёртка__Пусто_в_стр = lambda экземпляр: Пусто_в_стр(экземпляр).replace('None', 'Пусто')
|
|
202
|
+
Пусто_в_стр = type(None).__str__
|
|
203
|
+
Заменить_преобразование_в_строку(type(None), Обёртка__Пусто_в_стр)
|
|
204
|
+
|
|
205
|
+
def Проверить_существование(код, местн, общ):
|
|
206
|
+
try: eval(код, местн, общ)
|
|
207
|
+
except Exception as ошибка:
|
|
208
|
+
if type(ошибка) in (NameError, KeyError, AttributeError):
|
|
209
|
+
print(ошибка)
|
|
210
|
+
return False
|
|
211
|
+
else: raise ошибка
|
|
212
|
+
return True
|
|
213
|
+
|
|
214
|
+
def Заменить_ключи_в_словаре(словарь, замены):
|
|
215
|
+
новый = {}
|
|
216
|
+
for н, з in словарь.items():
|
|
217
|
+
новый.setdefault(замены[н] if н in замены.keys() else н, з)
|
|
218
|
+
return новый
|
|
219
|
+
|
|
220
|
+
def Свёртка(функция, перебираемое, нач_знач = None):
|
|
221
|
+
рез = нач_знач if нач_знач else перебираемое[0]
|
|
222
|
+
for эл in перебираемое: рез = функция(рез, эл)
|
|
223
|
+
return рез
|
|
224
|
+
|
|
225
|
+
class ТрЛогич:
|
|
226
|
+
_instance_map = {}
|
|
227
|
+
|
|
228
|
+
def __new__(класс, название):
|
|
229
|
+
if название not in класс._instance_map:
|
|
230
|
+
класс._instance_map[название] = super().__new__(класс)
|
|
231
|
+
класс._instance_map[название]._name = название
|
|
232
|
+
return класс._instance_map[название]
|
|
233
|
+
|
|
234
|
+
def __and__(экземпляр, значение):
|
|
235
|
+
if not isinstance(значение, ТрЛогич):
|
|
236
|
+
raise TypeError("Операция 'И' возможна только между троичными логическими значениями.")
|
|
237
|
+
if экземпляр is Ложь or значение is Ложь: return Ложь
|
|
238
|
+
if экземпляр is Истина and значение is Истина: return Истина
|
|
239
|
+
return Неопр
|
|
240
|
+
|
|
241
|
+
def __or__(экземпляр, значение):
|
|
242
|
+
if not isinstance(значение, ТрЛогич):
|
|
243
|
+
raise TypeError("Операция 'Или' возможна только между троичными логическими значениями.")
|
|
244
|
+
if экземпляр is Истина or значение is Истина: return Истина
|
|
245
|
+
if экземпляр is Ложь and значение is Ложь: return Ложь
|
|
246
|
+
return Неопр
|
|
247
|
+
|
|
248
|
+
def __xor__(экземпляр, значение):
|
|
249
|
+
if not isinstance(значение, ТрЛогич):
|
|
250
|
+
raise TypeError("Операция 'Либо' возможна только между троичными логическими значениями.")
|
|
251
|
+
if экземпляр is Неопр or значение is Неопр: return Неопр
|
|
252
|
+
if экземпляр is not значение: return Истина
|
|
253
|
+
else: return Ложь
|
|
254
|
+
|
|
255
|
+
def __invert__(экземпляр):
|
|
256
|
+
if экземпляр is Истина: return Ложь
|
|
257
|
+
if экземпляр is Ложь: return Истина
|
|
258
|
+
return Неопр
|
|
259
|
+
|
|
260
|
+
def __eq__(экземпляр, значение):
|
|
261
|
+
if not isinstance(значение, ТрЛогич): return NotImplemented
|
|
262
|
+
return экземпляр is значение
|
|
263
|
+
|
|
264
|
+
def __bool__(экземпляр):
|
|
265
|
+
if экземпляр is Истина: return True
|
|
266
|
+
elif экземпляр is Ложь: return False
|
|
267
|
+
else:
|
|
268
|
+
raise TypeError("Невозможно преобразовать 'Неопр' в двоичное логическое значение.")
|
|
269
|
+
|
|
270
|
+
def __repr__(экземпляр):
|
|
271
|
+
return f"Троичное({экземпляр._name})"
|
|
272
|
+
|
|
273
|
+
def __str__(экземпляр):
|
|
274
|
+
return экземпляр._name
|
|
275
|
+
|
|
276
|
+
__builtins__.update(
|
|
277
|
+
__Проверить_существование__ = Проверить_существование,
|
|
278
|
+
Свёртка = Свёртка,
|
|
279
|
+
Истина = ТрЛогич("Истина"), Ложь = ТрЛогич("Ложь"), Неопр = ТрЛогич("Неопр")
|
|
280
|
+
)
|