iris-pex-embedded-python 3.1.3__tar.gz → 3.1.4__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 (149) hide show
  1. {iris_pex_embedded_python-3.1.3/src/iris_pex_embedded_python.egg-info → iris_pex_embedded_python-3.1.4}/PKG-INFO +1 -1
  2. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/pyproject.toml +1 -1
  3. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_ConnectionInformation.py +22 -20
  4. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_DBAPI.py +6 -1
  5. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_ResultSetRow.py +26 -15
  6. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/preparser/_PreParser.py +4 -1
  7. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4/src/iris_pex_embedded_python.egg-info}/PKG-INFO +1 -1
  8. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +0 -6
  9. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -1
  10. iris_pex_embedded_python-3.1.3/src/iris/__init__.py +0 -60
  11. iris_pex_embedded_python-3.1.3/src/iris/__init__.pyi +0 -236
  12. iris_pex_embedded_python-3.1.3/src/iris/_cli.py +0 -38
  13. iris_pex_embedded_python-3.1.3/src/iris/iris_ipm.py +0 -40
  14. iris_pex_embedded_python-3.1.3/src/iris/iris_ipm.pyi +0 -17
  15. iris_pex_embedded_python-3.1.3/src/iris/iris_utils.py +0 -336
  16. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/LICENSE +0 -0
  17. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/README.md +0 -0
  18. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/setup.cfg +0 -0
  19. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/setup.py +0 -0
  20. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/__init__.py +0 -0
  21. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/BusinessOperation.cls +0 -0
  22. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/BusinessProcess.cls +0 -0
  23. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/BusinessService.cls +0 -0
  24. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Common.cls +0 -0
  25. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Director.cls +0 -0
  26. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Duplex/Operation.cls +0 -0
  27. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Duplex/Process.cls +0 -0
  28. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Duplex/Service.cls +0 -0
  29. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/InboundAdapter.cls +0 -0
  30. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Message.cls +0 -0
  31. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/OutboundAdapter.cls +0 -0
  32. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/PickleMessage.cls +0 -0
  33. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls +0 -0
  34. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls +0 -0
  35. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls +0 -0
  36. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls +0 -0
  37. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls +0 -0
  38. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Test.cls +0 -0
  39. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/PEX/Utils.cls +0 -0
  40. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/cls/Grongier/Service/WSGI.cls +0 -0
  41. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/__init__.py +0 -0
  42. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/__main__.py +0 -0
  43. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/_business_host.py +0 -0
  44. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/_cli.py +0 -0
  45. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/_common.py +0 -0
  46. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/_director.py +0 -0
  47. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/_utils.py +0 -0
  48. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/grongier/pex/wsgi/handlers.py +0 -0
  49. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_BufferReader.py +0 -0
  50. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_BufferWriter.py +0 -0
  51. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_ConnectionParameters.py +0 -0
  52. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_Constant.py +0 -0
  53. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_DBList.py +0 -0
  54. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_Device.py +0 -0
  55. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_GatewayContext.py +0 -0
  56. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_GatewayException.py +0 -0
  57. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_GatewayUtility.py +0 -0
  58. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRIS.py +0 -0
  59. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISConnection.py +0 -0
  60. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISEmbedded.py +0 -0
  61. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISGlobalNode.py +0 -0
  62. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISGlobalNodeView.py +0 -0
  63. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISIterator.py +0 -0
  64. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISList.py +0 -0
  65. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISNative.py +0 -0
  66. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISOREF.py +0 -0
  67. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISObject.py +0 -0
  68. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_IRISReference.py +0 -0
  69. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_InStream.py +0 -0
  70. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_LegacyIterator.py +0 -0
  71. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_ListItem.py +0 -0
  72. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_ListReader.py +0 -0
  73. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_ListWriter.py +0 -0
  74. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_LogFileStream.py +0 -0
  75. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_MessageHeader.py +0 -0
  76. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_OutStream.py +0 -0
  77. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_PrintStream.py +0 -0
  78. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_PythonGateway.py +0 -0
  79. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/_SharedMemorySocket.py +0 -0
  80. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/__init__.py +0 -0
  81. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/__main__.py +0 -0
  82. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_Column.py +0 -0
  83. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_Descriptor.py +0 -0
  84. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_IRISStream.py +0 -0
  85. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_Message.py +0 -0
  86. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_Parameter.py +0 -0
  87. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_ParameterCollection.py +0 -0
  88. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/_SQLType.py +0 -0
  89. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/__init__.py +0 -0
  90. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/preparser/_Scanner.py +0 -0
  91. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/preparser/_Token.py +0 -0
  92. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/preparser/_TokenList.py +0 -0
  93. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/dbapi/preparser/__init__.py +0 -0
  94. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_BusinessHost.py +0 -0
  95. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_BusinessOperation.py +0 -0
  96. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_BusinessProcess.py +0 -0
  97. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_BusinessService.py +0 -0
  98. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_Common.py +0 -0
  99. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_Director.py +0 -0
  100. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_IRISBusinessOperation.py +0 -0
  101. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_IRISBusinessService.py +0 -0
  102. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_IRISInboundAdapter.py +0 -0
  103. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_IRISOutboundAdapter.py +0 -0
  104. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_InboundAdapter.py +0 -0
  105. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_Message.py +0 -0
  106. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/_OutboundAdapter.py +0 -0
  107. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/intersystems_iris/pex/__init__.py +0 -0
  108. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/__init__.py +0 -0
  109. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/__main__.py +0 -0
  110. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_business_host.py +0 -0
  111. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_business_operation.py +0 -0
  112. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_business_process.py +0 -0
  113. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_business_service.py +0 -0
  114. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_cli.py +0 -0
  115. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_common.py +0 -0
  116. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_director.py +0 -0
  117. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_inbound_adapter.py +0 -0
  118. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_message.py +0 -0
  119. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_outbound_adapter.py +0 -0
  120. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_pickle_message.py +0 -0
  121. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_private_session_duplex.py +0 -0
  122. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_private_session_process.py +0 -0
  123. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/_utils.py +0 -0
  124. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/BusinessOperation.cls +0 -0
  125. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/BusinessProcess.cls +0 -0
  126. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/BusinessService.cls +0 -0
  127. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Common.cls +0 -0
  128. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Director.cls +0 -0
  129. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Duplex/Operation.cls +0 -0
  130. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Duplex/Process.cls +0 -0
  131. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Duplex/Service.cls +0 -0
  132. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/InboundAdapter.cls +0 -0
  133. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Message.cls +0 -0
  134. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/OutboundAdapter.cls +0 -0
  135. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/PickleMessage.cls +0 -0
  136. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/PrivateSession/Duplex.cls +0 -0
  137. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/PrivateSession/Message/Ack.cls +0 -0
  138. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/PrivateSession/Message/Poll.cls +0 -0
  139. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/PrivateSession/Message/Start.cls +0 -0
  140. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/PrivateSession/Message/Stop.cls +0 -0
  141. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Service/WSGI.cls +0 -0
  142. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Test.cls +0 -0
  143. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/cls/IOP/Utils.cls +0 -0
  144. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iop/wsgi/handlers.py +0 -0
  145. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
  146. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
  147. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
  148. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/src/irisnative/_IRISNative.py +0 -0
  149. {iris_pex_embedded_python-3.1.3 → iris_pex_embedded_python-3.1.4}/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
