iris-pex-embedded-python 3.1.1__tar.gz → 3.1.1b1__tar.gz
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.
- {iris_pex_embedded_python-3.1.1/src/iris_pex_embedded_python.egg-info → iris_pex_embedded_python-3.1.1b1}/PKG-INFO +1 -19
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/README.md +1 -19
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/pyproject.toml +1 -1
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_host.py +53 -66
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_director.py +2 -2
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_utils.py +11 -32
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Director.cls +0 -2
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Message.cls +20 -92
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Test.cls +0 -23
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Utils.cls +6 -9
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1/src/iris_pex_embedded_python.egg-info}/PKG-INFO +1 -19
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/LICENSE +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/setup.cfg +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/setup.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/BusinessOperation.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/BusinessProcess.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/BusinessService.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Common.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Director.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Duplex/Operation.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Duplex/Process.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Duplex/Service.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/InboundAdapter.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Message.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/OutboundAdapter.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/PickleMessage.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Test.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/PEX/Utils.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/cls/Grongier/Service/WSGI.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/__main__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_business_host.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_cli.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_common.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_director.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_utils.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/wsgi/handlers.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_BufferReader.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_BufferWriter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_ConnectionInformation.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_ConnectionParameters.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_Constant.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_DBList.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_Device.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_GatewayContext.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_GatewayException.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_GatewayUtility.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRIS.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISConnection.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISEmbedded.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISGlobalNode.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISGlobalNodeView.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISIterator.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISList.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISNative.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISOREF.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISObject.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRISReference.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_InStream.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_LegacyIterator.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_ListItem.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_ListReader.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_ListWriter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_LogFileStream.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_MessageHeader.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_OutStream.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_PrintStream.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_PythonGateway.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_SharedMemorySocket.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/__main__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_Column.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_DBAPI.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_Descriptor.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_IRISStream.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_Message.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_Parameter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_ParameterCollection.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_ResultSetRow.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/_SQLType.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/preparser/_PreParser.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/preparser/_Scanner.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/preparser/_Token.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/preparser/_TokenList.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/dbapi/preparser/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_BusinessHost.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_BusinessOperation.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_BusinessProcess.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_BusinessService.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_Common.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_Director.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_IRISBusinessOperation.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_IRISBusinessService.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_IRISInboundAdapter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_IRISOutboundAdapter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_InboundAdapter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_Message.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/_OutboundAdapter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/pex/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/__main__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_operation.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_process.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_service.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_cli.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_common.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_inbound_adapter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_message.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_outbound_adapter.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_pickle_message.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_private_session_duplex.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_private_session_process.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/BusinessOperation.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/BusinessProcess.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/BusinessService.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Common.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Duplex/Operation.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Duplex/Process.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Duplex/Service.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/InboundAdapter.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/OutboundAdapter.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/PickleMessage.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/PrivateSession/Duplex.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/PrivateSession/Message/Ack.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/PrivateSession/Message/Poll.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/PrivateSession/Message/Start.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/PrivateSession/Message/Stop.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Service/WSGI.cls +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/wsgi/handlers.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris/__init__.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris/__init__.pyi +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris/_cli.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris/iris_ipm.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris/iris_ipm.pyi +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris/iris_utils.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/irisnative/_IRISNative.py +0 -0
- {iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/irisnative/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: iris_pex_embedded_python
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.1b1
|
|
4
4
|
Summary: Iris Interoperability based on Embedded Python
|
|
5
5
|
Author-email: grongier <guillaume.rongier@intersystems.com>
|
|
6
6
|
License: MIT License
|
|
@@ -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 |
|
|
@@ -66,7 +66,6 @@ This proof of concept aims to show how the **iris interoperability framework** c
|
|
|
66
66
|
- [7.11. version](#711-version)
|
|
67
67
|
- [7.12. log](#712-log)
|
|
68
68
|
- [8. Credits](#8-credits)
|
|
69
|
-
- [9. Benchmarks](#9-benchmarks)
|
|
70
69
|
|
|
71
70
|
## 1.2. Example
|
|
72
71
|
|
|
@@ -1334,21 +1333,4 @@ output :
|
|
|
1334
1333
|
|
|
1335
1334
|
Most of the code came from PEX for Python by Mo Cheng and Summer Gerry.
|
|
1336
1335
|
|
|
1337
|
-
Works only on IRIS 2021.2 +
|
|
1338
|
-
|
|
1339
|
-
# 9. Benchmarks
|
|
1340
|
-
|
|
1341
|
-
8 senarios with thoses parameters :
|
|
1342
|
-
- 100 messages
|
|
1343
|
-
- body : simple string `test`
|
|
1344
|
-
|
|
1345
|
-
| Scenario | Time (s) |
|
|
1346
|
-
| --- | --- |
|
|
1347
|
-
| Python BP to Python BO with Iris Message | 0.739 |
|
|
1348
|
-
| Python BP to Python BO with Python Message | 0.732 |
|
|
1349
|
-
| ObjetScript BP to Python BO with Iris Message | 0.594 |
|
|
1350
|
-
| ObjetScript BP to Python BO with Python Message | 0.642 |
|
|
1351
|
-
| Python BP to ObjetScript BO with Iris Message | 0.642 |
|
|
1352
|
-
| Python BP to ObjetScript BO with Python Message | 0.675 |
|
|
1353
|
-
| ObjetScript BP to ObjetScript BO with Iris Message | 0.159 |
|
|
1354
|
-
| ObjetScript BP to ObjetScript BO with Python Message | 0.182 |
|
|
1336
|
+
Works only on IRIS 2021.2 +
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_host.py
RENAMED
|
@@ -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
|
|
38
|
-
# Handle positional arguments
|
|
39
|
-
serialized
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
|
58
|
-
# Handle positional arguments
|
|
59
|
-
serialized
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
|
97
|
-
# Handle positional arguments
|
|
98
|
-
serialized
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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,10 +265,8 @@ class _BusinessHost(_Common):
|
|
|
266
265
|
msg = iris.cls('IOP.Message')._New()
|
|
267
266
|
msg.classname = module + "." + classname
|
|
268
267
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
else:
|
|
272
|
-
msg.json = json_string
|
|
268
|
+
stream = _Utils.string_to_stream(json_string)
|
|
269
|
+
msg.jstr = stream
|
|
273
270
|
|
|
274
271
|
return msg
|
|
275
272
|
|
|
@@ -292,22 +289,16 @@ class _BusinessHost(_Common):
|
|
|
292
289
|
:return: The return value is a tuple of the form (serial, serial_type)
|
|
293
290
|
"""
|
|
294
291
|
if (
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
or serial._IsA("Grongier.PEX.Message")
|
|
300
|
-
)
|
|
301
|
-
):
|
|
292
|
+
(serial is not None and type(serial).__module__.find('iris') == 0)
|
|
293
|
+
and
|
|
294
|
+
(serial._IsA("IOP.Message") or serial._IsA("Grongier.PEX.Message"))
|
|
295
|
+
):
|
|
302
296
|
return self._deserialize_message(serial)
|
|
303
297
|
elif (
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
or serial._IsA("Grongier.PEX.PickleMessage")
|
|
309
|
-
)
|
|
310
|
-
):
|
|
298
|
+
(serial is not None and type(serial).__module__.find('iris') == 0)
|
|
299
|
+
and
|
|
300
|
+
(serial._IsA("IOP.PickleMessage") or serial._IsA("Grongier.PEX.PickleMessage"))
|
|
301
|
+
):
|
|
311
302
|
return self._deserialize_pickle_message(serial)
|
|
312
303
|
else:
|
|
313
304
|
return serial
|
|
@@ -330,11 +321,7 @@ class _BusinessHost(_Common):
|
|
|
330
321
|
except Exception:
|
|
331
322
|
raise ImportError("Class not found: " + classname)
|
|
332
323
|
|
|
333
|
-
string =
|
|
334
|
-
if (serial.type == 'Stream'):
|
|
335
|
-
string = _Utils.stream_to_string(serial.json)
|
|
336
|
-
else:
|
|
337
|
-
string = serial.json
|
|
324
|
+
string = _Utils.stream_to_string(serial.jstr)
|
|
338
325
|
|
|
339
326
|
jdict = json.loads(string, cls=IrisJSONDecoder)
|
|
340
327
|
msg = self._dataclass_from_dict(msg,jdict)
|
|
@@ -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.
|
|
261
|
+
message.jstr = _Utils.string_to_stream(body)
|
|
262
262
|
else:
|
|
263
|
-
message.
|
|
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)
|
|
@@ -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
|
|
200
|
-
sys.path.
|
|
201
|
-
|
|
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
|
-
|
|
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
|
|
363
|
+
def stream_to_string(stream)-> str:
|
|
385
364
|
string = ""
|
|
386
365
|
stream.Rewind()
|
|
387
366
|
while not stream.AtEnd:
|
|
388
|
-
string += stream.Read(
|
|
367
|
+
string += stream.Read(4092)
|
|
389
368
|
return string
|
|
390
369
|
|
|
391
370
|
@staticmethod
|
|
392
|
-
def string_to_stream(string:str
|
|
371
|
+
def string_to_stream(string:str):
|
|
393
372
|
stream = iris.cls('%Stream.GlobalCharacter')._New()
|
|
394
|
-
n =
|
|
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)
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Director.cls
RENAMED
|
@@ -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
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Message.cls
RENAMED
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
Class IOP.Message Extends (Ens.MessageBody, %CSP.Page, %XML.Adaptor)
|
|
6
6
|
{
|
|
7
7
|
|
|
8
|
-
Parameter BUFFER =
|
|
9
|
-
|
|
10
|
-
Property buffer As %String(MAXLEN = "") [ Calculated, Transient ];
|
|
8
|
+
Parameter BUFFER = 64000;
|
|
11
9
|
|
|
12
10
|
Property classname As %String(MAXLEN = "");
|
|
13
11
|
|
|
@@ -15,109 +13,48 @@ Property jsonObject As %DynamicObject(XMLPROJECTION = "None");
|
|
|
15
13
|
|
|
16
14
|
Property json As %String(MAXLEN = "");
|
|
17
15
|
|
|
18
|
-
Property jsonStream As %Stream.GlobalCharacter [ Internal, Private ];
|
|
19
|
-
|
|
20
|
-
Property jsonString As %String(MAXLEN = 1000000) [ Internal, Private ];
|
|
21
|
-
|
|
22
16
|
Property jstr As %Stream.GlobalCharacter [ Internal, Private ];
|
|
23
17
|
|
|
24
|
-
// for retrocompatibility
|
|
25
|
-
|
|
26
|
-
Property type As %String(MAXLEN = 6) [ ReadOnly ];
|
|
27
|
-
|
|
28
|
-
Method bufferGet()
|
|
29
|
-
{
|
|
30
|
-
Quit ..#BUFFER
|
|
31
|
-
}
|
|
32
|
-
|
|
33
18
|
Method %OnNew(classname) As %Status [ Private, ServerOnly = 1 ]
|
|
34
19
|
{
|
|
35
20
|
set ..classname = $g(classname)
|
|
36
21
|
Quit $$$OK
|
|
37
22
|
}
|
|
38
23
|
|
|
39
|
-
Method
|
|
24
|
+
Method jsonGet()
|
|
40
25
|
{
|
|
41
|
-
|
|
42
|
-
// Get as stream no matter what
|
|
43
|
-
if ..type="String" {
|
|
44
|
-
Set rsp = ##class(%Stream.GlobalCharacter).%New()
|
|
45
|
-
Set sc = rsp.Write(..jsonString)
|
|
46
|
-
}
|
|
47
|
-
elseif ..type="Stream" {
|
|
48
|
-
set rsp = ..jsonStream
|
|
49
|
-
}
|
|
50
|
-
Quit rsp
|
|
26
|
+
QUIT ..GetObjectJson()
|
|
51
27
|
}
|
|
52
28
|
|
|
53
|
-
Method
|
|
29
|
+
Method jsonSet(value) As %Status
|
|
54
30
|
{
|
|
55
|
-
|
|
56
|
-
set
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
set stream = ##class(%Stream.GlobalCharacter).%New()
|
|
60
|
-
Set sc = stream.Write(..jsonString)
|
|
61
|
-
set r%jsonStream = stream
|
|
62
|
-
set i%type = "Stream"
|
|
63
|
-
}
|
|
64
|
-
Quit sc
|
|
31
|
+
set ..jsonObject = {}.%FromJSON(value)
|
|
32
|
+
set ..jstr = ##class(%Stream.GlobalCharacter).%New()
|
|
33
|
+
do ..jstr.Write(value)
|
|
34
|
+
return $$$OK
|
|
65
35
|
}
|
|
66
36
|
|
|
67
|
-
Method
|
|
37
|
+
Method %DispatchGetProperty(property As %String) As %ObjectHandle
|
|
68
38
|
{
|
|
69
|
-
|
|
70
|
-
, "String":..jsonString
|
|
71
|
-
, "Stream":..jsonStream
|
|
72
|
-
, :$$$NULLOREF)
|
|
39
|
+
quit $property(..jsonObject,property)
|
|
73
40
|
}
|
|
74
41
|
|
|
75
|
-
Method
|
|
42
|
+
Method %DispatchSetProperty(
|
|
43
|
+
property As %String,
|
|
44
|
+
value)
|
|
76
45
|
{
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
, "Stream":..jsonStream
|
|
80
|
-
, :$$$NULLOREF)
|
|
81
|
-
Quit:tOldStream=pInput $$$OK
|
|
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
|
-
}
|
|
91
|
-
}
|
|
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
|
-
}
|
|
102
|
-
Set i%jsonString=pInput, i%type="String"
|
|
103
|
-
}
|
|
104
|
-
Quit $$$OK
|
|
105
|
-
Clear()
|
|
106
|
-
If ..type="String" { Set r%jsonString="" }
|
|
107
|
-
ElseIf ..type="Stream" { Set r%jsonStream=$$$NULLOREF }
|
|
108
|
-
Quit
|
|
46
|
+
set $property(..jsonObject,property) = value
|
|
47
|
+
quit
|
|
109
48
|
}
|
|
110
49
|
|
|
111
50
|
Method GetObjectJson(ByRef atEnd)
|
|
112
51
|
{
|
|
113
52
|
set atEnd = 1
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
set json = ..jsonStream.Read(..#BUFFER)
|
|
120
|
-
set atEnd = ..jsonStream.AtEnd
|
|
53
|
+
set json = ..jsonObject.%ToJSON()
|
|
54
|
+
if json = "{}" {
|
|
55
|
+
d ..jstr.Rewind()
|
|
56
|
+
set json = ..jstr.Read(..#BUFFER)
|
|
57
|
+
set atEnd = ..jstr.AtEnd
|
|
121
58
|
}
|
|
122
59
|
QUIT json
|
|
123
60
|
}
|
|
@@ -178,15 +115,6 @@ Storage Default
|
|
|
178
115
|
<Value name="3">
|
|
179
116
|
<Value>jstr</Value>
|
|
180
117
|
</Value>
|
|
181
|
-
<Value name="4">
|
|
182
|
-
<Value>jsonStream</Value>
|
|
183
|
-
</Value>
|
|
184
|
-
<Value name="5">
|
|
185
|
-
<Value>type</Value>
|
|
186
|
-
</Value>
|
|
187
|
-
<Value name="6">
|
|
188
|
-
<Value>jsonString</Value>
|
|
189
|
-
</Value>
|
|
190
118
|
</Data>
|
|
191
119
|
<Data name="jsonObject">
|
|
192
120
|
<Attribute>jsonObject</Attribute>
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Test.cls
RENAMED
|
@@ -2,29 +2,6 @@
|
|
|
2
2
|
Class IOP.Test Extends %Persistent
|
|
3
3
|
{
|
|
4
4
|
|
|
5
|
-
/// Description
|
|
6
|
-
ClassMethod TestJsonStringMessage() As %Status
|
|
7
|
-
{
|
|
8
|
-
set msg = ##class(IOP.Message).%New()
|
|
9
|
-
set msg.classname = "IOP.Message"
|
|
10
|
-
set msg.json = "{""name"":""John""}"
|
|
11
|
-
set tset = msg.json
|
|
12
|
-
set tst = msg.jstr
|
|
13
|
-
QUIT $$$OK
|
|
14
|
-
}
|
|
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
5
|
/// Register
|
|
29
6
|
ClassMethod Register() As %Status
|
|
30
7
|
{
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Utils.cls
RENAMED
|
@@ -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
|
|
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
|
|
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.
|
|
3
|
+
Version: 3.1.1b1
|
|
4
4
|
Summary: Iris Interoperability based on Embedded Python
|
|
5
5
|
Author-email: grongier <guillaume.rongier@intersystems.com>
|
|
6
6
|
License: MIT License
|
|
@@ -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 |
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/__init__.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_cli.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_common.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_director.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/grongier/pex/_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_DBList.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_Device.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/intersystems_iris/_IRIS.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_operation.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_process.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_business_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_inbound_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_outbound_adapter.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/_pickle_message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Common.cls
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/cls/IOP/Service/WSGI.cls
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/iop/wsgi/handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/irisnative/_IRISNative.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-3.1.1 → iris_pex_embedded_python-3.1.1b1}/src/irisnative/__init__.py
RENAMED
|
File without changes
|