iris-pex-embedded-python 3.1.1__py3-none-any.whl → 3.1.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.

iop/_business_host.py CHANGED
@@ -34,14 +34,15 @@ class _BusinessHost(_Common):
34
34
  :param fonction: the function that will be decorated
35
35
  :return: The function dispatch_serializer is being returned.
36
36
  """
37
- def dispatch_serializer(self, *params, **param2):
38
- # Handle positional arguments using list comprehension
39
- serialized = [self._dispatch_serializer(param) for param in params]
40
-
41
- # Handle keyword arguments using dictionary comprehension
42
- param2 = {key: self._dispatch_serializer(value) for key, value in param2.items()}
43
-
44
- return fonction(self, *serialized, **param2)
37
+ def dispatch_serializer(self,*params, **param2):
38
+ # Handle positional arguments
39
+ serialized=[]
40
+ for param in params:
41
+ serialized.append(self._dispatch_serializer(param))
42
+ # Handle keyword arguments
43
+ for key, value in param2.items():
44
+ param2[key] = self._dispatch_serializer(value)
45
+ return fonction(self,*serialized, **param2)
45
46
  return dispatch_serializer
46
47
 
47
48
  def input_serialzer_param(position:int,name:str):
@@ -54,20 +55,19 @@ class _BusinessHost(_Common):
54
55
  """
55
56
  def input_serialzer_param(fonction):
56
57
  @wraps(fonction)
57
- def dispatch_serializer(self, *params, **param2):
58
- # Handle positional arguments using list comprehension
59
- serialized = [
60
- self._dispatch_serializer(param) if i == position else param
61
- for i, param in enumerate(params)
62
- ]
63
-
64
- # Handle keyword arguments using dictionary comprehension
65
- param2 = {
66
- key: self._dispatch_serializer(value) if key == name else value
67
- for key, value in param2.items()
68
- }
69
-
70
- return fonction(self, *serialized, **param2)
58
+ def dispatch_serializer(self,*params, **param2):
59
+ # Handle positional arguments
60
+ serialized=[]
61
+ for i,param in enumerate(params):
62
+ if i == position:
63
+ serialized.append(self._dispatch_serializer(param))
64
+ else:
65
+ serialized.append(param)
66
+ # Handle keyword arguments
67
+ for key, value in param2.items():
68
+ if key == name:
69
+ param2[key] = self._dispatch_serializer(value)
70
+ return fonction(self,*serialized, **param2)
71
71
  return dispatch_serializer
72
72
  return input_serialzer_param
73
73
 
@@ -93,14 +93,15 @@ class _BusinessHost(_Common):
93
93
  :param fonction: the function that will be decorated
94
94
  :return: The function dispatch_deserializer is being returned.
95
95
  """
96
- def dispatch_deserializer(self, *params, **param2):
97
- # Handle positional arguments using list comprehension
98
- serialized = [self._dispatch_deserializer(param) for param in params]
99
-
100
- # Handle keyword arguments using dictionary comprehension
101
- param2 = {key: self._dispatch_deserializer(value) for key, value in param2.items()}
102
-
103
- return fonction(self, *serialized, **param2)
96
+ def dispatch_deserializer(self,*params, **param2):
97
+ # Handle positional arguments
98
+ serialized=[]
99
+ for param in params:
100
+ serialized.append(self._dispatch_deserializer(param))
101
+ # Handle keyword arguments
102
+ for key, value in param2.items():
103
+ param2[key] = self._dispatch_deserializer(value)
104
+ return fonction(self,*serialized, **param2)
104
105
  return dispatch_deserializer
105
106
 
106
107
  def output_serialzer(fonction):
@@ -235,20 +236,18 @@ class _BusinessHost(_Common):
235
236
  :param message: The message to be serialized
236
237
  :return: The serialized message
237
238
  """
238
- if message is not None:
239
- if self._is_message_instance(message):
240
- return self._serialize_message(message)
241
- elif self._is_pickle_message_instance(message):
242
- return self._serialize_pickle_message(message)
243
- elif self._is_iris_object_instance(message):
244
- return message
245
-
246
- if message == "" or message is None:
239
+ if (message is not None and self._is_message_instance(message)):
240
+ return self._serialize_message(message)
241
+ elif (message is not None and self._is_pickle_message_instance(message)):
242
+ return self._serialize_pickle_message(message)
243
+ elif (message is not None and self._is_iris_object_instance(message)):
247
244
  return message