3
+ Version: 3.1.4
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.1.3"
6
+ version = "3.1.4"
7
7
  description = "Iris Interoperability based on Embedded Python"
8
8
  readme = "README.md"
9
9
  authors = [
@@ -1,7 +1,7 @@
1
1
  import intersystems_iris._Constant
2
2
 
3
- class _ConnectionInformation(object):
4
3
 
4
+ class _ConnectionInformation(object):
5
5
  def __init__(self):
6
6
  self.protocol_version = intersystems_iris._Constant._Constant.PROTOCOL_VERSION
7
7
  self._is_unicode = True
@@ -20,9 +20,10 @@ class _ConnectionInformation(object):
20
20
  def _parse_server_version(self, server_version):
21
21
  split_1 = server_version.split("|")
22
22
  self._server_version = split_1[0]
23
- if len(split_1)>1: self._iris_install_dir = split_1[1]
23
+ if len(split_1) > 1:
24
+ self._iris_install_dir = split_1[1]
24
25
  if self._server_version.find("Version") > 0:
25
- version = server_version[server_version.find("Version")+8:]
26
+ version = server_version[server_version.find("Version") + 8 :]
26
27
  self._server_version_major = version.split(".")[0]
27
28
  self._server_version_minor = version.split(".")[1]
28
29
  return
@@ -31,24 +32,25 @@ class _ConnectionInformation(object):
31
32
  def _map_server_locale(locale):
32
33
  # we need to map IRIS locale literals to Python locale literals
33
34
  _locales = {
34
- "LATIN1": "latin_1",
35
- "LATIN2": "iso8859_2",
36
- "LATINC": "iso8859_5",
37
- "LATINA": "iso8859_6",
38
- "LATING": "iso8859_7",
39
- "LATINH": "iso8859_8",
40
- "LATINT": "iso8859_11",
41
- "LATIN9": "iso8859_15",
42
- "CP1250": "cp1250",
43
- "CP1251": "cp1251",
44
- "CP1252": "cp1252",
45
- "CP1253": "cp1253",
46
- "CP1255": "cp1255",
47
- "CP1256": "cp1256",
48
- "CP1257": "cp1257",
49
- "CP874": "cp874",
35
+ "LATIN1": "latin_1",
36
+ "LATIN2": "iso8859_2",
37
+ "LATINC": "iso8859_5",
38
+ "LATINA": "iso8859_6",
39
+ "LATING": "iso8859_7",
40
+ "LATINH": "iso8859_8",
41
+ "LATINT": "iso8859_11",
42
+ "LATIN9": "iso8859_15",
43
+ "CP1250": "cp1250",
44
+ "CP1251": "cp1251",
45
+ "CP1252": "cp1252",
46
+ "CP1253": "cp1253",
47
+ "CP1255": "cp1255",
48
+ "CP1256": "cp1256",
49
+ "CP1257": "cp1257",
50
+ "CP874": "cp874",
50
51
  "UNICODE": "utf-8",
51
52
  }
52
53
  return _locales[locale.upper()] if locale.upper() in _locales else locale
53
54
 
54
-
55
+ def __repr__(self) -> str:
56
+ return f"<{self._server_version}>"
@@ -1,3 +1,4 @@
1
+ from typing import Union
1
2
  import struct
2
3
  import copy
3
4
  import enum
@@ -25,6 +26,7 @@ from ._SQLType import SQLType
25
26
 
26
27
  from .._IRISNative import connect as native_connect
27
28
  from .._IRISEmbedded import _IRISEmbedded
29
+ from intersystems_iris._IRISConnection import _IRISConnection
28
30
 
29
31
 
30
32
  def NotImplementedErrorDBAPI(msg=None):
@@ -42,7 +44,7 @@ def embedded_connect(*args, hostname=None, port=None, namespace=None, username=N
42
44
  return connection
43
45
 
44
46
 
45
- def connect(*args, embedded=False, hostname=None, port=None, namespace=None, username=None, password=None, **kw):
47
+ def connect(*args, embedded=False, hostname=None, port=None, namespace=None, username=None, password=None, **kw) -> Union[_IRISConnection, _IRISEmbedded]:
46
48
  try:
47
49
  if not embedded:
48
50
  return native_connect(
@@ -1180,6 +1182,8 @@ class Cursor(_BaseCursor):
1180
1182
  sets = self._parameter_sets or 1
1181
1183
  self.params = list(self.params).copy()
1182
1184
  param_types = [param.type for param in self._params._params_list]
1185
+ if not self.params:
1186
+ return
1183
1187
 
1184
1188
  for i in range(sets):
1185
1189
  params = self._params.collect(i)
@@ -2149,6 +2153,7 @@ class Cursor(_BaseCursor):
2149
2153
 
2150
2154
  if retval is None:
2151
2155
  return retval
2156
+ # print('retval', retval[:])
2152
2157
  return retval.as_tuple()
2153
2158
  # return tuple(retval[:])
2154
2159
 
@@ -1,5 +1,5 @@
1
1
  import uuid
2
- from datetime import datetime, date, time
2
+ from datetime import datetime, date, time, timezone
3
3
  from collections import namedtuple
4
4
  from ._SQLType import SQLType
5
5
  from .._DBList import _DBList
@@ -11,20 +11,26 @@ from ._Column import _Column
11
11
  def from_timestamp_posix(posix):
12
12
  time = int(posix)
13
13
  if time > 0:
14
- time ^= 0x1000000000000000
14
+ time ^= 0x1000000000000000
15
15
  else:
16
- time |= 0xF000000000000000
16
+ time |= 0xF000000000000000
17
17
 
18
18
  time /= 1000000
19
19
 
20
- value = datetime.utcfromtimestamp(time).replace(tzinfo=None)
20
+ value = datetime.fromtimestamp(time, timezone.utc).replace(tzinfo=None)
21
21
  return value
22
22
 
23
+
23
24
  class _ResultSetRow:
24
25
  _locale = "latin-1"
25
26
  _connection = None
26
27
 
27
- def __init__(self, connection, columns=None, rowcount=0, ):
28
+ def __init__(
29
+ self,
30
+ connection,
31
+ columns=None,
32
+ rowcount=0,
33
+ ):
28
34
  self._connection = connection
29
35
  # index from user-inputted columns to columns received from server
30
36
  self.col_index = []
@@ -55,7 +61,7 @@ class _ResultSetRow:
55
61
  self.colCount = len(columns) if columns != None else 0
56
62
 
57
63
  # number of columns received from server, aka number of items per row
58
- #self.colCount = rowcount
64
+ # self.colCount = rowcount
59
65
 
60
66
  # list of _ListItems corresponding to the various entries in the row, plus the offset of next row's first _ListItem
61
67
  self.rowItems = None
@@ -126,9 +132,9 @@ class _ResultSetRow:
126
132
 
127
133
  def get(self):
128
134
  return self[:]
129
-
135
+
130
136
  def as_tuple(self):
131
- row = namedtuple('Row', [col.name for col in self._columns], rename=True)
137
+ row = namedtuple("Row", [col.name for col in self._columns], rename=True)
132
138
  values = self[:]
133
139
  return row(*values)
134
140
 
@@ -164,15 +170,18 @@ class _ResultSetRow:
164
170
  HOROLOG_ORDINAL = date(1840, 12, 31).toordinal()
165
171
  if item:
166
172
  item = date.fromordinal(HOROLOG_ORDINAL + item)
173
+ if ctype == SQLType.TIMESTAMP and item:
174
+ item = item + '.000' if '.' not in item else item
175
+ item = datetime.strptime(item, '%Y-%m-%d %H:%M:%S.%f')
167
176
  if ctype == SQLType.TIME_HOROLOG:
168
177
  if item:
169
178
  item = time(item // 3600, item % 3600 // 60, item % 3600 % 60)
170
179
  if ctype == SQLType.GUID:
171
180
  item = uuid.UUID(item)
172
- if ctype == SQLType.TIMESTAMP_POSIX:
181
+ if ctype == SQLType.TIMESTAMP_POSIX and item:
173
182
  item = from_timestamp_posix(item)
174
183
 
175
- if _column.tableName == 'None' and _column.schema == 'None':
184
+ if _column.tableName == "None" and _column.schema == "None":
176
185
  # Ignore for anonymous tables
177
186
  pass
178
187
  elif item is None:
@@ -285,8 +294,9 @@ class _ResultSetRow:
285
294
  rowItems[i] = curr_offset
286
295
  prev_offset = curr_offset
287
296
  except IndexError:
288
- raise IndexError("Row incomplete: " + str(self.colCount) +
289
- " items expected, but " + str(i) + " were found")
297
+ raise IndexError(
298
+ "Row incomplete: " + str(self.colCount) + " items expected, but " + str(i) + " were found"
299
+ )
290
300
  self.update(rowItems)
291
301
  return True
292
302
 
@@ -319,8 +329,9 @@ class _ResultSetRow:
319
329
  rowItems[i] = curr_offset
320
330
  prev_offset = curr_offset
321
331
  except IndexError:
322
- raise IndexError("Row incomplete: " + str(self.colCount) +
323
- " items expected, but " + str(i) + " were found")
332
+ raise IndexError(
333
+ "Row incomplete: " + str(self.colCount) + " items expected, but " + str(i) + " were found"
334
+ )
324
335
  return self.update(rowItems)
325
336
 
326
337
  def update(self, rowItems):
@@ -330,7 +341,7 @@ class _ResultSetRow:
330
341
  colIndexOffsets[idx] = rowItems[i]
331
342
  colIndexOffsets[-1] = self._last_list_item.next_offset
332
343
  self.rowItems = colIndexOffsets
333
- return self.rowItems[:self.colCount]
344
+ return self.rowItems[: self.colCount]
334
345
  self.rowItems = rowItems
335
346
  self._offsets = self.DataRow(self)
336
347
  self._new_buffer = False
@@ -580,7 +580,10 @@ class _PreParser(object):
580
580
  break
581
581
  if token.TokenType is TOKEN.CONSTANT:
582
582
  values += '?'
583
- params += [token.Lexeme]
583
+ param = token.Lexeme
584
+ if param.__len__ and param[0] == "'" and param[0] == param[-1]:
585
+ param = param[1: -1]
586
+ params += [param]
584
587
  else:
585
588
  values += token.Lexeme
586
589
  values += ' '
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.1.3
3
+ Version: 3.1.4
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License
@@ -131,12 +131,6 @@ src/iop/cls/IOP/PrivateSession/Message/Start.cls
131
131
  src/iop/cls/IOP/PrivateSession/Message/Stop.cls
132
132
  src/iop/cls/IOP/Service/WSGI.cls
133
133
  src/iop/wsgi/handlers.py
134
- src/iris/__init__.py
135
- src/iris/__init__.pyi
136
- src/iris/_cli.py
137
- src/iris/iris_ipm.py
138
- src/iris/iris_ipm.pyi
139
- src/iris/iris_utils.py
140
134
  src/iris_pex_embedded_python.egg-info/PKG-INFO
141
135
  src/iris_pex_embedded_python.egg-info/SOURCES.txt
142
136
  src/iris_pex_embedded_python.egg-info/dependency_links.txt
@@ -1,60 +0,0 @@
1
- from sys import path as __syspath
2
- import os
3
- from .iris_ipm import ipm
4
-
5
- # check for install dir in environment
6
- # environment to check is IRISINSTALLDIR
7
- # if not found, raise exception and exit
8
- # ISC_PACKAGE_INSTALLDIR - defined by default in Docker images
9
- installdir = os.environ.get('IRISINSTALLDIR') or os.environ.get('ISC_PACKAGE_INSTALLDIR')
10
- if installdir is None:
11
- raise Exception("""Cannot find InterSystems IRIS installation directory
12
- Please set IRISINSTALLDIR environment variable to the InterSystems IRIS installation directory""")
13
-
14
- # join the install dir with the bin directory
15
- __syspath.append(os.path.join(installdir, 'bin'))
16
- # also append lib/python
17
- __syspath.append(os.path.join(installdir, 'lib', 'python'))
18
-
19
- # save working directory
20
- __ospath = os.getcwd()
21
-
22
- from pythonint import *
23
-
24
- # restore working directory
25
- os.chdir(__ospath)
26
-
27
- # TODO: Figure out how to hide __syspath and __ospath from anyone that
28
- # imports iris. Tried __all__ but that only applies to this:
29
- # from iris import *
30
-
31
- #
32
- # End-of-file
33
- #
34
-
35
- def __getattr__(name):
36
- try:
37
- return globals()[name]
38
- except KeyError:
39
- return __get_iris_object__(name)
40
-
41
- def __get_iris_object__(name:str):
42
- try:
43
- # replace '_' with '%'
44
- name = name.replace('_', '%')
45
- return cls(name)
46
- except RuntimeError:
47
- return __get_iris_package__(name)
48
-
49
- def __get_iris_package__(name:str):
50
- return IrisPackage(name)
51
-
52
- class IrisPackage:
53
- def __init__(self, name:str):
54
- self.name = name
55
-
56
- def __getattr__(self, name):
57
- try:
58
- return globals()[f"{self.name}.{name}"]
59
- except KeyError:
60
- return __get_iris_object__(f"{self.name}.{name}")
@@ -1,236 +0,0 @@
1
- from __future__ import annotations
2
- from typing import Any
3
- from iris.iris_ipm import ipm
4
- from . import iris_ipm
5
- __all__ = [ 'check_status', 'cls', 'execute', 'gref', 'ipm', 'iris_ipm', 'lock', 'os', 'ref', 'routine', 'sql', 'system', 'tcommit', 'tlevel', 'trollback', 'trollbackone', 'tstart', 'unlock', 'utils']
6
- def check_status(self, status):
7
- """
8
- Raises an exception on an error status, or returns None if no error condition occurs.
9
- Example: iris.check_status(st) checks the status code st to see if it contains an error.
10
- """
11
- def cls(self, class_name):
12
- """
13
- Returns a reference to an InterSystems IRIS class.
14
- Example: iris.cls("%SYSTEM.INetInfo").LocalHostName() calls a method in the class %SYSTEM.INetInfo.
15
- """
16
- def execute(self, statements):
17
- """
18
- execute IRIS statements.
19
- Example: iris.execute("set x="Hello"\nw x,!\n") returns nothing.
20
- """
21
- def gref(self, global_name) -> global_ref:
22
- """
23
- Returns a reference to an InterSystems IRIS global.
24
- Example: g = iris.gref("^foo") sets g to a reference to global ^foo
25
- """
26
- def lock(self, lock_list, timeout_value, locktype):
27
- """
28
- Sets locks, given a list of lock names, an optional timeout value (in seconds), and an optional locktype.
29
- Example: iris.lock(["^foo","^bar"], 30, "S") sets locks "^foo" and "^bar", waiting up to 30 seconds, and using shared locks.
30
- """
31
- def ref(self, value):
32
- """
33
- Creates an iris.ref object with a specified value.
34
- Example: iris.ref("hello") creates an iris.ref object with the value "hello"
35
- """
36
- def routine(self, routine, args):
37
- """
38
- Invokes an InterSystems IRIS routine, optionally at a given tag.
39
- Example: iris.routine("Stop^SystemPerformance", "20211221_160620_test") calls tag Stop in routine ^SystemPerformance.
40
- """
41
- def tcommit(self):
42
- """
43
- Marks a successful end of an InterSystems IRIS transaction.
44
- Example: iris.commit() marks the successful end of a transaction and decrements the nesting level by 1
45
- """
46
- def tlevel(self):
47
- """
48
- Detects whether a transaction is currently in progress and returns the nesting level. Zero means not in a transaction.
49
- Example: iris.tlevel() returns the current transaction nesting level, or zero if not in a transaction
50
- """
51
- def trollback(self):
52
- """
53
- Terminates the current transaction and restores all journaled database values to their values at the start of the transaction.
54
- Example: iris.trollback() rolls back all current transactions in progress and resets the transaction nesting level to 0
55
- """
56
- def trollbackone(self):
57
- """
58
- Rolls back the current level of nested transactions, that is, the one initiated by the most recent tstart().
59
- Example: iris.trollbackone() rolls back the current level of nested transactions and decrements the nesting level by 1
60
- """
61
- def tstart(self):
62
- """
63
- Starts an InterSystems IRIS transaction.
64
- Example: iris.tstart() marks the beginning of a transaction.
65
- """
66
- def unlock(self, lock_list, timout_value, locktype):
67
- """
68
- Removes locks, given a list of lock names, an optional timeout value (in seconds), and an optional locktype.
69
- Example: iris.unlock(["^foo","^bar"], 30, "S") removes locks "^foo" and "^bar", waiting up to 30 seconds, and using shared locks.
70
- """
71
- def utils(self):
72
- """
73
- Returns a reference to the InterSystems IRIS utilities class.
74
- Example: iris.utils().$Job() returns the current job number.
75
- """
76
- # Stubs for the gref object
77
- class global_ref:
78
- def data(self, key):
79
- """
80
- Checks if a node of a global contains data and/or has descendants. The key of the node is passed as a list. Passing a key with the
81
- value None (or an empty list) indicates the root node of the global.\n
82
- You can use data() to inspect a node to see if it contains data before attempting to access that data and possibly encountering an error.
83
- The method returns 0 if the node is undefined (contains no data), 1 if the node is defined (contains data), 10 if the node is undefined
84
- but has descendants, or 11 if the node is defined and has descendants.
85
- """
86
- def get(self, key):
87
- """
88
- Gets the value stored at a node of a global. The key of the node is passed as a list. Passing a key with the value None (or an empty list)
89
- indicates the root node of the global.
90
- """
91
- def getAsBytes(self, key):
92
- """
93
- Gets a string value stored at a node of a global and converts it to the Python bytes data type. The key of the node is passed as a list.
94
- Passing a key with the value None (or an empty list) indicates the root node of the global.
95
- """
96
- def keys(self, key):
97
- """
98
- Returns the keys of a global, starting from a given key. The starting key is passed as a list. Passing an empty list indicates the root node of the global.
99
- """
100
- def kill(self, key):
101
- """
102
- Deletes the node of a global, if it exists. The key of the node is passed as a list. This also deletes any descendants of the node.
103
- Passing a key with the value None (or an empty list) indicates the root node of the global.
104
- """
105
- def order(self, key):
106
- """
107
- Returns the next key in that level of the global, starting from a given key. The starting key is passed as a list.
108
- If no key follows the starting key, order() returns None.
109
- """
110
- def orderiter(self, key):
111
- """
112
- Returns the keys and values of a global, starting from a given key, down to the next leaf node.
113
- The starting key is passed as a list. Passing an empty list indicates the root node of the global.
114
- """
115
- def query(self, key):
116
- """
117
- Traverses a global starting at the specified key, returning each key and value.
118
- The starting key is passed as a list. Passing an empty list indicates the root node of the global.
119
- """
120
- def set(self, key, value):
121
- """
122
- Sets a node in a global to a given value. The key of the node is passed as a list, and value is the value to be stored.
123
- Passing a key with the value None (or an empty list) indicates the root node of the global.
124
- """
125
- # stubs for the sql object
126
- class sql:
127
- """
128
- The sql object provides access to the InterSystems IRIS SQL API.
129
- """
130
- def exec(self, query: str) -> Any:
131
- """
132
- Execute a query
133
- """
134
- def prepare(self, query: str) -> PreparedQuery:
135
- """
136
- Prepare a query
137
- """
138
- class PreparedQuery:
139
- def execute(self, **kwargs) -> Any:
140
- """
141
- Execute a prepared query, you can pass values
142
- """
143
- # stubs for the system object
144
- class system:
145
- """
146
- The system object provides access to the InterSystems IRIS system API.
147
- The following classes are available:
148
- 'DocDB', 'Encryption', 'Error', 'Event', 'Monitor', 'Process', 'Python', 'SQL', 'SYS', 'Security', 'Semaphore', 'Status', 'Util', 'Version'
149
- """
150
- class DocDB:
151
- """
152
- The DocDB class provides access to the InterSystems IRIS Document Database API.
153
- The following methods are available:
154
- 'CreateDatabase', 'DropAllDatabases', 'DropDatabase', 'Exists', 'GetAllDatabases', 'GetDatabase', 'Help'
155
- """
156
- def CreateDatabase(self, name: str, path: str, **kwargs) -> Any:
157
- """
158
- Create a database
159
- """
160
- def DropAllDatabases(self) -> Any:
161
- """
162
- Drop all databases
163
- """
164
- def DropDatabase(self, name: str) -> Any:
165
- """
166
- Drop a database
167
- """
168
- def Exists(self, name: str) -> Any:
169
- """
170
- Check if a database exists
171
- """
172
- def GetAllDatabases(self) -> Any:
173
- """
174
- Get all databases
175
- """
176
- def GetDatabase(self, name: str) -> Any:
177
- """
178
- Get a database
179
- """
180
- def Help(self) -> Any:
181
- """
182
- Get help
183
- """
184
- def Encryption(self) -> Any:
185
- """
186
- The Encryption class provides access to the InterSystems IRIS Encryption API.
187
- """
188
- def Error(self) -> Any:
189
- """
190
- The Error class provides access to the InterSystems IRIS Error API.
191
- """
192
- def Event(self) -> Any:
193
- """
194
- The Event class provides access to the InterSystems IRIS Event API.
195
- """
196
- def Monitor(self) -> Any:
197
- """
198
- The Monitor class provides access to the InterSystems IRIS Monitor API.
199
- """
200
- def Process(self) -> Any:
201
- """
202
- The Process class provides access to the InterSystems IRIS Process API.
203
- """
204
- def Python(self) -> Any:
205
- """
206
- The Python class provides access to the InterSystems IRIS Python API.
207
- """
208
- def SQL(self) -> Any:
209
- """
210
- The SQL class provides access to the InterSystems IRIS SQL API.
211
- """
212
- def SYS(self) -> Any:
213
- """
214
- The SYS class provides access to the InterSystems IRIS SYS API.
215
- """
216
- def Security(self) -> Any:
217
- """
218
- The Security class provides access to the InterSystems IRIS Security API.
219
- """
220
- def Semaphore(self) -> Any:
221
- """
222
- The Semaphore class provides access to the InterSystems IRIS Semaphore API.
223
- """
224
- def Status(self) -> Any:
225
- """
226
- The Status class provides access to the InterSystems IRIS Status API.
227
- """
228
- def Util(self) -> Any:
229
- """
230
- The Util class provides access to the InterSystems IRIS Util API.
231
- """
232
- def Version(self) -> Any:
233
- """
234
- The Version class provides access to the InterSystems IRIS Version API.
235
- """
236
-
@@ -1,38 +0,0 @@
1
- import os
2
- import sys
3
- import argparse
4
-
5
- from . import iris_utils
6
- import iris
7
-
8
-
9
- def bind():
10
- parser = argparse.ArgumentParser()
11
- parser.add_argument("--namespace", default="")
12
-
13
- args = parser.parse_args()
14
-
15
- libpython = iris_utils.find_libpython()
16
- if not libpython:
17
- raise RuntimeError("libpython not found")
18
-
19
- iris.system.Process.SetNamespace("%SYS")
20
- config = iris.cls("Config.config").Open()
21
-
22
- # Set the new libpython path
23
- config.PythonRuntimeLibrary = libpython
24
- # Set the new PythonPath to VIRTUAL_ENV + "/lib" + "/python+" + sys.version[:4] + "/site-packages
25
- config.PythonPath = os.path.join(os.environ["VIRTUAL_ENV"], "lib", "python" + sys.version[:4], "site-packages")
26
-
27
- config._Save()
28
-
29
- def unbind():
30
- iris.system.Process.SetNamespace("%SYS")
31
- config = iris.cls("Config.config").Open()
32
-
33
- # Set the new libpython path
34
- config.PythonRuntimeLibrary = ""
35
- # Set the new PythonPath to VIRTUAL_ENV + "/lib" + "/python+" + sys.version[:4] + "/site-packages
36
- config.PythonPath = ""
37
-
38
- config._Save()
@@ -1,40 +0,0 @@
1
- def ipm(cmd, *args):
2
- """
3
- Executes shell command with IPM:
4
- Parameters
5
- ----------
6
- cmd : str
7
- The command to execute
8
- Examples
9
- --------
10
- `ipm('help')`
11
- `ipm('load /home/irisowner/dev -v')`
12
- `ipm('install webterminal')`
13
- """
14
-
15
- import multiprocessing
16
- import iris
17
-
18
- def shell(cmd, status):
19
-
20
-
21
- status.put(True)
22
-
23
- res = iris.cls("%ZPM.PackageManager").Shell(cmd)
24
- print('')
25
- if res != 1:
26
- status.get()
27
- status.put(False)
28
-
29
- manager = multiprocessing.Manager()
30
- status = manager.Queue()
31
- process = multiprocessing.Process(
32
- target=shell,
33
- args=(
34
- cmd,
35
- status,
36
- ),
37
- )
38
- process.start()
39
- process.join()
40
- return status.get()
@@ -1,17 +0,0 @@
1
- from __future__ import annotations
2
- __all__ = ['ipm']
3
- def ipm(cmd, *args):
4
- """
5
-
6
- Executes shell command with IPM:
7
- Parameters
8
- ----------
9
- cmd : str
10
- The command to execute
11
- Examples
12
- --------
13
- `ipm('help')`
14
- `ipm('load /home/irisowner/dev -v')`
15
- `ipm('install webterminal')`
16
-
17
- """