iris-pex-embedded-python 3.4.0b14__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 (82) hide show
  1. iop/_async_request.py +3 -1
  2. iop/_business_host.py +2 -1
  3. iop/_cli.py +9 -1
  4. iop/_common.py +2 -1
  5. iop/_director.py +40 -40
  6. iop/_iris.py +7 -0
  7. iop/_log_manager.py +8 -8
  8. iop/_serialization.py +9 -9
  9. iop/_utils.py +10 -10
  10. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/METADATA +1 -1
  11. iris_pex_embedded_python-3.4.1b2.dist-info/RECORD +79 -0
  12. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/WHEEL +1 -1
  13. iris_pex_embedded_python-3.4.1b2.dist-info/top_level.txt +2 -0
  14. intersystems_iris/_BufferReader.py +0 -10
  15. intersystems_iris/_BufferWriter.py +0 -32
  16. intersystems_iris/_ConnectionInformation.py +0 -56
  17. intersystems_iris/_ConnectionParameters.py +0 -18
  18. intersystems_iris/_Constant.py +0 -38
  19. intersystems_iris/_DBList.py +0 -506
  20. intersystems_iris/_Device.py +0 -69
  21. intersystems_iris/_GatewayContext.py +0 -25
  22. intersystems_iris/_GatewayException.py +0 -4
  23. intersystems_iris/_GatewayUtility.py +0 -74
  24. intersystems_iris/_IRIS.py +0 -1294
  25. intersystems_iris/_IRISConnection.py +0 -516
  26. intersystems_iris/_IRISEmbedded.py +0 -85
  27. intersystems_iris/_IRISGlobalNode.py +0 -273
  28. intersystems_iris/_IRISGlobalNodeView.py +0 -25
  29. intersystems_iris/_IRISIterator.py +0 -143
  30. intersystems_iris/_IRISList.py +0 -360
  31. intersystems_iris/_IRISNative.py +0 -208
  32. intersystems_iris/_IRISOREF.py +0 -9
  33. intersystems_iris/_IRISObject.py +0 -424
  34. intersystems_iris/_IRISReference.py +0 -133
  35. intersystems_iris/_InStream.py +0 -149
  36. intersystems_iris/_LegacyIterator.py +0 -135
  37. intersystems_iris/_ListItem.py +0 -15
  38. intersystems_iris/_ListReader.py +0 -84
  39. intersystems_iris/_ListWriter.py +0 -161
  40. intersystems_iris/_LogFileStream.py +0 -115
  41. intersystems_iris/_MessageHeader.py +0 -51
  42. intersystems_iris/_OutStream.py +0 -25
  43. intersystems_iris/_PrintStream.py +0 -65
  44. intersystems_iris/_PythonGateway.py +0 -850
  45. intersystems_iris/_SharedMemorySocket.py +0 -87
  46. intersystems_iris/__init__.py +0 -79
  47. intersystems_iris/__main__.py +0 -7
  48. intersystems_iris/dbapi/_Column.py +0 -56
  49. intersystems_iris/dbapi/_DBAPI.py +0 -2631
  50. intersystems_iris/dbapi/_Descriptor.py +0 -46
  51. intersystems_iris/dbapi/_IRISStream.py +0 -65
  52. intersystems_iris/dbapi/_Message.py +0 -158
  53. intersystems_iris/dbapi/_Parameter.py +0 -171
  54. intersystems_iris/dbapi/_ParameterCollection.py +0 -141
  55. intersystems_iris/dbapi/_ResultSetRow.py +0 -361
  56. intersystems_iris/dbapi/_SQLType.py +0 -32
  57. intersystems_iris/dbapi/__init__.py +0 -0
  58. intersystems_iris/dbapi/preparser/_PreParser.py +0 -1674
  59. intersystems_iris/dbapi/preparser/_Scanner.py +0 -391
  60. intersystems_iris/dbapi/preparser/_Token.py +0 -81
  61. intersystems_iris/dbapi/preparser/_TokenList.py +0 -251
  62. intersystems_iris/dbapi/preparser/__init__.py +0 -0
  63. intersystems_iris/pex/_BusinessHost.py +0 -101
  64. intersystems_iris/pex/_BusinessOperation.py +0 -105
  65. intersystems_iris/pex/_BusinessProcess.py +0 -214
  66. intersystems_iris/pex/_BusinessService.py +0 -95
  67. intersystems_iris/pex/_Common.py +0 -228
  68. intersystems_iris/pex/_Director.py +0 -24
  69. intersystems_iris/pex/_IRISBusinessOperation.py +0 -5
  70. intersystems_iris/pex/_IRISBusinessService.py +0 -18
  71. intersystems_iris/pex/_IRISInboundAdapter.py +0 -5
  72. intersystems_iris/pex/_IRISOutboundAdapter.py +0 -17
  73. intersystems_iris/pex/_InboundAdapter.py +0 -57
  74. intersystems_iris/pex/_Message.py +0 -6
  75. intersystems_iris/pex/_OutboundAdapter.py +0 -46
  76. intersystems_iris/pex/__init__.py +0 -25
  77. iris_pex_embedded_python-3.4.0b14.dist-info/RECORD +0 -143
  78. iris_pex_embedded_python-3.4.0b14.dist-info/top_level.txt +0 -4
  79. irisnative/_IRISNative.py +0 -9
  80. irisnative/__init__.py +0 -10
  81. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/entry_points.txt +0 -0
  82. {iris_pex_embedded_python-3.4.0b14.dist-info → iris_pex_embedded_python-3.4.1b2.dist-info}/licenses/LICENSE +0 -0