248
-
249
- # todo : decorator takes care of all the parameters, so this should never happen
250
- # return message
251
- raise TypeError("The message must be an instance of a class that is a subclass of Message or IRISObject %Persistent class.")
245
+ elif (message is None or message == ""):
246
+ return message
247
+ else:
248
+ # todo : decorator takes care of all the parameters, so this should never happen
249
+ # return message
250
+ raise TypeError("The message must be an instance of a class that is a subclass of Message or IRISObject %Persistent class.")
252
251
 
253
252
  def _serialize_message(self,message):
254
253
  """ Converts a python dataclass message into an iris iop.message.
@@ -266,8 +265,8 @@ class _BusinessHost(_Common):
266
265
  msg = iris.cls('IOP.Message')._New()
267
266
  msg.classname = module + "." + classname
268
267
 
269
- if hasattr(msg, 'buffer') and len(json_string) > msg.buffer:
270
- msg.json = _Utils.string_to_stream(json_string,msg.buffer)
268
+ if hasattr(message, 'buffer') and len(json_string) > msg.buffer:
269
+ msg.json = _Utils.string_to_stream(json_string)
271
270
  else:
272
271
  msg.json = json_string
273
272
 
@@ -292,22 +291,16 @@ class _BusinessHost(_Common):
292
291
  :return: The return value is a tuple of the form (serial, serial_type)
293
292
  """
294
293
  if (
295
- serial is not None
296
- and type(serial).__module__.startswith('iris')
297
- and (
298
- serial._IsA("IOP.Message")
299
- or serial._IsA("Grongier.PEX.Message")
300
- )
301
- ):
294
+ (serial is not None and type(serial).__module__.find('iris') == 0)
295
+ and
296
+ (serial._IsA("IOP.Message") or serial._IsA("Grongier.PEX.Message"))
297
+ ):
302
298
  return self._deserialize_message(serial)
303
299
  elif (
304
- serial is not None
305
- and type(serial).__module__.startswith('iris')
306
- and (
307
- serial._IsA("IOP.PickleMessage")
308
- or serial._IsA("Grongier.PEX.PickleMessage")
309
- )
310
- ):
300
+ (serial is not None and type(serial).__module__.find('iris') == 0)
301
+ and
302
+ (serial._IsA("IOP.PickleMessage") or serial._IsA("Grongier.PEX.PickleMessage"))
303
+ ):
311
304
  return self._deserialize_pickle_message(serial)
312
305
  else:
313
306
  return serial
iop/_director.py CHANGED
@@ -258,9 +258,9 @@ class _Director():
258
258
  message = iris.cls("IOP.Message")._New()
259
259
  message.classname = classname
260
260
  if body:
261
- message.json = body
261
+ message.jstr = _Utils.string_to_stream(body)
262
262
  else:
263
- message.json = _Utils.string_to_stream("{}")
263
+ message.jstr = _Utils.string_to_stream("{}")
264
264
  # serialize the message
265
265
  business_host = _BusinessHost()
266
266
  serial_message = business_host._dispatch_serializer(message)
iop/_utils.py CHANGED
@@ -1,11 +1,9 @@
1
1
  import os
2
- import sys
3
2
  import ast
4
3
  import iris
5
4
  import inspect
6
5
  import xmltodict
7
6
  import pkg_resources
8
- import importlib
9
7
 
10
8
  class _Utils():
11
9
  @staticmethod
@@ -176,7 +174,7 @@ class _Utils():
176
174
  return module
177
175
 
178
176
  @staticmethod
179
- def migrate(filename=None):
177
+ def migrate(filename=None,root_path=None):
180
178
  """
181
179
  Read the settings.py file and register all the components
182
180
  settings.py file has two dictionaries:
@@ -188,21 +186,18 @@ class _Utils():
188
186
  * key: the name of the production
189
187
  * value: a dictionary containing the settings for the production
190
188
  """
191
- path = None
192
189
  # try to load the settings file
193
190
  if filename:
191
+ import sys
192
+ path = None
194
193
  # check if the filename is absolute or relative
