iris-pex-embedded-python 3.4.0b1__tar.gz → 3.4.0b3__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.

Files changed (152) hide show
  1. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/PKG-INFO +1 -1
  2. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/pyproject.toml +4 -1
  3. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/__init__.py +1 -1
  4. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/__init__.py +2 -3
  5. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_common.py +38 -15
  6. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_log_manager.py +11 -17
  7. iris_pex_embedded_python-3.4.0b3/src/iop/_message.py +28 -0
  8. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_message_validator.py +7 -7
  9. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_serialization.py +4 -0
  10. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_utils.py +7 -1
  11. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iris_pex_embedded_python.egg-info/PKG-INFO +1 -1
  12. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +0 -2
  13. iris_pex_embedded_python-3.4.0b1/src/iop/_message.py +0 -6
  14. iris_pex_embedded_python-3.4.0b1/src/iop/_pickle_message.py +0 -6
  15. iris_pex_embedded_python-3.4.0b1/src/iop/_pydantic_message.py +0 -9
  16. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/LICENSE +0 -0
  17. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/README.md +0 -0
  18. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/setup.cfg +0 -0
  19. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/setup.py +0 -0
  20. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/__init__.py +0 -0
  21. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/BusinessOperation.cls +0 -0
  22. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/BusinessProcess.cls +0 -0
  23. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/BusinessService.cls +0 -0
  24. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Common.cls +0 -0
  25. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Director.cls +0 -0
  26. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Duplex/Operation.cls +0 -0
  27. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Duplex/Process.cls +0 -0
  28. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Duplex/Service.cls +0 -0
  29. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/InboundAdapter.cls +0 -0
  30. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Message.cls +0 -0
  31. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/OutboundAdapter.cls +0 -0
  32. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/PickleMessage.cls +0 -0
  33. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls +0 -0
  34. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls +0 -0
  35. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls +0 -0
  36. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls +0 -0
  37. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls +0 -0
  38. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Test.cls +0 -0
  39. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/PEX/Utils.cls +0 -0
  40. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/cls/Grongier/Service/WSGI.cls +0 -0
  41. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/__main__.py +0 -0
  42. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/_business_host.py +0 -0
  43. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/_cli.py +0 -0
  44. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/_common.py +0 -0
  45. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/_director.py +0 -0
  46. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/_utils.py +0 -0
  47. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/grongier/pex/wsgi/handlers.py +0 -0
  48. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_BufferReader.py +0 -0
  49. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_BufferWriter.py +0 -0
  50. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_ConnectionInformation.py +0 -0
  51. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_ConnectionParameters.py +0 -0
  52. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_Constant.py +0 -0
  53. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_DBList.py +0 -0
  54. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_Device.py +0 -0
  55. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_GatewayContext.py +0 -0
  56. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_GatewayException.py +0 -0
  57. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_GatewayUtility.py +0 -0
  58. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRIS.py +0 -0
  59. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISConnection.py +0 -0
  60. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISEmbedded.py +0 -0
  61. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISGlobalNode.py +0 -0
  62. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISGlobalNodeView.py +0 -0
  63. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISIterator.py +0 -0
  64. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISList.py +0 -0
  65. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISNative.py +0 -0
  66. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISOREF.py +0 -0
  67. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISObject.py +0 -0
  68. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_IRISReference.py +0 -0
  69. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_InStream.py +0 -0
  70. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_LegacyIterator.py +0 -0
  71. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_ListItem.py +0 -0
  72. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_ListReader.py +0 -0
  73. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_ListWriter.py +0 -0
  74. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_LogFileStream.py +0 -0
  75. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_MessageHeader.py +0 -0
  76. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_OutStream.py +0 -0
  77. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_PrintStream.py +0 -0
  78. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_PythonGateway.py +0 -0
  79. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/_SharedMemorySocket.py +0 -0
  80. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/__init__.py +0 -0
  81. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/__main__.py +0 -0
  82. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_Column.py +0 -0
  83. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_DBAPI.py +0 -0
  84. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_Descriptor.py +0 -0
  85. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_IRISStream.py +0 -0
  86. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_Message.py +0 -0
  87. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_Parameter.py +0 -0
  88. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_ParameterCollection.py +0 -0
  89. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_ResultSetRow.py +0 -0
  90. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/_SQLType.py +0 -0
  91. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/__init__.py +0 -0
  92. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/preparser/_PreParser.py +0 -0
  93. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/preparser/_Scanner.py +0 -0
  94. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/preparser/_Token.py +0 -0
  95. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/preparser/_TokenList.py +0 -0
  96. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/dbapi/preparser/__init__.py +0 -0
  97. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_BusinessHost.py +0 -0
  98. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_BusinessOperation.py +0 -0
  99. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_BusinessProcess.py +0 -0
  100. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_BusinessService.py +0 -0
  101. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_Common.py +0 -0
  102. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_Director.py +0 -0
  103. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_IRISBusinessOperation.py +0 -0
  104. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_IRISBusinessService.py +0 -0
  105. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_IRISInboundAdapter.py +0 -0
  106. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_IRISOutboundAdapter.py +0 -0
  107. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_InboundAdapter.py +0 -0
  108. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_Message.py +0 -0
  109. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/_OutboundAdapter.py +0 -0
  110. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/intersystems_iris/pex/__init__.py +0 -0
  111. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/__main__.py +0 -0
  112. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_async_request.py +0 -0
  113. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_business_host.py +0 -0
  114. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_business_operation.py +0 -0
  115. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_business_process.py +0 -0
  116. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_business_service.py +0 -0
  117. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_cli.py +0 -0
  118. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_decorators.py +0 -0
  119. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_director.py +0 -0
  120. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_dispatch.py +0 -0
  121. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_inbound_adapter.py +0 -0
  122. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_outbound_adapter.py +0 -0
  123. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_private_session_duplex.py +0 -0
  124. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/_private_session_process.py +0 -0
  125. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/BusinessOperation.cls +0 -0
  126. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/BusinessProcess.cls +0 -0
  127. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/BusinessService.cls +0 -0
  128. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Common.cls +0 -0
  129. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Director.cls +0 -0
  130. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Duplex/Operation.cls +0 -0
  131. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Duplex/Process.cls +0 -0
  132. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Duplex/Service.cls +0 -0
  133. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/InboundAdapter.cls +0 -0
  134. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Message/JSONSchema.cls +0 -0
  135. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Message.cls +0 -0
  136. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/OutboundAdapter.cls +0 -0
  137. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/PickleMessage.cls +0 -0
  138. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/PrivateSession/Duplex.cls +0 -0
  139. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/PrivateSession/Message/Ack.cls +0 -0
  140. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/PrivateSession/Message/Poll.cls +0 -0
  141. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/PrivateSession/Message/Start.cls +0 -0
  142. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/PrivateSession/Message/Stop.cls +0 -0
  143. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Service/WSGI.cls +0 -0
  144. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Test.cls +0 -0
  145. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/cls/IOP/Utils.cls +0 -0
  146. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iop/wsgi/handlers.py +0 -0
  147. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
  148. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
  149. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
  150. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -0
  151. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/irisnative/_IRISNative.py +0 -0
  152. {iris_pex_embedded_python-3.4.0b1 → iris_pex_embedded_python-3.4.0b3}/src/irisnative/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.4.0b1
