iris-pex-embedded-python 3.7.2b2__py3-none-any.whl → 4.0.0__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.
Files changed (119) hide show
  1. iop/__init__.py +276 -18
  2. iop/__main__.py +3 -3
  3. iop/cli/__init__.py +1 -0
  4. iop/cli/formatting.py +45 -0
  5. iop/{_cli.py → cli/main.py} +238 -216
  6. iop/cli/parser.py +165 -0
  7. iop/cli/types.py +73 -0
  8. iop/cls/IOP/Common.cls +11 -2
  9. iop/cls/IOP/PrivateSession/Duplex.cls +1 -1
  10. iop/cls/IOP/Service/Remote/Rest/v1.cls +152 -5
  11. iop/cls/IOP/Utils.cls +814 -7
  12. iop/cls/IOP/Wrapper.cls +1 -1
  13. iop/components/__init__.py +16 -0
  14. iop/{_async_request.py → components/async_request.py} +7 -7
  15. iop/components/business_host.py +363 -0
  16. iop/components/business_operation.py +84 -0
  17. iop/{_business_process.py → components/business_process.py} +145 -125
  18. iop/components/business_service.py +106 -0
  19. iop/{_common.py → components/common.py} +160 -164
  20. iop/{_debugpy.py → components/debugpy.py} +11 -11
  21. iop/{_generator_request.py → components/generator_request.py} +4 -4
  22. iop/{_inbound_adapter.py → components/inbound_adapter.py} +10 -18
  23. iop/{_log_manager.py → components/log_manager.py} +1 -1
  24. iop/{_outbound_adapter.py → components/outbound_adapter.py} +1 -1
  25. iop/components/polling_business_service.py +48 -0
  26. iop/{_private_session_duplex.py → components/private_session_duplex.py} +7 -9
  27. iop/{_private_session_process.py → components/private_session_process.py} +2 -2
  28. iop/{_settings.py → components/settings.py} +23 -3
  29. iop/messages/__init__.py +7 -0
  30. iop/messages/base.py +61 -0
  31. iop/{_decorators.py → messages/decorators.py} +8 -2
  32. iop/messages/dispatch.py +351 -0
  33. iop/{_persistent_message.py → messages/persistent.py} +24 -19
  34. iop/{_serialization.py → messages/serialization.py} +34 -21
  35. iop/{_message_validator.py → messages/validation.py} +15 -13
  36. iop/migration/__init__.py +1 -0
  37. iop/migration/io.py +61 -0
  38. iop/migration/manifest.py +534 -0
  39. iop/migration/plans.py +80 -0
  40. iop/migration/utils.py +1126 -0
  41. iop/production/__init__.py +55 -0
  42. iop/production/actions.py +525 -0
  43. iop/production/common.py +103 -0
  44. iop/production/component.py +234 -0
  45. iop/production/declarations.py +190 -0
  46. iop/production/declarative.py +214 -0
  47. iop/production/diff.py +327 -0
  48. iop/production/import_.py +296 -0
  49. iop/production/inspection.py +92 -0
  50. iop/production/model.py +1143 -0
  51. iop/production/planning.py +678 -0
  52. iop/production/reconstruction.py +341 -0
  53. iop/production/rendering.py +610 -0
  54. iop/production/runtime.py +91 -0
  55. iop/production/source_inference.py +729 -0
  56. iop/production/types.py +546 -0
  57. iop/production/validation.py +452 -0
  58. iop/runtime/__init__.py +1 -0
  59. iop/runtime/director.py +415 -0
  60. iop/runtime/environment.py +59 -0
  61. iop/{_iris.py → runtime/iris.py} +2 -2
  62. iop/runtime/local.py +145 -0
  63. iop/{_director_protocol.py → runtime/protocol.py} +25 -8
  64. iop/runtime/remote/__init__.py +12 -0
  65. iop/runtime/remote/client.py +90 -0
  66. iop/runtime/remote/director.py +283 -0
  67. iop/runtime/remote/migration.py +57 -0
  68. iop/runtime/remote/settings.py +69 -0
  69. iop/runtime/remote/setup.py +72 -0
  70. {iris_pex_embedded_python-3.7.2b2.dist-info → iris_pex_embedded_python-4.0.0.dist-info}/METADATA +11 -2
  71. iris_pex_embedded_python-4.0.0.dist-info/RECORD +99 -0
  72. iris_pex_embedded_python-4.0.0.dist-info/entry_points.txt +2 -0
  73. iris_pex_embedded_python-4.0.0.dist-info/top_level.txt +1 -0
  74. grongier/__init__.py +0 -0
  75. grongier/cls/Grongier/PEX/BusinessOperation.cls +0 -8
  76. grongier/cls/Grongier/PEX/BusinessProcess.cls +0 -13
  77. grongier/cls/Grongier/PEX/BusinessService.cls +0 -8
  78. grongier/cls/Grongier/PEX/Common.cls +0 -10
  79. grongier/cls/Grongier/PEX/Director.cls +0 -10
  80. grongier/cls/Grongier/PEX/Duplex/Operation.cls +0 -4
  81. grongier/cls/Grongier/PEX/Duplex/Process.cls +0 -13
  82. grongier/cls/Grongier/PEX/Duplex/Service.cls +0 -4
  83. grongier/cls/Grongier/PEX/InboundAdapter.cls +0 -8
  84. grongier/cls/Grongier/PEX/Message.cls +0 -13
  85. grongier/cls/Grongier/PEX/OutboundAdapter.cls +0 -8
  86. grongier/cls/Grongier/PEX/PickleMessage.cls +0 -13
  87. grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls +0 -8
  88. grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls +0 -14
  89. grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls +0 -14
  90. grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls +0 -14
  91. grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls +0 -14
  92. grongier/cls/Grongier/PEX/Test.cls +0 -10
  93. grongier/cls/Grongier/PEX/Utils.cls +0 -10
  94. grongier/cls/Grongier/Service/WSGI.cls +0 -4
  95. grongier/pex/__init__.py +0 -75
  96. grongier/pex/__main__.py +0 -4
  97. grongier/pex/_business_host.py +0 -1
  98. grongier/pex/_cli.py +0 -4
  99. grongier/pex/_common.py +0 -1
  100. grongier/pex/_director.py +0 -1
  101. grongier/pex/_utils.py +0 -1
  102. grongier/pex/wsgi/handlers.py +0 -104
  103. iop/_business_host.py +0 -322
  104. iop/_business_operation.py +0 -77
  105. iop/_business_service.py +0 -67
  106. iop/_director.py +0 -333
  107. iop/_dispatch.py +0 -194
  108. iop/_local.py +0 -106
  109. iop/_message.py +0 -45
  110. iop/_polling_business_service.py +0 -6
  111. iop/_remote.py +0 -473
  112. iop/_utils.py +0 -912
  113. iop/cls/IOP/Service/WSGI.cls +0 -310
  114. iop/wsgi/handlers.py +0 -112
  115. iris_pex_embedded_python-3.7.2b2.dist-info/RECORD +0 -96
  116. iris_pex_embedded_python-3.7.2b2.dist-info/entry_points.txt +0 -2
  117. iris_pex_embedded_python-3.7.2b2.dist-info/top_level.txt +0 -2
  118. {iris_pex_embedded_python-3.7.2b2.dist-info → iris_pex_embedded_python-4.0.0.dist-info}/WHEEL +0 -0
  119. {iris_pex_embedded_python-3.7.2b2.dist-info → iris_pex_embedded_python-4.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,310 +0,0 @@
1
- Class IOP.Service.WSGI Extends %CSP.REST [ ServerOnly = 1 ]
2
- {
3
-
4
- Parameter CLASSPATHS;
5
-
6
- Parameter MODULENAME;
7
-
8
- Parameter APPNAME;
9
-
10
- Parameter DEVMODE = 1;
11
-
12
- /// This method matches the request and method and calls the dispatcher
13
- ClassMethod Page(skipheader As %Boolean = 0) As %Status [ ProcedureBlock = 1 ]
14
- {
15
- #dim tSC As %Status = $$$OK
16
- #dim e As %Exception.AbstractException
17
-
18
- #dim tAuthorized,tRedirected As %Boolean
19
- #dim tRedirectRoutine,tURL As %String = ""
20
- #dim %response As %CSP.Response
21
-
22
- Try {
23
-
24
- #; Ensure that we honor the requested charset
25
- Set %response.CharSet=..#CHARSET
26
-
27
- #; Ensure that we honor the requested CONTENTTYPE
28
- If ..#CONTENTTYPE'="" Set %response.ContentType=..#CONTENTTYPE
29
-
30
- #; Ensure that we honor the requested HTTP_ACCEPT_LANGUAGE
31
- Set %response.Domain = ..#DOMAIN
32
- Do %response.MatchLanguage()
33
-
34
-
35
-
36
- #; Record if device re-direction is already active
37
- Set tRedirected=##class(%Library.Device).ReDirectIO()
38
-
39
- #; Record the redirect routine
40
- Set tRedirectRoutine=$System.Device.GetMnemonicRoutine()
41
-
42
- #; Now switch to using THIS routine for device redirection
43
- Use $io::("^%SYS.cspServer2")
44
-
45
- #; Switch device redirection on (may already be on but thats ok)
46
- Do ##class(%Library.Device).ReDirectIO(1)
47
-
48
- #; Ensure that the application is defined (security check)
49
- If $$$GetSecurityApplicationsDispatchClass(%request.AppData)="" {
50
-
51
- #; Report not authorized
52
- Set tSC=..Http403()
53
-
54
- #; Done
55
- Quit
56
- }
57
-
58
- #; GgiEnvs are not defined in the CSP shell
59
- Set tURL=$Get(%request.CgiEnvs("CSPLIB"))
60
- If tURL="" Set tURL=%request.URL
61
-
62
- #; Do an access check
63
- Set tSC=..AccessCheck(.tAuthorized)
64
- If $$$ISERR(tSC) Quit
65
-
66
- If tAuthorized=0 {
67
-
68
- #; Don't want the session token
69
- Set %response.OutputSessionToken=0
70
-
71
- #; Set the Http Status
72
- Set %response.Status=..#HTTP403FORBIDDEN
73
-
74
- #; Done
75
- Quit
76
- }
77
-
78
- #; Extract the match url from the application name
79
- Set tMatchUrl = "/"_$Extract(tURL,$Length(%request.Application)+1,*)
80
-
81
- #; Dispatch the request
82
- Set tSC=..DispatchRequest(tMatchUrl,%request.Method)
83
-
84
- } Catch (e) {
85
- Set tSC=e.AsStatus()
86
- }
87
-
88
- If $$$ISERR(tSC) {
89
-
90
- #; Don't want the session token
91
- Set %response.OutputSessionToken=0
92
-
93
- Do ..Http500(##class(%Exception.StatusException).CreateFromStatus(tSC))
94
- }
95
-
96
- #; Ensure that at least something is written out as the body
97
- #; This will trigger the device redirect capture and force headers to be written
98
- #; (if not already done)
99
- Write ""
100
-
101
- #; Reset redirect device if necessary
102
- If tRedirected {
103
-
104
- #; Use the original redirected routine
105
- Use $io::("^"_tRedirectRoutine)
106
-
107
- #; Switch device redirection on
108
- Do ##class(%Library.Device).ReDirectIO(1)
109
- }
110
-
111
- if ..#DEVMODE {
112
- #; Close the device to ensure next request starts with a new process
113
- Close 0
114
- }
115
-
116
- Quit $$$OK
117
- }
118
-
119
- ClassMethod OnPreDispatch(
120
- pUrl As %String,
121
- pMethod As %String,
122
- ByRef pContinue As %Boolean) As %Status
123
- {
124
- Set path = ..#CLASSPATHS
125
- Set appName = ..#APPNAME
126
- Set module = ..#MODULENAME
127
- Set devmode = ..#DEVMODE
128
- Set pContinue = 1
129
- Do ..DispatchREST(pUrl, path, appName, module, devmode)
130
- Quit $$$OK
131
- }
132
-
133
- ClassMethod DispatchREST(
134
- PathInfo As %String,
135
- appPath As %String,
136
- appName As %String,
137
- module As %String,
138
- devmode As %Boolean = 1) As %Status
139
- {
140
- Set builtins = ##CLASS(%SYS.Python).Builtins()
141
- Set interface = ##CLASS(%SYS.Python).Import("grongier.pex.wsgi.handlers")
142
- Set rawformdata = ""
143
- Set environ = builtins.dict()
144
- Set key = %request.NextCgiEnv("")
145
-
146
- // Let's check if the WSGI application has been loaded or not for this session.
147
-
148
- If (($DATA(%session.Data("application")) && $ISOBJECT(%session.Data("application"))) && 'devmode) {
149
- Set application = %session.Data("Application")
150
- }
151
- Else{
152
-
153
- Set application = ..GetPythonClass(appName, module, appPath)
154
- If application = "" {
155
- throw ##class(%Exception.General).%New("Error loading WSGI application: "_module_"."_appName_" from "_appPath)
156
- }
157
- Else {
158
- Set %session.Data("Application") = application
159
- }
160
- }
161
-
162
- // Editing some CGI variables that may be incorrect in %request
163
- // Also filling in environ with as many CGI variables as possible from %request
164
- // WSGI states that all CGI variables are valid and should be included if possible
165
- While (key'="") {
166
- Set value = %request.GetCgiEnv(key)
167
- If key = "PATH_INFO" {
168
- Set app=$$getapp^%SYS.cspServer(%request.URL,.path,.match,.updatedurl)
169
- Set value = $EXTRACT(updatedurl,$LENGTH(path),*)
170
- }
171
- If key = "SCRIPT_NAME" {
172
- //%request will sometimes have Script_name include Path_info
173
- Set value = $PIECE(%request.Application, "/",1,*-1)
174
- }
175
- Do environ."__setitem__"(key,value)
176
- Set key = %request.NextCgiEnv(key)
177
- }
178
-
179
- //Have to set up a correct wsgi.input stream from %request
180
- Set stream = %request.Content
181
-
182
- Set contentType = %request.ContentType
183
- Set contentLength = 0
184
-
185
- If contentType = "application/x-www-form-urlencoded" {
186
- Set formdict = builtins.dict()
187
- Set key = $ORDER(%request.Data(""))
188
- While (key'="") {
189
- Set value = $GET(%request.Data(key,1))
190
- Do formdict."__setitem__"(key,value)
191
- Set key = $ORDER(%request.Data(key))
192
- }
193
- Do environ."__setitem__"("formdata", formdict)
194
- }
195
- ElseIf contentType = "multipart/form-data" {
196
- Set boundary = $PIECE(%request.GetCgiEnv("CONTENT_TYPE"), "=",2)
197
- Set stream = ##CLASS(%CSP.BinaryStream).%New()
198
-
199
- Do stream.Write($CHAR(13,10))
200
-
201
- //Get the Form Data values
202
-
203
- Set key = $ORDER(%request.Data(""))
204
- While (key'="") {
205
- Do stream.Write("--")
206
- Do stream.Write(boundary)
207
- Do stream.Write($CHAR(13,10))
208
- Set value = $GET(%request.Data(key,1))
209
- Do stream.Write("Content-Disposition: form-data; name=")
210
- Do stream.Write(""""_key_"""")
211
- Do stream.Write($CHAR(13,10,13,10))
212
- Do stream.Write(value)
213
- Do stream.Write($CHAR(13,10))
214
- Set key = $ORDER(%request.Data(key))
215
- }
216
-
217
- //Now get the possible MIME data streams
218
- Set key = %request.NextMimeData("")
219
- While key'="" {
220
- Set numMimeStreams = %request.CountMimeData(key)
221
- Set index = %request.NextMimeDataIndex(key, "")
222
- Do stream.Write("--")
223
- Do stream.Write(boundary)
224
- Do stream.Write($CHAR(13,10))
225
- If numMimeStreams > 1 {
226
- //I need to create a boundary for a nested multipart content type
227
- Set internalboundary = "--"
228
- For i = 1 : 1 : 7 {
229
- Set internalboundary = internalboundary _ $RANDOM(10)
230
- }
231
- While index '= "" {
232
- Set mimestream = %request.GetMimeData(key, index)
233
- Set headers = mimestream.Headers
234
- Do stream.Write("--")
235
- Do stream.Write(internalboundary)
236
- Do stream.Write($CHAR(13,10))
237
- Do stream.Write(headers)
238
- Do stream.Write($CHAR(13,10,13,10))
239
- Set sc = stream.CopyFrom(mimestream)
240
- //TODO error handling
241
- Do stream.Write($CHAR(13,10))
242
- Set index = %request.NextMimeDataIndex(key, index)
243
- }
244
- Do stream.Write("--")
245
- Do stream.Write(internalboundary)
246
- Do stream.Write("--")
247
- }
248
- Else {
249
- Set mimestream = %request.GetMimeData(key, index)
250
- Set headers = mimestream.Headers
251
- Do stream.Write(headers)
252
- Do stream.Write($CHAR(13,10,13,10))
253
- Set sc = stream.CopyFrom(mimestream)
254
- //TODO error handling
255
- Do stream.Write($CHAR(13,10))
256
- }
257
- Set key = %request.NextMimeData(key)
258
- }
259
- Do stream.Write("--")
260
- Do stream.Write(boundary)
261
- Do stream.Write("--")
262
- Do stream.Rewind()
263
- }
264
-
265
-
266
- Try {
267
- Do interface."make_request"(environ, stream, application, appPath)
268
- }
269
- Catch exception {
270
- throw exception
271
- }
272
- Quit $$$OK
273
- }
274
-
275
- ClassMethod GetPythonClass(
276
- pClassname As %String,
277
- pModule As %String,
278
- pClasspath As %String) As %SYS.Python
279
- {
280
- Try {
281
- If pClasspath '="" {
282
- set sys = ##class(%SYS.Python).Import("sys")
283
-
284
- for i=0:1:(sys.path."__len__"()-1) {
285
- Try {
286
- if sys.path."__getitem__"(i) = pClasspath {
287
- do sys.path."__delitem__"(i)
288
- }
289
- }
290
- Catch ex {
291
- // do nothing
292
- }
293
-
294
- }
295
- do sys.path.insert(0, pClasspath)
296
- }
297
-
298
- Set importlib = ##class(%SYS.Python).Import("importlib")
299
- Set builtins = ##class(%SYS.Python).Import("builtins")
300
- Set module = importlib."import_module"(pModule)
301
- Set class = builtins.getattr(module, pClassname)
302
- }
303
- Catch ex {
304
- throw ##class(%Exception.General).%New("Error loading WSGI application: "_pModule_"."_pClassname_" from "_pClasspath)
305
- }
306
-
307
- Quit class
308
- }
309
-
310
- }
iop/wsgi/handlers.py DELETED
@@ -1,112 +0,0 @@
1
- import os
2
- import sys
3
- import importlib
4
- import urllib.parse
5
- from io import BytesIO
6
-
7
- __ospath = os.getcwd()
8
-
9
- import iris # noqa: E402
10
-
11
- os.chdir(__ospath)
12
-
13
- enc, esc = sys.getfilesystemencoding(), "surrogateescape"
14
-
15
- rest_service = iris.cls("%REST.Impl")
16
-
17
-
18
- def get_from_module(app_path, app_module, app_name):
19
-
20
- # Add the path to the application
21
- if app_path not in sys.path:
22
- sys.path.append(app_path)
23
-
24
- # retrieve the application
25
- return getattr(importlib.import_module(app_module), app_name)
26
-
27
-
28
- # Changes the current working directory to the manager directory of the instance.
29
- def goto_manager_dir():
30
- iris.system.Process.CurrentDirectory(iris.system.Util.ManagerDirectory())
31
-
32
-
33
- def unicode_to_wsgi(u):
34
- # Convert an environment variable to a WSGI "bytes-as-unicode" string
35
- return u.encode(enc, esc).decode("iso-8859-1")
36
-
37
-
38
- def wsgi_to_bytes(s):
39
- return s.encode("iso-8859-1")
40
-
41
-
42
- def write(chunk):
43
- rest_service._WriteResponse(chunk)
44
-
45
-
46
- def start_response(status, response_headers, exc_info=None):
47
- """WSGI start_response callable"""
48
- if exc_info:
49
- try:
50
- raise exc_info[1].with_traceback(exc_info[2])
51
- finally:
52
- exc_info = None
53
-
54
- rest_service._SetStatusCode(status)
55
- for tuple in response_headers:
56
- rest_service._SetHeader(tuple[0], tuple[1])
57
- return write
58
-
59
-
60
- # Make request to application
61
- def make_request(environ, stream, application, path):
62
-
63
- # Change the working directory for logging purposes
64
- goto_manager_dir()
65
-
66
- error_log_file = open("WSGI.log", "a+")
67
-
68
- # We want the working directory to be the app's directory
69
- if not path.endswith(os.path.sep):
70
- path = path + os.path.sep
71
-
72
- # iris.system.Process.CurrentDirectory(path)
73
-
74
- # Set up the body of the request
75
- if stream != "":
76
- bytestream = stream
77
- elif environ["CONTENT_TYPE"] == "application/x-www-form-urlencoded":
78
- bytestream = BytesIO()
79
- part = urllib.parse.urlencode(environ["formdata"])
80
- bytestream.write(part.encode("utf-8"))
81
- bytestream.seek(0)
82
- else:
83
- bytestream = BytesIO(b"")
84
-
85
- # for k,v in os.environ.items():
86
- # environ[k] = unicode_to_wsgi(v)
87
- environ["wsgi.input"] = bytestream
88
- environ["wsgi.errors"] = error_log_file
89
- environ["wsgi.version"] = (1, 0)
90
- environ["wsgi.multithread"] = False
91
- environ["wsgi.multiprocess"] = True
92
- environ["wsgi.run_once"] = True
93
-
94
- if environ.get("HTTPS", "off") in ("on", "1"):
95
- environ["wsgi.url_scheme"] = "https"
96
- else:
97
- environ["wsgi.url_scheme"] = "http"
98
-
99
- # Calling WSGI application
100
- response = application(environ, start_response)
101
-
102
- error_log_file.close()
103
-
104
- try:
105
- for data in response:
106
- if data:
107
- # (REST.Impl).Write() needs a utf-8 string
108
- write(data.decode("utf-8"))
109
- write(b"")
110
- finally:
111
- if hasattr(response, "close"):
112
- response.close()
@@ -1,96 +0,0 @@
1
- grongier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- grongier/cls/Grongier/PEX/BusinessOperation.cls,sha256=FgLLHTU8yHKxZIoz__5rtHW89b-o_Tjjf5i09WIqcJs,291
3
- grongier/cls/Grongier/PEX/BusinessProcess.cls,sha256=0S7RU0GYafviILGCwkOKk7mQtP1Bvmd01b1dqfLMjDk,341
4
- grongier/cls/Grongier/PEX/BusinessService.cls,sha256=KEidVN2tnaJ-6QKmPj8--BqlxMOayPM7Z8A42caC5s8,287
5
- grongier/cls/Grongier/PEX/Common.cls,sha256=_7K83DN_Krj5pSgPpfWmINSA0yAhZkhXLBDmKDgLeBs,292
6
- grongier/cls/Grongier/PEX/Director.cls,sha256=CMmLEQRbK37zenYZOMkmRa9P6B9xLUdWgm7YLk1yKGg,306
7
- grongier/cls/Grongier/PEX/InboundAdapter.cls,sha256=4S3gjicQ-yfClO4RgKgu7iJQgQaxfH_a-1NmAeZ6Uv0,285
8
- grongier/cls/Grongier/PEX/Message.cls,sha256=KzWxhWjDKQMjc6fnUZSrxJ9y6u5i1jAsyj0zbeTCmto,273
9
- grongier/cls/Grongier/PEX/OutboundAdapter.cls,sha256=6bRIZ2gzufF5uGzf3z0MY460Yl6gKP31yJm8kzttm8g,287
10
- grongier/cls/Grongier/PEX/PickleMessage.cls,sha256=r4BTEML91d1YmvkL8L209ilSyCPunYE-zJbQIJK_kBw,285
11
- grongier/cls/Grongier/PEX/Test.cls,sha256=lvCM0hUZEQuawyteeRjucJvDhkRUc2NfGC6n6vV4nrQ,116
12
- grongier/cls/Grongier/PEX/Utils.cls,sha256=hJtkE_YMz0z7ufocwz98vl1ODHT-NU-Qpl5hyYVu8jo,233
13
- grongier/cls/Grongier/PEX/Duplex/Operation.cls,sha256=0X9jHVkGqoh-aLTHmXdb9DuWFY6YxEBQ7dNYLCO7cdw,68
14
- grongier/cls/Grongier/PEX/Duplex/Process.cls,sha256=AQiL_x5tG99tvauMwiPHsU3G6irb1HGSyBnqREXF4AQ,342
15
- grongier/cls/Grongier/PEX/Duplex/Service.cls,sha256=OEYgYbxNtff_ACW2XGee9NtUht3u6nuC822cx7ng2cA,71
16
- grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls,sha256=7RUXLw53Tjv_IL8KpWKm4iFlAeSqAELrawJ42iu-AH4,270
17
- grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls,sha256=aKi3EhyQipGKMap19xW27CHEHRKCo9yf8Qk2LsEOwx4,429
18
- grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls,sha256=pcUgHgxX1pMH-wQpE_ow8JGBCgiKmsSmsgNwYgP5eD8,431
19
- grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls,sha256=T3jNoR8RjKr1InQ6SgqBYTgFwpSB0Q60WholjbvForg,433
20
- grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls,sha256=zy30ZXXN4XcovPij-kOF3PuH1SkP1EUvlEJQRx2S9RU,431
21
- grongier/cls/Grongier/Service/WSGI.cls,sha256=7u2SsFmnsubMfdazvaDchKCM3yesPRMfKBzMIkwQ9xc,77
22
- grongier/pex/__init__.py,sha256=XxMw6cAaCEEtmFIAL5-FrRkM1u-aQbbYvzr1WE7zYMw,1698
23
- grongier/pex/__main__.py,sha256=pQzVtkDhAeI6dpNRC632dVk2SGZZIEDwDufdgZe8VWs,98
24
- grongier/pex/_business_host.py,sha256=dlV8CWJad8Pr2TNfD9OjcVKaq5gEYQACZla1FK6-bDM,44
25
- grongier/pex/_cli.py,sha256=hOHz3n-aHtULuhdCkqZ_SSb3sv7M6j2WhRxgCTvgR9I,64
26
- grongier/pex/_common.py,sha256=HZwG2C2-yB8yNN8kXhI6vxg8h-rROuEx38YOVFWIk1s,31
27
- grongier/pex/_director.py,sha256=pCmoiJ-sxe24yQaDz6ZFBsAnqU6fh57_dlew98B7rtE,35
28
- grongier/pex/_utils.py,sha256=gvsdr8WhWrE6smlsCxhoF14VUZfitrwqr5J57HkJhi4,29
29
- grongier/pex/wsgi/handlers.py,sha256=NrFLo_YbAh-x_PlWhAiWkQnUUN2Ss9HoEm63dDWCBpQ,2947
30
- iop/__init__.py,sha256=tb9Vcz2XzApqKWxit4WTEecyiPB9PRWG8MJdPN9J_wI,1853
31
- iop/__main__.py,sha256=C0MZpXA8XFopuveMDbZgX1bttrb2DxarhaY1XYfbhsg,100
32
- iop/_async_request.py,sha256=lW3vasdepKwLPuWRm1zDs3xlRWCoVL0RJZqVUj8gkJw,2409
33
- iop/_business_host.py,sha256=l0X_2xiMArMQsvI99kXDuI6vVrJMvPHZtDnXHGqT7c4,11669
34
- iop/_business_operation.py,sha256=AhKw-KKpOatXGqaMFwMcb774SF0a4ZIWeRCUGN-al_Q,2985
35
- iop/_business_process.py,sha256=tDgZSb8JhwzUAbBXvm9qKzbdlhaeXfVLoUIGOXCoeZs,8821
36
- iop/_business_service.py,sha256=3oSL4_Dam_WDD7J2BpYVd_WQKUPUnCcLH_bjwXvWqKc,3960
37
- iop/_cli.py,sha256=O9VMWBZnuubA5CZmvp7rMJfcBfQPi7FhNkxHBs7ncXk,17072
38
- iop/_common.py,sha256=U10pvB1sSFhtJfJ7BzEo19XfNWAUDv54dqFFqp1Gl0g,19234
39
- iop/_debugpy.py,sha256=0UOLkOjXkJ24GxxyEnPckafrAtfVVUDYIedmLIznYfM,6067
40
- iop/_decorators.py,sha256=2UFV56sfopuBqgxTTj71XgAAwoQm1ijDi_3N-GIKbu8,2337
41
- iop/_director.py,sha256=dN_SGyUDPH19kUt7_AR6vBrDlKUg0RRgYVkvJFjsYOM,11855
42
- iop/_director_protocol.py,sha256=w190gB6hxXJjiB--ll5bzeLsZkL-SK9VzYLGQ1WpUbA,2797
43
- iop/_dispatch.py,sha256=UjrQuia4lSgC3It07m9BqnEBhmqjdd9Hp_b2QVaj4zc,5825
44
- iop/_generator_request.py,sha256=2No4E2mjBr7bPwBljsKbWX3QxTrjgdyz683tynlg-OI,1339
45
- iop/_inbound_adapter.py,sha256=WErDcXzHhYNN0QanmTay34Zh_uUxlEykJ4YmevTVOyY,1654
46
- iop/_iris.py,sha256=Zc4IvMv3us3rrBNCba1AU8RSXvct2wZkCZVSWN84c-k,198
47
- iop/_local.py,sha256=bGTxgI83qsT5IxA-hZXhXEDAICeYc3Lku2MM5A8ApBs,3676
48
- iop/_log_manager.py,sha256=Egrul1LCQlYrvIgcoF-LjXoeXaLLh_nD9bB4P-Y-q_E,3225
49
- iop/_message.py,sha256=fTHxYHBq42QIDGrtVuw-7NJAQ7bLIWPdbl5EmwiDhG0,1465
50
- iop/_message_validator.py,sha256=XzQ4qkHLYoai2_gPk3ItXHVgwz2WldiBcNE32yaxOVc,1540
51
- iop/_outbound_adapter.py,sha256=GSsr6z0gvVygNyr3YicHBt7i2ZJu3wJgrCpPqod7Z_U,732
52
- iop/_persistent_message.py,sha256=F1WsgNqSupyKPkldQNnY96cGtD2mRwR9qSVE8SI6nXU,16780
53
- iop/_polling_business_service.py,sha256=uElSd77H7YhE3hi24Zzyfc9BMP8HSzGyo4fRzW3e0eM,199
54
- iop/_private_session_duplex.py,sha256=SLqwnB4gLKqCt-DClIEFg_yWcQs16A4Va7lRyUg-18o,5289
55
- iop/_private_session_process.py,sha256=J1HjRIphg0iHHEIa6Rqa68vA22ODMN6BfNqAN4Ybi1U,1723
56
- iop/_remote.py,sha256=zE4eZtNuqQemtX2gBwu59n56ixBtwkV25GvZgqVKlMU,17395
57
- iop/_serialization.py,sha256=5ajXh99QVFRXuwhR7xex3rHF87l07o8Fth2VOMRj-YM,8778
58
- iop/_settings.py,sha256=ZoPbYllsJJ5uAwcg1z2Gp-PChOAnKwMLsFNXppBuUGM,5510
59
- iop/_utils.py,sha256=46EO1ugcylkd4oLodvTyp2-byutgePjITHv0fXUjscI,35460
60
- iop/cls/IOP/BusinessOperation.cls,sha256=NlvbNtm1ZFZmHaMX_9FMKoptY-hQMq5jYN1nLQwvYJw,936
61
- iop/cls/IOP/BusinessProcess.cls,sha256=XJxzbiV0xokzRm-iI2Be5UIJLE3MlXr7W3WS_LkOCYs,3363
62
- iop/cls/IOP/BusinessService.cls,sha256=fplKrbQgA7cQgjKIqDR2IK2iD1iNHmT-QvWrozhE4n4,1189
63
- iop/cls/IOP/Common.cls,sha256=bAlizugASwGDeQZqUq_WgVIhmuuvVRHL5DJq2yaxeoU,17958
64
- iop/cls/IOP/Director.cls,sha256=mrnxH1HOKbWCCoOAHHpD11KigZdQ9SU8MM1ZGghFuFs,2303
65
- iop/cls/IOP/InboundAdapter.cls,sha256=H-gZfUy8M9YxAZXfp5HVYl3uLo-7Xg9YgojioB_eYMY,619
66
- iop/cls/IOP/Message.cls,sha256=eVy5sCHHll2aup9fn9IkDeQDhngDc5EH3TSdHmEGT7Y,30231
67
- iop/cls/IOP/OutboundAdapter.cls,sha256=OQoGFHUy2qV_kcsShTlWGOngDrdH5dhwux4eopZyIv4,967
68
- iop/cls/IOP/PickleMessage.cls,sha256=S3y7AClQ8mAILjxPuHdCjGosBZYzGbUQ5WTv4mYPNMQ,1673
69
- iop/cls/IOP/Projection.cls,sha256=AZgbfpbEk02llhyIwrSw0M3QMcQNcjhjY3_vU_yx8FU,1315
70
- iop/cls/IOP/Test.cls,sha256=zvlCZJfOCmSFdmi-ZQHWDGYmqZAgRspaJj1j0r_IxJQ,2017
71
- iop/cls/IOP/Utils.cls,sha256=1ujVAaBAjFAbbyirD0aFzRQoQva6SR_qJJG_s03V1l8,19042
72
- iop/cls/IOP/Wrapper.cls,sha256=37fUol-EcktdfGhpfi4o12p04975lKGaRYEFhw-fuaM,1614
73
- iop/cls/IOP/Duplex/Operation.cls,sha256=K_fmgeLjPZQbHgNrc0kd6DUQoW0fDn1VHQjJxHo95Zk,525
74
- iop/cls/IOP/Duplex/Process.cls,sha256=xbefZ4z84a_IUhavWN6P_gZBzqkdJ5XRTXxro6iDvAg,6986
75
- iop/cls/IOP/Duplex/Service.cls,sha256=sTMOQUCMBgVitmQkM8bbsrmrRtCdj91VlctJ3I7b8WU,161
76
- iop/cls/IOP/Generator/Message/Ack.cls,sha256=gVgrmTF8TrOkdsN6KqCRxWf3VVw5ukHTx58xxd968m8,905
77
- iop/cls/IOP/Generator/Message/Poll.cls,sha256=nzZN5s4ffC243D9wRUSeb3dyBGsIqqO4pb9oqP_ahYM,890
78
- iop/cls/IOP/Generator/Message/Start.cls,sha256=rYaMb6wtF62K_9ixHIdfSzVVCPet74xxSsYNhUSk1rQ,377
79
- iop/cls/IOP/Generator/Message/StartPickle.cls,sha256=8DmUy_7FcIW8vAZiEmXoxBwomTRfrsVFaPjpO5j1YCo,389
80
- iop/cls/IOP/Generator/Message/Stop.cls,sha256=AYiw3UZy8lqbW5xZznWGmuf1f389vY7XxVfrwJIONkI,920
81
- iop/cls/IOP/Message/JSONSchema.cls,sha256=SL26n8Z0D81SAGL2NthI10NFdT4Oe1x_GQiaTYPwkoo,3252
82
- iop/cls/IOP/PrivateSession/Duplex.cls,sha256=ziTNpRqBVBtR1j0a0HuJz6-90IIWl8G-XpzlOlXaTfQ,7961
83
- iop/cls/IOP/PrivateSession/Message/Ack.cls,sha256=y6-5uSVod36bxeQuT2ytPN4TUAfM1mvGGJuTbWbpNv4,941
84
- iop/cls/IOP/PrivateSession/Message/Poll.cls,sha256=z3ALYmGYQasTcyYNyBeoHzJdNXI4nBO_N8Cqo9l4sQY,942
85
- iop/cls/IOP/PrivateSession/Message/Start.cls,sha256=RsJLrhglrONBDGT0RqW2K9MDXa98vMYcxJfgeD8lhAE,943
86
- iop/cls/IOP/PrivateSession/Message/Stop.cls,sha256=7g3gKFUjNg0WXBLuWnj-VnCs5G6hSE09YTzGEp0zbGc,1390
87
- iop/cls/IOP/Service/WSGI.cls,sha256=VLNCXEwmHW9dBnE51uGE1nvGX6T4HjhqePT3LVhsjAE,10440
88
- iop/cls/IOP/Service/Remote/Handler.cls,sha256=JfsXse2jvoVvQfW8_rVEt2DCQJ9SVqReCcOUngOkpzE,938
89
- iop/cls/IOP/Service/Remote/Rest/v1.cls,sha256=DRaYNsbFmczdVltb-HMZvviy5EcjcJx7__zmnKANNm8,14429
90
- iop/wsgi/handlers.py,sha256=lcCZ1ixnYqdo9eNrBSsQbhS9ei2x11p9e4SHHb__zmY,2951
91
- iris_pex_embedded_python-3.7.2b2.dist-info/licenses/LICENSE,sha256=rZSiBFId_sfbJ6RL0GjjPX-InNLkNS9ou7eQsikciI8,1089
92
- iris_pex_embedded_python-3.7.2b2.dist-info/METADATA,sha256=9XMFl2HGKtXPzs9ATPRwuQmsuu_Na1hG9R9X_YdAhao,4310
93
- iris_pex_embedded_python-3.7.2b2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
94
- iris_pex_embedded_python-3.7.2b2.dist-info/entry_points.txt,sha256=pj-i4LSDyiSP6xpHlVjMCbg1Pik7dC3_sdGY3Yp9Vhk,38
95
- iris_pex_embedded_python-3.7.2b2.dist-info/top_level.txt,sha256=4p0q6hCATmYIVMVi3I8hOUcJE1kwzyBeHygWv_rGvrU,13
96
- iris_pex_embedded_python-3.7.2b2.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- iop = iop._cli:main
@@ -1,2 +0,0 @@
1
- grongier
2
- iop