195
194
  if os.path.isabs(filename):
196
195
  path = os.path.dirname(filename)
197
196
  else:
198
197
  raise ValueError("The filename must be absolute")
199
- # add the path to the system path to the beginning
200
- sys.path.insert(0,os.path.normpath(path))
201
- # import settings from the specified file
202
- settings = _Utils.import_module_from_path('settings',filename)
203
- else:
204
- # import settings from the settings module
205
- import settings
198
+ # add the path to the system path
199
+ sys.path.append(path)
200
+ import settings
206
201
  # get the path of the settings file
207
202
  path = os.path.dirname(inspect.getfile(settings))
208
203
  try:
@@ -215,24 +210,8 @@ class _Utils():
215
210
  _Utils.set_productions_settings(settings.PRODUCTIONS,path)
216
211
  except AttributeError:
217
212
  print("No productions to register")
218
- try:
219
- sys.path.remove(path)
220
- except ValueError:
221
- pass
222
213
 
223
- @staticmethod
224
- def import_module_from_path(module_name, file_path):
225
- if not os.path.isabs(file_path):
226
- raise ValueError("The file path must be absolute")
227
-
228
- spec = importlib.util.spec_from_file_location(module_name, file_path)
229
- if spec is None:
230
- raise ImportError(f"Cannot find module named {module_name} at {file_path}")
231
-
232
- module = importlib.util.module_from_spec(spec)
233
- sys.modules[module_name] = module
234
- spec.loader.exec_module(module)
235
- return module
214
+
236
215
 
237
216
  @staticmethod
238
217
  def set_classes_settings(class_items,root_path=None):
@@ -381,17 +360,17 @@ class _Utils():
381
360
  return data
382
361
 
383
362
  @staticmethod
384
- def stream_to_string(stream,buffer=1000000)-> str:
363
+ def stream_to_string(stream)-> str:
385
364
  string = ""
386
365
  stream.Rewind()
387
366
  while not stream.AtEnd:
388
- string += stream.Read(buffer)
367
+ string += stream.Read(4092)
389
368
  return string
390
369
 
391
370
  @staticmethod
392
- def string_to_stream(string:str,buffer=1000000):
371
+ def string_to_stream(string:str):
393
372
  stream = iris.cls('%Stream.GlobalCharacter')._New()
394
- n = buffer
373
+ n = 4092
395
374
  chunks = [string[i:i+n] for i in range(0, len(string), n)]
396
375
  for chunk in chunks:
397
376
  stream.Write(chunk)
iop/cls/IOP/Director.cls CHANGED
@@ -9,8 +9,6 @@ Class IOP.Director [ Inheritance = right, ProcedureBlock, System = 4 ]
9
9
 
10
10
  ClassMethod dispatchCreateBusinessService(pTargetDispatchName As %String) As Ens.BusinessService