3
+ Version: 3.4.0b3
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License
@@ -3,7 +3,7 @@ requires = ["setuptools", "wheel"]
3
3
 
4
4
  [project]
5
5
  name = "iris_pex_embedded_python"
6
- version = "3.4.0b1"
6
+ version = "3.4.0b3"
7
7
  description = "Iris Interoperability based on Embedded Python"
8
8
  readme = "README.md"
9
9
  authors = [
@@ -53,3 +53,6 @@ exclude = ["tests*"]
53
53
 
54
54
  [tool.setuptools.package-data]
55
55
  "*" = ["*.cls"]
56
+
57
+ [tool.pytest.ini_options]
58
+ asyncio_default_fixture_loop_scope = "class"
@@ -6,7 +6,7 @@ from iop._business_operation import _BusinessOperation
6
6
  from iop._inbound_adapter import _InboundAdapter
7
7
  from iop._outbound_adapter import _OutboundAdapter
8
8
  from iop._message import _Message
9
- from iop._pickle_message import _PickleMessage
9
+ from iop._message import _PickleMessage
10
10
  from iop._director import _Director
11
11
  from iop._utils import _Utils
12
12
 
@@ -3,10 +3,8 @@ from iop._business_process import _BusinessProcess
3
3
  from iop._business_service import _BusinessService
4
4
  from iop._director import _Director
5
5
  from iop._inbound_adapter import _InboundAdapter
6
- from iop._message import _Message
7
- from iop._pydantic_message import _PydanticMessage
6
+ from iop._message import _Message, _PickleMessage, _PydanticMessage, _PydanticPickleMessage
8
7
  from iop._outbound_adapter import _OutboundAdapter
9
- from iop._pickle_message import _PickleMessage
10
8
  from iop._private_session_duplex import _PrivateSessionDuplex
11
9
  from iop._private_session_process import _PrivateSessionProcess
12
10
  from iop._utils import _Utils
@@ -23,4 +21,5 @@ class DuplexProcess(_PrivateSessionProcess): pass
23
21
  class Message(_Message): pass
24
22
  class PickleMessage(_PickleMessage): pass
25
23
  class PydanticMessage(_PydanticMessage): pass
24
+ class PydanticPickleMessage(_PydanticPickleMessage): pass
26
25
  class Director(_Director): pass
@@ -17,7 +17,19 @@ class _Common(metaclass=abc.ABCMeta):
17
17
  INFO_URL: ClassVar[str]
18
18
  ICON_URL: ClassVar[str]
19
19
  iris_handle: Any = None
20
- log_to_console: bool = False
20
+ _log_to_console: bool = False
21
+
22
+ @property
23
+ def log_to_console(self) -> bool:
24
+ return self._log_to_console
25
+
26
+ @log_to_console.setter
27
+ def log_to_console(self, value: bool) -> None:
28
+ self._log_to_console = value
29
+ self.logger = LogManager.get_logger(self.__class__.__name__,value)
30
+
31
+ def __init__(self):
32
+ self.logger = LogManager.get_logger(self.__class__.__name__)
21
33
 
22
34
  # Lifecycle methods
23
35
  def on_init(self) -> None:
@@ -172,7 +184,7 @@ class _Common(metaclass=abc.ABCMeta):
172
184
  except:
173
185
  pass
174
186
  return ret
175
-
187
+
176
188
  # Logging methods
177
189
  def _log(self) -> Tuple[str, Optional[str]]:
178
190
  """Get class and method name for logging.
@@ -189,15 +201,27 @@ class _Common(metaclass=abc.ABCMeta):
189
201
  pass
190
202
  return current_class, current_method
191
203
 
192
- @property
193
- def logger(self) -> logging.Logger:
194
- """Get a logger instance for this component.
204
+ def _logging(self, message: str, level: int, to_console: Optional[bool] = None) -> None:
205
+ """Write log entry.
195
206
 
196
- Returns:
197
- Logger configured for IRIS integration
207
+ Args:
208
+ message: Message to log
209
+ level: Log level
210
+ to_console: If True, log to console instead of IRIS
198
211
  """
199
- class_name, method_name = self._log()
200
- return LogManager.get_logger(class_name, method_name, self.log_to_console)
212
+ current_class, current_method = self._log()
213
+ if to_console is None:
214
+ to_console = self.log_to_console
215
+ if level == logging.DEBUG:
216
+ self.logger.debug(message, extra={'to_console': to_console, 'class_name': current_class, 'method_name': current_method})
217
+ elif level == logging.INFO:
218
+ self.logger.info(message, extra={'to_console': to_console, 'class_name': current_class, 'method_name': current_method})
219
+ elif level == logging.CRITICAL:
220
+ self.logger.critical(message, extra={'to_console': to_console, 'class_name': current_class, 'method_name': current_method})
221
+ elif level == logging.WARNING:
222
+ self.logger.warning(message, extra={'to_console': to_console, 'class_name': current_class, 'method_name': current_method})
223
+ elif level == logging.ERROR:
224
+ self.logger.error(message, extra={'to_console': to_console, 'class_name': current_class, 'method_name': current_method})
201
225
 
202
226
  def trace(self, message: str, to_console: Optional[bool] = None) -> None:
203
227
  """Write trace log entry.
@@ -206,8 +230,7 @@ class _Common(metaclass=abc.ABCMeta):
206
230
  message: Message to log
207
231
  to_console: If True, log to console instead of IRIS
208
232
  """
209
- self.logger.debug(message, extra={'to_console': to_console})
210
-
233
+ self._logging(message, logging.DEBUG, to_console)
211
234
 
212
235
  def log_info(self, message: str, to_console: Optional[bool] = None) -> None:
213
236
  """Write info log entry.
@@ -216,7 +239,7 @@ class _Common(metaclass=abc.ABCMeta):
216
239
  message: Message to log
217
240
  to_console: If True, log to console instead of IRIS
218
241
  """
219
- self.logger.info(message, extra={'to_console': to_console})
242
+ self._logging(message, logging.INFO, to_console)
220
243
 
221
244
  def log_alert(self, message: str, to_console: Optional[bool] = None) -> None:
222
245
  """Write alert log entry.
@@ -225,7 +248,7 @@ class _Common(metaclass=abc.ABCMeta):
225
248
  message: Message to log
226
249
  to_console: If True, log to console instead of IRIS
227
250
  """
228
- self.logger.critical(message, extra={'to_console': to_console})
251
+ self._logging(message, logging.CRITICAL, to_console)
229
252
 
230
253
  def log_warning(self, message: str, to_console: Optional[bool] = None) -> None:
231
254
  """Write warning log entry.
@@ -234,7 +257,7 @@ class _Common(metaclass=abc.ABCMeta):
234
257
  message: Message to log
235
258
  to_console: If True, log to console instead of IRIS
236
259
  """
237
- self.logger.warning(message, extra={'to_console': to_console})
260
+ self._logging(message, logging.WARNING, to_console)
238
261
 
239
262
  def log_error(self, message: str, to_console: Optional[bool] = None) -> None:
240
263
  """Write error log entry.
@@ -243,7 +266,7 @@ class _Common(metaclass=abc.ABCMeta):
243
266
  message: Message to log
244
267
  to_console: If True, log to console instead of IRIS
245
268
  """
246
- self.logger.error(message, extra={'to_console': to_console})
269
+ self._logging(message, logging.ERROR, to_console)
247
270
 
248
271
  def log_assert(self, message: str) -> None:
249
272
  """Write a log entry of type "assert". Log entries can be viewed in the management portal.
@@ -1,3 +1,4 @@
1
+ import traceback
1
2
  import iris
2
3
  import logging
3
4
  from typing import Optional, Tuple
@@ -6,7 +7,7 @@ class LogManager:
6
7
  """Manages logging integration between Python's logging module and IRIS."""
7
8
 
8
9
  @staticmethod
9
- def get_logger(class_name: str, method_name: Optional[str] = None, to_console: bool = False) -> logging.Logger:
10
+ def get_logger(class_name: str, to_console: bool = False) -> logging.Logger:
10
11
  """Get a logger instance configured for IRIS integration.
11
12
 
12
13
  Args:
@@ -17,11 +18,11 @@ class LogManager:
17
18
  Returns:
18
19
  Logger instance configured for IRIS integration
19
20
  """
20
- logger = logging.getLogger(f"{class_name}.{method_name}" if method_name else class_name)
21
+ logger = logging.Logger(f"{class_name}")
21
22
 
22
23
  # Only add handler if none exists
23
24
  if not logger.handlers:
24
- handler = IRISLogHandler(class_name, method_name, to_console)
25
+ handler = IRISLogHandler(to_console=to_console)
25
26
  formatter = logging.Formatter('%(message)s')
26
27
  handler.setFormatter(formatter)
27
28
  logger.addHandler(handler)
@@ -33,17 +34,9 @@ class LogManager:
33
34
  class IRISLogHandler(logging.Handler):
34
35
  """Custom logging handler that routes Python logs to IRIS logging system."""
35
36
 
36
- def __init__(self, class_name: str, method_name: Optional[str] = None, to_console: bool = False):
37
- """Initialize the handler with context information.
38
-
39
- Args:
40
- class_name: Name of the class logging the message
41
- method_name: Optional name of the method logging the message
42
- console: If True, log to the console instead of IRIS
43
- """
37
+ def __init__(self, to_console: bool = False):
38
+ """Initialize the IRIS logging handler."""
44
39
  super().__init__()
45
- self.class_name = class_name
46
- self.method_name = method_name
47
40
  self.to_console = to_console
48
41
 
49
42
  # Map Python logging levels to IRIS logging methods
@@ -80,10 +73,11 @@ class IRISLogHandler(logging.Handler):
80
73
  Args:
81
74
  record: The logging record to emit
82
75
  """
83
-
84
- log_func = self.level_map.get(record.levelno, iris.cls("Ens.Util.Log").LogInfo)
76
+ class_name = record.class_name if hasattr(record, "class_name") else record.name
77
+ method_name = record.method_name if hasattr(record, "method_name") else record.funcName
85
78
  if self.to_console or (hasattr(record, "to_console") and record.to_console):
86
79
  iris.cls("%SYS.System").WriteToConsoleLog(self.format(record),
87
- 0,self.level_map_console.get(record.levelno, 0),record.name)
80
+ 0,self.level_map_console.get(record.levelno, 0),class_name+"."+method_name)
88
81
  else:
89
- log_func(self.class_name, self.method_name, self.format(record))
82
+ log_func = self.level_map.get(record.levelno, iris.cls("Ens.Util.Log").LogInfo)
83
+ log_func(class_name, method_name, self.format(record))
@@ -0,0 +1,28 @@
1
+ from typing import Any
2
+ from pydantic import BaseModel
3
+
4
+ class _Message:
5
+ """ The abstract class that is the superclass for persistent messages sent from one component to another.
6
+ This class has no properties or methods. Users subclass Message and add properties.
7
+ The IOP framework provides the persistence to objects derived from the Message class.
8
+ """
9
+ pass
10
+
11
+ class _PickleMessage:
12
+ """ The abstract class that is the superclass for persistent messages sent from one component to another.
13
+ This class has no properties or methods. Users subclass Message and add properties.
14
+ The IOP framework provides the persistence to objects derived from the Message class.
15
+ """
16
+ pass
17
+
18
+ class _PydanticMessage(BaseModel):
19
+ """Base class for Pydantic-based messages that can be serialized to IRIS."""
20
+
21
+ def __init__(self, **data: Any):
22
+ super().__init__(**data)
23
+
24
+ class _PydanticPickleMessage(BaseModel):
25
+ """Base class for Pydantic-based messages that can be serialized to IRIS."""
26
+
27
+ def __init__(self, **data: Any):
28
+ super().__init__(**data)
@@ -1,7 +1,6 @@
1
1
  import dataclasses
2
2
  from typing import Any, Type
3
- from pydantic import BaseModel
4
- from iop._message import _Message
3
+ from iop._message import _Message, _PickleMessage, _PydanticPickleMessage, BaseModel
5
4
 
6
5
 
7
6
  def is_message_instance(obj: Any) -> bool:
@@ -17,6 +16,8 @@ def is_message_instance(obj: Any) -> bool:
17
16
 
18
17
  def is_pickle_message_instance(obj: Any) -> bool:
19
18
  """Check if object is a PickleMessage instance."""
19
+ if isinstance(obj, _PydanticPickleMessage):
20
+ return True
20
21
  if is_pickle_message_class(type(obj)):
21
22
  return True
22
23
  return False
@@ -31,8 +32,6 @@ def is_iris_object_instance(obj: Any) -> bool:
31
32
 
32
33
  def is_message_class(klass: Type) -> bool:
33
34
  """Check if class is a Message type."""
34
- if issubclass(klass, BaseModel):
35
- return True
36
35
  if issubclass(klass, _Message):
37
36
  return True
38
37
  return False
@@ -41,7 +40,8 @@ def is_message_class(klass: Type) -> bool:
41
40
 
42
41
  def is_pickle_message_class(klass: Type) -> bool:
43
42
  """Check if class is a PickleMessage type."""
44
- name = f"{klass.__module__}.{klass.__qualname__}"
45
- if name in ("iop.PickleMessage", "grongier.pex.PickleMessage"):
43
+ if issubclass(klass, _PickleMessage):
46
44
  return True
47
- return any(is_pickle_message_class(c) for c in klass.__bases__)
45
+ if issubclass(klass, _PydanticPickleMessage):
46
+ return True
47
+ return False
@@ -14,6 +14,7 @@ from typing import Any, Dict, Type, Optional
14
14
  from dacite import Config, from_dict
15
15
  import iris
16
16
 
17
+ from iop._message import _PydanticPickleMessage
17
18
  from iop._utils import _Utils
18
19
  from pydantic import BaseModel
19
20
 
@@ -137,6 +138,9 @@ class MessageSerializer:
137
138
  @staticmethod
138
139
  def serialize(message: Any, use_pickle: bool = False) -> iris.cls:
139
140
  """Serializes a message to IRIS format."""
141
+ # Check for PydanticPickleMessage first
142
+ if isinstance(message, _PydanticPickleMessage):
143
+ return MessageSerializer._serialize_pickle(message)
140
144
  if isinstance(message, BaseModel):
141
145
  return (MessageSerializer._serialize_pickle(message)
142
146
  if use_pickle else MessageSerializer._serialize_json(message))
@@ -7,6 +7,7 @@ import xmltodict
7
7
  import pkg_resources
8
8
  import importlib
9
9
  import json
10
+ from iop._message import _Message, _PydanticMessage
10
11
  from dc_schema import get_schema
11
12
 
12
13
  class _Utils():
@@ -42,7 +43,12 @@ class _Utils():
42
43
 
43
44
  :param cls: The class to register
44
45
  """
45
- schema = get_schema(cls)
46
+ if issubclass(cls,_PydanticMessage):
47
+ schema = cls.model_json_schema()
48
+ elif issubclass(cls,_Message):
49
+ schema = get_schema(cls)
50
+ else:
51
+ raise ValueError("The class must be a subclass of _Message or _PydanticMessage")
46
52
  schema_name = cls.__module__ + '.' + cls.__name__
47
53
  schema_str = json.dumps(schema)
48
54
  categories = schema_name
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.4.0b1
3
+ Version: 3.4.0b3
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License
@@ -111,10 +111,8 @@ src/iop/_log_manager.py
111
111
  src/iop/_message.py
112
112
  src/iop/_message_validator.py
113
113
  src/iop/_outbound_adapter.py
114
- src/iop/_pickle_message.py
115
114
  src/iop/_private_session_duplex.py
116
115
  src/iop/_private_session_process.py
117
- src/iop/_pydantic_message.py
118
116
  src/iop/_serialization.py
119
117
  src/iop/_utils.py
120
118
  src/iop/cls/IOP/BusinessOperation.cls
@@ -1,6 +0,0 @@
1
- class _Message:
2
- """ The abstract class that is the superclass for persistent messages sent from one component to another.
3
- This class has no properties or methods. Users subclass Message and add properties.
4
- The IOP framework provides the persistence to objects derived from the Message class.
5
- """
6
- pass
@@ -1,6 +0,0 @@
1
- class _PickleMessage:
2
- """ The abstract class that is the superclass for persistent messages sent from one component to another.
3
- This class has no properties or methods. Users subclass Message and add properties.
4
- The PEX framework provides the persistence to objects derived from the Message class.
5
- """
6
- pass
@@ -1,9 +0,0 @@
1
-
2
- from typing import Any
3
- from pydantic import BaseModel
4
-
5
- class _PydanticMessage(BaseModel):
6
- """Base class for Pydantic-based messages that can be serialized to IRIS."""
7
-
8
- def __init__(self, **data: Any):
9
- super().__init__(**data)