rupython 1.2.12__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.
- 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
- 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 +100 -100
- 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 +56 -56
- 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 +212 -212
- 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 +32 -32
- 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 +326 -326
- 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 +82 -82
- 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 +121 -121
- 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 +42 -42
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/METADATA +3 -3
- rupython-1.2.13.dist-info/RECORD +19 -0
- rupython-1.2.12.dist-info/RECORD +0 -19
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/LICENSE +0 -0
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/WHEEL +0 -0
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/top_level.txt +0 -0
@@ -183,15 +183,15 @@ def Заменить_преобразование_в_строку(класс, ф
|
|
183
183
|
setattr(Объект_типа.from_address(id(класс)), 'tp_str', Объект_типа._fields_[-1])
|
184
184
|
Выполнить(класс, функция)
|
185
185
|
|
186
|
-
Обёртка__Вещ_в_стр = lambda
|
186
|
+
Обёртка__Вещ_в_стр = lambda экземпляр: Вещ_в_стр(экземпляр).replace('.', ',').replace('inf', 'Бскн')
|
187
187
|
Вещ_в_стр = float.__str__
|
188
188
|
Заменить_преобразование_в_строку(float, Обёртка__Вещ_в_стр)
|
189
189
|
|
190
|
-
Обёртка__Логич_в_стр = lambda
|
190
|
+
Обёртка__Логич_в_стр = lambda экземпляр: Логич_в_стр(экземпляр).replace('True', 'Да').replace('False', 'Нет')
|
191
191
|
Логич_в_стр = bool.__str__
|
192
192
|
Заменить_преобразование_в_строку(bool, Обёртка__Логич_в_стр)
|
193
193
|
|
194
|
-
Обёртка__Пусто_в_стр = lambda
|
194
|
+
Обёртка__Пусто_в_стр = lambda экземпляр: Пусто_в_стр(экземпляр).replace('None', 'Пусто')
|
195
195
|
Пусто_в_стр = type(None).__str__
|
196
196
|
Заменить_преобразование_в_строку(type(None), Обёртка__Пусто_в_стр)
|
197
197
|
|
@@ -215,7 +215,52 @@ def Свёртка(функция, перебираемое, нач_знач = N
|
|
215
215
|
for эл in перебираемое: рез = функция(рез, эл)
|
216
216
|
return рез
|
217
217
|
|
218
|
+
class ТрЛогич:
|
219
|
+
_instance_map = {}
|
220
|
+
|
221
|
+
def __new__(класс, название):
|
222
|
+
if название not in класс._instance_map:
|
223
|
+
класс._instance_map[название] = super().__new__(класс)
|
224
|
+
класс._instance_map[название]._name = название
|
225
|
+
return класс._instance_map[название]
|
226
|
+
|
227
|
+
def __and__(экземпляр, значение):
|
228
|
+
if not isinstance(значение, ТрЛогич):
|
229
|
+
raise TypeError("Операция 'И' возможна только между троичными логическими значениями.")
|
230
|
+
if экземпляр is Ложь or значение is Ложь: return Ложь
|
231
|
+
if экземпляр is Истина and значение is Истина: return Истина
|
232
|
+
return Неопр
|
233
|
+
|
234
|
+
def __or__(экземпляр, значение):
|
235
|
+
if not isinstance(значение, ТрЛогич):
|
236
|
+
raise TypeError("Операция 'Или' возможна только между троичными логическими значениями.")
|
237
|
+
if экземпляр is Истина or значение is Истина: return Истина
|
238
|
+
if экземпляр is Ложь and значение is Ложь: return Ложь
|
239
|
+
return Неопр
|
240
|
+
|
241
|
+
def __invert__(экземпляр):
|
242
|
+
if экземпляр is Истина: return Ложь
|
243
|
+
if экземпляр is Ложь: return Истина
|
244
|
+
return Неопр
|
245
|
+
|
246
|
+
def __eq__(экземпляр, значение):
|
247
|
+
if not isinstance(значение, ТрЛогич): return NotImplemented
|
248
|
+
return экземпляр is значение
|
249
|
+
|
250
|
+
def __bool__(экземпляр):
|
251
|
+
if экземпляр is Истина: return True
|
252
|
+
elif экземпляр is Ложь: return False
|
253
|
+
else:
|
254
|
+
raise TypeError("Невозможно преобразовать 'Неопр' в двоичное логическое значение.")
|
255
|
+
|
256
|
+
def __repr__(экземпляр):
|
257
|
+
return f"Троичное({экземпляр._name})"
|
258
|
+
|
259
|
+
def __str__(экземпляр):
|
260
|
+
return экземпляр._name
|
261
|
+
|
218
262
|
__builtins__.update(
|
219
263
|
__Проверить_существование__ = Проверить_существование,
|
220
|
-
Свёртка =
|
264
|
+
Свёртка = Свёртка,
|
265
|
+
Истина = ТрЛогич("Истина"), Ложь = ТрЛогич("ТрЛогич"), Неопр = ТрЛогич("Неопр")
|
221
266
|
)
|
@@ -18,189 +18,189 @@ from rupython import __Общие_функции__
|
|
18
18
|
}
|
19
19
|
|
20
20
|
class Очередь:
|
21
|
-
def __init__(
|
21
|
+
def __init__(экземпляр, максимальный_размер = 0):
|
22
22
|
ИА = {'maxsize': максимальный_размер}
|
23
|
-
|
23
|
+
экземпляр._queue = queue.Queue(**ИА)
|
24
24
|
|
25
|
-
def Добавить(
|
25
|
+
def Добавить(экземпляр, элемент, блоковать = True, таймаут = None):
|
26
26
|
ИА = {'item': элемент, 'block': блоковать}
|
27
27
|
if таймаут is not None:
|
28
28
|
ИА['timeout'] = таймаут
|
29
|
-
|
29
|
+
экземпляр._queue.put(**ИА)
|
30
30
|
|
31
|
-
def Добавить_без_блокования(
|
32
|
-
|
31
|
+
def Добавить_без_блокования(экземпляр, элемент):
|
32
|
+
экземпляр._queue.put_nowait(элемент)
|
33
33
|
|
34
|
-
def Получить(
|
34
|
+
def Получить(экземпляр, блоковать = True, таймаут = None):
|
35
35
|
ИА = {'block': блоковать}
|
36
36
|
if таймаут is not None:
|
37
37
|
ИА['timeout'] = таймаут
|
38
|
-
return
|
38
|
+
return экземпляр._queue.get(**ИА)
|
39
39
|
|
40
|
-
def Получить_без_блокования(
|
41
|
-
return
|
40
|
+
def Получить_без_блокования(экземпляр):
|
41
|
+
return экземпляр._queue.get_nowait()
|
42
42
|
|
43
|
-
def Задача_выполнена(
|
44
|
-
|
43
|
+
def Задача_выполнена(экземпляр):
|
44
|
+
экземпляр._queue.task_done()
|
45
45
|
|
46
|
-
def Ждать_завершения(
|
47
|
-
|
46
|
+
def Ждать_завершения(экземпляр):
|
47
|
+
экземпляр._queue.join()
|
48
48
|
|
49
|
-
def Пустая(
|
50
|
-
return
|
49
|
+
def Пустая(экземпляр):
|
50
|
+
return экземпляр._queue.empty()
|
51
51
|
|
52
|
-
def Полная(
|
53
|
-
return
|
52
|
+
def Полная(экземпляр):
|
53
|
+
return экземпляр._queue.full()
|
54
54
|
|
55
|
-
def Размер(
|
56
|
-
return
|
55
|
+
def Размер(экземпляр):
|
56
|
+
return экземпляр._queue.qsize()
|
57
57
|
|
58
|
-
def __len__(
|
59
|
-
return
|
58
|
+
def __len__(экземпляр):
|
59
|
+
return экземпляр._queue.qsize()
|
60
60
|
|
61
|
-
def __str__(
|
62
|
-
размер =
|
61
|
+
def __str__(экземпляр):
|
62
|
+
размер = экземпляр.Размер()
|
63
63
|
return f"Очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
|
64
64
|
|
65
|
-
def В_строку_с_задачами(
|
66
|
-
размер =
|
65
|
+
def В_строку_с_задачами(экземпляр):
|
66
|
+
размер = экземпляр.Размер()
|
67
67
|
return f"Очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
|
68
68
|
|
69
69
|
class Стековая_очередь:
|
70
|
-
def __init__(
|
70
|
+
def __init__(экземпляр, максимальный_размер = 0):
|
71
71
|
ИА = {'maxsize': максимальный_размер}
|
72
|
-
|
72
|
+
экземпляр._queue = queue.LifoQueue(**ИА)
|
73
73
|
|
74
|
-
def Добавить(
|
74
|
+
def Добавить(экземпляр, элемент, блоковать = True, таймаут = None):
|
75
75
|
ИА = {'item': элемент, 'block': блоковать}
|
76
76
|
if таймаут is not None:
|
77
77
|
ИА['timeout'] = таймаут
|
78
|
-
|
78
|
+
экземпляр._queue.put(**ИА)
|
79
79
|
|
80
|
-
def Добавить_без_блокования(
|
81
|
-
|
80
|
+
def Добавить_без_блокования(экземпляр, элемент):
|
81
|
+
экземпляр._queue.put_nowait(элемент)
|
82
82
|
|
83
|
-
def Получить(
|
83
|
+
def Получить(экземпляр, блоковать = True, таймаут = None):
|
84
84
|
ИА = {'block': блоковать}
|
85
85
|
if таймаут is not None:
|
86
86
|
ИА['timeout'] = таймаут
|
87
|
-
return
|
87
|
+
return экземпляр._queue.get(**ИА)
|
88
88
|
|
89
|
-
def Получить_без_блокования(
|
90
|
-
return
|
89
|
+
def Получить_без_блокования(экземпляр):
|
90
|
+
return экземпляр._queue.get_nowait()
|
91
91
|
|
92
|
-
def Задача_выполнена(
|
93
|
-
|
92
|
+
def Задача_выполнена(экземпляр):
|
93
|
+
экземпляр._queue.task_done()
|
94
94
|
|
95
|
-
def Ждать_завершения(
|
96
|
-
|
95
|
+
def Ждать_завершения(экземпляр):
|
96
|
+
экземпляр._queue.join()
|
97
97
|
|
98
|
-
def Пустая(
|
99
|
-
return
|
98
|
+
def Пустая(экземпляр):
|
99
|
+
return экземпляр._queue.empty()
|
100
100
|
|
101
|
-
def Полная(
|
102
|
-
return
|
101
|
+
def Полная(экземпляр):
|
102
|
+
return экземпляр._queue.full()
|
103
103
|
|
104
|
-
def Размер(
|
105
|
-
return
|
104
|
+
def Размер(экземпляр):
|
105
|
+
return экземпляр._queue.qsize()
|
106
106
|
|
107
|
-
def __len__(
|
108
|
-
return
|
107
|
+
def __len__(экземпляр):
|
108
|
+
return экземпляр._queue.qsize()
|
109
109
|
|
110
|
-
def __str__(
|
111
|
-
размер =
|
110
|
+
def __str__(экземпляр):
|
111
|
+
размер = экземпляр.Размер()
|
112
112
|
return f"Стековая_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
|
113
113
|
|
114
|
-
def В_строку_с_задачами(
|
115
|
-
размер =
|
114
|
+
def В_строку_с_задачами(экземпляр):
|
115
|
+
размер = экземпляр.Размер()
|
116
116
|
return f"Стековая_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
|
117
117
|
|
118
118
|
class Приоритетная_очередь:
|
119
|
-
def __init__(
|
119
|
+
def __init__(экземпляр, максимальный_размер = 0):
|
120
120
|
ИА = {'maxsize': максимальный_размер}
|
121
|
-
|
121
|
+
экземпляр._queue = queue.PriorityQueue(**ИА)
|
122
122
|
|
123
|
-
def Добавить(
|
123
|
+
def Добавить(экземпляр, элемент, приоритет, блоковать = True, таймаут = None):
|
124
124
|
ИА = {'item': (приоритет, элемент), 'block': блоковать}
|
125
125
|
if таймаут is not None:
|
126
126
|
ИА['timeout'] = таймаут
|
127
|
-
|
127
|
+
экземпляр._queue.put(**ИА)
|
128
128
|
|
129
|
-
def Добавить_без_блокования(
|
130
|
-
|
129
|
+
def Добавить_без_блокования(экземпляр, элемент, приоритет):
|
130
|
+
экземпляр._queue.put_nowait((приоритет, элемент))
|
131
131
|
|
132
|
-
def Получить(
|
132
|
+
def Получить(экземпляр, блоковать = True, таймаут = None):
|
133
133
|
ИА = {'block': блоковать}
|
134
134
|
if таймаут is not None:
|
135
135
|
ИА['timeout'] = таймаут
|
136
|
-
приоритет, элемент =
|
136
|
+
приоритет, элемент = экземпляр._queue.get(**ИА)
|
137
137
|
return элемент
|
138
138
|
|
139
|
-
def Получить_с_приоритетом(
|
139
|
+
def Получить_с_приоритетом(экземпляр, блоковать = True, таймаут = None):
|
140
140
|
ИА = {'block': блоковать}
|
141
141
|
if таймаут is not None:
|
142
142
|
ИА['timeout'] = таймаут
|
143
|
-
return
|
143
|
+
return экземпляр._queue.get(**ИА)
|
144
144
|
|
145
|
-
def Получить_без_блокования(
|
146
|
-
приоритет, элемент =
|
145
|
+
def Получить_без_блокования(экземпляр):
|
146
|
+
приоритет, элемент = экземпляр._queue.get_nowait()
|
147
147
|
return элемент
|
148
148
|
|
149
|
-
def Получить_без_блокования_с_приоритетом(
|
150
|
-
return
|
149
|
+
def Получить_без_блокования_с_приоритетом(экземпляр):
|
150
|
+
return экземпляр._queue.get_nowait()
|
151
151
|
|
152
|
-
def Задача_выполнена(
|
153
|
-
|
152
|
+
def Задача_выполнена(экземпляр):
|
153
|
+
экземпляр._queue.task_done()
|
154
154
|
|
155
|
-
def Ждать_завершения(
|
156
|
-
|
155
|
+
def Ждать_завершения(экземпляр):
|
156
|
+
экземпляр._queue.join()
|
157
157
|
|
158
|
-
def Пустая(
|
159
|
-
return
|
158
|
+
def Пустая(экземпляр):
|
159
|
+
return экземпляр._queue.empty()
|
160
160
|
|
161
|
-
def Полная(
|
162
|
-
return
|
161
|
+
def Полная(экземпляр):
|
162
|
+
return экземпляр._queue.full()
|
163
163
|
|
164
|
-
def Размер(
|
165
|
-
return
|
164
|
+
def Размер(экземпляр):
|
165
|
+
return экземпляр._queue.qsize()
|
166
166
|
|
167
|
-
def __len__(
|
168
|
-
return
|
167
|
+
def __len__(экземпляр):
|
168
|
+
return экземпляр._queue.qsize()
|
169
169
|
|
170
|
-
def __str__(
|
171
|
-
размер =
|
170
|
+
def __str__(экземпляр):
|
171
|
+
размер = экземпляр.Размер()
|
172
172
|
return f"Приоритетная_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
|
173
173
|
|
174
|
-
def В_строку_с_задачами(
|
175
|
-
размер =
|
174
|
+
def В_строку_с_задачами(экземпляр):
|
175
|
+
размер = экземпляр.Размер()
|
176
176
|
return f"Приоритетная_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
|
177
177
|
|
178
178
|
class Простая_очередь:
|
179
|
-
def __init__(
|
180
|
-
|
179
|
+
def __init__(экземпляр):
|
180
|
+
экземпляр._queue = queue.SimpleQueue()
|
181
181
|
|
182
|
-
def Добавить(
|
183
|
-
|
182
|
+
def Добавить(экземпляр, элемент):
|
183
|
+
экземпляр._queue.put(элемент)
|
184
184
|
|
185
|
-
def Получить(
|
186
|
-
return
|
185
|
+
def Получить(экземпляр):
|
186
|
+
return экземпляр._queue.get()
|
187
187
|
|
188
|
-
def Получить_без_блокования(
|
189
|
-
return
|
188
|
+
def Получить_без_блокования(экземпляр):
|
189
|
+
return экземпляр._queue.get_nowait()
|
190
190
|
|
191
|
-
def Пустая(
|
192
|
-
|
191
|
+
def Пустая(экземпляр):
|
192
|
+
экземпляр._queue.empty()
|
193
193
|
|
194
|
-
def Размер(
|
195
|
-
return
|
194
|
+
def Размер(экземпляр):
|
195
|
+
return экземпляр._queue.qsize()
|
196
196
|
|
197
|
-
def __len__(
|
198
|
-
return
|
197
|
+
def __len__(экземпляр):
|
198
|
+
return экземпляр._queue.qsize()
|
199
199
|
|
200
|
-
def __str__(
|
201
|
-
размер =
|
200
|
+
def __str__(экземпляр):
|
201
|
+
размер = экземпляр.Размер()
|
202
202
|
return f"Простая_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['элемент'])}"
|
203
203
|
|
204
|
-
def В_строку_с_задачами(
|
205
|
-
размер =
|
204
|
+
def В_строку_с_задачами(экземпляр):
|
205
|
+
размер = экземпляр.Размер()
|
206
206
|
return f"Простая_очередь с {__Общие_функции__.Склонение_после_числительного(размер, Словарь_склонений['задача'])}"
|
@@ -423,68 +423,68 @@ def Перевести_ошибку(исключение):
|
|
423
423
|
return f"Неизвестная ошибка: {сообщение}"
|
424
424
|
|
425
425
|
class Указатель():
|
426
|
-
def __init__(
|
427
|
-
|
426
|
+
def __init__(экземпляр, курсор):
|
427
|
+
экземпляр._курсор = курсор
|
428
428
|
|
429
|
-
def Выполнить_запрос(
|
429
|
+
def Выполнить_запрос(экземпляр, запрос, параметры=()):
|
430
430
|
try:
|
431
431
|
запрос = Перевести_код_запроса(запрос)
|
432
|
-
|
432
|
+
экземпляр._курсор.execute(запрос, параметры)
|
433
433
|
except Ошибка as ош:
|
434
434
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
435
435
|
|
436
|
-
def Выполнить_запросы(
|
436
|
+
def Выполнить_запросы(экземпляр, запрос, последовательность_параметров):
|
437
437
|
try:
|
438
438
|
запрос = Перевести_код_запроса(запрос)
|
439
|
-
|
439
|
+
экземпляр._курсор.executemany(запрос, последовательность_параметров)
|
440
440
|
except Ошибка as ош:
|
441
441
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
442
442
|
|
443
|
-
def Выполнить_сценарий(
|
443
|
+
def Выполнить_сценарий(экземпляр, сценарий):
|
444
444
|
try:
|
445
445
|
скрипт = Перевести_код_запроса(сценарий)
|
446
|
-
|
446
|
+
экземпляр._курсор.executescript(скрипт)
|
447
447
|
except Ошибка as ош:
|
448
448
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
449
449
|
|
450
|
-
def Извлечь_запись(
|
450
|
+
def Извлечь_запись(экземпляр):
|
451
451
|
try:
|
452
|
-
return
|
452
|
+
return экземпляр._курсор.fetchone()
|
453
453
|
except Ошибка as ош:
|
454
454
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
455
455
|
|
456
|
-
def Извлечь_записи(
|
456
|
+
def Извлечь_записи(экземпляр, количество):
|
457
457
|
try:
|
458
|
-
return
|
458
|
+
return экземпляр._курсор.fetchmany(количество)
|
459
459
|
except Ошибка as ош:
|
460
460
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
461
461
|
|
462
|
-
def Извлечь_все_записи(
|
462
|
+
def Извлечь_все_записи(экземпляр):
|
463
463
|
try:
|
464
|
-
return
|
464
|
+
return экземпляр._курсор.fetchall()
|
465
465
|
except Ошибка as ош:
|
466
466
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
467
467
|
|
468
|
-
def Закрыть(
|
468
|
+
def Закрыть(экземпляр):
|
469
469
|
try:
|
470
|
-
|
470
|
+
экземпляр._курсор.close()
|
471
471
|
except Ошибка as ош:
|
472
472
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
473
473
|
|
474
474
|
@property
|
475
|
-
def Описание(
|
476
|
-
return
|
475
|
+
def Описание(экземпляр):
|
476
|
+
return экземпляр._курсор.description
|
477
477
|
|
478
478
|
@property
|
479
|
-
def Количество_строк(
|
480
|
-
return
|
479
|
+
def Количество_строк(экземпляр):
|
480
|
+
return экземпляр._курсор.rowcount
|
481
481
|
|
482
482
|
@property
|
483
|
-
def Последний_идентификатор(
|
484
|
-
return
|
483
|
+
def Последний_идентификатор(экземпляр):
|
484
|
+
return экземпляр._курсор.lastrowid
|
485
485
|
|
486
486
|
class Соединение():
|
487
|
-
def __init__(
|
487
|
+
def __init__(экземпляр,
|
488
488
|
путь, *,
|
489
489
|
таймаут = 5.0,
|
490
490
|
обнаружение_типов = 0,
|
@@ -499,7 +499,7 @@ class Соединение():
|
|
499
499
|
else: уровень_изоляции = None
|
500
500
|
|
501
501
|
try:
|
502
|
-
|
502
|
+
экземпляр._соединение = sqlite3.connect(
|
503
503
|
путь,
|
504
504
|
timeout=таймаут,
|
505
505
|
detect_types=обнаружение_типов,
|
@@ -511,94 +511,94 @@ class Соединение():
|
|
511
511
|
except Ошибка as ош:
|
512
512
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
513
513
|
|
514
|
-
def __enter__(
|
515
|
-
return
|
514
|
+
def __enter__(экземпляр):
|
515
|
+
return экземпляр
|
516
516
|
|
517
|
-
def __exit__(
|
518
|
-
|
517
|
+
def __exit__(экземпляр, exc_type, exc_value, traceback):
|
518
|
+
экземпляр.Закрыть()
|
519
519
|
|
520
|
-
def Создать_указатель(
|
520
|
+
def Создать_указатель(экземпляр):
|
521
521
|
try:
|
522
|
-
курсор =
|
522
|
+
курсор = экземпляр._соединение.cursor()
|
523
523
|
return Указатель(курсор)
|
524
524
|
except Ошибка as ош:
|
525
525
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
526
526
|
|
527
|
-
def Выполнить_запрос(
|
527
|
+
def Выполнить_запрос(экземпляр, запрос, параметры=()):
|
528
528
|
try:
|
529
529
|
запрос = Перевести_код_запроса(запрос)
|
530
|
-
указатель =
|
530
|
+
указатель = экземпляр._соединение.execute(запрос, параметры)
|
531
531
|
return Указатель(указатель)
|
532
532
|
except Ошибка as ош:
|
533
533
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
534
534
|
|
535
|
-
def Выполнить_запросы(
|
535
|
+
def Выполнить_запросы(экземпляр, запрос, параметры):
|
536
536
|
try:
|
537
537
|
запрос = Перевести_код_запроса(запрос)
|
538
|
-
указатель =
|
538
|
+
указатель = экземпляр._соединение.executemany(запрос, параметры)
|
539
539
|
return Указатель(указатель)
|
540
540
|
except Ошибка as ош:
|
541
541
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
542
542
|
|
543
|
-
def Выполнить_сценарий(
|
543
|
+
def Выполнить_сценарий(экземпляр, сценарий):
|
544
544
|
try:
|
545
545
|
скрипт = Перевести_код_запроса(сценарий)
|
546
|
-
|
546
|
+
экземпляр._соединение.executescript(скрипт)
|
547
547
|
except Ошибка as ош:
|
548
548
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
549
549
|
|
550
|
-
def Создать_функцию(
|
550
|
+
def Создать_функцию(экземпляр, имя, количество_параметров, функция):
|
551
551
|
try:
|
552
|
-
|
552
|
+
экземпляр._соединение.create_function(имя, количество_параметров, функция)
|
553
553
|
except Ошибка as ош:
|
554
554
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
555
555
|
|
556
|
-
def Создать_агрегатную_функцию(
|
556
|
+
def Создать_агрегатную_функцию(экземпляр, имя, число_аргументов, класс):
|
557
557
|
try:
|
558
|
-
|
558
|
+
экземпляр._соединение.create_aggregate(имя, число_аргументов, класс)
|
559
559
|
except Ошибка as ош:
|
560
560
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
561
561
|
|
562
|
-
def Создать_сопоставление(
|
562
|
+
def Создать_сопоставление(экземпляр, имя, функция):
|
563
563
|
try:
|
564
|
-
|
564
|
+
экземпляр._соединение.create_collation(имя, функция)
|
565
565
|
except Ошибка as ош:
|
566
566
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
567
567
|
|
568
|
-
def Прервать(
|
568
|
+
def Прервать(экземпляр):
|
569
569
|
try:
|
570
|
-
|
570
|
+
экземпляр._соединение.interrupt()
|
571
571
|
except Ошибка as ош:
|
572
572
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
573
573
|
|
574
|
-
def Закрыть(
|
574
|
+
def Закрыть(экземпляр):
|
575
575
|
try:
|
576
|
-
|
576
|
+
экземпляр._соединение.close()
|
577
577
|
except Ошибка as ош:
|
578
578
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
579
579
|
|
580
|
-
def Утвердить(
|
580
|
+
def Утвердить(экземпляр):
|
581
581
|
try:
|
582
|
-
|
582
|
+
экземпляр._соединение.commit()
|
583
583
|
except Ошибка as ош:
|
584
584
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
585
585
|
|
586
|
-
def Откатить(
|
586
|
+
def Откатить(экземпляр):
|
587
587
|
try:
|
588
|
-
|
588
|
+
экземпляр._соединение.rollback()
|
589
589
|
except Ошибка as ош:
|
590
590
|
raise Ошибка(Перевести_ошибку(ош)) from ош
|
591
591
|
|
592
592
|
@property
|
593
|
-
def В_транзакции(
|
594
|
-
return
|
593
|
+
def В_транзакции(экземпляр):
|
594
|
+
return экземпляр._соединение.in_transaction
|
595
595
|
|
596
596
|
@property
|
597
|
-
def Изоляция(
|
598
|
-
return
|
597
|
+
def Изоляция(экземпляр):
|
598
|
+
return экземпляр._соединение.isolation_level
|
599
599
|
|
600
600
|
@Изоляция.setter
|
601
|
-
def Изоляция(
|
601
|
+
def Изоляция(экземпляр, значение):
|
602
602
|
if значение not in (None, 'DEFERRED', 'IMMEDIATE', 'EXCLUSIVE'):
|
603
603
|
raise ValueError(f"Недопустимый уровень изоляции: {значение}")
|
604
|
-
|
604
|
+
экземпляр._соединение.isolation_level = значение
|