rupython 1.2.11__py3-none-any.whl → 1.2.13__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.
Files changed (16) hide show
  1. rupython/__/342/225/250/320/247/342/225/250/342/226/221/342/225/250/342/224/202/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/225/233/342/225/244/320/227/342/225/250/342/225/234/342/225/244/320/233/342/225/250/342/225/243_/342/225/250/342/225/221/342/225/250/342/225/233/342/225/250/342/224/244__.py +49 -4
  2. rupython/__/342/225/250/320/256/342/225/250/342/226/222/342/225/244/320/231/342/225/250/342/225/225/342/225/250/342/225/241_/342/225/244/320/224/342/225/244/320/223/342/225/250/342/225/234/342/225/250/342/225/221/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/225__.py +9 -0
  3. 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/240/342/225/244/320/221/342/225/250/342/225/225/342/225/250/342/225/234/342/225/244/320/225/342/225/244/320/220.py +206 -0
  4. 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 +61 -76
  5. 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/244/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/226/221/342/225/250/320/242/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/235/342/225/244/320/237.py +222 -209
  6. 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/244/320/223/342/225/244/320/227/342/225/250/342/226/221.py +87 -0
  7. 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 +529 -396
  8. 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/256/342/225/244/320/227/342/225/250/342/225/241/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/224/244/342/225/244/320/234.py +177 -0
  9. 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/257/342/225/250/342/225/233/342/225/244/320/222/342/225/250/342/225/233/342/225/250/342/225/221/342/225/250/342/225/225.py +273 -0
  10. 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/260/342/225/250/342/225/241/342/225/250/342/224/202/342/225/250/320/242/342/225/244/320/233/342/225/244/320/220.py +51 -51
  11. {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/METADATA +4 -4
  12. rupython-1.2.13.dist-info/RECORD +19 -0
  13. rupython-1.2.11.dist-info/RECORD +0 -15
  14. {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/LICENSE +0 -0
  15. {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/WHEEL +0 -0
  16. {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,177 @@
1
+ import queue
2
+ from rupython import __Общие_функции__
3
+
4
+ Очередь_пуста = queue.Empty
5
+ Очередь_полна = queue.Full
6
+
7
+ Словарь_параметров = {
8
+ 'максимальный_размер': 'maxsize',
9
+ 'элемент': 'item',
10
+ 'блоковать': 'block',
11
+ 'таймаут': 'timeout',
12
+ 'приоритет': 'priority'
13
+ }
14
+
15
+ Словарь_склонений = {
16
+ 'элемент': ['элемент', 'элемента', 'элементов'],
17
+ 'задача': ['задача', 'задачи', 'задач']
18
+ }
19
+
20
+ class Очередь:
21
+ def __init__(экземпляр, максимальный_размер = 0):
22
+ kwargs = {'maxsize': максимальный_размер}
23
+ экземпляр._queue = queue.Queue(**kwargs)
24
+
25
+ def Добавить(экземпляр, элемент, блоковать = True, таймаут = None):
26
+ kwargs = {'item': элемент, 'block': блоковать}
27
+ if таймаут is not None:
28
+ kwargs['timeout'] = таймаут
29
+ экземпляр._queue.put(**kwargs)
30
+
31
+ def Добавить_без_блокования(экземпляр, элемент):
32
+ экземпляр._queue.put_nowait(элемент)
33
+
34
+ def Получить(экземпляр, блоковать = True, таймаут = None):
35
+ kwargs = {'block': блоковать}
36
+ if таймаут is not None:
37
+ kwargs['timeout'] = таймаут
38
+ return экземпляр._queue.get(**kwargs)
39
+
40
+ def Получить_без_блокования(экземпляр):
41
+ return экземпляр._queue.get_nowait()
42
+
43
+ def Задача_выполнена(экземпляр):
44
+ экземпляр._queue.task_done()
45
+
46
+ def Ждать_завершения(экземпляр):
47
+ экземпляр._queue.join()
48
+
49
+ def Пустая(экземпляр):
50
+ return экземпляр._queue.empty()
51
+
52
+ def Полная(экземпляр):
53
+ return экземпляр._queue.full()
54
+
55
+ def Размер(экземпляр):
56
+ return экземпляр._queue.qsize()
57
+
58
+ def __len__(экземпляр):
59
+ return экземпляр._queue.qsize()
60
+
61
+ def __str__(экземпляр):
62
+ размер = экземпляр.Размер()
63
+ return f"Очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
64
+
65
+ def В_строку_с_задачами(экземпляр):
66
+ размер = экземпляр.Размер()
67
+ return f"Очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
68
+
69
+ class Стековая_очередь:
70
+ def __init__(экземпляр, максимальный_размер = 0):
71
+ kwargs = {'maxsize': максимальный_размер}
72
+ экземпляр._queue = queue.LifoQueue(**kwargs)
73
+
74
+ def Добавить(экземпляр, элемент, блоковать = True, таймаут = None):
75
+ kwargs = {'item': элемент, 'block': блоковать}
76
+ if таймаут is not None:
77
+ kwargs['timeout'] = таймаут
78
+ экземпляр._queue.put(**kwargs)
79
+
80
+ def Добавить_без_блокования(экземпляр, элемент):
81
+ экземпляр._queue.put_nowait(элемент)
82
+
83
+ def Получить(экземпляр, блоковать = True, таймаут = None):
84
+ kwargs = {'block': блоковать}
85
+ if таймаут is not None:
86
+ kwargs['timeout'] = таймаут
87
+ return экземпляр._queue.get(**kwargs)
88
+
89
+ def Получить_без_блокования(экземпляр):
90
+ return экземпляр._queue.get_nowait()
91
+
92
+ def Задача_выполнена(экземпляр):
93
+ экземпляр._queue.task_done()
94
+
95
+ def Ждать_завершения(экземпляр):
96
+ экземпляр._queue.join()
97
+
98
+ def Пустая(экземпляр):
99
+ return экземпляр._queue.empty()
100
+
101
+ def Полная(экземпляр):
102
+ return экземпляр._queue.full()
103
+
104
+ def Размер(экземпляр):
105
+ return экземпляр._queue.qsize()
106
+
107
+ def __len__(экземпляр):
108
+ return экземпляр._queue.qsize()
109
+
110
+ def __str__(экземпляр):
111
+ размер = экземпляр.Размер()
112
+ return f"Стековая_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
113
+
114
+ def В_строку_с_задачами(экземпляр):
115
+ размер = экземпляр.Размер()
116
+ return f"Стековая_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
117
+
118
+ class Приоритетная_очередь:
119
+ def __init__(экземпляр, максимальный_размер = 0):
120
+ kwargs = {'maxsize': максимальный_размер}
121
+ экземпляр._queue = queue.PriorityQueue(**kwargs)
122
+
123
+ def Добавить(экземпляр, элемент, приоритет, блоковать = True, таймаут = None):
124
+ kwargs = {'item': (приоритет, элемент), 'block': блоковать}
125
+ if таймаут is not None:
126
+ kwargs['timeout'] = таймаут
127
+ экземпляр._queue.put(**kwargs)
128
+
129
+ def Добавить_без_блокования(экземпляр, элемент, приоритет):
130
+ экземпляр._queue.put_nowait((приоритет, элемент))
131
+
132
+ def Получить(экземпляр, блоковать = True, таймаут = None):
133
+ kwargs = {'block': блоковать}
134
+ if таймаут is not None:
135
+ kwargs['timeout'] = таймаут
136
+ приоритет, элемент = экземпляр._queue.get(**kwargs)
137
+ return элемент
138
+
139
+ def Получить_с_приоритетом(экземпляр, блоковать = True, таймаут = None):
140
+ kwargs = {'block': блоковать}
141
+ if таймаут is not None:
142
+ kwargs['timeout'] = таймаут
143
+ return экземпляр._queue.get(**kwargs)
144
+
145
+ def Получить_без_блокования(экземпляр):
146
+ приоритет, элемент = экземпляр._queue.get_nowait()
147
+ return элемент
148
+
149
+ def Получить_без_блокования_с_приоритетом(экземпляр):
150
+ """Возвращает кортеж (приоритет, элемент)."""
151
+ return экземпляр._queue.get_nowait()
152
+
153
+ def Задача_выполнена(экземпляр):
154
+ экземпляр._queue.task_done()
155
+
156
+ def Ждать_завершения(экземпляр):
157
+ экземпляр._queue.join()
158
+
159
+ def Пустая(экземпляр):
160
+ return экземпляр._queue.empty()
161
+
162
+ def Полная(экземпляр):
163
+ return экземпляр._queue.full()
164
+
165
+ def Размер(экземпляр):
166
+ return экземпляр._queue.qsize()
167
+
168
+ def __len__(экземпляр):
169
+ return экземпляр._queue.qsize()
170
+
171
+ def __str__(экземпляр):
172
+ размер = экземпляр.Размер()
173
+ return f"Приоритетная_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
174
+
175
+ def В_строку_с_задачами(экземпляр):
176
+ размер = экземпляр.Размер()
177
+ return f"Приоритетная_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
@@ -0,0 +1,273 @@
1
+ import threading
2
+ from rupython import __Общие_функции__
3
+
4
+ Ошибка_потока = threading.ThreadError
5
+
6
+ Словарь_параметров = {
7
+ 'цель': 'target',
8
+ 'имя': 'name',
9
+ 'аргументы': 'args',
10
+ 'именовАргументы': 'kwargs',
11
+ 'после_окончания': 'daemon',
12
+ 'время_ожидания': 'timeout',
13
+ 'количество': 'count',
14
+ 'действие': 'action',
15
+ 'блоковать': 'block',
16
+ 'обратный_вызов': 'callback',
17
+ 'аргументыОбрВыз': 'callback_args',
18
+ 'именовАргументыОбрВыз': 'callback_kwargs',
19
+ 'интервал': 'interval'
20
+ }
21
+
22
+ Словарь_склонений = {
23
+ 'поток': ['поток', 'потока', 'потоков'],
24
+ 'ресурс': ['ресурс', 'ресурса', 'ресурсов'],
25
+ 'участник': ['участник', 'участника', 'участников']
26
+ }
27
+
28
+ class Поток:
29
+ def __init__(экземпляр, цель = None, имя = None, аргументы = (), именовАргументы = None, после_окончания = None):
30
+ ИА = {}
31
+ if цель is not None:
32
+ ИА['target'] = цель
33
+ if имя is not None:
34
+ ИА['name'] = имя
35
+ if аргументы:
36
+ ИА['args'] = аргументы
37
+ if именовАргументы is not None:
38
+ ИА['kwargs'] = именовАргументы
39
+ if после_окончания is not None:
40
+ ИА['daemon'] = после_окончания
41
+ экземпляр._thread = threading.Thread(**ИА)
42
+
43
+ def Начать(экземпляр):
44
+ экземпляр._thread.start()
45
+
46
+ def Ждать(экземпляр, время_ожидания = None):
47
+ ИА = {}
48
+ if время_ожидания is not None:
49
+ ИА['timeout'] = время_ожидания
50
+ экземпляр._thread.join(**kwargs)
51
+
52
+ def Живой(экземпляр):
53
+ return экземпляр._thread.is_alive()
54
+
55
+ def Получить_имя(экземпляр):
56
+ return экземпляр._thread.getName()
57
+
58
+ def Установить_имя(экземпляр, имя):
59
+ экземпляр._thread.setName(имя)
60
+
61
+ def Получить_идентификатор(экземпляр):
62
+ return экземпляр._thread.ident
63
+
64
+ def После_окончания(экземпляр):
65
+ return экземпляр._thread.daemon
66
+
67
+ def Установить_после_окончания(экземпляр, после_окончания):
68
+ экземпляр._thread.daemon = после_окончания
69
+
70
+ def __str__(экземпляр):
71
+ return f"Поток(имя={экземпляр.Получить_имя()}, живой={экземпляр.Живой()})"
72
+
73
+ class Блокование:
74
+ def __init__(экземпляр):
75
+ экземпляр._lock = threading.Lock()
76
+
77
+ def Захватить(экземпляр, блоковать = True, время_ожидания = None):
78
+ ИА = {'block': блоковать}
79
+ if время_ожидания is not None:
80
+ ИА['timeout'] = время_ожидания
81
+ return экземпляр._lock.acquire(**ИА)
82
+
83
+ def Освободить(экземпляр):
84
+ экземпляр._lock.release()
85
+
86
+ def Захвачено(экземпляр):
87
+ return экземпляр._lock.locked()
88
+
89
+ def __enter__(экземпляр):
90
+ экземпляр.Захватить()
91
+ return экземпляр
92
+
93
+ def __exit__(экземпляр, тип_исключения, значение_исключения, трассировка):
94
+ экземпляр.Освободить()
95
+
96
+ def __str__(экземпляр):
97
+ return f"Блокование(захвачено={экземпляр.Захвачено()})"
98
+
99
+ class Повторное_блокование:
100
+ def __init__(экземпляр):
101
+ экземпляр._rlock = threading.RLock()
102
+
103
+ def Захватить(экземпляр, блоковать = True, время_ожидания = None):
104
+ ИА = {'block': блоковать}
105
+ if время_ожидания is not None:
106
+ ИА['timeout'] = время_ожидания
107
+ return экземпляр._rlock.acquire(**ИА)
108
+
109
+ def Освободить(экземпляр):
110
+ экземпляр._rlock.release()
111
+
112
+ def __enter__(экземпляр):
113
+ экземпляр.Захватить()
114
+ return экземпляр
115
+
116
+ def __exit__(экземпляр, тип_исключения, значение_исключения, трассировка):
117
+ экземпляр.Освободить()
118
+
119
+ def __str__(экземпляр):
120
+ return f"Повторное_блокование(владелец={экземпляр._rlock._owner}, счётчик={экземпляр._rlock._count})"
121
+
122
+ class Семафор:
123
+ def __init__(экземпляр, количество = 1):
124
+ ИА = {'value': количество}
125
+ экземпляр._semaphore = threading.Semaphore(**ИА)
126
+
127
+ def Захватить(экземпляр, блоковать = True, время_ожидания = None):
128
+ ИА = {'block': блоковать}
129
+ if время_ожидания is not None:
130
+ ИА['timeout'] = время_ожидания
131
+ return экземпляр._semaphore.acquire(**ИА)
132
+
133
+ def Освободить(экземпляр):
134
+ экземпляр._semaphore.release()
135
+
136
+ def __enter__(экземпляр):
137
+ экземпляр.Захватить()
138
+ return экземпляр
139
+
140
+ def __exit__(экземпляр, тип_исключения, значение_исключения, трассировка):
141
+ экземпляр.Освободить()
142
+
143
+ def __str__(экземпляр):
144
+ return f"Семафор(ресурсов={экземпляр._semaphore._value})"
145
+
146
+ class Ограниченный_семафор(Семафор):
147
+ def __init__(экземпляр, количество = 1):
148
+ ИА = {'value': количество}
149
+ экземпляр._semaphore = threading.BoundedSemaphore(**ИА)
150
+
151
+ class Событие:
152
+ def __init__(экземпляр):
153
+ экземпляр._event = threading.Event()
154
+
155
+ def Установить(экземпляр):
156
+ экземпляр._event.set()
157
+
158
+ def Сбросить(экземпляр):
159
+ экземпляр._event.clear()
160
+
161
+ def Активно(экземпляр):
162
+ return экземпляр._event.is_set()
163
+
164
+ def Ждать(экземпляр, время_ожидания = None):
165
+ ИА = {}
166
+ if время_ожидания is not None:
167
+ ИА['timeout'] = время_ожидания
168
+ return экземпляр._event.wait(**ИА)
169
+
170
+ def __str__(экземпляр):
171
+ return f"Событие(активно={экземпляр.Активно()})"
172
+
173
+ class Условие:
174
+ def __init__(экземпляр, блокование = None):
175
+ ИА = {}
176
+ if блокование is not None:
177
+ ИА['lock'] = блокование._lock if isinstance(блокование, (Блокование, Повторное_блокование)) else блокование
178
+ экземпляр._condition = threading.Condition(**ИА)
179
+
180
+ def Захватить(экземпляр):
181
+ return экземпляр._condition.acquire()
182
+
183
+ def Освободить(экземпляр):
184
+ экземпляр._condition.release()
185
+
186
+ def Ждать(экземпляр, время_ожидания = None):
187
+ ИА = {}
188
+ if время_ожидания is not None:
189
+ ИА['timeout'] = время_ожидания
190
+ return экземпляр._condition.wait(**ИА)
191
+
192
+ def Уведомить(экземпляр, количество = 1):
193
+ ИА = {'n': количество}
194
+ экземпляр._condition.notify(**ИА)
195
+
196
+ def Уведомить_все(экземпляр):
197
+ экземпляр._condition.notify_all()
198
+
199
+ def __enter__(экземпляр):
200
+ экземпляр.Захватить()
201
+ return экземпляр
202
+
203
+ def __exit__(экземпляр, тип_исключения, значение_исключения, трассировка):
204
+ экземпляр.Освободить()
205
+
206
+ def __str__(экземпляр):
207
+ return f"Условие(захвачено={экземпляр._condition._is_owned()})"
208
+
209
+ class Барьер:
210
+ def __init__(экземпляр, количество, действие = None, время_ожидания = None):
211
+ ИА = {'parties': количество}
212
+ if действие is not None:
213
+ ИА['action'] = действие
214
+ if время_ожидания is not None:
215
+ ИА['timeout'] = время_ожидания
216
+ экземпляр._barrier = threading.Barrier(**ИА)
217
+
218
+ def Ждать(экземпляр, время_ожидания = None):
219
+ ИА = {}
220
+ if время_ожидания is not None:
221
+ ИА['timeout'] = время_ожидания
222
+ return экземпляр._barrier.wait(**ИА)
223
+
224
+ def Сбросить(экземпляр):
225
+ экземпляр._barrier.reset()
226
+
227
+ def Прервать(экземпляр):
228
+ экземпляр._barrier.abort()
229
+
230
+ def Количество_участников(экземпляр):
231
+ return экземпляр._barrier.parties
232
+
233
+ def Количество_ожидающих(экземпляр):
234
+ return экземпляр._barrier.n_waiting
235
+
236
+ def Сломан(экземпляр):
237
+ return экземпляр._barrier.broken
238
+
239
+ def __str__(экземпляр):
240
+ return f"Барьер({__Общие_функции__.Склонение_после_числительного(экземпляр.Количество_ожидающих(), Словарь_склонений['участник'])} из {экземпляр.Количество_участников()})"
241
+
242
+ class Таймер(Поток):
243
+ def __init__(экземпляр, интервал, цель, аргументы = (), именовАргументы = None, обратный_вызов = None, аргументыОбрВыз = (), именовАргументыОбрВыз = None):
244
+ ИА = {'interval': интервал, 'function': цель}
245
+ if аргументы:
246
+ ИА['args'] = аргументы
247
+ if именовАргументы is not None:
248
+ ИА['kwargs'] = именовАргументы
249
+ экземпляр._timer = threading.Timer(**ИА)
250
+ экземпляр._callback = обратный_вызов
251
+ экземпляр._callback_args = аргументыОбрВыз
252
+ экземпляр._callback_kwargs = именовАргументыОбрВыз or {}
253
+
254
+ def Отменить(экземпляр):
255
+ экземпляр._timer.cancel()
256
+
257
+ def Завершён(экземпляр):
258
+ return экземпляр._timer.finished.is_set()
259
+
260
+ def __str__(экземпляр):
261
+ return f"Таймер(интервал={экземпляр._timer.interval}, завершён={экземпляр.Завершён()})"
262
+
263
+ def Текущий_поток():
264
+ return Поток(цель = lambda: None, имя = threading.current_thread().getName())
265
+
266
+ def Количество_активных_потоков():
267
+ return threading.active_count()
268
+
269
+ def Перечислить_потоки():
270
+ return [Поток(цель = lambda: None, имя = поток.getName()) for поток in threading.enumerate()]
271
+
272
+ def Получить_основной_поток():
273
+ return Поток(цель = lambda: None, имя = threading.main_thread().getName())
@@ -12,89 +12,89 @@ from rupython import __Общие_функции__
12
12
  Развёрнутое = X = re.VERBOSE
13
13
 
14
14
  class Шаблон:
15
- def __init__(здесь, объект):
16
- здесь.объект = объект
17
- здесь.флаги = объект.flags
18
- здесь.число_групп = объект.groups
19
- здесь.номераНазвГр = объект.groupindex
20
- здесь.шаблон = объект.pattern
21
-
22
- def Поиск(здесь, *ПА, **ИА):
15
+ def __init__(экземпляр, объект):
16
+ экземпляр.объект = объект
17
+ экземпляр.флаги = объект.flags
18
+ экземпляр.число_групп = объект.groups
19
+ экземпляр.номераНазвГр = объект.groupindex
20
+ экземпляр.шаблон = объект.pattern
21
+
22
+ def Поиск(экземпляр, *ПА, **ИА):
23
23
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
24
24
  { 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
25
- return здесь.объект.search(*ПА, **ИА)
25
+ return экземпляр.объект.search(*ПА, **ИА)
26
26
 
27
- def СовпадНач(здесь, *ПА, **ИА):
27
+ def СовпадНач(экземпляр, *ПА, **ИА):
28
28
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
29
29
  { 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
30
- return здесь.объект.match(*ПА, **ИА)
30
+ return экземпляр.объект.match(*ПА, **ИА)
31
31
 
32
- def ПолнСоотв(здесь, *ПА, **ИА):
32
+ def ПолнСоотв(экземпляр, *ПА, **ИА):
33
33
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
34
34
  { 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
35
- return здесь.объект.fullmatch(*ПА, **ИА)
35
+ return экземпляр.объект.fullmatch(*ПА, **ИА)
36
36
 
37
- def Разбить(здесь, *ПА, **ИА):
37
+ def Разбить(экземпляр, *ПА, **ИА):
38
38
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
39
39
  { 'строка': 'string', 'макс_делений': 'maxsplit' })
40
- return здесь.объект.split(*ПА, **ИА)
40
+ return экземпляр.объект.split(*ПА, **ИА)
41
41
 
42
- def НайтиВсё(здесь, *ПА, **ИА):
42
+ def НайтиВсё(экземпляр, *ПА, **ИА):
43
43
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
44
44
  { 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
45
- return здесь.объект.findall(*ПА, **ИА)
45
+ return экземпляр.объект.findall(*ПА, **ИА)
46
46
 
47
- def ИскатьПеречисл(здесь, *ПА, **ИА):
47
+ def ИскатьПеречисл(экземпляр, *ПА, **ИА):
48
48
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
49
49
  { 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
50
- return здесь.объект.finditer(*ПА, **ИА)
50
+ return экземпляр.объект.finditer(*ПА, **ИА)
51
51
 
52
- def Заменить(здесь, *ПА, **ИА):
52
+ def Заменить(экземпляр, *ПА, **ИА):
53
53
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
54
54
  { 'замена': 'repl', 'строка': 'string', 'количество': 'count' })
55
- return здесь.объект.sub(*ПА, **ИА)
55
+ return экземпляр.объект.sub(*ПА, **ИА)
56
56
 
57
- def ЗаменитьСч(здесь, *ПА, **ИА):
57
+ def ЗаменитьСч(экземпляр, *ПА, **ИА):
58
58
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
59
59
  { 'замена': 'repl', 'строка': 'string', 'количество': 'count' })
60
- return здесь.объект.subn(*ПА, **ИА)
60
+ return экземпляр.объект.subn(*ПА, **ИА)
61
61
 
62
62
 
63
63
  class Соответствие:
64
- def __init__(здесь, объект):
65
- здесь.объект = объект
66
- здесь.нач_поз = объект.pos
67
- здесь.кон_поз = объект.endpos
68
- здесь.послИндекс = объект.lastindex
69
- здесь.послГруппа = объект.lastgroup
70
- здесь.регВыр = объект.re
71
- здесь.строка = объект.string
72
-
73
- def Развернуть(здесь, шаблон): return здесь.объект.expand(шаблон)
74
- def Группа(здесь, *группы): return здесь.объект.group(*группы)
75
- def __getitem__(здесь, индекс): return объект[индекс]
76
-
77
- def Группы(здесь, *ПА, **ИА):
64
+ def __init__(экземпляр, объект):
65
+ экземпляр.объект = объект
66
+ экземпляр.нач_поз = объект.pos
67
+ экземпляр.кон_поз = объект.endpos
68
+ экземпляр.послИндекс = объект.lastindex
69
+ экземпляр.послГруппа = объект.lastgroup
70
+ экземпляр.регВыр = объект.re
71
+ экземпляр.строка = объект.string
72
+
73
+ def Развернуть(экземпляр, шаблон): return экземпляр.объект.expand(шаблон)
74
+ def Группа(экземпляр, *группы): return экземпляр.объект.group(*группы)
75
+ def __getitem__(экземпляр, индекс): return объект[индекс]
76
+
77
+ def Группы(экземпляр, *ПА, **ИА):
78
78
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, { 'по_умолчанию': 'default' })
79
- return здесь.объект.groups(*ПА, **ИА)
79
+ return экземпляр.объект.groups(*ПА, **ИА)
80
80
 
81
- def ИменовГруппы(здесь, *ПА, **ИА):
81
+ def ИменовГруппы(экземпляр, *ПА, **ИА):
82
82
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, { 'по_умолчанию': 'default' })
83
- return здесь.объект.groupdict(*ПА, **ИА)
83
+ return экземпляр.объект.groupdict(*ПА, **ИА)
84
84
 
85
- def Начало(здесь, *группа): return здесь.объект.start(*группа)
86
- def Конец(здесь, *группа): return здесь.объект.end(*группа)
85
+ def Начало(экземпляр, *группа): return экземпляр.объект.start(*группа)
86
+ def Конец(экземпляр, *группа): return экземпляр.объект.end(*группа)
87
87
 
88
88
  Флаги = re.RegexFlag
89
89
 
90
- def Создать(шаблон, флаги = 0): рез = re.compile(шаблон, flags=флаги); return Шаблон(re.compile(рез)) if type(рез) == re.Pattern else рез
91
- def Поиск(шаблон, строка, флаги = 0): return re.search(шаблон, строка, flags=флаги)
92
- def СовпадНач(шаблон, строка, флаги = 0): return re.match(шаблон, строка, flags=флаги)
93
- def ПолнСоотв(шаблон, строка, флаги = 0): return re.fullmatch(шаблон, строка, flags=флаги)
94
- def Разбить(шаблон, строка, макс_делений = 0, флаги = 0): return re.split(шаблон, строка, maxsplit=макс_делений, flags=флаги)
95
- def НайтиВсё(шаблон, строка, флаги = 0): return re.findall(шаблон, строка, flags=флаги)
96
- def ИскатьПеречисл(шаблон, строка, флаги = 0): return re.finditer(шаблон, строка, flags=флаги)
97
- def Заменить(шаблон, замена, количество = 0, флаги = 0): return re.sub(шаблон, замена, строка, count=количество, flags=флаги)
98
- def ЗаменитьСч(шаблон, замена, количество = 0, флаги = 0): return re.sub(шаблон, замена, строка, count=количество, flags=флаги)
90
+ def Создать(шаблон, флаги = 0): рез = re.compile(шаблон, flags = флаги); return Шаблон(re.compile(рез)) if type(рез) == re.Pattern else рез
91
+ def Поиск(шаблон, строка, флаги = 0): return re.search(шаблон, строка, flags = флаги)
92
+ def СовпадНач(шаблон, строка, флаги = 0): return re.match(шаблон, строка, flags = флаги)
93
+ def ПолнСоотв(шаблон, строка, флаги = 0): return re.fullmatch(шаблон, строка, flags = флаги)
94
+ def Разбить(шаблон, строка, макс_делений = 0, флаги = 0): return re.split(шаблон, строка, maxsplit = макс_делений, flags = флаги)
95
+ def НайтиВсё(шаблон, строка, флаги = 0): return re.findall(шаблон, строка, flags = флаги)
96
+ def ИскатьПеречисл(шаблон, строка, флаги = 0): return re.finditer(шаблон, строка, flags = флаги)
97
+ def Заменить(шаблон, замена, количество = 0, флаги = 0): return re.sub(шаблон, замена, строка, count = количество, flags = флаги)
98
+ def ЗаменитьСч(шаблон, замена, количество = 0, флаги = 0): return re.sub(шаблон, замена, строка, count = количество, flags = флаги)
99
99
  def ЭкранШабл(шаблон): return re.escape(шаблон)
100
100
  def ОчиститьКэш(): return re.purge()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.2.11
3
+ Version: 1.2.13
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -154,8 +154,8 @@ k = l это m и m это не n
154
154
  ##### Класс
155
155
  ```
156
156
  Класс Пример(Другой_класс):
157
- Функция __Подготовка__(здесь, перем = 0):
158
- здесь.зн = перем
157
+ Функция __Подготовка__(экземпляр, перем = 0):
158
+ экземпляр.зн = перем
159
159
 
160
160
  Объект = Пример(1)
161
161
  ```
@@ -240,7 +240,7 @@ x = 0
240
240
 
241
241
  ##### Контекстный менеджер
242
242
  ```
243
- ВКонтексте Открыть('Файл.дан', 'r') как файл:
243
+ Используя Открыть('Файл.дан', 'r') как файл:
244
244
  Пока стр := файл.Читать_строку():
245
245
  Вывести(стр.Удалить_по_бокам())
246
246
  ```
@@ -0,0 +1,19 @@
1
+ rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
2
+ rupython/__Заголовочный_код__.py,sha256=rWwsi5zSDUKinOeF6lLN-0MVYDcKclrKlq-eEw8Rpz0,13489
3
+ rupython/__Общие_функции__.py,sha256=MH9QLcXqeFmpOS5_N8P5wA5eCYutlHRc7YUatn3CUIk,1255
4
+ rupython/Преобразователь.py,sha256=ZRTJnKOLG-ckVifnKQQwAKyDCKo4j8qHbyIlwOAbTD4,48431
5
+ rupython/Модули/Асинхр.py,sha256=sPQUgbS_kXj-Gyn2YCjXNCUqAy8aUW2-P6gO5e7f6Cc,9925
6
+ rupython/Модули/БД.py,sha256=KNgVf91n_jZcrU8sLNnvsa2W0NCsJcPSWr7uM2lmUpg,29685
7
+ rupython/Модули/ДатаВремя.py,sha256=Ec9YyY1jb-R9uyXrrDNfaTqBQVv98_GPn29OY8dUkj8,27523
8
+ rupython/Модули/Коллекции.py,sha256=GAqmEjrPu5BO81S5_4JvdWfhFyjLHhkCmfEmlo0NdyI,25770
9
+ rupython/Модули/Куча.py,sha256=h70utcxeF0Mi3X7OF5PlF_5z-98kc7qu_RQHFyL6lI8,3529
10
+ rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
11
+ rupython/Модули/Очередь.py,sha256=9j50lXeBW5Jme2BSpJg599Vc5zmYfIE-C8awPN2HUZo,8502
12
+ rupython/Модули/Потоки.py,sha256=am6hWxcrCx4Vx_FFPMIIhSl_ShWSV5vjW5deXV6EYTU,12342
13
+ rupython/Модули/РегВыр.py,sha256=OWgYtgBDtHsEHUOAsGx7K0UGq92sumSqEyf-sVpICjw,6709
14
+ rupython/Модули/Случ.py,sha256=foIuQo2QZ5z0iyxp9fn4NaunSx96vYzC2pRjwaT2FD8,2723
15
+ rupython-1.2.13.dist-info/LICENSE,sha256=vTQDUsS-xxBMZEA2avkNBOGb58hRM-WHr8Getk-XTqQ,11780
16
+ rupython-1.2.13.dist-info/METADATA,sha256=Sj4-DXKZHFtvGWn16c5zkDLUj_AxxsY3J06X-Lhergc,30185
17
+ rupython-1.2.13.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
18
+ rupython-1.2.13.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
19
+ rupython-1.2.13.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
2
- rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
3
- rupython/__Общие_функции__.py,sha256=eiDtxw8MVlZ8rZZC2N-NkYqmf2F-XCczHubUnzVKWJA,856
4
- rupython/Преобразователь.py,sha256=ZRTJnKOLG-ckVifnKQQwAKyDCKo4j8qHbyIlwOAbTD4,48431
5
- rupython/Модули/БД.py,sha256=QA-Z0VPXliFuyHFvJv0hKGhanF9XWNjrwR70sGgfk5c,30310
6
- rupython/Модули/ДатаВремя.py,sha256=YdpACxtHXt57zV7uYpZJZeH3T4bMd6orud-Y34DqWTI,25087
7
- rupython/Модули/Коллекции.py,sha256=pJ1L38_8lF9VRvXQhUPPGu49tJkYlpR_3sC-ruxYsCU,16830
8
- rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
9
- rupython/Модули/РегВыр.py,sha256=T3yxVP-B5AwAzbUTjWpog3HCzRTGLZ58CEQpfA-0dsY,6341
10
- rupython/Модули/Случ.py,sha256=foIuQo2QZ5z0iyxp9fn4NaunSx96vYzC2pRjwaT2FD8,2723
11
- rupython-1.2.11.dist-info/LICENSE,sha256=vTQDUsS-xxBMZEA2avkNBOGb58hRM-WHr8Getk-XTqQ,11780
12
- rupython-1.2.11.dist-info/METADATA,sha256=AcNdWamkDB-I2YrOnkIN-F1TqNcQNXzEdaI_joFLjrQ,30171
13
- rupython-1.2.11.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
14
- rupython-1.2.11.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
15
- rupython-1.2.11.dist-info/RECORD,,