iris-pex-embedded-python 4.0.1b2__tar.gz → 4.0.1b3__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.
Files changed (145) hide show
  1. {iris_pex_embedded_python-4.0.1b2/src/iris_pex_embedded_python.egg-info → iris_pex_embedded_python-4.0.1b3}/PKG-INFO +1 -1
  2. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/pyproject.toml +1 -1
  3. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/dispatch.py +38 -1
  4. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3/src/iris_pex_embedded_python.egg-info}/PKG-INFO +1 -1
  5. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/AGENTS.md +0 -0
  6. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/LICENSE +0 -0
  7. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/MANIFEST.in +0 -0
  8. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/README.md +0 -0
  9. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/agents-template.md +0 -0
  10. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/ai-coding.md +0 -0
  11. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/benchmarks.md +0 -0
  12. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/changelog.md +0 -0
  13. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/code-of-conduct.md +0 -0
  14. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/command-line.md +0 -0
  15. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/component-interaction.md +0 -0
  16. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/contributing.md +0 -0
  17. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/add-business-operation.md +0 -0
  18. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/add-business-process.md +0 -0
  19. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/add-polling-service.md +0 -0
  20. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/code-index.md +0 -0
  21. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/fhir-submission-python-client.md +0 -0
  22. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/hello-world-production.md +0 -0
  23. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/hl7v2-native-input.md +0 -0
  24. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/hl7v2-to-fhir-with-fhir-converter.md +0 -0
  25. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/index.md +0 -0
  26. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/production-settings-and-targets.md +0 -0
  27. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/cookbooks/remote-migration.md +0 -0
  28. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/credits.md +0 -0
  29. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/debug.md +0 -0
  30. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/dtl.md +0 -0
  31. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/example.md +0 -0
  32. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/getting-started/first-steps.md +0 -0
  33. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/getting-started/installation.md +0 -0
  34. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/getting-started/register-component.md +0 -0
  35. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/healthcare-ai-coding.md +0 -0
  36. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/index.md +0 -0
  37. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/logging.md +0 -0
  38. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/prod-settings.md +0 -0
  39. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/production-change-workflow.md +0 -0
  40. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/production-graph.md +0 -0
  41. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/python-api.md +0 -0
  42. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/rest-api.md +0 -0
  43. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/settings.md +0 -0
  44. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/useful-links.md +0 -0
  45. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/venv.md +0 -0
  46. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/docs/wrapper.md +0 -0
  47. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/mkdocs.yml +0 -0
  48. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/setup.cfg +0 -0
  49. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/__init__.py +0 -0
  50. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/__main__.py +0 -0
  51. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cli/__init__.py +0 -0
  52. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cli/formatting.py +0 -0
  53. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cli/main.py +0 -0
  54. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cli/parser.py +0 -0
  55. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cli/types.py +0 -0
  56. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/BusinessOperation.cls +0 -0
  57. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/BusinessProcess.cls +0 -0
  58. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/BusinessService.cls +0 -0
  59. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Common.cls +0 -0
  60. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Director.cls +0 -0
  61. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Duplex/Operation.cls +0 -0
  62. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Duplex/Process.cls +0 -0
  63. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Duplex/Service.cls +0 -0
  64. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Generator/Message/Ack.cls +0 -0
  65. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Generator/Message/Poll.cls +0 -0
  66. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Generator/Message/Start.cls +0 -0
  67. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Generator/Message/StartPickle.cls +0 -0
  68. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Generator/Message/Stop.cls +0 -0
  69. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/InboundAdapter.cls +0 -0
  70. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Message/JSONSchema.cls +0 -0
  71. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Message.cls +0 -0
  72. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/OutboundAdapter.cls +0 -0
  73. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/PickleMessage.cls +0 -0
  74. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/PrivateSession/Duplex.cls +0 -0
  75. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/PrivateSession/Message/Ack.cls +0 -0
  76. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/PrivateSession/Message/Poll.cls +0 -0
  77. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/PrivateSession/Message/Start.cls +0 -0
  78. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/PrivateSession/Message/Stop.cls +0 -0
  79. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Projection.cls +0 -0
  80. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Service/Remote/Handler.cls +0 -0
  81. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Service/Remote/Rest/v1.cls +0 -0
  82. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Test.cls +0 -0
  83. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Utils.cls +0 -0
  84. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/cls/IOP/Wrapper.cls +0 -0
  85. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/__init__.py +0 -0
  86. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/async_request.py +0 -0
  87. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/business_host.py +0 -0
  88. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/business_operation.py +0 -0
  89. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/business_process.py +0 -0
  90. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/business_service.py +0 -0
  91. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/common.py +0 -0
  92. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/debugpy.py +0 -0
  93. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/generator_request.py +0 -0
  94. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/inbound_adapter.py +0 -0
  95. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/log_manager.py +0 -0
  96. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/outbound_adapter.py +0 -0
  97. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/polling_business_service.py +0 -0
  98. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/private_session_duplex.py +0 -0
  99. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/private_session_process.py +0 -0
  100. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/components/settings.py +0 -0
  101. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/__init__.py +0 -0
  102. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/base.py +0 -0
  103. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/decorators.py +0 -0
  104. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/persistent.py +0 -0
  105. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/serialization.py +0 -0
  106. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/messages/validation.py +0 -0
  107. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/migration/__init__.py +0 -0
  108. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/migration/io.py +0 -0
  109. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/migration/manifest.py +0 -0
  110. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/migration/plans.py +0 -0
  111. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/migration/utils.py +0 -0
  112. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/__init__.py +0 -0
  113. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/actions.py +0 -0
  114. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/common.py +0 -0
  115. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/component.py +0 -0
  116. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/declarations.py +0 -0
  117. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/declarative.py +0 -0
  118. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/diff.py +0 -0
  119. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/import_.py +0 -0
  120. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/inspection.py +0 -0
  121. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/model.py +0 -0
  122. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/planning.py +0 -0
  123. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/reconstruction.py +0 -0
  124. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/rendering.py +0 -0
  125. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/runtime.py +0 -0
  126. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/source_inference.py +0 -0
  127. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/types.py +0 -0
  128. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/production/validation.py +0 -0
  129. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/__init__.py +0 -0
  130. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/director.py +0 -0
  131. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/environment.py +0 -0
  132. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/iris.py +0 -0
  133. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/local.py +0 -0
  134. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/protocol.py +0 -0
  135. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/remote/__init__.py +0 -0
  136. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/remote/client.py +0 -0
  137. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/remote/director.py +0 -0
  138. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/remote/migration.py +0 -0
  139. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/remote/settings.py +0 -0
  140. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iop/runtime/remote/setup.py +0 -0
  141. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +0 -0
  142. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
  143. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
  144. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
  145. {iris_pex_embedded_python-4.0.1b2 → iris_pex_embedded_python-4.0.1b3}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris_pex_embedded_python