11
11
  {
12
- // Hack to prevent job to be registered in the production
13
- do ##class(Ens.Job).UnRegister(pTargetDispatchName,$JOB)
14
12
  set tSC = ##class(Ens.Director).CreateBusinessService(pTargetDispatchName,.service)
15
13
  if $$$ISERR(tSC) throw ##class(%Exception.StatusException).CreateFromStatus(tSC)
16
14
  quit service
iop/cls/IOP/Message.cls CHANGED
@@ -5,7 +5,7 @@
5
5
  Class IOP.Message Extends (Ens.MessageBody, %CSP.Page, %XML.Adaptor)
6
6
  {
7
7
 
8
- Parameter BUFFER = 1000000;
8
+ Parameter BUFFER = 64000;
9
9
 
10
10
  Property buffer As %String(MAXLEN = "") [ Calculated, Transient ];
11
11
 
@@ -15,9 +15,9 @@ Property jsonObject As %DynamicObject(XMLPROJECTION = "None");
15
15
 
16
16
  Property json As %String(MAXLEN = "");
17
17
 
18
- Property jsonStream As %Stream.GlobalCharacter [ Internal, Private ];
18
+ Property jsonStream As %Stream.GlobalCharacter [ Internal, ReadOnly ];
19
19
 
20
- Property jsonString As %String(MAXLEN = 1000000) [ Internal, Private ];
20
+ Property jsonString As %String(MAXLEN = 64000) [ Internal, ReadOnly ];
21
21
 
22
22
  Property jstr As %Stream.GlobalCharacter [ Internal, Private ];
23
23
 
@@ -80,25 +80,13 @@ Method jsonSet(pInput) As %Status
80
80
  , :$$$NULLOREF)
81
81
  Quit:tOldStream=pInput $$$OK
82
82
  Do:..type'="" Clear() Set i%type=""
83
-
84
- If $ISOBJECT(pInput) {
85
- if pInput.%Extends("%Stream.GlobalCharacter") {
86
- Set ..jsonStream=pInput, i%type="Stream"
87
- }
88
- else {
89
- Throw ##class(%Exception.General).%New("Invalid input type, must be a %Stream.GlobalCharacter or a %String")
90
- }
83
+ If $ISOBJECT(pInput) && pInput.%Extends("%Stream.GlobalCharacter") {
84
+ Set r%jsonStream=pInput, i%type="Stream"
85
+ }
86
+ If $IsObject(pInput) && 'pInput.%Extends("%Stream.GlobalCharacter") {
87
+ Throw ##class(%Exception.General).%New("Invalid input type, must be a %Stream.GlobalCharacter")
91
88
  }
92
- Else {
93
- if $LENGTH(pInput)>..#BUFFER {
94
- // write in a stream
95
- Set stream = ##class(%Stream.GlobalCharacter).%New()
96
- for i=1:..#BUFFER:$LENGTH(pInput) {
97
- Set sc = stream.Write($EXTRACT(pInput,i,(i+..#BUFFER)))
98
- Quit:$$$ISERR(sc)
99
- }
100
- Set ..jsonStream=stream, i%type="Stream"
101
- }
89
+ Else {
102
90
  Set i%jsonString=pInput, i%type="String"
103
91
  }
104
92
  Quit $$$OK
iop/cls/IOP/Test.cls CHANGED
@@ -3,7 +3,7 @@ Class IOP.Test Extends %Persistent
3
3
  {
4
4
 
5
5
  /// Description
6
- ClassMethod TestJsonStringMessage() As %Status
6
+ ClassMethod TEST() As %Status
7
7
  {
8
8
  set msg = ##class(IOP.Message).%New()
9
9
  set msg.classname = "IOP.Message"
@@ -13,18 +13,6 @@ ClassMethod TestJsonStringMessage() As %Status
13
13
  QUIT $$$OK
14
14
  }
15
15
 
16
- ClassMethod TestJsonStreamMessage() As %Status
17
- {
18
- set msg = ##class(IOP.Message).%New()
19
- set msg.classname = "IOP.Message"
20
- set stream = ##class(%Stream.GlobalCharacter).%New()
21
- set sc = stream.Write("{""name"":""John""}")
22
- set msg.json = stream
23
- set tset = msg.json
24
- set tst = msg.jstr
25
- QUIT $$$OK
26
- }
27
-
28
16
  /// Register
29
17
  ClassMethod Register() As %Status
30
18
  {
iop/cls/IOP/Utils.cls CHANGED
@@ -104,10 +104,12 @@ ClassMethod GetRemoteClassInfo(
104
104
  pModule As %String,
105
105
  pClasspaths As %String,
106
106
  ByRef pClassDetails,
107
- ByRef pRemoteSettings) As %Status [ Internal ]
107
+ ByRef pRemoteSettings) As %Status [ Internal, Private ]
108
108
  {
109
109
  #dim tSC As %Status = $$$OK
110
110
  #dim ex As %Exception.AbstractException
111
+ #dim tGateway As %External.Gateway
112
+ #dim tGatewayProxy As %Net.Remote.Object
111
113
 
112
114
  Try {
113
115
  if pClasspaths '="" {
@@ -118,19 +120,14 @@ ClassMethod GetRemoteClassInfo(
118
120
  set onePath = $p(extraClasspaths,"|",i)
119
121
  set onePath = ##class(%File).NormalizeDirectory(onePath)
120
122
  if onePath?1"$$IRISHOME"1P.E set onePath = $e($system.Util.InstallDirectory(),1,*-1)_$e(onePath,11,*)
121
- if onePath'="" do ##class(IOP.Common).SetPythonPath(onePath)
123
+ if onePath'="" do sys.path.append(onePath)
122
124
  }
123
125
  }
126
+ ;
124
127
 
125
128
  set importlib = ##class(%SYS.Python).Import("importlib")
126
129
  set builtins = ##class(%SYS.Python).Import("builtins")
127
- set sys = ##class(%SYS.Python).Import("sys")
128
- // Load the module form a specific path
129
- set spec = importlib.util."spec_from_file_location"(pModule, onePath_pModule_".py")
130
- set module = importlib.util."module_from_spec"(spec)
131
- do sys.modules."__setitem__"(pModule, module)
132
- do spec.loader."exec_module"(module)
133
- // Get the class
130
+ set module = importlib."import_module"(pModule)
134
131
  set class = builtins.getattr(module, pRemoteClassname)
135
132
  set tClass = class."__new__"(class)
136
133
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.1.1
3
+ Version: 3.1.1b2
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License
@@ -43,9 +43,9 @@ Classifier: Programming Language :: Python :: 3.11
43
43
  Classifier: Topic :: Utilities
44
44
  Description-Content-Type: text/markdown
45
45
  License-File: LICENSE
46
- Requires-Dist: dacite>=1.6.0
47
- Requires-Dist: xmltodict>=0.12.0
48
- Requires-Dist: iris-embedded-python-wrapper>=0.0.6
46
+ Requires-Dist: dacite >=1.6.0
47
+ Requires-Dist: xmltodict >=0.12.0
48
+ Requires-Dist: iris-embedded-python-wrapper >=0.0.6
49
49
 
50
50
  # 1. interoperability-embedded-python
51
51
 
@@ -115,7 +115,6 @@ This proof of concept aims to show how the **iris interoperability framework** c
115
115
  - [7.11. version](#711-version)
116
116
  - [7.12. log](#712-log)
117
117
  - [8. Credits](#8-credits)
118
- - [9. Benchmarks](#9-benchmarks)
119
118
 
120
119
  ## 1.2. Example
121
120
 
@@ -1384,20 +1383,3 @@ output :
1384
1383
  Most of the code came from PEX for Python by Mo Cheng and Summer Gerry.
1385
1384
 
1386
1385
  Works only on IRIS 2021.2 +
1387
-
1388
- # 9. Benchmarks
1389
-
1390
- 8 senarios with thoses parameters :
1391
- - 100 messages
1392
- - body : simple string `test`
1393
-
1394
- | Scenario | Time (s) |
1395
- | --- | --- |
1396
- | Python BP to Python BO with Iris Message | 0.739 |
1397
- | Python BP to Python BO with Python Message | 0.732 |
1398
- | ObjetScript BP to Python BO with Iris Message | 0.594 |
1399
- | ObjetScript BP to Python BO with Python Message | 0.642 |
1400
- | Python BP to ObjetScript BO with Iris Message | 0.642 |
1401
- | Python BP to ObjetScript BO with Python Message | 0.675 |
1402
- | ObjetScript BP to ObjetScript BO with Iris Message | 0.159 |
1403
- | ObjetScript BP to ObjetScript BO with Python Message | 0.182 |
@@ -92,31 +92,31 @@ intersystems_iris/pex/_OutboundAdapter.py,sha256=ao2Ubbta2DcrQGdzDUD_j1Zsk8bvUfc
92
92
  intersystems_iris/pex/__init__.py,sha256=l_I1dpnluWawbFrGMDC0GLHpuHwjbpd-nho8otFX6TE,1379
93
93
  iop/__init__.py,sha256=zHFF0Znipx1fwHYUEBZjNOYoZH1ro7z4IgYDU32kdn0,1067
94
94
  iop/__main__.py,sha256=pQzVtkDhAeI6dpNRC632dVk2SGZZIEDwDufdgZe8VWs,98
95
- iop/_business_host.py,sha256=_U7f2Fy-7_qzBz4OQTAieVvEhBaT1Z0E77QoYPU0i-U,28244
95
+ iop/_business_host.py,sha256=Z0h9Yp-Q8u-Jh8n-h0R8M3tiDFPJdL2pDcgjeTEnvn4,28150
96
96
  iop/_business_operation.py,sha256=P824IzO89LCKnoNHZk64OZBDHcomHpjhKmMT89bS6TI,3500
97
97
  iop/_business_process.py,sha256=F4NIQcwQ5u8yiAPpaN14OAXxbKJsRAGm5S4lrbgA3oI,13296
98
98
  iop/_business_service.py,sha256=sX8J-2-0Go6uIuPYa0A5N9Nn9rY5lV6a05v4q78qDC8,3726
99
99
  iop/_cli.py,sha256=yg4wv1FkhgjmoZuTMUr61Ff21PegJDH_cpZeHcF8hQE,6207
100
100
  iop/_common.py,sha256=uKJdfCSPOjVQOg8GVuUj4ywfAn_2sPB3C82HbWw_5bI,15384
101
- iop/_director.py,sha256=TFkhci40zgq271zB9SYGK24TZtOcYZCTNzWFkA4I2IM,11016
101
+ iop/_director.py,sha256=CSNQPS4JPB3O4mXzsBj5L0Dcdciu1dm8ZtoHtnZCBTY,11041
102
102
  iop/_inbound_adapter.py,sha256=PS5ToqhrYcXq9ZdLbCBqAfVp8kCeRACm_KF66pwBO9U,1652
103
103
  iop/_message.py,sha256=BmwBXriykU66bwAgRbdkMpjfJRVWoNRX2eDc9TXfXzA,325
104
104
  iop/_outbound_adapter.py,sha256=YTAhLrRf9chEAd53mV6KKbpaHOKNOKJHoGgj5wakRR0,726
105
105
  iop/_pickle_message.py,sha256=noKfc2VkXufV3fqjKvNHN_oANQ1YN9ffCaSV0XSTAIE,331
106
106
  iop/_private_session_duplex.py,sha256=klzWKwRRBoKUSz85D3DNYuCpDcZe_kWLNCWq5JtR0yc,5044
107
107
  iop/_private_session_process.py,sha256=pGjWFOQhWpQxUVpTtvNKTPvDxgzjfw0VC4Aqj3KUq8w,1704
108
- iop/_utils.py,sha256=UYfBINcrwK9Uh3sfd8xA46RzGE8N5rmGz6wLhHnxExE,17165
108
+ iop/_utils.py,sha256=3rhO33PLZ1ESJiboQFwfIGUvHV7RBSbq6A2CPyMaojA,16269
109
109
  iop/cls/IOP/BusinessOperation.cls,sha256=lrymqZ8wHl5kJjXwdjbQVs5sScV__yIWGh-oGbiB_X0,914
110
110
  iop/cls/IOP/BusinessProcess.cls,sha256=s3t38w1ykHqM26ETcbCYLt0ocjZyVVahm-_USZkuJ1E,2855
111
111
  iop/cls/IOP/BusinessService.cls,sha256=7ebn32J9PiZXUgXuh5Xxm_7X6zHBiqkJr9c_dWxbPO8,1021
112
112
  iop/cls/IOP/Common.cls,sha256=vYTnsL-ch-vTjpigBtwOHgrnOQMmuTkqXT9F-vWE650,11068
113
- iop/cls/IOP/Director.cls,sha256=Wd5iwiRd9XSt7G18Ga3XAIPSuIrPYVumbCEjYrkZHBs,2002
113
+ iop/cls/IOP/Director.cls,sha256=DlxyFvsJjB1FVImFVNkRpQy7XXIMRoDZOLpEdMlwgOU,1885
114
114
  iop/cls/IOP/InboundAdapter.cls,sha256=GeoCm6q5HcLJ5e4VxgqXiErJXqolBbpKwpunaNzpvjU,610
115
- iop/cls/IOP/Message.cls,sha256=n0r0FslXdDfPcHIiAlW7n596DDsDSNlTX8UTPaMnSV8,9911
115
+ iop/cls/IOP/Message.cls,sha256=DXXYF57YS-IQAyru8MQiEBo9UE3vgn6518_yVl2BepE,9660
116
116
  iop/cls/IOP/OutboundAdapter.cls,sha256=9eOwy5ojwcTzwrHs6LNrFQvUD8aqcoNCZrILN1ycdDM,958
117
117
  iop/cls/IOP/PickleMessage.cls,sha256=S3y7AClQ8mAILjxPuHdCjGosBZYzGbUQ5WTv4mYPNMQ,1673
118
- iop/cls/IOP/Test.cls,sha256=gAC9PEfMZsvAEWIa241-ug2FWAhITbN1SOispZzJPnI,2094
119
- iop/cls/IOP/Utils.cls,sha256=UgSEH2gqiNKYK_NAc2QUXF0A0VXHK-vbwWsHplHV2T8,13994
118
+ iop/cls/IOP/Test.cls,sha256=I11dVr44_XKgg-i_JvgPq9AeHwNnlfD226bgM5MSx7E,1775
119
+ iop/cls/IOP/Utils.cls,sha256=VwIeWxbeC6LkoDuBN0vhias-pkeLp7mbcC_4MPnzQ8g,13757
120
120
  iop/cls/IOP/Duplex/Operation.cls,sha256=K_fmgeLjPZQbHgNrc0kd6DUQoW0fDn1VHQjJxHo95Zk,525
121
121
  iop/cls/IOP/Duplex/Process.cls,sha256=xbefZ4z84a_IUhavWN6P_gZBzqkdJ5XRTXxro6iDvAg,6986
122
122
  iop/cls/IOP/Duplex/Service.cls,sha256=sTMOQUCMBgVitmQkM8bbsrmrRtCdj91VlctJ3I7b8WU,161
@@ -135,9 +135,9 @@ iris/iris_ipm.pyi,sha256=j7CNUZcjeDu5sgeWUZJO_Qi4vQmHh6aD-jPWv8OdoUs,374
135
135
  iris/iris_utils.py,sha256=kg80O3yRpHIutM-mCyr4xCeTvKWPE-Kai-b6Dxw4vQ4,9882
136
136
  irisnative/_IRISNative.py,sha256=HQ4nBhc8t8_5OtxdMG-kx1aa-T1znf2I8obZOPLOPzg,665
137
137
  irisnative/__init__.py,sha256=6YmvBLQSURsCPKaNg7LK-xpo4ipDjrlhKuwdfdNb3Kg,341
138
- iris_pex_embedded_python-3.1.1.dist-info/LICENSE,sha256=rZSiBFId_sfbJ6RL0GjjPX-InNLkNS9ou7eQsikciI8,1089
139
- iris_pex_embedded_python-3.1.1.dist-info/METADATA,sha256=hpMJuNboL3jTUnVXOq2PDw9919YwYiVrijZ2Brywc6g,50120
140
- iris_pex_embedded_python-3.1.1.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
141
- iris_pex_embedded_python-3.1.1.dist-info/entry_points.txt,sha256=pj-i4LSDyiSP6xpHlVjMCbg1Pik7dC3_sdGY3Yp9Vhk,38
142
- iris_pex_embedded_python-3.1.1.dist-info/top_level.txt,sha256=jkWtvFKOp1Q-uO_VpGpfx5TcW7DS39z1liOAVp6zLig,47
143
- iris_pex_embedded_python-3.1.1.dist-info/RECORD,,
138
+ iris_pex_embedded_python-3.1.1b2.dist-info/LICENSE,sha256=rZSiBFId_sfbJ6RL0GjjPX-InNLkNS9ou7eQsikciI8,1089
139
+ iris_pex_embedded_python-3.1.1b2.dist-info/METADATA,sha256=ntJ_H35hi4dL3SLkXgSaAzRN_pAX4l2KMpccSzd1Scs,49482
140
+ iris_pex_embedded_python-3.1.1b2.dist-info/WHEEL,sha256=Rp8gFpivVLXx-k3U95ozHnQw8yDcPxmhOpn_Gx8d5nc,91
141
+ iris_pex_embedded_python-3.1.1b2.dist-info/entry_points.txt,sha256=pj-i4LSDyiSP6xpHlVjMCbg1Pik7dC3_sdGY3Yp9Vhk,38
142
+ iris_pex_embedded_python-3.1.1b2.dist-info/top_level.txt,sha256=jkWtvFKOp1Q-uO_VpGpfx5TcW7DS39z1liOAVp6zLig,47
143
+ iris_pex_embedded_python-3.1.1b2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (72.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5