iris-pex-embedded-python 2.3.18__tar.gz → 2.3.21__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 (124) hide show
  1. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/PKG-INFO +32 -8
  2. iris_pex_embedded_python-2.3.21/pyproject.toml +49 -0
  3. iris_pex_embedded_python-2.3.21/setup.py +3 -0
  4. iris_pex_embedded_python-2.3.21/src/grongier/cls/Grongier/PEX/Common.cls +203 -0
  5. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_business_host.py +55 -1
  6. iris_pex_embedded_python-2.3.21/src/grongier/pex/wsgi/handlers.py +51 -0
  7. iris_pex_embedded_python-2.3.21/src/intersystems_iris/_IRISOREF.py +9 -0
  8. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_DBAPI.py +16 -1
  9. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_Parameter.py +2 -0
  10. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris_pex_embedded_python.egg-info/PKG-INFO +32 -8
  11. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +1 -3
  12. iris_pex_embedded_python-2.3.18/pyproject.toml +0 -0
  13. iris_pex_embedded_python-2.3.18/setup.py +0 -57
  14. iris_pex_embedded_python-2.3.18/src/grongier/cls/Grongier/PEX/Common.cls +0 -162
  15. iris_pex_embedded_python-2.3.18/src/intersystems_iris/_IRISOREF.py +0 -4
  16. iris_pex_embedded_python-2.3.18/src/iris/iris_site.py +0 -13
  17. iris_pex_embedded_python-2.3.18/src/iris/irisbuiltins.py +0 -97
  18. iris_pex_embedded_python-2.3.18/src/iris/irisloader.py +0 -199
  19. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/LICENSE +0 -0
  20. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/README.md +0 -0
  21. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/setup.cfg +0 -0
  22. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/__init__.py +0 -0
  23. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/BusinessOperation.cls +0 -0
  24. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/BusinessProcess.cls +0 -0
  25. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/BusinessService.cls +0 -0
  26. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Director.cls +0 -0
  27. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Duplex/Operation.cls +0 -0
  28. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Duplex/Process.cls +0 -0
  29. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Duplex/Service.cls +0 -0
  30. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/InboundAdapter.cls +0 -0
  31. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Message.cls +0 -0
  32. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/OutboundAdapter.cls +0 -0
  33. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/PickleMessage.cls +0 -0
  34. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls +0 -0
  35. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls +0 -0
  36. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls +0 -0
  37. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls +0 -0
  38. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls +0 -0
  39. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Test.cls +0 -0
  40. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/PEX/Utils.cls +0 -0
  41. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/cls/Grongier/Service/WSGI.cls +0 -0
  42. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/__init__.py +0 -0
  43. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/__main__.py +0 -0
  44. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_business_operation.py +0 -0
  45. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_business_process.py +0 -0
  46. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_business_service.py +0 -0
  47. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_cli.py +0 -0
  48. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_common.py +0 -0
  49. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_director.py +0 -0
  50. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_inbound_adapter.py +0 -0
  51. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_message.py +0 -0
  52. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_outbound_adapter.py +0 -0
  53. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_pickle_message.py +0 -0
  54. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_private_session_duplex.py +0 -0
  55. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_private_session_process.py +0 -0
  56. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/grongier/pex/_utils.py +0 -0
  57. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_BufferReader.py +0 -0
  58. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_BufferWriter.py +0 -0
  59. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_ConnectionInformation.py +0 -0
  60. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_ConnectionParameters.py +0 -0
  61. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_Constant.py +0 -0
  62. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_DBList.py +0 -0
  63. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_Device.py +0 -0
  64. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_GatewayContext.py +0 -0
  65. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_GatewayException.py +0 -0
  66. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_GatewayUtility.py +0 -0
  67. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRIS.py +0 -0
  68. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISConnection.py +0 -0
  69. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISEmbedded.py +0 -0
  70. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISGlobalNode.py +0 -0
  71. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISGlobalNodeView.py +0 -0
  72. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISIterator.py +0 -0
  73. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISList.py +0 -0
  74. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISNative.py +0 -0
  75. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISObject.py +0 -0
  76. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_IRISReference.py +0 -0
  77. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_InStream.py +0 -0
  78. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_LegacyIterator.py +0 -0
  79. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_ListItem.py +0 -0
  80. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_ListReader.py +0 -0
  81. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_ListWriter.py +0 -0
  82. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_LogFileStream.py +0 -0
  83. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_MessageHeader.py +0 -0
  84. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_OutStream.py +0 -0
  85. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_PrintStream.py +0 -0
  86. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_PythonGateway.py +0 -0
  87. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/_SharedMemorySocket.py +0 -0
  88. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/__init__.py +0 -0
  89. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/__main__.py +0 -0
  90. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_Column.py +0 -0
  91. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_Descriptor.py +0 -0
  92. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_IRISStream.py +0 -0
  93. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_Message.py +0 -0
  94. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_ParameterCollection.py +0 -0
  95. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_ResultSetRow.py +0 -0
  96. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/_SQLType.py +0 -0
  97. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/__init__.py +0 -0
  98. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/preparser/_PreParser.py +0 -0
  99. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/preparser/_Scanner.py +0 -0
  100. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/preparser/_Token.py +0 -0
  101. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/preparser/_TokenList.py +0 -0
  102. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/dbapi/preparser/__init__.py +0 -0
  103. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_BusinessHost.py +0 -0
  104. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_BusinessOperation.py +0 -0
  105. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_BusinessProcess.py +0 -0
  106. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_BusinessService.py +0 -0
  107. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_Common.py +0 -0
  108. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_Director.py +0 -0
  109. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_IRISBusinessOperation.py +0 -0
  110. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_IRISBusinessService.py +0 -0
  111. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_IRISInboundAdapter.py +0 -0
  112. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_IRISOutboundAdapter.py +0 -0
  113. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_InboundAdapter.py +0 -0
  114. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_Message.py +0 -0
  115. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/_OutboundAdapter.py +0 -0
  116. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/intersystems_iris/pex/__init__.py +0 -0
  117. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris/__init__.py +0 -0
  118. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris/iris_ipm.py +0 -0
  119. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
  120. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
  121. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
  122. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -0
  123. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/irisnative/_IRISNative.py +0 -0
  124. {iris_pex_embedded_python-2.3.18 → iris_pex_embedded_python-2.3.21}/src/irisnative/__init__.py +0 -0