3
- Version: 4.0.1b2
3
+ Version: 4.0.1b3
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 = "4.0.1b2"
6
+ version = "4.0.1b3"
7
7
  description = "Iris Interoperability based on Embedded Python"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.10"
@@ -306,8 +306,9 @@ def get_handler_info(host: Any, method_name: str) -> tuple[str, str] | None:
306
306
  if len(params) != 1:
307
307
  return None
308
308
 
309
+ method = getattr(host, method_name)
309
310
  param: Parameter = next(iter(params.values()))
310
- annotation = param.annotation
311
+ annotation = _resolve_annotation(host, method, param.annotation)
311
312
 
312
313
  if annotation == Parameter.empty:
313
314
  return None
@@ -322,6 +323,42 @@ def get_handler_info(host: Any, method_name: str) -> tuple[str, str] | None:
322
323
  return None
323
324
 
324
325
 
326
+ def _resolve_annotation(host: Any, method: Callable, annotation: Any) -> Any:
327
+ if not isinstance(annotation, str):
328
+ return annotation
329
+
330
+ globalns = _annotation_globalns(method)
331
+ localns = _annotation_localns(host)
332
+
333
+ try:
334
+ resolved = eval(annotation, globalns, localns) # noqa: B307
335
+ except Exception:
336
+ resolved = annotation
337
+
338
+ if isinstance(resolved, str):
339
+ # Quoted postponed annotations evaluate to a string first.
340
+ try:
341
+ resolved = eval(resolved, globalns, localns) # noqa: B307
342
+ except Exception:
343
+ if "." in resolved:
344
+ return resolved
345
+ return Parameter.empty
346
+
347
+ return resolved
348
+
349
+
350
+ def _annotation_globalns(method: Callable) -> dict[str, Any]:
351
+ function = getattr(method, "__func__", method)
352
+ return getattr(function, "__globals__", {})
353
+
354
+
355
+ def _annotation_localns(host: Any) -> dict[str, Any]:
356
+ namespace: dict[str, Any] = {}
357
+ for klass in reversed(type(host).__mro__):
358
+ namespace.update(vars(klass))
359
+ return namespace
360
+
361
+
325
362
  def _message_class_name(message_type: Any) -> str | None:
326
363
  if isinstance(message_type, str):
327
364
  return message_type
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris_pex_embedded_python
3
- Version: 4.0.1b2
3
+ Version: 4.0.1b3
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License