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
@@ -1,426 +1,559 @@
1
- Да, заебень недостающие методы. Вот поправленный код: import collections
1
+ import collections
2
2
  import collections.abc
3
+ from rupython import __Общие_функции__
3
4
 
4
5
  _Последовательность = collections.abc.Sequence
5
6
  _Изменяемая_последовательность = collections.abc.MutableSequence
6
7
  _Отображение = collections.abc.Mapping
7
8
  _Изменяемое_отображение = collections.abc.MutableMapping
9
+ _Множество = collections.abc.Set
10
+ _Изменяемое_множество = collections.abc.MutableSet
11
+
12
+ Словарь_параметров = {
13
+ 'имя': 'name',
14
+ 'поля': 'fields',
15
+ 'перебираемый': 'iterable',
16
+ 'максимальная_длина': 'maxlen',
17
+ 'функция_по_умолчанию': 'default_factory',
18
+ 'словари': 'maps',
19
+ 'ключ': 'key',
20
+ 'значение': 'value',
21
+ 'по_умолчанию': 'default',
22
+ 'количество': 'n'
23
+ }
8
24
 
9
25
  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:
26
+ def __init__(экземпляр, имя, поля):
27
+ экземпляр._namedtuple = collections.namedtuple(имя, поля)
28
+
29
+ def __call__(экземпляр, *ПА, **ИА):
30
+ return экземпляр._namedtuple(*ПА, **ИА)
31
+
32
+ def __getattr__(экземпляр, имя):
33
+ return getattr(экземпляр._namedtuple, имя)
34
+
35
+ def __getitem__(экземпляр, индекс):
36
+ return экземпляр._namedtuple.__getitem__(индекс)
37
+
38
+ def __len__(экземпляр):
39
+ return len(экземпляр._namedtuple)
40
+
41
+ def __iter__(экземпляр):
42
+ return iter(экземпляр._namedtuple)
43
+
44
+ def __contains__(экземпляр, элемент):
45
+ return элемент in экземпляр._namedtuple
46
+
47
+ def __reversed__(экземпляр):
48
+ return reversed(экземпляр._namedtuple)
49
+
50
+ def __str__(экземпляр):
51
+ return str(экземпляр._namedtuple)
52
+
53
+ class Двусторонняя_очередь(_Изменяемая_последовательность):
54
+ def __init__(экземпляр, перебираемый = None, максимальная_длина = None):
55
+ ИА = {}
56
+ if перебираемый is not None:
57
+ ИА['iterable'] = перебираемый
58
+ if максимальная_длина is not None:
59
+ ИА['maxlen'] = максимальная_длина
60
+ экземпляр._deque = collections.deque(**ИА)
61
+
62
+ def Добавить_в_начало(экземпляр, элемент):
63
+ экземпляр._deque.appendleft(элемент)
64
+
65
+ def Добавить_в_конец(экземпляр, элемент):
66
+ экземпляр._deque.append(элемент)
67
+
68
+ def Удалить_с_начала(экземпляр):
69
+ if not экземпляр._deque:
46
70
  raise IndexError("Очередь пуста")
47
- return здесь._deque.popleft()
48
-
49
- def Удалить_с_конца(здесь):
50
- if not здесь._deque:
71
+ return экземпляр._deque.popleft()
72
+
73
+ def Удалить_с_конца(экземпляр):
74
+ if not экземпляр._deque:
51
75
  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
+ return экземпляр._deque.pop()
77
+
78
+ def Очистить(экземпляр):
79
+ экземпляр._deque.clear()
80
+
81
+ def Длина(экземпляр):
82
+ return len(экземпляр._deque)
83
+
84
+ def Расширить_в_начало(экземпляр, перебираемый):
85
+ экземпляр._deque.extendleft(перебираемый)
86
+
87
+ def Расширить_в_конец(экземпляр, перебираемый):
88
+ экземпляр._deque.extend(перебираемый)
89
+
90
+ def Повернуть(экземпляр, количество):
91
+ экземпляр._deque.rotate(количество)
92
+
93
+ def Перевернуть(экземпляр):
94
+ экземпляр._deque.reverse()
95
+
96
+ def Количество(экземпляр, элемент):
97
+ return sum(1 for x in экземпляр._deque if x == элемент)
98
+
99
+ def Индекс(экземпляр, элемент, начало = 0, конец = None):
76
100
  if конец is None:
77
- конец = len(здесь._deque)
78
- for i, x in enumerate(здесь._deque):
101
+ конец = len(экземпляр._deque)
102
+ for i, x in enumerate(экземпляр._deque):
79
103
  if начало <= i < конец and x == элемент:
80
104
  return i
81
105
  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))
106
+
107
+ def Вставить(экземпляр, индекс, значение):
108
+ экземпляр._deque.rotate(-индекс)
109
+ экземпляр._deque.appendleft(значение)
110
+ экземпляр._deque.rotate(индекс)
111
+
112
+ def __getitem__(экземпляр, индекс):
113
+ return экземпляр._deque[индекс]
114
+
115
+ def __setitem__(экземпляр, индекс, значение):
116
+ экземпляр._deque[индекс] = значение
117
+
118
+ def __delitem__(экземпляр, индекс):
119
+ del экземпляр._deque[индекс]
120
+
121
+ def __len__(экземпляр):
122
+ return len(экземпляр._deque)
123
+
124
+ def __iter__(экземпляр):
125
+ return iter(экземпляр._deque)
126
+
127
+ def __contains__(экземпляр, элемент):
128
+ return элемент in экземпляр._deque
129
+
130
+ def __reversed__(экземпляр):
131
+ return iter(reversed(экземпляр._deque))
132
+
133
+ def __str__(экземпляр):
134
+ элементы = ', '.join(str(x) for x in экземпляр._deque)
135
+ return f"Двусторонняя_очередь([{элементы}])"
111
136
 
112
137
  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)
138
+ def __init__(экземпляр, перебираемый = None):
139
+ экземпляр._counter = collections.Counter(перебираемый or [])
140
+
141
+ def Обновить(экземпляр, перебираемый):
142
+ экземпляр._counter.update(перебираемый)
143
+
144
+ def Вычесть(экземпляр, перебираемый):
145
+ экземпляр._counter.subtract(перебираемый)
146
+
147
+ def Наиболее_частые(экземпляр, количество = None):
148
+ return экземпляр._counter.most_common(количество)
149
+
150
+ def Элементы(экземпляр):
151
+ return list(экземпляр._counter.elements())
152
+
153
+ def Получить(экземпляр, ключ, по_умолчанию = None):
154
+ return экземпляр._counter.get(ключ, по_умолчанию)
155
+
156
+ def __getitem__(экземпляр, ключ):
157
+ return экземпляр._counter[ключ]
158
+
159
+ def __setitem__(экземпляр, ключ, значение):
160
+ экземпляр._counter[ключ] = значение
161
+
162
+ def __delitem__(экземпляр, ключ):
163
+ del экземпляр._counter[ключ]
164
+
165
+ def __iter__(экземпляр):
166
+ return iter(экземпляр._counter)
167
+
168
+ def __len__(экземпляр):
169
+ return len(экземпляр._counter)
170
+
171
+ def __contains__(экземпляр, ключ):
172
+ return ключ in экземпляр._counter
173
+
174
+ def __add__(экземпляр, другой):
175
+ if isinstance(другой, Счётчик):
176
+ return Счётчик(экземпляр._counter + другой._counter)
177
+ return NotImplemented
178
+
179
+ def __sub__(экземпляр, другой):
180
+ if isinstance(другой, Счётчик):
181
+ return Счётчик(экземпляр._counter - другой._counter)
182
+ return NotImplemented
183
+
184
+ def __str__(экземпляр):
185
+ элементы = ', '.join(f"{k}: {v}" for k, v in экземпляр._counter.items())
186
+ return f"Счётчик({{{элементы}}})"
187
+
188
+ def В_строку(экземпляр):
189
+ if not экземпляр._counter:
190
+ return "Пустой счётчик"
191
+ элементы = []
192
+ for ключ, количество in экземпляр._counter.items():
193
+ слово = __Общие_функции__.Склонение_после_числительного(количество, ['элемент', 'элемента', 'элементов'])
194
+ элементы.append(f"{ключ}: {слово}")
195
+ return ', '.join(элементы)
142
196
 