@@ -1,12 +1,35 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iris_pex_embedded_python
3
- Version: 2.3.18
4
- Summary: iris_pex_embedded_python
5
- Home-page: https://github.com/grongierisc/interoperability-embedded-python
6
- Author: grongier
7
- Author-email: guillaume.rongier@intersystems.com
8
- License: MIT
9
- Keywords: iris_pex_embedded_python
3
+ Version: 2.3.21
4
+ Summary: Iris Interoperability based on Embedded Python
5
+ Author-email: grongier <guillaume.rongier@intersystems.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2019 InterSystems Developer Community
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: homepage, https://github.com/grongierisc/interoperability-embedded-python
29
+ Project-URL: documentation, https://github.com/grongierisc/interoperability-embedded-python/blob/master/README.md
30
+ Project-URL: repository, https://github.com/grongierisc/interoperability-embedded-python
31
+ Project-URL: issues, https://github.com/grongierisc/interoperability-embedded-python/issues
32
+ Keywords: iris,intersystems,python,embedded
10
33
  Classifier: Development Status :: 5 - Production/Stable
11
34
  Classifier: Intended Audience :: Developers
12
35
  Classifier: License :: OSI Approved :: MIT License
@@ -18,9 +41,10 @@ Classifier: Programming Language :: Python :: 3.9
18
41
  Classifier: Programming Language :: Python :: 3.10
19
42
  Classifier: Programming Language :: Python :: 3.11
20
43
  Classifier: Topic :: Utilities
21
- Requires-Python: >=3.6
22
44
  Description-Content-Type: text/markdown
