iris-pex-embedded-python 4.0.1b7__tar.gz → 4.0.2b1__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.
- {iris_pex_embedded_python-4.0.1b7/src/iris_pex_embedded_python.egg-info → iris_pex_embedded_python-4.0.2b1}/PKG-INFO +1 -1
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/pyproject.toml +1 -1
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/utils.py +70 -4
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/common.py +14 -1
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/declarations.py +6 -4
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/model.py +3 -2
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/validation.py +10 -3
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1/src/iris_pex_embedded_python.egg-info}/PKG-INFO +1 -1
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/AGENTS.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/LICENSE +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/MANIFEST.in +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/README.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/agents-template.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/ai-coding.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/benchmarks.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/changelog.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/code-of-conduct.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/command-line.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/component-interaction.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/contributing.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/add-business-operation.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/add-business-process.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/add-polling-service.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/code-index.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/fhir-submission-python-client.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/hello-world-production.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/hl7v2-native-input.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/hl7v2-to-fhir-with-fhir-converter.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/index.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/production-settings-and-targets.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/remote-migration.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/credits.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/debug.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/dtl.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/example.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/getting-started/first-steps.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/getting-started/installation.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/getting-started/register-component.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/healthcare-ai-coding.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/index.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/logging.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/prod-settings.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/production-change-workflow.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/production-graph.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/python-api.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/rest-api.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/settings.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/useful-links.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/venv.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/wrapper.md +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/mkdocs.yml +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/setup.cfg +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/__main__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/formatting.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/main.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/parser.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/types.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/BusinessOperation.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/BusinessProcess.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/BusinessService.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Common.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Director.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Duplex/Operation.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Duplex/Process.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Duplex/Service.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Generator/Message/Ack.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Generator/Message/Poll.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Generator/Message/Start.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Generator/Message/StartPickle.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Generator/Message/Stop.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/InboundAdapter.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Message/JSONSchema.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Message.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/OutboundAdapter.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/PickleMessage.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/PrivateSession/Duplex.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/PrivateSession/Message/Ack.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/PrivateSession/Message/Poll.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/PrivateSession/Message/Start.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/PrivateSession/Message/Stop.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Projection.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Service/Remote/Handler.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Service/Remote/Rest/v1.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Test.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Utils.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Wrapper.cls +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/async_request.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/business_host.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/business_operation.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/business_process.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/business_service.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/common.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/debugpy.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/generator_request.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/inbound_adapter.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/log_manager.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/outbound_adapter.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/polling_business_service.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/private_session_duplex.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/private_session_process.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/settings.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/base.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/decorators.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/dispatch.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/persistent.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/serialization.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/validation.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/io.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/manifest.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/plans.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/actions.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/component.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/declarative.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/diff.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/import_.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/inspection.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/planning.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/reconstruction.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/rendering.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/runtime.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/source_inference.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/types.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/py.typed +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/director.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/environment.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/iris.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/local.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/protocol.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/remote/__init__.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/remote/client.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/remote/director.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/remote/migration.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/remote/settings.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/remote/setup.py +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
- {iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -0
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/utils.py
RENAMED
|
@@ -186,6 +186,69 @@ def _get_python_path() -> str:
|
|
|
186
186
|
return ""
|
|
187
187
|
|
|
188
188
|
|
|
189
|
+
def _migration_namespace_hint() -> str:
|
|
190
|
+
namespace = os.environ.get("IRISNAMESPACE") or os.environ.get("IOP_NAMESPACE")
|
|
191
|
+
if namespace:
|
|
192
|
+
return f"namespace {namespace!r}"
|
|
193
|
+
return "the target namespace"
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def _looks_like_missing_iris_class_error(exc: RuntimeError) -> bool:
|
|
197
|
+
message = str(exc).lower()
|
|
198
|
+
return "error finding class" in message or "iop.utils" in message
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def _format_register_component_error(
|
|
202
|
+
exc: RuntimeError,
|
|
203
|
+
*,
|
|
204
|
+
module: str,
|
|
205
|
+
classname: str,
|
|
206
|
+
path: str,
|
|
207
|
+
iris_classname: str,
|
|
208
|
+
) -> str:
|
|
209
|
+
namespace_hint = _migration_namespace_hint()
|
|
210
|
+
lines = [
|
|
211
|
+
(
|
|
212
|
+
f"Could not register IRIS proxy class {iris_classname!r} "
|
|
213
|
+
f"for Python component {module}.{classname}."
|
|
214
|
+
)
|
|
215
|
+
]
|
|
216
|
+
|
|
217
|
+
if _looks_like_missing_iris_class_error(exc):
|
|
218
|
+
lines.extend(
|
|
219
|
+
[
|
|
220
|
+
"",
|
|
221
|
+
"IRIS could not find a class required during component registration.",
|
|
222
|
+
(
|
|
223
|
+
"Most often this means the IoP support classes "
|
|
224
|
+
f"(`IOP.Utils`, `IOP.BusinessService`, etc.) are not loaded in "
|
|
225
|
+
f"{namespace_hint} yet, or migration ran before `iop --init` "
|
|
226
|
+
"completed."
|
|
227
|
+
),
|
|
228
|
+
"",
|
|
229
|
+
"Fix:",
|
|
230
|
+
f" 1. Run `iop --init` in {namespace_hint}.",
|
|
231
|
+
" 2. Re-run `iop --migrate <settings.py>`.",
|
|
232
|
+
(
|
|
233
|
+
" 3. In containers, wait for IRIS with "
|
|
234
|
+
"`/usr/irissys/dev/Container/waitReady.sh` before `iop --init`."
|
|
235
|
+
),
|
|
236
|
+
]
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
lines.extend(
|
|
240
|
+
[
|
|
241
|
+
"",
|
|
242
|
+
"Registration details:",
|
|
243
|
+
f" IRIS proxy class: {iris_classname}",
|
|
244
|
+
f" Python component: {module}.{classname}",
|
|
245
|
+
f" Python class path: {path}",
|
|
246
|
+
f" Original IRIS error: {exc}",
|
|
247
|
+
]
|
|
248
|
+
)
|
|
249
|
+
return "\n".join(lines)
|
|
250
|
+
|
|
251
|
+
|
|
189
252
|
def register_component(
|
|
190
253
|
module: str,
|
|
191
254
|
classname: str,
|
|
@@ -228,10 +291,13 @@ def register_component(
|
|
|
228
291
|
)
|
|
229
292
|
except RuntimeError as e:
|
|
230
293
|
raise RuntimeError(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
294
|
+
_format_register_component_error(
|
|
295
|
+
e,
|
|
296
|
+
module=module,
|
|
297
|
+
classname=classname,
|
|
298
|
+
path=path,
|
|
299
|
+
iris_classname=iris_classname,
|
|
300
|
+
)
|
|
235
301
|
) from e
|
|
236
302
|
|
|
237
303
|
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/common.py
RENAMED
|
@@ -3,6 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
import importlib
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
|
+
from ..components.settings import Setting
|
|
7
|
+
|
|
6
8
|
PRODUCTION_SETTING_FIELDS: dict[str, tuple[str, Any]] = {
|
|
7
9
|
"shutdown_timeout": ("ShutdownTimeout", 120),
|
|
8
10
|
"update_timeout": ("UpdateTimeout", 10),
|
|
@@ -83,11 +85,21 @@ def _adapter_type_from_class_name(class_name: str | None) -> str:
|
|
|
83
85
|
return _adapter_type_from_component_class(component_class)
|
|
84
86
|
|
|
85
87
|
|
|
88
|
+
def _setting_name(name: Any) -> str:
|
|
89
|
+
if isinstance(name, Setting) and name.name:
|
|
90
|
+
return name.name
|
|
91
|
+
return str(name)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _normalize_settings_mapping(values: Any) -> dict[str, Any]:
|
|
95
|
+
return {_setting_name(key): value for key, value in dict(values or {}).items()}
|
|
96
|
+
|
|
97
|
+
|
|
86
98
|
def _settings_to_iris(target_name: str, values: dict[str, Any]) -> list[dict[str, str]]:
|
|
87
99
|
return [
|
|
88
100
|
{
|
|
89
101
|
"@Target": target_name,
|
|
90
|
-
"@Name": name,
|
|
102
|
+
"@Name": _setting_name(name),
|
|
91
103
|
"#text": _text_value(value),
|
|
92
104
|
}
|
|
93
105
|
for name, value in values.items()
|
|
@@ -97,6 +109,7 @@ def _settings_to_iris(target_name: str, values: dict[str, Any]) -> list[dict[str
|
|
|
97
109
|
def _apply_settings_update(target: dict[str, Any], updates: Any) -> None:
|
|
98
110
|
"""Merge *updates* into *target*, treating ``None`` values as removals."""
|
|
99
111
|
for key, value in (updates or {}).items():
|
|
112
|
+
key = _setting_name(key)
|
|
100
113
|
if value is None:
|
|
101
114
|
target.pop(key, None)
|
|
102
115
|
else:
|
|
@@ -2,9 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from collections.abc import Iterable, Mapping
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any, ClassVar, Protocol
|
|
5
|
+
from typing import Any, ClassVar, Protocol, cast
|
|
6
6
|
|
|
7
|
-
from .common import SETTING_NAME_ALIASES
|
|
7
|
+
from .common import SETTING_NAME_ALIASES, _normalize_settings_mapping
|
|
8
8
|
from .types import TargetSetting
|
|
9
9
|
|
|
10
10
|
|
|
@@ -36,7 +36,9 @@ class Route:
|
|
|
36
36
|
targets = (self.targets,)
|
|
37
37
|
else:
|
|
38
38
|
try:
|
|
39
|
-
targets = tuple(
|
|
39
|
+
targets = tuple(
|
|
40
|
+
cast(Iterable[str | _NamedRouteTarget], self.targets)
|
|
41
|
+
)
|
|
40
42
|
except TypeError as exc:
|
|
41
43
|
raise TypeError(
|
|
42
44
|
f"Route {self.target_setting_name!r} targets must be an item name, "
|
|
@@ -174,7 +176,7 @@ def _mapping(
|
|
|
174
176
|
item_name: str,
|
|
175
177
|
) -> dict[str, Any]:
|
|
176
178
|
try:
|
|
177
|
-
return
|
|
179
|
+
return _normalize_settings_mapping(values)
|
|
178
180
|
except (TypeError, ValueError) as exc:
|
|
179
181
|
raise TypeError(
|
|
180
182
|
f"Production item {item_name!r} {field_name} must be a mapping"
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/model.py
RENAMED
|
@@ -9,6 +9,7 @@ from .common import (
|
|
|
9
9
|
_adapter_type_from_component_class,
|
|
10
10
|
_apply_settings_update,
|
|
11
11
|
_auto_proxy_class_name,
|
|
12
|
+
_normalize_settings_mapping,
|
|
12
13
|
)
|
|
13
14
|
from .component import ComponentRef
|
|
14
15
|
from .declarative import _DeclarativeProductionMixin
|
|
@@ -432,8 +433,8 @@ class Production(_DeclarativeProductionMixin):
|
|
|
432
433
|
comment=comment,
|
|
433
434
|
log_trace_events=log_trace_events,
|
|
434
435
|
schedule=schedule,
|
|
435
|
-
host_settings=
|
|
436
|
-
adapter_settings=
|
|
436
|
+
host_settings=_normalize_settings_mapping(settings),
|
|
437
|
+
adapter_settings=_normalize_settings_mapping(adapter_settings),
|
|
437
438
|
)
|
|
438
439
|
self._add_item(ref)
|
|
439
440
|
return ref
|
|
@@ -8,6 +8,7 @@ from .common import (
|
|
|
8
8
|
PRODUCTION_SETTING_FIELDS_BY_IRIS,
|
|
9
9
|
PRODUCTION_SETTING_NAMES,
|
|
10
10
|
SETTING_NAME_ALIASES,
|
|
11
|
+
_normalize_settings_mapping,
|
|
11
12
|
)
|
|
12
13
|
from .import_ import _as_list, _production_payload, _split_settings
|
|
13
14
|
from .types import TargetSetting
|
|
@@ -183,14 +184,18 @@ def _validate_component_ref(item: Any) -> list[ProductionValidationIssue]:
|
|
|
183
184
|
|
|
184
185
|
issues.extend(
|
|
185
186
|
_validate_settings(
|
|
186
|
-
settings=
|
|
187
|
+
settings=_normalize_settings_mapping(
|
|
188
|
+
getattr(item, "host_settings", {}) or {}
|
|
189
|
+
),
|
|
187
190
|
path_prefix=f"items.{item_name}.settings.Host",
|
|
188
191
|
local_class=component_class,
|
|
189
192
|
iris_class_name=class_name,
|
|
190
193
|
)
|
|
191
194
|
)
|
|
192
195
|
|
|
193
|
-
adapter_settings =
|
|
196
|
+
adapter_settings = _normalize_settings_mapping(
|
|
197
|
+
getattr(item, "adapter_settings", {}) or {}
|
|
198
|
+
)
|
|
194
199
|
if str(getattr(item, "kind", "")) == "process" and adapter_settings:
|
|
195
200
|
issues.append(
|
|
196
201
|
ProductionValidationIssue(
|
|
@@ -355,7 +360,9 @@ def _validate_target_setting_values(production: Any) -> list[ProductionValidatio
|
|
|
355
360
|
issues: list[ProductionValidationIssue] = []
|
|
356
361
|
for item in items:
|
|
357
362
|
item_name = str(getattr(item, "name", ""))
|
|
358
|
-
host_settings =
|
|
363
|
+
host_settings = _normalize_settings_mapping(
|
|
364
|
+
getattr(item, "host_settings", {}) or {}
|
|
365
|
+
)
|
|
359
366
|
for setting_name in _target_setting_names(item):
|
|
360
367
|
if setting_name not in host_settings:
|
|
361
368
|
continue
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/agents-template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/code-of-conduct.md
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/component-interaction.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/code-index.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/cookbooks/index.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/healthcare-ai-coding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/docs/production-graph.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/__init__.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cli/formatting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Common.cls
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Director.cls
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Message.cls
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Projection.cls
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Test.cls
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Utils.cls
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/cls/IOP/Wrapper.cls
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/common.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/debugpy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/components/settings.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/__init__.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/base.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/decorators.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/dispatch.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/persistent.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/messages/validation.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/__init__.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/io.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/manifest.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/migration/plans.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/__init__.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/actions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/diff.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/import_.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/planning.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/runtime.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/production/types.py
RENAMED
|
File without changes
|
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/__init__.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/director.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/environment.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/iris.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/local.py
RENAMED
|
File without changes
|
{iris_pex_embedded_python-4.0.1b7 → iris_pex_embedded_python-4.0.2b1}/src/iop/runtime/protocol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|