143
197
  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)
198
+ def __init__(экземпляр, *ПА, **ИА):
199
+ экземпляр._ordered_dict = collections.OrderedDict(*ПА, **ИА)
200
+
201
+ def Вставить(экземпляр, ключ, значение):
202
+ экземпляр._ordered_dict[ключ] = значение
203
+
204
+ def Удалить(экземпляр, ключ, по_умолчанию = None):
205
+ return экземпляр._ordered_dict.pop(ключ, по_умолчанию)
206
+
207
+ def Удалить_последний(экземпляр, последний = True):
208
+ return экземпляр._ordered_dict.popitem(last = последний)
209
+
210
+ def Получить(экземпляр, ключ, по_умолчанию = None):
211
+ return экземпляр._ordered_dict.get(ключ, по_умолчанию)
212
+
213
+ def Установить_по_умолчанию(экземпляр, ключ, по_умолчанию = None):
214
+ return экземпляр._ordered_dict.setdefault(ключ, по_умолчанию)
215
+
216
+ def Ключи(экземпляр):
217
+ return list(экземпляр._ordered_dict.keys())
218
+
219
+ def Значения(экземпляр):
220
+ return list(экземпляр._ordered_dict.values())
221
+
222
+ def Элементы(экземпляр):
223
+ return list(экземпляр._ordered_dict.items())
224
+
225
+ def Переместить_в_конец(экземпляр, ключ, последний = True):
226
+ экземпляр._ordered_dict.move_to_end(ключ, last = последний)
227
+
228
+ def __getitem__(экземпляр, ключ):
229
+ return экземпляр._ordered_dict[ключ]
230
+
231
+ def __setitem__(экземпляр, ключ, значение):
232
+ экземпляр._ordered_dict[ключ] = значение
233
+
234
+ def __delitem__(экземпляр, ключ):
235
+ del экземпляр._ordered_dict[ключ]
236
+
237
+ def __iter__(экземпляр):
238
+ return iter(экземпляр._ordered_dict)
239
+
240
+ def __len__(экземпляр):
241
+ return len(экземпляр._ordered_dict)
242
+
243
+ def __contains__(экземпляр, ключ):
244
+ return ключ in экземпляр._ordered_dict
245
+
246
+ def __str__(экземпляр):
247
+ элементы = ', '.join(f"{k}: {v}" for k, v in экземпляр._ordered_dict.items())
248
+ return f"Упорядоченный_словарь({{{элементы}}})"
191
249
 
192
250
  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)
251
+ def __init__(экземпляр, функция_по_умолчанию = None, *ПА, **ИА):
252
+ экземпляр._default_dict = collections.defaultdict(функция_по_умолчанию, *ПА, **ИА)
253
+
254
+ def Получить(экземпляр, ключ, по_умолчанию = None):
255
+ return экземпляр._default_dict.get(ключ, по_умолчанию)
256
+
257
+ def Установить_по_умолчанию(экземпляр, ключ, по_умолчанию = None):
258
+ return экземпляр._default_dict.setdefault(ключ, по_умолчанию)
259
+
260
+ def Удалить(экземпляр, ключ, по_умолчанию = None):
261
+ return экземпляр._default_dict.pop(ключ, по_умолчанию)
262
+
263
+ def Удалить_последний(экземпляр, последний = True):
264
+ return экземпляр._default_dict.popitem(last = последний)
265
+
266
+ def __getitem__(экземпляр, ключ):
267
+ return экземпляр._default_dict[ключ]
268
+
269
+ def __setitem__(экземпляр, ключ, значение):
270
+ экземпляр._default_dict[ключ] = значение
271
+
272
+ def __delitem__(экземпляр, ключ):
273
+ del экземпляр._default_dict[ключ]
274
+
275
+ def __iter__(экземпляр):
276
+ return iter(экземпляр._default_dict)
277
+
278
+ def __len__(экземпляр):
279
+ return len(экземпляр._default_dict)
280
+
281
+ def __contains__(экземпляр, ключ):
282
+ return ключ in экземпляр._default_dict
283
+
284
+ def Ключи(экземпляр):
285
+ return list(экземпляр._default_dict.keys())
286
+
287
+ def Значения(экземпляр):
288
+ return list(экземпляр._default_dict.values())
289
+
290
+ def Элементы(экземпляр):
291
+ return list(экземпляр._default_dict.items())
292
+
293
+ def __str__(экземпляр):
294
+ элементы = ', '.join(f"{k}: {v}" for k, v in экземпляр._default_dict.items())
295
+ return f"Словарь_по_умолчанию({{{элементы}}})"
234
296
 