23
45
  License-File: LICENSE
46
+ Requires-Dist: dacite>=1.6.0
47
+ Requires-Dist: xmltodict>=0.12.0
24
48
 
25
49
  # 1. interoperability-embedded-python
26
50
 
@@ -0,0 +1,49 @@
1
+ [build-system]
2
+ requires = ["setuptools", "wheel"]
3
+
4
+ [project]
5
+ name = "iris_pex_embedded_python"
6
+ version = "2.3.21"
7
+ description = "Iris Interoperability based on Embedded Python"
8
+ readme = "README.md"
9
+ authors = [
10
+ { name = "grongier", email = "guillaume.rongier@intersystems.com" },
11
+ ]
12
+ keywords = ["iris", "intersystems", "python", "embedded"]
13
+
14
+ classifiers = [
15
+ "Development Status :: 5 - Production/Stable",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python :: 3.6",
20
+ "Programming Language :: Python :: 3.7",
21
+ "Programming Language :: Python :: 3.8",
22
+ "Programming Language :: Python :: 3.9",
23
+ "Programming Language :: Python :: 3.10",
24
+ "Programming Language :: Python :: 3.11",
25
+ "Topic :: Utilities"
26
+ ]
27
+
28
+ dependencies = [
29
+ "dacite >=1.6.0",
30
+ "xmltodict>=0.12.0"
31
+ ]
32
+
33
+ license = { file = "LICENSE" }
34
+
35
+ [project.urls]
36
+ homepage = "https://github.com/grongierisc/interoperability-embedded-python"
37
+ documentation = "https://github.com/grongierisc/interoperability-embedded-python/blob/master/README.md"
38
+ repository = "https://github.com/grongierisc/interoperability-embedded-python"
39
+ issues = "https://github.com/grongierisc/interoperability-embedded-python/issues"
40
+
41
+ [project.scripts]
42
+ iop = "grongier.pex._cli:main"
43
+
44
+ [tool.setuptools.packages.find]
45
+ where = ["src"]
46
+ exclude = ["tests*"]
47
+
48
+ [tool.setuptools.package-data]
49
+ "*" = ["*.cls"]
@@ -0,0 +1,3 @@
1
+ from setuptools import setup
2
+
3
+ setup()
@@ -0,0 +1,203 @@
1
+ /* Copyright (c) 2021 by InterSystems Corporation.
2
+ Cambridge, Massachusetts, U.S.A. All rights reserved.
3
+ Confidential property of InterSystems Corporation. */
4
+
5
+ Include Ensemble
6
+
7
+ Class Grongier.PEX.Common [ Abstract, ClassType = "", ProcedureBlock, System = 4 ]
8
+ {
9
+
10
+ /// One or more Classpaths (separated by '|' character) needed in addition to the ones configured in the Java Gateway Service
11
+ Property %classpaths As %String(MAXLEN = "");
12
+
13
+ Property %classname As %String(MAXLEN = "");
14
+
15
+ Property %module As %String(MAXLEN = "");
16
+
17
+ Property %settings As %String(MAXLEN = "");
18
+
19
+ /// Instance of class
20
+ Property %class As %SYS.Python;
21
+
22
+ /// Get Class
23
+ Method GetClass() As %SYS.Python
24
+ {
25
+ Return ..%class
26
+ }
27
+
28
+ /// Get Classname
29
+ Method GetClassname() As %String
30
+ {
31
+ Return ..%classname
32
+ }
33
+
34
+ /// Get Classname
35
+ Method GetModule() As %String
36
+ {
37
+ Return ..%module
38
+ }
39
+
40
+ Method OnInit() As %Status
41
+ {
42
+ set tSC = $$$OK
43
+ try {
44
+ $$$ThrowOnError(..Connect())
45
+ do ..%class."_dispatch_on_init"($this)
46
+ } catch ex {
47
+ set tSC = ex.AsStatus()
48
+ }
49
+ quit tSC
50
+ }
51
+
52
+ ClassMethod SetPythonPath(pClasspaths)
53
+ {
54
+ set sys = ##class(%SYS.Python).Import("sys")
55
+
56
+ for i=0:1:(sys.path."__len__"()-1) {
57
+ Try {
58
+ if sys.path."__getitem__"(i) = pClasspaths {
59
+ do sys.path."__delitem__"(i)
60
+ }
61
+ }
62
+ Catch ex {
63
+ // do nothing
64
+ }
65
+
66
+ }
67
+ do sys.path.insert(0, pClasspaths)
68
+ }
69
+
70
+ Method Connect() As %Status
71
+ {
72
+ set tSC = $$$OK
73
+ try {
74
+
75
+ set container = $this
76
+
77
+ //set classpass
78
+ if ..%classpaths '="" {
79
+ set delimiter = $s($system.Version.GetOS()="Windows":";",1:":")
80
+ set extraClasspaths = $tr(container.%classpaths,delimiter,"|")
81
+ for i=1:1:$l(extraClasspaths,"|") {
82
+ set onePath = $p(extraClasspaths,"|",i)
83
+ set onePath = ##class(%File).NormalizeDirectory(onePath)
84
+ do ..SetPythonPath(onePath)
85
+ }
86
+ }
87
+ if $isObject(..%class)=0 {
88
+ set importlib = ##class(%SYS.Python).Import("importlib")
89
+ set builtins = ##class(%SYS.Python).Import("builtins")
90
+ set module = importlib."import_module"(..%module)
91
+ set class = builtins.getattr(module, ..%classname)
92
+ set ..%class = class."__new__"(class)
93
+ }
94
+ ;
95
+ if ..%Extends("Grongier.PEX.InboundAdapter") || ..%Extends("Grongier.PEX.OutboundAdapter") {
96
+ do ..%class."_set_iris_handles"($this,..BusinessHost)
97
+ } elseif $this.%Extends("Grongier.PEX.BusinessProcess") {
98
+ do ..%class."_set_iris_handles"($this,$$$NULLOREF)
99
+ } else {
100
+ do ..%class."_set_iris_handles"($this,..Adapter)
101
+ }
102
+ ;
103
+ do ..SetPropertyValues()
104
+ ;
105
+ try {
106
+ do ..%class."_dispatch_on_connected"($this)
107
+ } catch ex {
108
+ $$$LOGWARNING(ex.DisplayString())
109
+ }
110
+ ;
111
+ } catch ex {
112
+ set msg = $System.Status.GetOneStatusText(ex.AsStatus(),1)
113
+ set tSC = $$$ERROR($$$EnsErrGeneral,msg)
114
+ }
115
+ quit tSC
116
+ }
117
+
118
+ Method OnTearDown() As %Status
119
+ {
120
+ set tSC = $$$OK
121
+ do ..%class."_dispatch_on_tear_down"()
122
+ quit tSC
123
+ }
124
+
125
+ Method SetPropertyValues()
126
+ {
127
+ set remoteSettings = $tr(..%settings,$c(13))
128
+ for i=1:1:$l(remoteSettings,$c(10)) {
129
+ set oneLine = $p(remoteSettings,$c(10),i)
130
+ set property = $p(oneLine,"=",1) continue:property=""
131
+ set value = $p(oneLine,"=",2,*)
132
+ try {
133
+ set $property(..%class,property) = value
134
+ } catch ex {
135
+ $$$LOGWARNING(ex.DisplayString())
136
+ }
137
+ }
138
+ quit
139
+ }
140
+
141
+ Method dispatchSendRequestSync(
142
+ target,
143
+ request,
144
+ timeout,
145
+ description) As %String
146
+ {
147
+ set tSC = ..SendRequestSync(target,request,.objResponse,timeout,description)
148
+ if $$$ISERR(tSC) throw ##class(%Exception.StatusException).CreateFromStatus(tSC)
149
+ quit $g(objResponse)
150
+ }
151
+
152
+ Method dispatchSendRequestAsync(
153
+ target,
154
+ request,
155
+ description)
156
+ {
157
+ set tSC = ..SendRequestAsync(target,request,description)
158
+ if $$$ISERR(tSC) throw ##class(%Exception.StatusException).CreateFromStatus(tSC)
159
+ quit
160
+ }
161
+
162
+ ClassMethod OnGetConnections(
163
+ Output pArray As %String,
164
+ pItem As Ens.Config.Item)
165
+ {
166
+ // finds any settings of type Ens.DataType.ConfigName
167
+ do ..GetPropertyConnections(.pArray,pItem)
168
+
169
+ // Get settings
170
+ do pItem.GetModifiedSetting("%classpaths", .tClasspaths)
171
+ do pItem.GetModifiedSetting("%classname", .tClassname)
172
+ do pItem.GetModifiedSetting("%module", .tModule)
173
+
174
+ // try to instantiate class
175
+ if tClasspaths '="" {
176
+ set sys = ##class(%SYS.Python).Import("sys")
177
+ set delimiter = $s($system.Version.GetOS()="Windows":";",1:":")
178
+ set extraClasspaths = $tr(tClasspaths,delimiter,"|")
179
+ for i=1:1:$l(extraClasspaths,"|") {
180
+ set onePath = $p(extraClasspaths,"|",i)
181
+ set onePath = ##class(%File).NormalizeDirectory(onePath)
182
+ if onePath?1"$$IRISHOME"1P.E set onePath = $e($system.Util.InstallDirectory(),1,*-1)_$e(onePath,11,*)
183
+ if onePath'="" do sys.path.append(onePath)
184
+ }
185
+ }
186
+ set importlib = ##class(%SYS.Python).Import("importlib")
187
+ set builtins = ##class(%SYS.Python).Import("builtins")
188
+ set module = importlib."import_module"(tModule)
189
+ set class = builtins.getattr(module, tClassname)
190
+ set tClass = class."__new__"(class)
191
+
192
+ set tPythonList = tClass."on_get_connections"()
193
+ set tPythonListLen = tPythonList."__len__"()
194
+ for i=0:1:(tPythonListLen-1) {
195
+ set tPythonItem = tPythonList."__getitem__"(i)
196
+ set pArray(tPythonItem) = ""
197
+ #; set ^AALog(pItem.Name,tPythonItem) = ""
198
+ }
199
+
200
+ quit
201
+ }
202
+
203
+ }
@@ -8,7 +8,7 @@ import json
8
8
  import importlib