@@ -1,46 +0,0 @@
1
- class _Descriptor:
2
- def __init__(self, type = 0, precision = 0, scale = None, nullable = 0):
3
- try:
4
- type = int(type)
5
- except (TypeError, ValueError):
6
- raise TypeError("type must be an integer")
7
- try:
8
- precision = int(precision)
9
- except (TypeError, ValueError):
10
- raise TypeError("precision must be an integer")
11
- try:
12
- nullable = int(nullable)
13
- except (TypeError, ValueError):
14
- raise TypeError("nullable must be an integer")
15
-
16
- self.type = type
17
- self.precision = precision
18
- self.scale = scale
19
- self.nullable = nullable
20
- self.name = None
21
- self.slotPosition = None
22
-
23
- @property
24
- def scale(self):
25
- return self.__scale
26
-
27
- @scale.setter
28
- def scale(self, value):
29
- if value is not None:
30
- try:
31
- value = int(value)
32
- except (TypeError, ValueError):
33
- raise TypeError("scale must be an integer")
34
-
35
- self.__scale = value
36
-
37
- def cloneMe(self, d):
38
- if not isinstance(d, _Descriptor):
39
- raise TypeError("Must clone another _Descriptor")
40
-
41
- self.type = d.type
42
- self.precision = d.precision
43
- self.scale = d.scale
44
- self.nullable = d.nullable
45
- self.name = d.name
46
- self.slotPosition = d.slotPosition
@@ -1,65 +0,0 @@
1
- from . import _Message
2
- from .._MessageHeader import _MessageHeader
3
- from .._InStream import _InStream
4
- from .._OutStream import _OutStream
5
-
6
-
7
- class IRISStream:
8
- _handle = None
9
- _binary = False
10
- _connection = None
11
- _embedded = False
12
-
13
- def __init__(self, connection, handle, embedded=False):
14
- self._connection = connection
15
- self._handle = handle
16
- self._embedded = embedded
17
- self._locale = connection._connection_info._locale
18
- if not self._embedded:
19
- self._in_message = _InStream(connection)
20
- self._out_message = _OutStream(connection)
21
-
22
- def fetch_embdedded(self):
23
- result = b'' if self._binary else ''
24
-
25
- stream = self._connection.iris.cls('%Stream.Object')._Open(self._handle)
26
- while not stream.AtEnd:
27
- chunk = stream.Read()
28
- result += bytes(chunk, self._locale) if self._binary else chunk
29
-
30
- return result
31
-
32
- def fetch(self):
33
- if self._embedded:
34
- return self.fetch_embdedded()
35
- result = None
36
- if not self._handle:
37
- return result
38
-
39
- with self._connection._lock:
40
- # message header
41
- self._statement_id = self._connection._get_new_statement_id()
42
- self._out_message.wire._write_header(_Message.READ_STREAM)
43
- _MessageHeader._set_statement_id(self._out_message.wire.buffer, self._statement_id)
44
-
45
- # message body
46
- self._out_message.wire._set(self._handle) # stream handle
47
- self._out_message.wire._set(-1) # length
48
-
49
- # send message
50
- sequence_number = self._connection._get_new_sequence_number()
51
- self._out_message._send(sequence_number)
52
-
53
- code = self._in_message._read_message_sql(sequence_number, self._statement_id, _InStream.BYTE_STREAM, 403)
54
- if code == 403:
55
- return None
56
-
57
- result = self._in_message.wire._get_raw()
58
- if not self._binary:
59
- result = str(result, self._locale)
60
-
61
- return result
62
-
63
-
64
- class IRISBinaryStream(IRISStream):
65
- _binary = True
@@ -1,158 +0,0 @@
1
- def expect_response(message_type):
2
- if message_type in NO_RESPONSE:
3
- return False
4
- return True
5
-
6
- HANDSHAKE = b'HS'
7
- CONNECT = b'CN'
8
- DISCONNECT = b'DC'
9
- PREPARE = b'PP'
10
- DIRECT_UPDATE = b'DU'
11
- DIRECT_QUERY = b'DQ'
12
- DIRECT_STORED_PROCEDURE = b'DS'
13
- PREPARE_DIALECT = b'PD'
14
- DIRECT_EXECUTE_DIALECT = b'DD'
15
- PREPARED_UPDATE_EXECUTE = b'PU'
16
- PREPARED_QUERY_EXECUTE = b'PQ'
17
- FETCH_DATA = b'FD'
18
- CLOSE_CURSOR = b'CC'
19
- PREPARE_STORED_PROCEDURE = b'SP'
20
- STORED_PROCEDURE_UPDATE_EXECUTE = b'SU'
21
- STORED_PROCEDURE_QUERY_EXECUTE = b'SQ'
22
- STORED_PROCEDURE_FETCH_DATA = b'SF'
23
- EXECUTE_MULTIPLE_RESULT_SETS = b'MS'
24
- MULTIPLE_RESULT_SETS_FETCH_DATA = b'MD'
25
- GET_MORE_RESULTS = b'MR'
26
- GET_STREAM_SIZE = b'SS'
27
- RETRIEVE_STREAM = b'RS'
28
- OPEN_STREAM = b'OS'
29
- READ_STREAM = b'JS'
30
- READ_STREAM_ODBC = b'AS'
31
- STORE_BINARY_STREAM = b'SB'
32
- STORE_CHARACTER_STREAM = b'SM'
33
- STREAM_GET_BYTES = b'GB'
34
- STREAM_SET_BYTES = b'SZ'
35
- STREAM_TRUNCATE = b'SX'
36
- STREAM_GET_POSITION = b'GP'
37
- CLOSE_STREAM = b'CS'
38
- GET_RESULT_SET_OBJECT = b'FR'
39
- GET_STRUCT_OBJECT = b'FS'
40
- COMMIT = b'TC'
41
- ROLLBACK = b'TR'
42
- READ_COMMITTED = b'RC'
43
- READ_UNCOMMITTED = b'RU'
44
- ISOLATION_LEVEL = b'IL'
45
- AUTOCOMMIT_OFF = b'AF'
46
- AUTOCOMMIT_ON = b'AN'
47
- TOGGLE_SYNCHRONOUS_COMMIT = b'TS'
48
- GET_AUTO_GENERATED_KEYS = b'GG'
49
- IN_TRANSACTION = b'IT'
50
- JDBC_BESTROWID = b'BR'
51
- JDBC_CATALOGS = b'CA'
52
- JDBC_COLUMNPRIV = b'CP'
53
- JDBC_COLUMNS = b'CO'
54
- JDBC_CROSSREFERENCE = b'CR'
55
- JDBC_EXPORTEDKEYS = b'EK'
56
- JDBC_IMPORTEDKEYS = b'IK'
57
- JDBC_INDEXINFO = b'II'
58
- JDBC_PRIMARYKEYS = b'PK'
59
- JDBC_PROCEDURECOL = b'PC'
60
- JDBC_PROCEDURES = b'PR'
61
- JDBC_SCHEMAS = b'SC'
62
- JDBC_TABLEPRIV = b'TP'
63
- JDBC_TABLES = b'TA'
64
- JDBC_TABLETYPES = b'TT'
65
- JDBC_TYPEINFO = b'TI'
66
- JDBC_VERSIONCOL = b'VC'
67
- ODBC_BESTROWID = b'br'
68
- ODBC_CATALOGS = b'ca'
69
- ODBC_COLUMNPRIV = b'cp'
70
- ODBC_COLUMNS_35 = b'c3'
71
- ODBC_CROSSREFERENCE_35 = b'r3'
72
- ODBC_EXPORTEDKEYS_35 = b'e3'
73
- ODBC_IMPORTEDKEYS_35 = b'i3'
74
- ODBC_PROCEDURECOL_35 = b'p3'
75
- ODBC_TYPEINFO_35 = b't3'
76
- ODBC_COLUMNS = b'co'
77
- ODBC_CROSSREFERENCE = b'cr'
78
- ODBC_EXPORTEDKEYS = b'ek'
79
- ODBC_IMPORTEDKEYS = b'ik'
80
- ODBC_INDEXINFO = b'ii'
81
- ODBC_PRIMARYKEYS = b'pk'
82
- ODBC_PROCEDURECOL = b'pc'
83
- ODBC_PROCEDURES = b'pr'
84
- ODBC_SCHEMAS = b'sc'
85
- ODBC_STATISTICS = b'st'
86
- ODBC_TABLEPRIV = b'tp'
87
- ODBC_TABLES = b'ta'
88
- ODBC_TABLETYPES = b'tt'
89
- ODBC_TYPEINFO = b'ti'
90
- ODBC_VERSIONCOL = b'vc'
91
- JDBC_UDTS = b'UT'
92
- JDBC_SUPER_TYPES = b'SY'
93
- JDBC_SUPER_TABLES = b'SL'
94
- JDBC_GET_ATTRIBUTES = b'AT'
95
- JDBC_GET_FUNCTION_COLUMNS = b'FC'
96
- JDBC_GET_FUNCTIONS = b'FN'
97
- JDBC_CLIENT_INFO_PROPERTIES = b'CF'
98
- SET_CLIENT_INFO_PROPERTIES = b'CG'
99
- XA_START = b'XS'
100
- XA_END = b'XE'
101
- XA_FORGET = b'XF'
102
- XA_PREPARE = b'XP'
103
- XA_COMMIT = b'XC'
104
- XA_ROLLBACK = b'XR'
105
- XA_RECOVER = b'XV'
106
- EXECUTE_STATIC_CURSOR = b'EX'
107
- DIRECT_STATIC_CURSOR = b'DX'
108
- FETCH_STATIC_CURSOR = b'FX'
109
- UPDATE_CACHE = b'UC'
110
- RESET_CONNECTION = b'RN'
111
- GET_SERVER_ERROR = b'OE'
112
- EXECUTE_STATEMENT_BATCH = b'EB'
113
- CLOSE_STATEMENT = b'CU'
114
- QUICK_LOAD = b'QL'
115
- QUICK_CHILD_TABLE_LOAD = b'QZ'
116
- QUICK_CHILD_TABLE_CREATE = b'QX'
117
- QUICK_CHILD_TABLE_REMOVE = b'QK'
118
- QUICK_STORE = b'QS'
119
- QUICK_CREATE = b'QC'
120
- QUICK_REMOVE = b'QR'
121
- QUICK_FIND_ROWID_BY_PK = b'Q1'
122
- QUICK_FIND_ROWID_BY_CONSTRAINT = b'Q2'
123
- QUICK_FIND_PK_BY_CONSTRAINT = b'Q3'
124
- QUICK_REMOVE_BY_PK = b'Q4'
125
- QUICK_CREATE_BY_PK = b'Q5'
126
- QUICK_STORE_BY_PK = b'Q6'
127
- QUICK_LOAD_BY_PK = b'Q7'
128
- QUICK_CHILD_TABLE_REMOVE_BY_PK = b'Q8'
129
- QUICK_CHILD_TABLE_CREATE_BY_PK = b'Q9'
130
- QUICK_CHILD_TABLE_LOAD_BY_PK = b'QA'
131
- QUICK_GET_CHILDREN_PKS = b'QB'
132
- QUICK_GET_CHILDREN_PKS_BY_PK = b'QD'
133
- QUICK_FIND_PK_BY_ROWID = b'QE'
134
- QUICK_BULK_LOAD = b'QM'
135
- QUICK_BULK_CREATE = b'QN'
136
- QUICK_BULK_STORE = b'QO'
137
- QUICK_BULK_SAVE_BY_PK = b'QW'
138
- QUICK_QUERY = b'QQ'
139
- QUICK_JPA_FLUSH = b'QF'
140
- GET_CACHE_INFO = b'CI'
141
- PING = b'PG'
142
- PING_TWO = b'P2'
143
- IS_TWO_FACTOR_ENABLED = b'2E'
144
- SEND_TWO_FACTOR_TOKEN = b'2F'
145
- STREAM_SET_PREFETCH_SIZE = b'SN'
146
- EXTERNAL_INTERUPT = b'EI'
147
- GET_NAMESPACES_MSG = b'CI'
148
- GATEWAY_INIT = b'GI'
149
-
150
- NO_RESPONSE = [AUTOCOMMIT_OFF,
151
- AUTOCOMMIT_ON,
152
- READ_COMMITTED,
153
- READ_UNCOMMITTED,
154
- CLOSE_CURSOR,
155
- CLOSE_STREAM,
156
- CLOSE_STATEMENT,
157
- RESET_CONNECTION,
158
- DISCONNECT]
@@ -1,171 +0,0 @@
1
- import datetime
2
- import decimal
3
- import enum
4
- import intersystems_iris.dbapi._Descriptor
5
- from intersystems_iris._IRISOREF import _IRISOREF
6
-
7
-
8
- class ParameterMode(enum.IntEnum):
9
- UNKNOWN = 0
10
- INPUT = 1
11
- INPUT_OUTPUT = 2
12
- UNUSED = 3
13
- OUTPUT = 4
14
- REPLACED_LITERAL = 5
15
- DEFAULT_PARAMETER = 6
16
- RETURN_VALUE = 7
17
-
18
-
19
- class _Parameter(intersystems_iris.dbapi._Descriptor._Descriptor):
20
- def __init__(
21
- self,
22
- value=None,
23
- mode=ParameterMode.UNKNOWN,
24
- paramType="?",
25
- name="",
26
- execParam=False,
27
- bound=False,
28
- type=0,
29
- precision=0,
30
- scale=None,
31
- nullable=0,
32
- slotPosition=None,
33
- ):
34
- if not isinstance(mode, ParameterMode):
35
- raise TypeError("mode must be a ParameterMode")
36
- paramType = str(paramType)
37
- if len(paramType) > 1:
38
- raise ValueError("paramType must be a single character")
39
- name = str(name)
40
- execParam = bool(execParam)
41
- bound = bool(bound)
42
- if slotPosition is not None:
43
- try:
44
- slotPosition = int(slotPosition)
45
- except (TypeError, ValueError):
46
- raise TypeError("slotPosition must be an integer")
47
- if slotPosition < 0:
48
- raise ValueError("slotPosition must be positive")
49
-
50
- super().__init__(type, precision, scale, nullable)
51
-
52
- self.__value = value
53
- self.mode = mode
54
- self.__paramType = paramType
55
- self.name = name
56
- self.execParam = execParam
57
- self.__bound = bound
58
- self.slotPosition = slotPosition
59
-
60
- self._values = list()
61
-
62
- self.parsermatched = False
63
- self.matchedParameterList = None
64
-
65
- def __repr__(self) -> str:
66
- if self.mode not in [ParameterMode.UNKNOWN, ParameterMode.INPUT]:
67
- return f"<{self.mode.name}>{repr(self.value)}"
68
- else:
69
- return f"<{self.mode.name}>"
70
-
71
- def Clone(self, value=None):
72
- clone = _Parameter(
73
- value or self.value,
74
- self.mode,
75
- self.paramType,
76
- self.name,
77
- self.execParam,
78
- self.bound,
79
- self.type,
80
- self.precision,
81
- self.scale,
82
- self.nullable,
83
- self.slotPosition,
84
- )
85
- clone.cloneMe(self)
86
-
87
- clone.parsermatched = self.parsermatched
88
- clone.matchedParameterList = self.matchedParameterList
89
-
90
- return clone
91
-
92
- @property
93
- def bound(self):
94
- return self.__bound
95
-
96
- @property
97
- def paramType(self):
98
- return self.__paramType
99
-
100
- @property
101
- def value(self):
102
- _set_switcher = {
103
- type(None): lambda v: None,
104
- # str: lambda v : v or b'\x00',
105
- datetime.time: lambda v: v.strftime("%H:%M:%S.%f"),
106
- datetime.date: lambda v: v.strftime("%Y-%m-%d"),
107
- datetime.datetime: lambda v: v.strftime("%Y-%m-%d %H:%M:%S.%f"),
108
- bytes: lambda v: v,
109
- bytearray: lambda v: v,
110
- bool: lambda v: 1 if v else 0,
111
- int: lambda v: v,
112
- float: lambda v: v,
113
- decimal.Decimal: lambda v: v,
114
- _IRISOREF: lambda v: str(v),
115
- }
116
- func = None
117
- if issubclass(type(self.__value), enum.Enum):
118
- value = self.__value.value
119
- elif type(self.__value) in _set_switcher:
120
- func = _set_switcher[type(self.__value)]
121
- value = func(self.__value)
122
- else:
123
- value = str(self.__value)
124
- if self.mode == ParameterMode.REPLACED_LITERAL:
125
- if isinstance(value, str) and value.isdigit() and str(int(value)) == value:
126
- value = int(value)
127
- return value
128
-
129
- def _copy_cached_info(self, desc, copy_replaced):
130
- self.type = desc.type
131
- self.precision = desc.precision
132
- self.scale = desc.scale
133
- self.nullable = desc.nullable
134
- self.name = desc.name
135
- if (
136
- (self.mode != ParameterMode.REPLACED_LITERAL)
137
- and (desc.mode != ParameterMode.REPLACED_LITERAL)
138
- and (desc.mode != ParameterMode.UNKNOWN)
139
- ):
140
- self.mode = desc.mode
141
-
142
- if not copy_replaced:
143
- return
144
-
145
- if desc.mode == ParameterMode.REPLACED_LITERAL:
146
- self.mode = ParameterMode.REPLACED_LITERAL
147
- self.__value = desc.value
148
- self._values = list()
149
- if len(desc._values) > 0:
150
- self._values.append(desc._values[0])
151
- return
152
-
153
- def _bind(self, value, parameter_sets):
154
- if isinstance(value, list):
155
- self._values = value
156
- else:
157
- if parameter_sets == 0:
158
- self._values = []
159
- size = len(self._values)
160
- if parameter_sets + 1 < size or size < parameter_sets:
161
- raise Exception("Not all parameters bound for this set")
162
- elif parameter_sets == size:
163
- self._values.append(value)
164
- else:
165
- # Rebinding
166
- self._values[size - 1] = value
167
- self.__bound = True
168
- if self.mode == ParameterMode.OUTPUT or self.mode == ParameterMode.INPUT_OUTPUT:
169
- self.mode = ParameterMode.INPUT_OUTPUT
170
- else:
171
- self.mode = ParameterMode.INPUT
@@ -1,141 +0,0 @@
1
- import intersystems_iris.dbapi._ResultSetRow
2
- from intersystems_iris.dbapi._Parameter import _Parameter
3
- from intersystems_iris.dbapi._Parameter import ParameterMode
4
-
5
- class _ParameterCollection:
6
- def __init__(self, param_coll = None, shallow_copy = False):
7
- self._params_list = list() # contains elements of type _Parameter
8
- self._has_bound_by_param_name = False
9
-
10
- self._user_index = list()
11
- self._user_param_cnt = 0
12
-
13
- self._param_names = None
14
- self._array_bound = False
15
-
16
- self._input_params = list()
17
-
18
- if param_coll != None:
19
- if shallow_copy:
20
- self._params_list = param_coll._params_list
21
- else:
22
- self._params_list = list()
23
- for param in param_coll._params_list:
24
- new_param = _Parameter()
25
- new_param._copy_cached_info(param, True)
26
- self._params_list.append(new_param)
27
-
28
- self._user_param_cnt = param_coll._user_param_cnt
29
- self._user_index = param_coll._user_index
30
-
31
- if param_coll._has_named_parameters():
32
- self._update_names()
33
- self._has_bound_by_param_name = False
34
- self._array_bound = False
35
-
36
- def set_input_params(self, params):
37
- self._input_params = list(params)
38
-
39
- def collect(self, i: int = 0) -> list:
40
- params = list()
41
-
42
- param_index = 0
43
- param_counter = i
44
- for param in self._params_list:
45
- mode = param.mode
46
- if mode == ParameterMode.REPLACED_LITERAL:
47
- params.append(_Parameter(param.value).value)
48
- elif not mode == ParameterMode.INPUT:
49
- params.append(_Parameter(param._values[i]).value)
50
- elif self._input_params:
51
- item = self._input_params[param_counter]
52
- if isinstance(item, tuple) or isinstance(item, list):
53
- value = item[param_index]
54
- param_index = param_index + 1
55
- else:
56
- value = item
57
- param_counter = param_counter + 1
58
- params.append(_Parameter(value).value)
59
- else:
60
- raise Exception("Missing value")
61
-
62
- return params
63
-
64
- def update(self, set_index, param_index, value):
65
- if isinstance(self._input_params[set_index], tuple):
66
- self._input_params[set_index] = list(self._input_params[set_index])
67
- if isinstance(self._input_params[set_index], list):
68
- self._input_params[set_index][param_index] = value
69
- else:
70
- self._input_params[param_index] = value
71
-
72
- def __repr__(self) -> str:
73
- return repr(self.collect())
74
-
75
- def _add_user_param(self, param):
76
- self._user_param_cnt = self._user_param_cnt + 1
77
- #self._params_list.append(param)
78
- return
79
-
80
- def _user_parameters_size(self):
81
- if self._user_index == None:
82
- return len(self._params_list)
83
- return self._user_param_cnt
84
-
85
- def _has_named_parameters(self):
86
- return self._param_names != None and len(self._params_list) != 0
87
-
88
- def _update_names(self):
89
- self._param_names = {}
90
- for i in range(len(self._params_list)):
91
- key = self._params_list[i].name.upper()
92
- self._param_names[key] = i
93
- return
94
-
95
- def _get_user_param_index(self, user_parameter_number):
96
- actual_index = self._user_index[user_parameter_number]
97
- if actual_index == -1:
98
- raise IndexError("Invalid parameter number: " + str(user_parameter_number))
99
- return actual_index
100
-
101
- def _get_user_param(self, user_parameter_number):
102
- if user_parameter_number >= len(self._user_index):
103
- raise IndexError("Invalid parameter number: " + str(user_parameter_number))
104
- actual_index = self._get_user_param_index(user_parameter_number)
105
- return self._params_list[actual_index]
106
-
107
- def _update_param_info(self, from_param_coll):
108
- try:
109
- for i, param in enumerate(from_param_coll._params_list):
110
- self._params_list[i]._copy_cached_info(param, False)
111
-
112
- if self._user_param_cnt != len(from_param_coll._params_list):
113
- self._user_param_cnt = from_param_coll._user_param_cnt
114
- self._user_index = from_param_coll._user_index
115
-
116
- if from_param_coll._has_named_parameters():
117
- self._update_names()
118
-
119
- except Exception:
120
- # need to handle exceptions properly
121
- if len(from_param_coll._params_list) != len(self._params_list):
122
- raise LookupError("Parameter mismatch")
123
- raise Exception
124
-
125
- def _clear(self):
126
- self._params_list.clear()
127
- if self._param_names != None:
128
- self._param_names.clear()
129
- self._has_bound_by_param_name = False
130
- self._array_bound = False
131
-
132
- def _prep_list_index(self, is_fast_select, output_parameter_list):
133
- self._param_row = intersystems_iris.dbapi._ResultSetRow._ResultSetRow(rowcount = len(self._params_list))
134
- self._param_row._fast_select = is_fast_select
135
- self._param_row.indexRow(output_parameter_list.list_item)
136
- return
137
-
138
- def _get_user_list_offset(self, user_parameter_number):
139
- if user_parameter_number >= len(self._user_index):
140
- raise IndexError("Invalid parameter number: " + str(user_parameter_number))
141
- return self._param_row.rowItems[self._get_user_param_index(user_parameter_number)]