235
297
  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)
298
+ def __init__(экземпляр, *словари):
299
+ экземпляр._chainmap = collections.ChainMap(*словари)
300
+
301
+ def Новый_дочерний(экземпляр, словарь = None):
302
+ return Слоистый_словарь(словарь or {}, *экземпляр._chainmap.maps)
303
+
304
+ def Родители(экземпляр):
305
+ return Слоистый_словарь(*экземпляр._chainmap.maps[1:])
306
+
307
+ def Получить(экземпляр, ключ, по_умолчанию = None):
308
+ return экземпляр._chainmap.get(ключ, по_умолчанию)
309
+
310
+ def Установить_по_умолчанию(экземпляр, ключ, по_умолчанию = None):
311
+ return экземпляр._chainmap.setdefault(ключ, по_умолчанию)
312
+
313
+ def Удалить(экземпляр, ключ, по_умолчанию = None):
314
+ return экземпляр._chainmap.pop(ключ, по_умолчанию)
315
+
316
+ def __getitem__(экземпляр, ключ):
317
+ return экземпляр._chainmap[ключ]
318
+
319
+ def __setitem__(экземпляр, ключ, значение):
320
+ экземпляр._chainmap[ключ] = значение
321
+
322
+ def __delitem__(экземпляр, ключ):
323
+ del экземпляр._chainmap[ключ]
324
+
325
+ def __iter__(экземпляр):
326
+ return iter(экземпляр._chainmap)
327
+
328
+ def __len__(экземпляр):
329
+ return len(экземпляр._chainmap)
330
+
331
+ def __contains__(экземпляр, ключ):
332
+ return ключ in экземпляр._chainmap
333
+
334
+ def Ключи(экземпляр):
335
+ return list(экземпляр._chainmap.keys())
336
+
337
+ def Значения(экземпляр):
338
+ return list(экземпляр._chainmap.values())
339
+
340
+ def Элементы(экземпляр):
341
+ return list(экземпляр._chainmap.items())
342
+
343
+ def __str__(экземпляр):
344
+ элементы = ', '.join(f"{k}: {v}" for k, v in экземпляр._chainmap.items())
345
+ return f"Слоистый_словарь({{{элементы}}})"
283
346
 
284
347
  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):
