iris-pex-embedded-python 3.4.1b1__py3-none-any.whl → 3.4.1b2__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 (74) hide show
  1. iop/_director.py +23 -23
  2. {iris_pex_embedded_python-3.4.1b1.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/METADATA +1 -1
  3. iris_pex_embedded_python-3.4.1b2.dist-info/RECORD +79 -0
  4. iris_pex_embedded_python-3.4.1b2.dist-info/top_level.txt +2 -0
  5. intersystems_iris/_BufferReader.py +0 -10
  6. intersystems_iris/_BufferWriter.py +0 -32
  7. intersystems_iris/_ConnectionInformation.py +0 -56
  8. intersystems_iris/_ConnectionParameters.py +0 -18
  9. intersystems_iris/_Constant.py +0 -38
  10. intersystems_iris/_DBList.py +0 -506
  11. intersystems_iris/_Device.py +0 -69
  12. intersystems_iris/_GatewayContext.py +0 -25
  13. intersystems_iris/_GatewayException.py +0 -4
  14. intersystems_iris/_GatewayUtility.py +0 -74
  15. intersystems_iris/_IRIS.py +0 -1294
  16. intersystems_iris/_IRISConnection.py +0 -516
  17. intersystems_iris/_IRISEmbedded.py +0 -85
  18. intersystems_iris/_IRISGlobalNode.py +0 -273
  19. intersystems_iris/_IRISGlobalNodeView.py +0 -25
  20. intersystems_iris/_IRISIterator.py +0 -143
  21. intersystems_iris/_IRISList.py +0 -360
  22. intersystems_iris/_IRISNative.py +0 -208
  23. intersystems_iris/_IRISOREF.py +0 -9
  24. intersystems_iris/_IRISObject.py +0 -424
  25. intersystems_iris/_IRISReference.py +0 -133
  26. intersystems_iris/_InStream.py +0 -149
  27. intersystems_iris/_LegacyIterator.py +0 -135
  28. intersystems_iris/_ListItem.py +0 -15
  29. intersystems_iris/_ListReader.py +0 -84
  30. intersystems_iris/_ListWriter.py +0 -161
  31. intersystems_iris/_LogFileStream.py +0 -115
  32. intersystems_iris/_MessageHeader.py +0 -51
  33. intersystems_iris/_OutStream.py +0 -25
  34. intersystems_iris/_PrintStream.py +0 -65
  35. intersystems_iris/_PythonGateway.py +0 -850
  36. intersystems_iris/_SharedMemorySocket.py +0 -87
  37. intersystems_iris/__init__.py +0 -79
  38. intersystems_iris/__main__.py +0 -7
  39. intersystems_iris/dbapi/_Column.py +0 -56
  40. intersystems_iris/dbapi/_DBAPI.py +0 -2631
  41. intersystems_iris/dbapi/_Descriptor.py +0 -46
  42. intersystems_iris/dbapi/_IRISStream.py +0 -65
  43. intersystems_iris/dbapi/_Message.py +0 -158
  44. intersystems_iris/dbapi/_Parameter.py +0 -171
  45. intersystems_iris/dbapi/_ParameterCollection.py +0 -141
  46. intersystems_iris/dbapi/_ResultSetRow.py +0 -361
  47. intersystems_iris/dbapi/_SQLType.py +0 -32
  48. intersystems_iris/dbapi/__init__.py +0 -0
  49. intersystems_iris/dbapi/preparser/_PreParser.py +0 -1674
  50. intersystems_iris/dbapi/preparser/_Scanner.py +0 -391
  51. intersystems_iris/dbapi/preparser/_Token.py +0 -81
  52. intersystems_iris/dbapi/preparser/_TokenList.py +0 -251
  53. intersystems_iris/dbapi/preparser/__init__.py +0 -0
  54. intersystems_iris/pex/_BusinessHost.py +0 -101
  55. intersystems_iris/pex/_BusinessOperation.py +0 -105
  56. intersystems_iris/pex/_BusinessProcess.py +0 -214
  57. intersystems_iris/pex/_BusinessService.py +0 -95
  58. intersystems_iris/pex/_Common.py +0 -228
  59. intersystems_iris/pex/_Director.py +0 -24
  60. intersystems_iris/pex/_IRISBusinessOperation.py +0 -5
  61. intersystems_iris/pex/_IRISBusinessService.py +0 -18
  62. intersystems_iris/pex/_IRISInboundAdapter.py +0 -5
  63. intersystems_iris/pex/_IRISOutboundAdapter.py +0 -17
  64. intersystems_iris/pex/_InboundAdapter.py +0 -57
  65. intersystems_iris/pex/_Message.py +0 -6
  66. intersystems_iris/pex/_OutboundAdapter.py +0 -46
  67. intersystems_iris/pex/__init__.py +0 -25
  68. iris_pex_embedded_python-3.4.1b1.dist-info/RECORD +0 -144
  69. iris_pex_embedded_python-3.4.1b1.dist-info/top_level.txt +0 -4
  70. irisnative/_IRISNative.py +0 -9
  71. irisnative/__init__.py +0 -10
  72. {iris_pex_embedded_python-3.4.1b1.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/WHEEL +0 -0
  73. {iris_pex_embedded_python-3.4.1b1.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/entry_points.txt +0 -0
  74. {iris_pex_embedded_python-3.4.1b1.dist-info → iris_pex_embedded_python-3.4.1b2.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