9
9
  import iris
10
10
 
11
- from inspect import signature
11
+ from inspect import signature, getsource
12
12
 
13
13
  from dacite import from_dict, Config
14
14
 
@@ -21,6 +21,7 @@ class _BusinessHost(_Common):
21
21
  """
22
22
 
23
23
  buffer:int = 64000
24
+ DISPATCH = []
24
25
 
25
26
  def input_serialzer(fonction):
26
27
  """
@@ -352,6 +353,59 @@ class _BusinessHost(_Common):
352
353
  Name of the registred Adapter
353
354
  """
354
355
  return
356
+
357
+ def on_get_connections(self) -> list:
358
+ """
359
+ The OnGetConnections() method returns all of the targets of any SendRequestSync or SendRequestAsync
360
+ calls for the class. Implement this method to allow connections between components to show up in
361
+ the interoperability UI.
362
+
363
+ Returns:
364
+ An IRISList containing all targets for this class. Default is None.
365
+ """
366
+ ## Parse the class code to find all invocations of send_request_sync and send_request_async
367
+ ## and return the targets
368
+ targer_list = []
369
+ # get the source code of the class
370
+ source = getsource(self.__class__)
371
+ # find all invocations of send_request_sync and send_request_async
372
+ for method in ['send_request_sync','send_request_async','SendRequestSync','SendRequestAsync']:
373
+ i = source.find(method)
374
+ while i != -1:
375
+ j = source.find("(",i)
376
+ if j != -1:
377
+ k = source.find(",",j)
378
+ if k != -1:
379
+ target = source[j+1:k]
380
+ if target.find("=") != -1:
381
+ # it's a keyword argument, remove the keyword
382
+ target = target[target.find("=")+1:].strip()
383
+ if target not in targer_list:
384
+ targer_list.append(target)
385
+ i = source.find(method,i+1)
386
+
387
+ for target in targer_list:
388
+ # if target is a string, remove the quotes
389
+ if target[0] == "'" and target[-1] == "'":
390
+ targer_list[targer_list.index(target)] = target[1:-1]
391
+ elif target[0] == '"' and target[-1] == '"':
392
+ targer_list[targer_list.index(target)] = target[1:-1]
393
+ # if target is a variable, try to find the value of the variable
394
+ else:
395
+ self.on_init()
396
+ try:
397
+ if target.find("self.") != -1:
398
+ # it's a class variable
399
+ targer_list[targer_list.index(target)] = getattr(self,target[target.find(".")+1:])
400
+ elif target.find(".") != -1:
401
+ # it's a class variable
402
+ targer_list[targer_list.index(target)] = getattr(getattr(self,target[:target.find(".")]),target[target.find(".")+1:])
403
+ else:
404
+ targer_list[targer_list.index(target)] = getattr(self,target)
405
+ except Exception as e:
406
+ pass
407
+
408
+ return targer_list
355
409
 
356
410
  # It's a subclass of the standard JSONEncoder class that knows how to encode date/time, decimal types,
357
411
  # and UUIDs.
@@ -0,0 +1,51 @@
1
+ from wsgiref.handlers import BaseHandler
2
+ import io
3
+ import iris
4
+
5
+ class IrisHandler(BaseHandler):
6
+ """Handler that's just initialized with streams, environment, etc.
7
+
8
+ This handler subclass is intended for synchronous HTTP/1.0 origin servers,
9
+ and handles sending the entire response output, given the correct inputs.
10
+
11
+ Usage::
12
+
13
+ handler = SimpleHandler(
14
+ inp,out,err,env, multithread=False, multiprocess=True
15
+ )
16
+ handler.run(app)"""
17
+
18
+ server_software = "IrisWSGI/0.1"
19
+ wsgi_file_wrapper = None
20
+
21
+ def __init__(self,stdin,stdout,stderr,environ,
22
+ multithread=True, multiprocess=False
23
+ ):
24
+ self.stdin = stdin
25
+ self.stdout = stdout
26
+ self.stderr = stderr
27
+ self.base_env = environ
28
+ self.wsgi_multithread = multithread
29
+ self.wsgi_multiprocess = multiprocess
30
+
31
+ def get_stdin(self):
32
+ if not self.stdin:
33
+ return None
34
+ else:
35
+ self.environ["wsgi.input"] = io.BytesIO(self.stdin)
36
+ self.environ["CONTENT_LENGTH"] = str(len(self.stdin))
37
+ return io.BytesIO(self.stdin)
38
+
39
+
40
+ def get_stderr(self):
41
+ return self.stderr
42
+
43
+ def add_cgi_vars(self):
44
+ self.environ.update(self.base_env)
45
+
46
+ def _write(self,data):
47
+ iris.cls('Grongier.Service.WSGI').write(data)
48
+
49
+ def _flush(self):
50
+ self.stdout.flush()
51
+ self._flush = self.stdout.flush
@@ -0,0 +1,9 @@
1
+ class _IRISOREF(object):
2
+ def __init__(self, oref):
3
+ self._oref = oref
4
+
5
+ def __str__(self) -> str:
6
+ return self._oref
7
+
8
+ def __repr__(self) -> str:
9
+ return f"<IRISOREF ${self._oref}>"
@@ -19,6 +19,7 @@ from intersystems_iris.dbapi._IRISStream import (
19
19
  IRISStream,
20
20
  IRISBinaryStream,
21
21
  )
22
+ from intersystems_iris._IRISOREF import _IRISOREF
22
23
  from ._SQLType import SQLType
23
24
 
24
25
  from .._IRISNative import connect as native_connect
@@ -648,7 +649,11 @@ class _BaseCursor:
648
649
 
649
650
  def _update404(self):
650
651
  with self._connection._lock:
652
+ # self._reset_cached_info()
651
653
  self._validate_parameters()
654
+ # self._prepare()
655
+ # self._validate_prepared_parameters()
656
+ # self._prepared_update_execute()
652
657
  self._send_direct_update_request()
653
658
 
654
659
  # api properties and methods
@@ -752,6 +757,12 @@ class Cursor(_BaseCursor):
752
757
  return True
753
758
  else:
754
759
  return False
760
+
761
+ def _reset_cached_info(self):
762
+ if not self._connection._preparedCache or not hasattr(self._connection._preparedCache, "__iter__"):
763
+ return
764
+ if self._parsed_statement in self._connection._preparedCache:
765
+ del self._connection._preparedCache[self._parsed_statement]
755
766
 
756
767
  def _prepare_cached(self, cached_statement):
757
768
  self._statement_id = cached_statement.statement_id
@@ -1181,11 +1192,15 @@ class Cursor(_BaseCursor):
1181
1192
  self.params[pi] = stream_oref
1182
1193
 
1183
1194
  def _send_stream(self, param_type, value):
1195
+ if isinstance(value, _IRISOREF):
1196
+ return value
1184
1197
  if not isinstance(value, str) and not isinstance(value, bytes):
1185
1198
  raise Exception(f"Invalid value type for stream, got {type(value).__name__}, expected str or bytes")
1186
1199
  stream_oref = None
1187
1200
  offset = 0
1188
1201
  full_size = len(value)
1202
+ if full_size < 3 * 1024 * 1024:
1203
+ return value
1189
1204
  with self._connection._lock:
1190
1205
  while True:
1191
1206
  size = full_size
@@ -1216,7 +1231,7 @@ class Cursor(_BaseCursor):
1216
1231
  self._in_message._read_message_sql(sequence_number, self._statement_id, 0)
1217
1232
  stream_oref = self._sqlcode = self._in_message.wire._get()
1218
1233
 
1219
- return stream_oref
1234
+ return _IRISOREF(stream_oref)
1220
1235
 
1221
1236
  def _prepared_update_execute(self):
1222
1237
  self._update_streams()
@@ -2,6 +2,7 @@ import datetime
2
2
  import decimal
3
3
  import enum
4
4
  import intersystems_iris.dbapi._Descriptor
5
+ from intersystems_iris._IRISOREF import _IRISOREF
5
6
 
6
7
 
7
8
  class ParameterMode(enum.IntEnum):
@@ -110,6 +111,7 @@ class _Parameter(intersystems_iris.dbapi._Descriptor._Descriptor):
110
111
  int: lambda v: v,
111
112
  float: lambda v: v,
112
113
  decimal.Decimal: lambda v: v,
114
+ _IRISOREF: lambda v: str(v),
113
115
  }
114
116
  func = None
115
117
  if issubclass(type(self.__value), enum.Enum):
@@ -1,12 +1,35 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iris-pex-embedded-python
3
- Version: 2.3.18
4
- Summary: iris_pex_embedded_python
5
- Home-page: https://github.com/grongierisc/interoperability-embedded-python
6
- Author: grongier
7
- Author-email: guillaume.rongier@intersystems.com
8
- License: MIT
9
- Keywords: iris_pex_embedded_python
3
+ Version: 2.3.21
4
+ Summary: Iris Interoperability based on Embedded Python
5
+ Author-email: grongier <guillaume.rongier@intersystems.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2019 InterSystems Developer Community
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: homepage, https://github.com/grongierisc/interoperability-embedded-python
29
+ Project-URL: documentation, https://github.com/grongierisc/interoperability-embedded-python/blob/master/README.md
30
+ Project-URL: repository, https://github.com/grongierisc/interoperability-embedded-python
31
+ Project-URL: issues, https://github.com/grongierisc/interoperability-embedded-python/issues
32
+ Keywords: iris,intersystems,python,embedded
10
33
  Classifier: Development Status :: 5 - Production/Stable
11
34
  Classifier: Intended Audience :: Developers
12
35
  Classifier: License :: OSI Approved :: MIT License
@@ -18,9 +41,10 @@ Classifier: Programming Language :: Python :: 3.9
18
41
  Classifier: Programming Language :: Python :: 3.10
19
42
  Classifier: Programming Language :: Python :: 3.11
20
43
  Classifier: Topic :: Utilities
21
- Requires-Python: >=3.6
22
44
  Description-Content-Type: text/markdown
23
45
  License-File: LICENSE
46
+ Requires-Dist: dacite>=1.6.0
47
+ Requires-Dist: xmltodict>=0.12.0
24
48
 
25
49
  # 1. interoperability-embedded-python
26
50
 
@@ -39,6 +39,7 @@ src/grongier/pex/_pickle_message.py
39
39
  src/grongier/pex/_private_session_duplex.py
40
40
  src/grongier/pex/_private_session_process.py
41
41
  src/grongier/pex/_utils.py
42
+ src/grongier/pex/wsgi/handlers.py
42
43
  src/intersystems_iris/_BufferReader.py
43
44
  src/intersystems_iris/_BufferWriter.py
44
45
  src/intersystems_iris/_ConnectionInformation.py
@@ -104,9 +105,6 @@ src/intersystems_iris/pex/_OutboundAdapter.py
104
105
  src/intersystems_iris/pex/__init__.py
105
106
  src/iris/__init__.py
106
107
  src/iris/iris_ipm.py
107
- src/iris/iris_site.py
108
- src/iris/irisbuiltins.py
109
- src/iris/irisloader.py
110
108
  src/iris_pex_embedded_python.egg-info/PKG-INFO
111
109
  src/iris_pex_embedded_python.egg-info/SOURCES.txt
112
110
  src/iris_pex_embedded_python.egg-info/dependency_links.txt
File without changes
@@ -1,57 +0,0 @@
1
- # Licensed under the MIT License
2
- # https://github.com/grongierisc/iris_pex_embedded_python/blob/main/LICENSE
3
-
4
- import os
5
-
6
- from setuptools import setup, find_packages
7
-
8
- def main():
9
- # Read the readme for use as the long description
10
- with open(os.path.join(os.path.abspath(os.path.dirname(__file__)),
11
- 'README.md'), encoding='utf-8') as readme_file:
12
- long_description = readme_file.read()
13
-
14
- # Do the setup
15
- setup(
16
- name='iris_pex_embedded_python',
17
- description='iris_pex_embedded_python',
18
- long_description=long_description,
19
- long_description_content_type='text/markdown',
20
- version='2.3.18',
21
- author='grongier',
22
- author_email='guillaume.rongier@intersystems.com',
23
- keywords='iris_pex_embedded_python',
24
- url='https://github.com/grongierisc/interoperability-embedded-python',
25
- license='MIT',
26
- classifiers=[
27
- 'Development Status :: 5 - Production/Stable',
28
- 'Intended Audience :: Developers',
29
- 'License :: OSI Approved :: MIT License',
30
- 'Operating System :: OS Independent',
31
- 'Programming Language :: Python :: 3.6',
32
- 'Programming Language :: Python :: 3.7',
33
- 'Programming Language :: Python :: 3.8',
34
- 'Programming Language :: Python :: 3.9',
35
- 'Programming Language :: Python :: 3.10',
36
- 'Programming Language :: Python :: 3.11',
37
- 'Topic :: Utilities'
38
- ],
39
- package_dir={'': 'src'},
40
- packages=find_packages(where='src'),
41
- package_data={'grongier.cls': ['**/*.cls']},
42
- python_requires='>=3.6',
43
- install_requires=[
44
- "dacite>=1.6.0",
45
- "xmltodict>=0.12.0",
46
- ],
47
- entry_points={
48
- 'console_scripts': [
49
- # create an iop command that point to the main of the grongier.pex package
50
- 'iop = grongier.pex._cli:main',
51
- ],
52
- }
53
- )
54
-
55
-
56
- if __name__ == '__main__':
57
- main()