iris-pex-embedded-python 3.4.0b14__py3-none-any.whl → 3.4.1__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.

Potentially problematic release.


This version of iris-pex-embedded-python might be problematic. Click here for more details.

Files changed (86) hide show
  1. iop/_async_request.py +3 -1
  2. iop/_business_host.py +2 -1
  3. iop/_business_service.py +6 -0
  4. iop/_cli.py +9 -1
  5. iop/_common.py +11 -1
  6. iop/_debugpy.py +145 -0
  7. iop/_director.py +40 -40
  8. iop/_iris.py +7 -0
  9. iop/_log_manager.py +9 -9
  10. iop/_serialization.py +27 -19
  11. iop/_utils.py +10 -10
  12. iop/cls/IOP/Common.cls +3 -1
  13. iop/cls/IOP/Utils.cls +59 -9
  14. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1.dist-info}/METADATA +2 -1
  15. iris_pex_embedded_python-3.4.1.dist-info/RECORD +80 -0
  16. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1.dist-info}/WHEEL +1 -1
  17. iris_pex_embedded_python-3.4.1.dist-info/top_level.txt +2 -0
  18. intersystems_iris/_BufferReader.py +0 -10
  19. intersystems_iris/_BufferWriter.py +0 -32
  20. intersystems_iris/_ConnectionInformation.py +0 -56
  21. intersystems_iris/_ConnectionParameters.py +0 -18
  22. intersystems_iris/_Constant.py +0 -38
  23. intersystems_iris/_DBList.py +0 -506
  24. intersystems_iris/_Device.py +0 -69
  25. intersystems_iris/_GatewayContext.py +0 -25
  26. intersystems_iris/_GatewayException.py +0 -4
  27. intersystems_iris/_GatewayUtility.py +0 -74
  28. intersystems_iris/_IRIS.py +0 -1294
  29. intersystems_iris/_IRISConnection.py +0 -516
  30. intersystems_iris/_IRISEmbedded.py +0 -85
  31. intersystems_iris/_IRISGlobalNode.py +0 -273
  32. intersystems_iris/_IRISGlobalNodeView.py +0 -25
  33. intersystems_iris/_IRISIterator.py +0 -143
  34. intersystems_iris/_IRISList.py +0 -360
  35. intersystems_iris/_IRISNative.py +0 -208
  36. intersystems_iris/_IRISOREF.py +0 -9
  37. intersystems_iris/_IRISObject.py +0 -424
  38. intersystems_iris/_IRISReference.py +0 -133
  39. intersystems_iris/_InStream.py +0 -149
  40. intersystems_iris/_LegacyIterator.py +0 -135
  41. intersystems_iris/_ListItem.py +0 -15
  42. intersystems_iris/_ListReader.py +0 -84
  43. intersystems_iris/_ListWriter.py +0 -161
  44. intersystems_iris/_LogFileStream.py +0 -115
  45. intersystems_iris/_MessageHeader.py +0 -51
  46. intersystems_iris/_OutStream.py +0 -25
  47. intersystems_iris/_PrintStream.py +0 -65
  48. intersystems_iris/_PythonGateway.py +0 -850
  49. intersystems_iris/_SharedMemorySocket.py +0 -87
  50. intersystems_iris/__init__.py +0 -79
  51. intersystems_iris/__main__.py +0 -7
  52. intersystems_iris/dbapi/_Column.py +0 -56
  53. intersystems_iris/dbapi/_DBAPI.py +0 -2631
  54. intersystems_iris/dbapi/_Descriptor.py +0 -46
  55. intersystems_iris/dbapi/_IRISStream.py +0 -65
  56. intersystems_iris/dbapi/_Message.py +0 -158
  57. intersystems_iris/dbapi/_Parameter.py +0 -171
  58. intersystems_iris/dbapi/_ParameterCollection.py +0 -141
  59. intersystems_iris/dbapi/_ResultSetRow.py +0 -361
  60. intersystems_iris/dbapi/_SQLType.py +0 -32
  61. intersystems_iris/dbapi/__init__.py +0 -0
  62. intersystems_iris/dbapi/preparser/_PreParser.py +0 -1674
  63. intersystems_iris/dbapi/preparser/_Scanner.py +0 -391
  64. intersystems_iris/dbapi/preparser/_Token.py +0 -81
  65. intersystems_iris/dbapi/preparser/_TokenList.py +0 -251
  66. intersystems_iris/dbapi/preparser/__init__.py +0 -0
  67. intersystems_iris/pex/_BusinessHost.py +0 -101
  68. intersystems_iris/pex/_BusinessOperation.py +0 -105
  69. intersystems_iris/pex/_BusinessProcess.py +0 -214
  70. intersystems_iris/pex/_BusinessService.py +0 -95
  71. intersystems_iris/pex/_Common.py +0 -228
  72. intersystems_iris/pex/_Director.py +0 -24
  73. intersystems_iris/pex/_IRISBusinessOperation.py +0 -5
  74. intersystems_iris/pex/_IRISBusinessService.py +0 -18
  75. intersystems_iris/pex/_IRISInboundAdapter.py +0 -5
  76. intersystems_iris/pex/_IRISOutboundAdapter.py +0 -17
  77. intersystems_iris/pex/_InboundAdapter.py +0 -57
  78. intersystems_iris/pex/_Message.py +0 -6
  79. intersystems_iris/pex/_OutboundAdapter.py +0 -46
  80. intersystems_iris/pex/__init__.py +0 -25
  81. iris_pex_embedded_python-3.4.0b14.dist-info/RECORD +0 -143
  82. iris_pex_embedded_python-3.4.0b14.dist-info/top_level.txt +0 -4
  83. irisnative/_IRISNative.py +0 -9
  84. irisnative/__init__.py +0 -10
  85. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1.dist-info}/entry_points.txt +0 -0
  86. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,361 +0,0 @@