348
+ def __init__(экземпляр, *ПА, **ИА):
349
+ экземпляр._user_dict = collections.UserDict(*ПА, **ИА)
350
+
351
+ def Получить(экземпляр, ключ, по_умолчанию = None):
352
+ return экземпляр._user_dict.get(ключ, по_умолчанию)
353
+
354
+ def Установить_по_умолчанию(экземпляр, ключ, по_умолчанию = None):
355
+ return экземпляр._user_dict.setdefault(ключ, по_умолчанию)
356
+
357
+ def Удалить(экземпляр, ключ, по_умолчанию = None):
358
+ return экземпляр._user_dict.pop(ключ, по_умолчанию)
359
+
360
+ def Удалить_последний(экземпляр, последний = True):
361
+ return экземпляр._user_dict.popitem(last = последний)
362
+
363
+ def __getitem__(экземпляр, ключ):
364
+ return экземпляр._user_dict[ключ]
365
+
366
+ def __setitem__(экземпляр, ключ, значение):
367
+ экземпляр._user_dict[ключ] = значение
368
+
369
+ def __delitem__(экземпляр, ключ):
370
+ del экземпляр._user_dict[ключ]
371
+
372
+ def __iter__(экземпляр):
373
+ return iter(экземпляр._user_dict)
374
+
375
+ def __len__(экземпляр):
376
+ return len(экземпляр._user_dict)
377
+
378
+ def __contains__(экземпляр, ключ):
379
+ return ключ in экземпляр._user_dict
380
+
381
+ def Ключи(экземпляр):
382
+ return list(экземпляр._user_dict.keys())
383
+
384
+ def Значения(экземпляр):
385
+ return list(экземпляр._user_dict.values())
386
+
387
+ def Элементы(экземпляр):
388
+ return list(экземпляр._user_dict.items())
389
+
390
+ def __str__(экземпляр):
391
+ элементы = ', '.join(f"{k}: {v}" for k, v in экземпляр._user_dict.items())
392
+ return f"Собственный_словарь({{{элементы}}})"
393
+
394
+ class Собственный_список(_Изменяемая_последовательность):
395
+ def __init__(экземпляр, перебираемый = None):
396
+ экземпляр._user_list = collections.UserList(перебираемый or [])
397
+
398
+ def Добавить(экземпляр, элемент):
399
+ экземпляр._user_list.append(элемент)
400
+
401
+ def Вставить(экземпляр, индекс, элемент):
402
+ экземпляр._user_list.insert(индекс, элемент)
403
+
404
+ def Удалить(экземпляр, индекс = None):
338
405
  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)
406
+ return экземпляр._user_list.pop()
407
+ return экземпляр._user_list.pop(индекс)
408
+
409
+ def Очистить(экземпляр):
410
+ экземпляр._user_list.clear()
411
+
412
+ def Количество(экземпляр, элемент):
413
+ return экземпляр._user_list.count(элемент)
414
+
415
+ def Индекс(экземпляр, элемент, начало = 0, конец = None):
416
+ return экземпляр._user_list.index(элемент, начало, конец or len(экземпляр._user_list))
417
+
418
+ def Сортировать(экземпляр, ключ = None, по_убыванию = False):
419
+ экземпляр._user_list.sort(key = ключ, reverse = по_убыванию)
420
+
421
+ def Перевернуть(экземпляр):
422
+ экземпляр._user_list.reverse()
423
+
424
+ def Расширить(экземпляр, перебираемый):
425
+ экземпляр._user_list.extend(перебираемый)
426
+
427
+ def __getitem__(экземпляр, индекс):
428
+ return экземпляр._user_list[индекс]
429
+
430
+ def __setitem__(экземпляр, индекс, значение):
431
+ экземпляр._user_list[индекс] = значение
432
+
433
+ def __delitem__(экземпляр, индекс):
434
+ del экземпляр._user_list[индекс]
435
+
436
+ def __len__(экземпляр):
437
+ return len(экземпляр._user_list)
438
+
439
+ def __iter__(экземпляр):
440
+ return iter(экземпляр._user_list)
441
+
442
+ def __contains__(экземпляр, элемент):
443
+ return элемент in экземпляр._user_list
444
+
445
+ def __reversed__(экземпляр):
446
+ return reversed(экземпляр._user_list)
447
+
448
+ def __str__(экземпляр):
449
+ return f"Собственный_список({list(экземпляр._user_list)})"
374
450
 
375
451
  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 Удалить(здесь, элемент):