1
- import uuid
2
- from datetime import datetime, date, time, timezone
3
- from collections import namedtuple
4
- from ._SQLType import SQLType
5
- from .._DBList import _DBList
6
- from .._ListItem import _ListItem
7
- from ._IRISStream import IRISStream, IRISBinaryStream
8
- from ._Column import _Column
9
-
10
-
11
- def from_timestamp_posix(posix):
12
- time = int(posix)
13
- if time > 0:
14
- time ^= 0x1000000000000000
15
- else:
16
- time |= 0xF000000000000000
17
-
18
- time /= 1000000
19
-
20
- value = datetime.fromtimestamp(time, timezone.utc).replace(tzinfo=None)
21
- return value
22
-
23
-
24
- class _ResultSetRow:
25
- _locale = "latin-1"
26
- _connection = None
27
-
28
- def __init__(
29
- self,
30
- connection,
31
- columns=None,
32
- rowcount=0,
33
- ):
34
- self._connection = connection
35
- # index from user-inputted columns to columns received from server
36
- self.col_index = []
37
- self._col_type = []
38
- self._columns = columns
39
- if columns != None:
40
- for column in columns:
41
- self.col_index.append(column.slotPosition - 1)
42
- self._col_type.append(column.type)
43
-
44
- self._name_dict = {}
45
- for columnIndex, column in enumerate(columns):
46
- key = column.name.lower()
47
- if key in self._name_dict:
48
- self._name_dict[key].append(columnIndex)
49
- else:
50
- self._name_dict[key] = [columnIndex]
51
-
52
- self._name_dict_keys = list(self._name_dict.keys())
53
- self._name_dict_values = list(self._name_dict.values())
54
-
55
- if rowcount != 0:
56
- self._fast_select = True
57
- self.colCount = rowcount
58
- self._fast_first_iter = True
59
- else:
60
- self._fast_select = False
61
- self.colCount = len(columns) if columns != None else 0
62
-
63
- # number of columns received from server, aka number of items per row
64
- # self.colCount = rowcount
65
-
66
- # list of _ListItems corresponding to the various entries in the row, plus the offset of next row's first _ListItem
67
- self.rowItems = None
68
-
69
- self._locale = connection._connection_info._locale
70
-
71
- self._new_buffer = True
72
-
73
- # list of data offsets corresponding to each _ListItem in the row
74
- self._offsets = [0] * self.colCount
75
-
76
- class DataRow:
77
- _types = {
78
- SQLType.GUID: uuid.UUID,
79
- SQLType.BIGINT: int,
80
- SQLType.BINARY: bytes,
81
- SQLType.BIT: None,
82
- SQLType.CHAR: None,
83
- SQLType.DECIMAL: None,
84
- SQLType.DOUBLE: None,
85
- SQLType.FLOAT: None,
86
- SQLType.GUID: None,
87
- SQLType.INTEGER: int,
88
- SQLType.LONGVARBINARY: IRISBinaryStream,
89
- SQLType.LONGVARCHAR: IRISStream,
90
- SQLType.NUMERIC: None,
91
- SQLType.REAL: None,
92
- SQLType.SMALLINT: None,
93
- SQLType.DATE: None,
94
- SQLType.TIME: None,
95
- SQLType.TIMESTAMP: None,
96
- SQLType.TINYINT: None,
97
- SQLType.TYPE_DATE: None,
98
- SQLType.TYPE_TIME: None,
99
- SQLType.TYPE_TIMESTAMP: None,
100
- SQLType.VARBINARY: bytes,
101
- SQLType.VARCHAR: str,
102
- SQLType.WCHAR: None,
103
- SQLType.WLONGVARCHAR: None,
104
- SQLType.WVARCHAR: None,
105
- SQLType.DATE_HOROLOG: None,
106
- SQLType.TIME_HOROLOG: None,
107
- SQLType.TIMESTAMP_POSIX: None,
108
- }
109
-
110
- def __init__(self, rsrow):
111
- self._offsets = []
112
- for i in range(len(rsrow.rowItems) - 1):
113
- self._offsets.append(rsrow.rowItems[i])
114
-
115
- self._connection = rsrow._connection
116
- self._col_type = []
117
- self._columns = rsrow._columns
118
- self._name_dict = []
119
- self._name_dict_keys = []
120
- self._name_dict_values = []
121
- if hasattr(rsrow, "_name_dict"):
122
- self._col_type = rsrow._col_type
123
- self._name_dict = rsrow._name_dict
124
- self._name_dict_keys = rsrow._name_dict_keys
125
- self._name_dict_values = rsrow._name_dict_values
126
-
127
- self._list_item = rsrow._last_list_item
128
- self._locale = rsrow._locale
129
-
130
- def __getattr__(self, key):
131
- return self.__getitem__(key)
132
-
133
- def get(self):
134
- return self[:]
135
-
136
- def as_tuple(self):
137
- row = namedtuple("Row", [col.name for col in self._columns], rename=True)
138
- values = self[:]
139
- return row(*values)
140
-
141
- def __getitem__(self, key):
142
- if isinstance(key, str):
143
- key = key.lower()
144
- if key not in self._name_dict_keys:
145
- raise KeyError("Column '" + key + "' does not exist")
146
- return self[self._name_dict[key][0] + 1]
147
- elif isinstance(key, int):
148
- if key < 0 or key > sum(len(item) for item in self._name_dict_values):
149
- raise ValueError("Column index " + str(key) + " is out of range")
150
- if key == 0:
151
- return self.__getitem__(slice(None, None, None))
152
- key = key - 1
153
-
154
- for i, list in enumerate(self._name_dict_values):
155
- if key in list:
156
- idx = i
157
- break
158
- else:
159
- continue
160
- name = self._name_dict_keys[idx]
161
-
162
- self._list_item.next_offset = self._offsets[key]
163
- _DBList._get_list_element(self._list_item)
164
- item = _DBList._get(self._list_item, self._locale)
165
- _column: _Column = self._columns[idx]
166
- ctype = _column.type
167
- value_type = self._types[ctype] if ctype in self._types else None
168
- try:
169
- if ctype == SQLType.DATE_HOROLOG:
170
- HOROLOG_ORDINAL = date(1840, 12, 31).toordinal()
171
- if item:
172
- item = date.fromordinal(HOROLOG_ORDINAL + item)
173
- if ctype == SQLType.TIMESTAMP and item:
174
- item = item + '.000' if '.' not in item else item
175
- item = datetime.strptime(item, '%Y-%m-%d %H:%M:%S.%f')
176
- if ctype == SQLType.TIME_HOROLOG:
177
- if item:
178
- item = time(item // 3600, item % 3600 // 60, item % 3600 % 60)
179
- if ctype == SQLType.GUID:
180
- item = uuid.UUID(item)
181
- if ctype == SQLType.TIMESTAMP_POSIX and item:
182
- item = from_timestamp_posix(item)
183
-
184
- if _column.tableName == "None" and _column.schema == "None":
185
- # Ignore for anonymous tables
186
- pass
187
- elif item is None:
188
- pass
189
- elif value_type is bytes:
190
- item = bytes(map(ord, item))
191
- elif value_type and issubclass(value_type, IRISStream):
192
- stream = value_type(self._connection, item)
193
- item = stream.fetch()
194
- elif value_type is not None and not isinstance(item, value_type):
195
- item = value_type(item)
196
- except Exception:
197
- pass
198
-
199
- setattr(self, name, item)
200
- return item
201
- elif isinstance(key, slice):
202
- list = []
203
- if key.start is None:
204
- if key.stop is None:
205
- for i in range(len(self._offsets))[key]:
206
- list.append(self[i + 1])
207
- else:
208
- key2 = slice(None, key.stop - 1, key.step)
209
- for i in range(len(self._offsets))[key2]:
210
- list.append(self[i + 1])
211
- else:
212
- if key.stop is None:
213
- for i in range(len(self._offsets) + 1)[key]:
214
- list.append(self[i])
215
- else:
216
- for i in range(len(self._offsets) + 1)[key]:
217
- list.append(self[i])
218
- return list
219
- else:
220
- raise TypeError("List indices must be strings, integers, or slices, not " + type(key).__name__)
221
-
222
- def __len__(self):
223
- return len(self._offsets)
224
-
225
- class DataRowIterator:
226
- def __init__(self, data_row):
227
- self._data_row = data_row
228
- self._counter = 1
229
-
230
- def __iter__(self):
231
- return self
232
-
233
- def __next__(self):
234
- if self._counter > len(self._data_row):
235
- raise StopIteration()
236
- next = self._data_row[self._counter]
237
- self._counter += 1
238
- return next
239
-
240
- def __iter__(self):
241
- return self.DataRowIterator(self)
242
-
243
- class DataRowFastSelect(DataRow):
244
- def __init__(self, rsrow, first_offset, length, buffer):
245
- super().__init__(rsrow)
246
- self._start_offset = first_offset
247
- self._length = length
248
- self._buffer = buffer
249
- self._rsrow = rsrow
250
-
251
- def __getitem__(self, key):
252
- if len(self._offsets) == 0:
253
- self.__len__()
254
- return super().__getitem__(key)
255
-
256
- def __len__(self):
257
- self._offsets = self._rsrow.indexRowFastSelect(self._start_offset, self._length, self._buffer)
258
- if not self._offsets:
259
- self._offsets = []
260
- return len(self._offsets)
261
-
262
- def indexRow(self, list_item):
263
- self._last_list_item = list_item
264
- rowItems = [0] * (self.colCount + 1)
265
- # buffer is reset by a read_message
266
- buffer = list_item.buffer
267
- length = list_item.list_buffer_end
268
- self._first_offset = list_item.next_offset
269
-
270
- if self._new_buffer:
271
- # First row after creation of RsRow
272
- # This is for cases where metadata is mixed with data (MRS)
273
- prev_offset = self._first_offset
274
- self._first_offset = 0
275
- else:
276
- prev_offset = self.rowItems[-1]
277
-
278
- for i in range(self.colCount + 1):
279
- try:
280
- if prev_offset > length:
281
- raise Exception("Offset out of range")
282
- if prev_offset == length:
283
- if i != 0:
284
- if self._new_buffer and self.rowItems != None:
285
- self.rowItems[-1] = 0
286
- else:
287
- if self.rowItems != None:
288
- self.rowItems[-1] = 0
289
- return False
290
- if i == 0:
291
- rowItems[i] = prev_offset
292
- continue
293
- curr_offset = _DBList._get_data_offset(buffer, prev_offset)
294
- rowItems[i] = curr_offset
295
- prev_offset = curr_offset
296
- except IndexError:
297
- raise IndexError(
298
- "Row incomplete: " + str(self.colCount) + " items expected, but " + str(i) + " were found"
299
- )
300
- self.update(rowItems)
301
- return True
302
-
303
- def indexRowFastSelect(self, prev_offset, length, buffer):
304
- rowItems = [-1] * (self.colCount + 1)
305
- for i in range(self.colCount + 1):
306
- try:
307
- if prev_offset > length:
308
- raise Exception("Offset out of range")
309
- if prev_offset == length:
310
- if i != 0:
311
- if self._fast_select:
312
- # Fill in the remaining entries with -1
313
- j = i - 1
314
- for idx in range(len(rowItems) - i + 1):
315
- rowItems[j] = -1
316
- j += 1
317
- return self.update(rowItems)
318
- else:
319
- if self._new_buffer and self.rowItems != None:
320
- self.rowItems[-1] = 0
321
- else:
322
- if self.rowItems != None:
323
- self.rowItems[-1] = 0
324
- return
325
- if i == 0:
326
- rowItems[i] = prev_offset
327
- continue
328
- curr_offset = _DBList._get_data_offset(buffer, prev_offset)
329
- rowItems[i] = curr_offset
330
- prev_offset = curr_offset
331
- except IndexError:
332
- raise IndexError(
333
- "Row incomplete: " + str(self.colCount) + " items expected, but " + str(i) + " were found"
334
- )
335
- return self.update(rowItems)
336
-
337
- def update(self, rowItems):
338
- if self._fast_select:
339
- colIndexOffsets = [0] * (len(self.col_index) + 1)
340
- for idx, i in enumerate(self.col_index):
341
- colIndexOffsets[idx] = rowItems[i]
342
- colIndexOffsets[-1] = self._last_list_item.next_offset
343
- self.rowItems = colIndexOffsets
344
- return self.rowItems[: self.colCount]
345
- self.rowItems = rowItems
346
- self._offsets = self.DataRow(self)
347
- self._new_buffer = False
348
-
349
- def cloneListItem(self, list_item):
350
- clone = _ListItem(list_item.buffer)
351
- clone.is_null = list_item.is_null
352
- clone.is_undefined = list_item.is_undefined
353
- clone.type = list_item.type
354
- clone.data_offset = list_item.data_offset
355
- clone.data_length = list_item.data_length
356
- clone.next_offset = list_item.next_offset
357
- clone.by_reference = list_item.by_reference
358
- return clone
359
-
360
- def get(self):
361
- return self._offsets.get()
@@ -1,32 +0,0 @@
1
- import enum
2
-
3
- class SQLType(enum.IntEnum):
4
- BIGINT = -5
5
- BINARY = -2
6
- BIT = -7
7
- CHAR = 1
8
- DECIMAL = 3
9
- DOUBLE = 8
10
- FLOAT = 6
11
- GUID = -11
12
- INTEGER = 4
13
- LONGVARBINARY = -4
14
- LONGVARCHAR = -1
15
- NUMERIC = 2
16
- REAL = 7
17
- SMALLINT = 5
18
- DATE = 9
19
- TIME = 10
20
- TIMESTAMP = 11
21
- TINYINT = -6
22
- TYPE_DATE = 91
23
- TYPE_TIME = 92
24
- TYPE_TIMESTAMP = 93
25
- VARBINARY = -3
26
- VARCHAR = 12
27
- WCHAR = -8
28
- WLONGVARCHAR = -10
29
- WVARCHAR = -9
30
- DATE_HOROLOG = 1091
31
- TIME_HOROLOG = 1092
32
- TIMESTAMP_POSIX = 1093
File without changes