452
+ def __init__(экземпляр, строка = ""):
453
+ экземпляр._user_string = collections.UserString(строка)
454
+
455
+ def Разделить(экземпляр, разделитель = None):
456
+ return экземпляр._user_string.split(разделитель)
457
+
458
+ def Соединить(экземпляр, перебираемый):
459
+ return экземпляр._user_string.join(перебираемый)
460
+
461
+ def В_верхний_регистр(экземпляр):
462
+ return Собственная_строка(экземпляр._user_string.upper())
463
+
464
+ def В_нижний_регистр(экземпляр):
465
+ return Собственная_строка(экземпляр._user_string.lower())
466
+
467
+ def Начинается_с(экземпляр, префикс):
468
+ return экземпляр._user_string.startswith(префикс)
469
+
470
+ def Заканчивается_на(экземпляр, суффикс):
471
+ return экземпляр._user_string.endswith(суффикс)
472
+
473
+ def __getitem__(экземпляр, индекс):
474
+ return экземпляр._user_string[индекс]
475
+
476
+ def __len__(экземпляр):
477
+ return len(экземпляр._user_string)
478
+
479
+ def __iter__(экземпляр):
480
+ return iter(экземпляр._user_string)
481
+
482
+ def __contains__(экземпляр, элемент):
483
+ return элемент in экземпляр._user_string
484
+
485
+ def __reversed__(экземпляр):
486
+ return reversed(экземпляр._user_string)
487
+
488
+ def __str__(экземпляр):
489
+ return str(экземпляр._user_string)
490
+
491
+ class Собственное_множество(_Изменяемое_множество):
492
+ def __init__(экземпляр, перебираемый = None):
493
+ экземпляр._set = set(перебираемый or [])
494
+
495
+ def Добавить(экземпляр, элемент):
496
+ экземпляр._set.add(элемент)
497
+
498
+ def Удалить(экземпляр, элемент):
405
499
  try:
406
- здесь._set.remove(элемент)
500
+ экземпляр._set.remove(элемент)
407
501
  except KeyError:
408
502
  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)
503
+
504
+ def Отбросить(экземпляр, элемент):
505
+ экземпляр._set.discard(элемент)
506
+
507
+ def Очистить(экземпляр):
508
+ экземпляр._set.clear()
509
+
510
+ def Объединить(экземпляр, другой):
511
+ if isinstance(другой, Собственное_множество):
512
+ return Собственное_множество(экземпляр._set | другой._set)
513
+ return NotImplemented
514
+
515
+ def Пересечь(экземпляр, другой):
516
+ if isinstance(другой, Собственное_множество):
517
+ return Собственное_множество(экземпляр._set & другой._set)
518
+ return NotImplemented
519
+
520
+ def Разность(экземпляр, другой):
521
+ if isinstance(другой, Собственное_множество):
522
+ return Собственное_множество(экземпляр._set - другой._set)
523
+ return NotImplemented
524
+
525
+ def Симметрическая_разность(экземпляр, другой):
526
+ if isinstance(другой, Собственное_множество):
527
+ return Собственное_множество(экземпляр._set ^ другой._set)
528
+ return NotImplemented
529
+
530
+ def __contains__(экземпляр, элемент):
531
+ return элемент in экземпляр._set
532
+
533
+ def __iter__(экземпляр):
534
+ return iter(экземпляр._set)
535
+
536
+ def __len__(экземпляр):
537
+ return len(экземпляр._set)
538
+
539
+ def __or__(экземпляр, другой):
540
+ return экземпляр.Объединить(другой)
541
+
542
+ def __and__(экземпляр, другой):
543
+ return экземпляр.Пересечь(другой)
544
+
545
+ def __sub__(экземпляр, другой):
546
+ return экземпляр.Разность(другой)
547
+
548
+ def __xor__(экземпляр, другой):
549
+ return экземпляр.Симметрическая_разность(другой)
550
+
551
+ def __str__(экземпляр):
552
+ элементы = ', '.join(str(x) for x in экземпляр._set)
553
+ return f"Собственное_множество({{{элементы}}})"
554
+
555
+ def В_строку(экземпляр):
556
+ длина = len(экземпляр._set)
557
+ if длина == 0:
558
+ return "Пустое множество"
559
+ return f"Множество с {__Общие_функции__.Склонение_после_числительного(длина, ['элементом', 'элементами', 'элементами'])}: {{{', '.join(str(x) for x in экземпляр._set)}}}"