thundergraph-model 1.4.1__tar.gz → 1.4.2__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 (341) hide show
  1. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/PKG-INFO +1 -1
  2. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/pyproject.toml +1 -1
  3. thundergraph_model-1.4.2/tests/integration/structural_models/test_requirement_class_dedupe.py +269 -0
  4. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/configured_model.py +175 -40
  5. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.github/ISSUE_TEMPLATE/01-bug_report.yml +0 -0
  6. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.github/ISSUE_TEMPLATE/02-feature_request.yml +0 -0
  7. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.github/ISSUE_TEMPLATE/03-documentation.yml +0 -0
  8. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  9. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.github/pull_request_template.md +0 -0
  10. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.github/workflows/publish.yml +0 -0
  11. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/.gitignore +0 -0
  12. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/CHANGELOG.md +0 -0
  13. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/LICENSE +0 -0
  14. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/PYPI.md +0 -0
  15. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/README.md +0 -0
  16. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/behavior_methodology.md +0 -0
  17. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/behavioral_projection_plan.md +0 -0
  18. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/brainstorm.md +0 -0
  19. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/conceptual_requirements.md +0 -0
  20. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/evaluation_api_facade_implementation_plan.md +0 -0
  21. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/execution_methodology.md +0 -0
  22. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/graph_compiler_nested_requirement_owner_fix_plan.md +0 -0
  23. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/implementation_plan.md +0 -0
  24. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/logical_architecture.md +0 -0
  25. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/model_prototype_sketch.py +0 -0
  26. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/requirement_composition_and_naming_implementation_plan.md +0 -0
  27. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/system_authoring_restrictions_implementation_plan.md +0 -0
  28. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/use_cases.md +0 -0
  29. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/generation_docs/v0_api.md +0 -0
  30. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/release/v1.2.0.md +0 -0
  31. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/release/v1.2.1.md +0 -0
  32. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/IMPLEMENTATION_PLAN.md +0 -0
  33. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/README.md +0 -0
  34. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.buildinfo +0 -0
  35. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.buildinfo.bak +0 -0
  36. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/api/api_analysis.doctree +0 -0
  37. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/api/api_execution.doctree +0 -0
  38. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/api/api_integrations.doctree +0 -0
  39. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/api/api_model.doctree +0 -0
  40. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/api/api_root.doctree +0 -0
  41. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/api/index.doctree +0 -0
  42. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/concepts_behavior.doctree +0 -0
  43. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/developer/architecture.doctree +0 -0
  44. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/developer/contributing.doctree +0 -0
  45. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/developer/extension_playbook.doctree +0 -0
  46. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/developer/releasing.doctree +0 -0
  47. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/developer/repository_map.doctree +0 -0
  48. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/developer/testing.doctree +0 -0
  49. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/docstring_style.doctree +0 -0
  50. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/drafts/concepts_behavior_internal.doctree +0 -0
  51. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/drafts/execution_pipeline.doctree +0 -0
  52. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/drafts/glossary.doctree +0 -0
  53. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/drafts/repository_map.doctree +0 -0
  54. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/drafts/what_is_thundergraph_model.doctree +0 -0
  55. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/environment.pickle +0 -0
  56. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/index.doctree +0 -0
  57. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/concepts_behavior.doctree +0 -0
  58. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/concepts_evaluation.doctree +0 -0
  59. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/concepts_external_compute.doctree +0 -0
  60. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/concepts_parts.doctree +0 -0
  61. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/concepts_requirements.doctree +0 -0
  62. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/concepts_system.doctree +0 -0
  63. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/end_to_end_guide.doctree +0 -0
  64. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/faq.doctree +0 -0
  65. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/install.doctree +0 -0
  66. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/mental_model.doctree +0 -0
  67. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/overview.doctree +0 -0
  68. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/.doctrees/user/quickstart.doctree +0 -0
  69. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/index.html +0 -0
  70. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/analysis/compare_variants.html +0 -0
  71. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/analysis/impact.html +0 -0
  72. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/analysis/sweep.html +0 -0
  73. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/behavior.html +0 -0
  74. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/configured_model.html +0 -0
  75. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/connection_bindings.html +0 -0
  76. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/dependency_graph.html +0 -0
  77. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/evaluator.html +0 -0
  78. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/graph_compiler.html +0 -0
  79. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/instances.html +0 -0
  80. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/requirements.html +0 -0
  81. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/run_context.html +0 -0
  82. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/validation.html +0 -0
  83. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/execution/value_slots.html +0 -0
  84. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/integrations/external_compute.html +0 -0
  85. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/model/definition_context.html +0 -0
  86. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/model/elements.html +0 -0
  87. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/model/expr.html +0 -0
  88. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_modules/tg_model/model/refs.html +0 -0
  89. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/api/api_analysis.rst.txt +0 -0
  90. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/api/api_execution.rst.txt +0 -0
  91. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/api/api_integrations.rst.txt +0 -0
  92. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/api/api_model.rst.txt +0 -0
  93. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/api/api_root.rst.txt +0 -0
  94. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/api/index.md.txt +0 -0
  95. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/concepts_behavior.md.txt +0 -0
  96. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/developer/architecture.md.txt +0 -0
  97. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/developer/contributing.md.txt +0 -0
  98. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/developer/extension_playbook.md.txt +0 -0
  99. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/developer/releasing.md.txt +0 -0
  100. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/developer/repository_map.md.txt +0 -0
  101. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/developer/testing.md.txt +0 -0
  102. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/docstring_style.md.txt +0 -0
  103. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/drafts/concepts_behavior_internal.md.txt +0 -0
  104. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/drafts/execution_pipeline.md.txt +0 -0
  105. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/drafts/glossary.md.txt +0 -0
  106. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/drafts/repository_map.md.txt +0 -0
  107. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/drafts/what_is_thundergraph_model.md.txt +0 -0
  108. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/index.md.txt +0 -0
  109. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/concepts_behavior.md.txt +0 -0
  110. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/concepts_evaluation.md.txt +0 -0
  111. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/concepts_external_compute.md.txt +0 -0
  112. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/concepts_parts.md.txt +0 -0
  113. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/concepts_requirements.md.txt +0 -0
  114. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/concepts_system.md.txt +0 -0
  115. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/end_to_end_guide.md.txt +0 -0
  116. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/faq.md.txt +0 -0
  117. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/install.md.txt +0 -0
  118. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/mental_model.md.txt +0 -0
  119. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/overview.md.txt +0 -0
  120. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_sources/user/quickstart.md.txt +0 -0
  121. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/base-stemmer.js +0 -0
  122. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/basic.css +0 -0
  123. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/debug.css +0 -0
  124. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/doctools.js +0 -0
  125. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/documentation_options.js +0 -0
  126. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/english-stemmer.js +0 -0
  127. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/file.png +0 -0
  128. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/language_data.js +0 -0
  129. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/minus.png +0 -0
  130. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/plus.png +0 -0
  131. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/pygments.css +0 -0
  132. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  133. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/scripts/furo.js +0 -0
  134. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/scripts/furo.js.LICENSE.txt +0 -0
  135. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/scripts/furo.js.map +0 -0
  136. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/searchtools.js +0 -0
  137. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/skeleton.css +0 -0
  138. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/sphinx_highlight.js +0 -0
  139. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/styles/furo-extensions.css +0 -0
  140. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/styles/furo-extensions.css.map +0 -0
  141. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/styles/furo.css +0 -0
  142. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/_static/styles/furo.css.map +0 -0
  143. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/api/api_analysis.html +0 -0
  144. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/api/api_execution.html +0 -0
  145. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/api/api_integrations.html +0 -0
  146. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/api/api_model.html +0 -0
  147. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/api/api_root.html +0 -0
  148. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/api/index.html +0 -0
  149. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/concepts_behavior.html +0 -0
  150. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/developer/architecture.html +0 -0
  151. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/developer/contributing.html +0 -0
  152. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/developer/extension_playbook.html +0 -0
  153. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/developer/releasing.html +0 -0
  154. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/developer/repository_map.html +0 -0
  155. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/developer/testing.html +0 -0
  156. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/docstring_style.html +0 -0
  157. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/drafts/concepts_behavior_internal.html +0 -0
  158. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/drafts/execution_pipeline.html +0 -0
  159. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/drafts/glossary.html +0 -0
  160. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/drafts/repository_map.html +0 -0
  161. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/drafts/what_is_thundergraph_model.html +0 -0
  162. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/genindex.html +0 -0
  163. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/index.html +0 -0
  164. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/objects.inv +0 -0
  165. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/py-modindex.html +0 -0
  166. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/search.html +0 -0
  167. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/searchindex.js +0 -0
  168. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/concepts_behavior.html +0 -0
  169. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/concepts_evaluation.html +0 -0
  170. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/concepts_external_compute.html +0 -0
  171. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/concepts_parts.html +0 -0
  172. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/concepts_requirements.html +0 -0
  173. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/concepts_system.html +0 -0
  174. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/end_to_end_guide.html +0 -0
  175. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/faq.html +0 -0
  176. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/install.html +0 -0
  177. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/mental_model.html +0 -0
  178. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/overview.html +0 -0
  179. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/_build/html/user/quickstart.html +0 -0
  180. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/api/api_analysis.rst +0 -0
  181. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/api/api_execution.rst +0 -0
  182. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/api/api_integrations.rst +0 -0
  183. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/api/api_model.rst +0 -0
  184. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/api/api_root.rst +0 -0
  185. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/api/index.md +0 -0
  186. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/conf.py +0 -0
  187. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/developer/architecture.md +0 -0
  188. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/developer/contributing.md +0 -0
  189. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/developer/extension_playbook.md +0 -0
  190. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/developer/releasing.md +0 -0
  191. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/developer/repository_map.md +0 -0
  192. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/developer/testing.md +0 -0
  193. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/docstring_style.md +0 -0
  194. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/drafts/README.md +0 -0
  195. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/drafts/concepts_behavior_internal.md +0 -0
  196. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/drafts/execution_pipeline.md +0 -0
  197. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/drafts/glossary.md +0 -0
  198. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/drafts/repository_map.md +0 -0
  199. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/drafts/what_is_thundergraph_model.md +0 -0
  200. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/index.md +0 -0
  201. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/concepts_behavior.md +0 -0
  202. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/concepts_evaluation.md +0 -0
  203. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/concepts_external_compute.md +0 -0
  204. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/concepts_parts.md +0 -0
  205. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/concepts_requirements.md +0 -0
  206. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/concepts_system.md +0 -0
  207. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/end_to_end_guide.md +0 -0
  208. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/faq.md +0 -0
  209. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/install.md +0 -0
  210. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/mental_model.md +0 -0
  211. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/overview.md +0 -0
  212. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/docs/user_docs/user/quickstart.md +0 -0
  213. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/__init__.py +0 -0
  214. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/IMPLEMENTATION_PLAN.md +0 -0
  215. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/README.md +0 -0
  216. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/__init__.py +0 -0
  217. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/integrations/__init__.py +0 -0
  218. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/integrations/adapters.py +0 -0
  219. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/integrations/bindings.py +0 -0
  220. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/product/__init__.py +0 -0
  221. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/product/aircraft.py +0 -0
  222. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/product/major_assemblies/__init__.py +0 -0
  223. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/product/major_assemblies/parts.py +0 -0
  224. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/program/__init__.py +0 -0
  225. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/program/cargo_jet_program.py +0 -0
  226. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/program/l1_requirement_packages.py +0 -0
  227. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/program/mission_context.py +0 -0
  228. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/reporting/__init__.py +0 -0
  229. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/reporting/extract.py +0 -0
  230. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/commercial_aircraft/reporting/snapshot.py +0 -0
  231. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/hpc_datacenter/README.md +0 -0
  232. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/hpc_datacenter/__init__.py +0 -0
  233. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/hpc_datacenter/program.py +0 -0
  234. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/__init__.py +0 -0
  235. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/integrations/__init__.py +0 -0
  236. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/integrations/adapters.py +0 -0
  237. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/integrations/bindings.py +0 -0
  238. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/integrations/preset_inputs.py +0 -0
  239. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/reporting/__init__.py +0 -0
  240. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/reporting/extract.py +0 -0
  241. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/reporting/snapshot.py +0 -0
  242. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/examples/mars_ntp_tug/tug_model.py +0 -0
  243. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/implementation_plan_instructions.md +0 -0
  244. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/logo.png +0 -0
  245. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/notebooks/_gen_leo_notebook.py +0 -0
  246. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/notebooks/aev_architecture.mmd +0 -0
  247. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/notebooks/cargo_jet_program.ipynb +0 -0
  248. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/notebooks/hpc_datacenter_parameter_sweep.ipynb +0 -0
  249. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/notebooks/mars_ntp_nuclear_tug.ipynb +0 -0
  250. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/reviewer_architype.md +0 -0
  251. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/__init__.py +0 -0
  252. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/__init__.py +0 -0
  253. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/analysis/__init__.py +0 -0
  254. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/analysis/test_analysis_workflows.py +0 -0
  255. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/behavior/__init__.py +0 -0
  256. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/behavior/test_behavior_e2e.py +0 -0
  257. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/__init__.py +0 -0
  258. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_allocate_parameter_wiring.py +0 -0
  259. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_evaluation_e2e.py +0 -0
  260. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_external_compute.py +0 -0
  261. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_requirement_acceptance.py +0 -0
  262. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_sub_system_allocations.py +0 -0
  263. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_system_in_system_requirements.py +0 -0
  264. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/evaluation/test_unitflow_evaluation.py +0 -0
  265. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/structural_models/__init__.py +0 -0
  266. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/structural_models/test_citations.py +0 -0
  267. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/structural_models/test_drive_system.py +0 -0
  268. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/structural_models/test_instantiation.py +0 -0
  269. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/test_commercial_aircraft_smoke.py +0 -0
  270. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/test_hpc_datacenter_smoke.py +0 -0
  271. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/integration/test_mars_ntp_tug_smoke.py +0 -0
  272. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/__init__.py +0 -0
  273. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/analysis/__init__.py +0 -0
  274. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/analysis/test_sweep_planning.py +0 -0
  275. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/__init__.py +0 -0
  276. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_behavior_runtime.py +0 -0
  277. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_behavior_scope.py +0 -0
  278. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_configured_model.py +0 -0
  279. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_configured_model_evaluate.py +0 -0
  280. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_dependency_graph.py +0 -0
  281. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_evaluation_phase0.py +0 -0
  282. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_evaluator.py +0 -0
  283. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_graph_compiler.py +0 -0
  284. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_instances.py +0 -0
  285. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_phase6_runtime.py +0 -0
  286. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_run_context.py +0 -0
  287. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/execution/test_validation.py +0 -0
  288. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/export/__init__.py +0 -0
  289. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/integrations/__init__.py +0 -0
  290. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/__init__.py +0 -0
  291. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_attribute_ref.py +0 -0
  292. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_behavior_declarations.py +0 -0
  293. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_compile_types.py +0 -0
  294. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_definition_context.py +0 -0
  295. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_elements.py +0 -0
  296. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_example_system_authoring_policy.py +0 -0
  297. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_expr.py +0 -0
  298. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_identity.py +0 -0
  299. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_new_api_validators.py +0 -0
  300. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_parameter_ref.py +0 -0
  301. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_phase6_ontology.py +0 -0
  302. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_refs.py +0 -0
  303. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_requirement_block.py +0 -0
  304. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tests/unit/model/test_system_authoring_restrictions.py +0 -0
  305. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/__init__.py +0 -0
  306. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/analysis/__init__.py +0 -0
  307. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/analysis/_coherence.py +0 -0
  308. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/analysis/compare_variants.py +0 -0
  309. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/analysis/impact.py +0 -0
  310. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/analysis/sweep.py +0 -0
  311. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/__init__.py +0 -0
  312. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/behavior.py +0 -0
  313. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/connection_bindings.py +0 -0
  314. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/dependency_graph.py +0 -0
  315. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/evaluation.py +0 -0
  316. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/evaluator.py +0 -0
  317. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/external_ops.py +0 -0
  318. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/graph_compiler.py +0 -0
  319. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/instances.py +0 -0
  320. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/requirements.py +0 -0
  321. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/rollups.py +0 -0
  322. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/run_context.py +0 -0
  323. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/solve_groups.py +0 -0
  324. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/stable_ids.py +0 -0
  325. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/validation.py +0 -0
  326. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/execution/value_slots.py +0 -0
  327. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/export/__init__.py +0 -0
  328. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/integrations/__init__.py +0 -0
  329. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/integrations/external_compute.py +0 -0
  330. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/__init__.py +0 -0
  331. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/compile_types.py +0 -0
  332. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/declarations/__init__.py +0 -0
  333. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/declarations/behavior.py +0 -0
  334. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/declarations/values.py +0 -0
  335. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/definition_context.py +0 -0
  336. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/elements.py +0 -0
  337. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/evaluation_context.py +0 -0
  338. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/expr.py +0 -0
  339. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/identity.py +0 -0
  340. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/tg_model/model/refs.py +0 -0
  341. {thundergraph_model-1.4.1 → thundergraph_model-1.4.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thundergraph-model
3
- Version: 1.4.1
3
+ Version: 1.4.2
4
4
  Summary: Executable systems modeling in Python
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "thundergraph-model"
7
- version = "1.4.1"
7
+ version = "1.4.2"
8
8
  description = "Executable systems modeling in Python"
9
9
  readme = "PYPI.md"
10
10
  requires-python = ">=3.11"
@@ -0,0 +1,269 @@
1
+ """Integration tests for Requirement class-identity deduplication.
2
+
3
+ A Requirement class is a specification statement. When the same Requirement
4
+ subclass is composed in multiple places from DIFFERENT defining classes (e.g.
5
+ inside a domain System AND inside a top-level rollup package), tg-model treats
6
+ them as ONE shared RequirementPackageInstance with multiple navigation paths.
7
+
8
+ When the SAME defining class introduces the same Requirement multiple times
9
+ (because that class is instantiated more than once), each instance gets its own
10
+ independent RequirementPackageInstance. This is the multi-instantiation case
11
+ and must NOT be deduped.
12
+
13
+ Parts and Systems are unaffected — they always retain distinct-instance semantics.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import pytest
19
+ from unitflow import Quantity
20
+ from unitflow.catalogs.si import kN
21
+
22
+ from tg_model.execution.configured_model import instantiate
23
+ from tg_model.model.elements import Part, Requirement, System
24
+
25
+
26
+ # ── Shared leaf declarations ─────────────────────────────────────────────────
27
+
28
+ class _Thruster(Part):
29
+ @classmethod
30
+ def define(cls, model): # type: ignore[override]
31
+ model.name("thruster")
32
+ model.parameter("thrust", unit=kN)
33
+
34
+
35
+ class _ThrustReq(Requirement):
36
+ @classmethod
37
+ def define(cls, model): # type: ignore[override]
38
+ model.name("thrust_req")
39
+ model.doc("Thrust shall meet the floor.")
40
+ declared = model.parameter("declared", unit=kN)
41
+ floor = model.parameter("floor", unit=kN)
42
+ margin = model.attribute("margin", unit=kN, expr=declared - floor)
43
+ model.constraint("margin_non_negative", expr=margin >= Quantity(0, kN))
44
+
45
+
46
+ class _CapacityReq(Requirement):
47
+ @classmethod
48
+ def define(cls, model): # type: ignore[override]
49
+ model.name("capacity_req")
50
+ model.doc("Capacity shall meet the minimum.")
51
+ capacity = model.parameter("capacity", unit=kN)
52
+ minimum = model.parameter("minimum", unit=kN)
53
+ headroom = model.attribute("headroom", unit=kN, expr=capacity - minimum)
54
+ model.constraint("headroom_non_negative", expr=headroom >= Quantity(0, kN))
55
+
56
+
57
+ # ── Programs for dedupe scenarios ────────────────────────────────────────────
58
+
59
+ class _RollupReqs(Requirement):
60
+ """Top-level rollup that re-composes _ThrustReq — should alias the domain System's instance."""
61
+ @classmethod
62
+ def define(cls, model): # type: ignore[override]
63
+ model.name("rollup")
64
+ model.doc("Top-level rollup view.")
65
+ model.composed_of("thrust", _ThrustReq)
66
+
67
+
68
+ class _DomainSystem(System):
69
+ """Domain System that owns _ThrustReq and allocates it to the thruster."""
70
+ @classmethod
71
+ def define(cls, model): # type: ignore[override]
72
+ model.name("domain")
73
+ floor = model.parameter("floor_kN", unit=kN)
74
+ thr = model.composed_of("thruster", _Thruster)
75
+ req = model.composed_of("thrust_req", _ThrustReq)
76
+ model.allocate(req, thr, inputs={
77
+ "declared": thr.thrust,
78
+ "floor": floor,
79
+ })
80
+
81
+
82
+ class _ProgramWithRollup(System):
83
+ """Top-level program: domain System + rollup that also composes the same Requirement."""
84
+ @classmethod
85
+ def define(cls, model): # type: ignore[override]
86
+ model.name("program_with_rollup")
87
+ model.composed_of("domain", _DomainSystem)
88
+ model.composed_of("rollup", _RollupReqs)
89
+
90
+
91
+ # ── Programs for multi-instantiation (no-dedupe) scenario ────────────────────
92
+
93
+ class _SubSystem(System):
94
+ """Sub-system that composes _ThrustReq internally."""
95
+ @classmethod
96
+ def define(cls, model): # type: ignore[override]
97
+ model.name("subsystem")
98
+ floor = model.parameter("floor_kN", unit=kN)
99
+ thr = model.composed_of("thruster", _Thruster)
100
+ req = model.composed_of("thrust_req", _ThrustReq)
101
+ model.allocate(req, thr, inputs={
102
+ "declared": thr.thrust,
103
+ "floor": floor,
104
+ })
105
+
106
+
107
+ class _ProgramWithTwoSubSystems(System):
108
+ """Two instances of the same sub-System class — each should get its own Requirement instance."""
109
+ @classmethod
110
+ def define(cls, model): # type: ignore[override]
111
+ model.name("program_two_subsystems")
112
+ model.composed_of("sub_a", _SubSystem)
113
+ model.composed_of("sub_b", _SubSystem)
114
+
115
+
116
+ # ── Programs for regression tests ───────────────────────────────────────────
117
+
118
+ class _Motor(Part):
119
+ @classmethod
120
+ def define(cls, model): # type: ignore[override]
121
+ model.name("motor")
122
+ model.parameter("torque", unit=kN)
123
+
124
+
125
+ class _ProgramTwoDistinctParts(System):
126
+ @classmethod
127
+ def define(cls, model): # type: ignore[override]
128
+ model.name("program_two_parts")
129
+ model.composed_of("motor_a", _Motor)
130
+ model.composed_of("motor_b", _Motor)
131
+
132
+
133
+ class _InnerSystem(System):
134
+ @classmethod
135
+ def define(cls, model): # type: ignore[override]
136
+ model.name("inner")
137
+ model.parameter("p", unit=kN)
138
+
139
+
140
+ class _ProgramTwoDistinctSystems(System):
141
+ @classmethod
142
+ def define(cls, model): # type: ignore[override]
143
+ model.name("program_two_systems")
144
+ model.composed_of("inner_a", _InnerSystem)
145
+ model.composed_of("inner_b", _InnerSystem)
146
+
147
+
148
+ def setup_function() -> None:
149
+ for cls in (
150
+ _Thruster, _ThrustReq, _CapacityReq, _RollupReqs, _DomainSystem,
151
+ _ProgramWithRollup, _SubSystem, _ProgramWithTwoSubSystems,
152
+ _Motor, _ProgramTwoDistinctParts, _InnerSystem, _ProgramTwoDistinctSystems,
153
+ ):
154
+ cls._reset_compilation()
155
+
156
+
157
+ # ── 1) Dedupe: same Requirement class composed by two DIFFERENT classes ──────
158
+
159
+ def test_same_req_class_two_parents_is_one_instance() -> None:
160
+ """DomainSystem and RollupReqs both compose _ThrustReq — only one instance."""
161
+ cm = instantiate(_ProgramWithRollup)
162
+ domain_req = cm.handle("_ProgramWithRollup.domain.thrust_req")
163
+ rollup_req = cm.handle("_ProgramWithRollup.rollup.thrust")
164
+ assert domain_req is rollup_req, "Both paths must resolve to the SAME RequirementPackageInstance"
165
+
166
+
167
+ def test_alias_path_resolves_to_canonical_slots() -> None:
168
+ """Both navigation paths point to the same ValueSlot objects."""
169
+ cm = instantiate(_ProgramWithRollup)
170
+ canonical_declared = cm.handle("_ProgramWithRollup.domain.thrust_req.declared")
171
+ alias_declared = cm.handle("_ProgramWithRollup.rollup.thrust.declared")
172
+ assert canonical_declared is alias_declared
173
+
174
+
175
+ def test_id_registry_has_one_entry_per_req_instance() -> None:
176
+ """id_registry dedupe: only one stable_id entry for _ThrustReq."""
177
+ cm = instantiate(_ProgramWithRollup)
178
+ thrust_req_entries = [
179
+ (sid, obj) for sid, obj in cm.id_registry.items()
180
+ if hasattr(obj, "package_type") and obj.package_type is _ThrustReq
181
+ ]
182
+ assert len(thrust_req_entries) == 1, (
183
+ f"Expected exactly one id_registry entry for _ThrustReq, got {len(thrust_req_entries)}"
184
+ )
185
+
186
+
187
+ def test_allocation_wires_shared_instance() -> None:
188
+ """Allocation declared in DomainSystem uses the shared instance and correct source slots."""
189
+ cm = instantiate(_ProgramWithRollup)
190
+ assert len(cm.allocations) == 1
191
+ alloc = cm.allocations[0]
192
+ # Requirement points at the shared (canonical) instance
193
+ assert alloc.requirement.path_string == "_ProgramWithRollup.domain.thrust_req"
194
+ # parameter_overrides maps req-param-name → SOURCE slot (the Part side of the wiring)
195
+ assert set(alloc.parameter_overrides.keys()) == {"declared", "floor"}
196
+ assert alloc.parameter_overrides["declared"].path_string == "_ProgramWithRollup.domain.thruster.thrust"
197
+ assert alloc.parameter_overrides["floor"].path_string == "_ProgramWithRollup.domain.floor_kN"
198
+
199
+
200
+ def test_end_to_end_evaluates_constraint_once() -> None:
201
+ """Only one constraint result — not two copies of the same constraint."""
202
+ cm = instantiate(_ProgramWithRollup)
203
+ result = cm.evaluate(inputs={
204
+ cm.domain.floor_kN.stable_id: Quantity(50, kN),
205
+ cm.domain.thruster.thrust.stable_id: Quantity(80, kN),
206
+ })
207
+ assert result.passed
208
+ assert len(result.constraint_results) == 1, (
209
+ f"Expected 1 constraint result (not duplicated), got {len(result.constraint_results)}"
210
+ )
211
+
212
+
213
+ # ── 2) No-dedupe: same class instantiated multiple times ─────────────────────
214
+
215
+ def test_multi_instantiation_produces_distinct_req_instances() -> None:
216
+ """sub_a and sub_b each get their OWN _ThrustReq instance (different subsystem instances)."""
217
+ cm = instantiate(_ProgramWithTwoSubSystems)
218
+ req_a = cm.handle("_ProgramWithTwoSubSystems.sub_a.thrust_req")
219
+ req_b = cm.handle("_ProgramWithTwoSubSystems.sub_b.thrust_req")
220
+ assert req_a is not req_b, "_SubSystem instances must each own their own _ThrustReq"
221
+
222
+
223
+ def test_multi_instantiation_distinct_slots() -> None:
224
+ slot_a = cm_two = instantiate(_ProgramWithTwoSubSystems)
225
+ slot_a_declared = cm_two.handle("_ProgramWithTwoSubSystems.sub_a.thrust_req.declared")
226
+ slot_b_declared = cm_two.handle("_ProgramWithTwoSubSystems.sub_b.thrust_req.declared")
227
+ assert slot_a_declared is not slot_b_declared
228
+
229
+
230
+ def test_multi_instantiation_two_allocations() -> None:
231
+ cm = instantiate(_ProgramWithTwoSubSystems)
232
+ assert len(cm.allocations) == 2
233
+ targets = {a.target.path_string for a in cm.allocations}
234
+ assert targets == {
235
+ "_ProgramWithTwoSubSystems.sub_a.thruster",
236
+ "_ProgramWithTwoSubSystems.sub_b.thruster",
237
+ }
238
+
239
+
240
+ def test_multi_instantiation_evaluates_each_subsystem() -> None:
241
+ cm = instantiate(_ProgramWithTwoSubSystems)
242
+ result = cm.evaluate(inputs={
243
+ cm.sub_a.floor_kN.stable_id: Quantity(50, kN),
244
+ cm.sub_a.thruster.thrust.stable_id: Quantity(80, kN), # passes
245
+ cm.sub_b.floor_kN.stable_id: Quantity(50, kN),
246
+ cm.sub_b.thruster.thrust.stable_id: Quantity(30, kN), # fails
247
+ })
248
+ assert not result.passed
249
+ assert len(result.constraint_results) == 2
250
+ states = {cr.state for cr in result.constraint_results}
251
+ assert "passed" in states and "failed" in states
252
+
253
+
254
+ # ── 3) Regression: Parts and Systems always produce distinct instances ────────
255
+
256
+ def test_part_composed_twice_distinct_instances() -> None:
257
+ cm = instantiate(_ProgramTwoDistinctParts)
258
+ motor_a = cm.handle("_ProgramTwoDistinctParts.motor_a")
259
+ motor_b = cm.handle("_ProgramTwoDistinctParts.motor_b")
260
+ assert motor_a is not motor_b
261
+ assert motor_a.stable_id != motor_b.stable_id
262
+
263
+
264
+ def test_system_composed_twice_distinct_instances() -> None:
265
+ cm = instantiate(_ProgramTwoDistinctSystems)
266
+ inner_a = cm.handle("_ProgramTwoDistinctSystems.inner_a")
267
+ inner_b = cm.handle("_ProgramTwoDistinctSystems.inner_b")
268
+ assert inner_a is not inner_b
269
+ assert inner_a.stable_id != inner_b.stable_id
@@ -241,6 +241,22 @@ def instantiate(root_type: type) -> ConfiguredModel:
241
241
  id_registry: dict[str, ElementInstance | ValueSlot] = {}
242
242
  requirement_value_slots: list[ValueSlot] = []
243
243
 
244
+ # Requirement classes are specification statements — there is no such thing
245
+ # as "two copies of the same requirement." When the same Requirement subclass
246
+ # is composed in multiple places from DIFFERENT defining classes (e.g. once
247
+ # inside FacilitySystem and again inside DataCenterCapabilityRequirements),
248
+ # tg-model treats them as ONE shared RequirementPackageInstance with multiple
249
+ # navigation paths in path_registry.
250
+ #
251
+ # However, when the SAME defining class introduces a Requirement multiple times
252
+ # (because that class is itself instantiated more than once — e.g. two motor
253
+ # sub-systems each owning their own thrust requirement), each instance gets its
254
+ # own independent RequirementPackageInstance. This is the multi-instantiation
255
+ # case and must NOT be deduped.
256
+ #
257
+ # Registry maps: Requirement class → (introducing_class, canonical_instance)
258
+ pkg_class_registry: dict[type, tuple[type, RequirementPackageInstance]] = {}
259
+
244
260
  root_path = (root_type.__name__,)
245
261
  root_id = derive_declaration_id(root_type, *root_path)
246
262
  root_instance = PartInstance(
@@ -260,6 +276,7 @@ def instantiate(root_type: type) -> ConfiguredModel:
260
276
  id_registry,
261
277
  ref_accumulator,
262
278
  requirement_value_slots,
279
+ pkg_class_registry,
263
280
  )
264
281
 
265
282
  connections = _instantiate_all_connections(root_instance, path_registry, root_type)
@@ -279,6 +296,45 @@ def instantiate(root_type: type) -> ConfiguredModel:
279
296
  )
280
297
 
281
298
 
299
+ def _register_pkg_alias(
300
+ existing: RequirementPackageInstance,
301
+ alias_path: tuple[str, ...],
302
+ path_registry: dict[str, ElementInstance | ValueSlot],
303
+ ) -> None:
304
+ """Register an already-instantiated RequirementPackageInstance under a new path prefix.
305
+
306
+ When the same Requirement class is composed a second time, we do not create a
307
+ new instance. Instead, all navigation paths under ``alias_path`` are added to
308
+ ``path_registry`` pointing at the SAME descendant objects as the canonical path.
309
+ ``id_registry`` is NOT touched — each object retains exactly one stable_id.
310
+
311
+ This walk mirrors the structure produced by _instantiate_requirement_block_children:
312
+ it recurses into nested RequirementPackageInstances so deeply-nested members are
313
+ also aliased.
314
+ """
315
+ canonical_prefix = existing.instance_path
316
+ canonical_len = len(canonical_prefix)
317
+ alias_str = ".".join(alias_path)
318
+ path_registry[alias_str] = existing
319
+
320
+ # Walk _members which contains: ElementInstance (requirement/constraint/citation),
321
+ # ValueSlot (parameter/attribute), and nested RequirementPackageInstance.
322
+ stack: list[RequirementPackageInstance] = [existing]
323
+ while stack:
324
+ pkg = stack.pop()
325
+ pkg_alias_prefix = alias_path + pkg.instance_path[canonical_len:]
326
+ for member_name, member in pkg._members.items():
327
+ # Compute the alias path for this member.
328
+ member_alias = (*pkg_alias_prefix, member_name)
329
+ member_alias_str = ".".join(member_alias)
330
+ if isinstance(member, RequirementPackageInstance):
331
+ path_registry[member_alias_str] = member
332
+ stack.append(member)
333
+ else:
334
+ # ElementInstance (requirement, constraint, citation) or ValueSlot.
335
+ path_registry[member_alias_str] = member
336
+
337
+
282
338
  def _instantiate_children(
283
339
  parent: PartInstance,
284
340
  compiled: dict[str, Any],
@@ -287,9 +343,12 @@ def _instantiate_children(
287
343
  id_registry: dict[str, ElementInstance | ValueSlot],
288
344
  ref_accumulator: list[ReferenceBinding] | None = None,
289
345
  requirement_value_slots: list[ValueSlot] | None = None,
346
+ pkg_class_registry: dict[type, RequirementPackageInstance] | None = None,
290
347
  ) -> None:
291
348
  """Walk compiled nodes and create child instances under parent."""
292
349
  type_registry: dict[str, type] = compiled.get("_type_registry", {})
350
+ if pkg_class_registry is None:
351
+ pkg_class_registry = {}
293
352
 
294
353
  for name, node in compiled["nodes"].items():
295
354
  kind = node["kind"]
@@ -319,6 +378,7 @@ def _instantiate_children(
319
378
  id_registry,
320
379
  ref_accumulator,
321
380
  requirement_value_slots,
381
+ pkg_class_registry,
322
382
  )
323
383
 
324
384
  elif kind == "port":
@@ -361,26 +421,64 @@ def _instantiate_children(
361
421
  block_type = type_registry.get(name)
362
422
  if block_type is None:
363
423
  raise ValueError(f"requirement_block {name!r} has no target_type (internal compile error)")
364
- pkg_inst = RequirementPackageInstance(
365
- stable_id=child_id,
366
- definition_type=root_type,
367
- definition_path=(name,),
368
- instance_path=child_path,
369
- package_type=block_type,
370
- metadata=metadata,
371
- )
372
- parent.add_requirement_package(name, pkg_inst)
373
- _register(pkg_inst, path_registry, id_registry)
374
- _instantiate_requirement_block_children(
375
- pkg_inst,
376
- _requirement_block_compiled_artifact(block_type),
377
- root_type,
378
- root_type,
379
- path_registry,
380
- id_registry,
381
- ref_accumulator,
382
- requirement_value_slots,
383
- )
424
+ introducing_class = parent.definition_type
425
+ registry_entry = pkg_class_registry.get(block_type)
426
+ if registry_entry is not None:
427
+ prior_introducing_class, existing_inst = registry_entry
428
+ if prior_introducing_class is not introducing_class:
429
+ # Different class introduces the same Requirement — cross-tree
430
+ # sharing (e.g. rollup package referencing a domain requirement).
431
+ # Alias to the canonical instance; don't recurse.
432
+ parent.add_requirement_package(name, existing_inst)
433
+ _register_pkg_alias(existing_inst, alias_path=child_path, path_registry=path_registry)
434
+ else:
435
+ # Same class introduces the same Requirement again — this class
436
+ # is instantiated multiple times and each instance gets its own
437
+ # independent Requirement instance. Don't dedupe.
438
+ pkg_inst = RequirementPackageInstance(
439
+ stable_id=child_id,
440
+ definition_type=root_type,
441
+ definition_path=(name,),
442
+ instance_path=child_path,
443
+ package_type=block_type,
444
+ metadata=metadata,
445
+ )
446
+ parent.add_requirement_package(name, pkg_inst)
447
+ _register(pkg_inst, path_registry, id_registry)
448
+ _instantiate_requirement_block_children(
449
+ pkg_inst,
450
+ _requirement_block_compiled_artifact(block_type),
451
+ root_type,
452
+ root_type,
453
+ path_registry,
454
+ id_registry,
455
+ ref_accumulator,
456
+ requirement_value_slots,
457
+ pkg_class_registry,
458
+ )
459
+ else:
460
+ pkg_inst = RequirementPackageInstance(
461
+ stable_id=child_id,
462
+ definition_type=root_type,
463
+ definition_path=(name,),
464
+ instance_path=child_path,
465
+ package_type=block_type,
466
+ metadata=metadata,
467
+ )
468
+ parent.add_requirement_package(name, pkg_inst)
469
+ _register(pkg_inst, path_registry, id_registry)
470
+ pkg_class_registry[block_type] = (introducing_class, pkg_inst)
471
+ _instantiate_requirement_block_children(
472
+ pkg_inst,
473
+ _requirement_block_compiled_artifact(block_type),
474
+ root_type,
475
+ root_type,
476
+ path_registry,
477
+ id_registry,
478
+ ref_accumulator,
479
+ requirement_value_slots,
480
+ pkg_class_registry,
481
+ )
384
482
 
385
483
  elif kind == "constraint":
386
484
  constraint_instance = ElementInstance(
@@ -414,10 +512,13 @@ def _instantiate_requirement_block_children(
414
512
  id_registry: dict[str, ElementInstance | ValueSlot],
415
513
  ref_accumulator: list[ReferenceBinding] | None = None,
416
514
  requirement_value_slots: list[ValueSlot] | None = None,
515
+ pkg_class_registry: dict[type, RequirementPackageInstance] | None = None,
417
516
  ) -> None:
418
517
  """Materialize members under a composable requirement package (dot-access under the root part)."""
419
518
  type_registry: dict[str, type] = compiled.get("_type_registry", {})
420
519
  prefix_path = package.instance_path
520
+ if pkg_class_registry is None:
521
+ pkg_class_registry = {}
421
522
 
422
523
  for name, node in compiled["nodes"].items():
423
524
  kind = node["kind"]
@@ -451,26 +552,60 @@ def _instantiate_requirement_block_children(
451
552
  block_type = type_registry.get(name)
452
553
  if block_type is None:
453
554
  raise ValueError(f"requirement_block {name!r} has no target_type (internal compile error)")
454
- inner_pkg = RequirementPackageInstance(
455
- stable_id=child_id,
456
- definition_type=definition_root_type,
457
- definition_path=tuple(child_path[1:]),
458
- instance_path=child_path,
459
- package_type=block_type,
460
- metadata=metadata,
461
- )
462
- package.add_member(name, inner_pkg)
463
- _register(inner_pkg, path_registry, id_registry)
464
- _instantiate_requirement_block_children(
465
- inner_pkg,
466
- _requirement_block_compiled_artifact(block_type),
467
- definition_root_type,
468
- root_type,
469
- path_registry,
470
- id_registry,
471
- ref_accumulator,
472
- requirement_value_slots,
473
- )
555
+ introducing_class = package.package_type
556
+ registry_entry = pkg_class_registry.get(block_type)
557
+ if registry_entry is not None:
558
+ prior_introducing_class, existing_inst = registry_entry
559
+ if prior_introducing_class is not introducing_class:
560
+ # Different Requirement class is introducing this — alias.
561
+ package.add_member(name, existing_inst)
562
+ _register_pkg_alias(existing_inst, alias_path=child_path, path_registry=path_registry)
563
+ else:
564
+ # Same package type introduces it again (multi-instantiation).
565
+ inner_pkg = RequirementPackageInstance(
566
+ stable_id=child_id,
567
+ definition_type=definition_root_type,
568
+ definition_path=tuple(child_path[1:]),
569
+ instance_path=child_path,
570
+ package_type=block_type,
571
+ metadata=metadata,
572
+ )
573
+ package.add_member(name, inner_pkg)
574
+ _register(inner_pkg, path_registry, id_registry)
575
+ _instantiate_requirement_block_children(
576
+ inner_pkg,
577
+ _requirement_block_compiled_artifact(block_type),
578
+ definition_root_type,
579
+ root_type,
580
+ path_registry,
581
+ id_registry,
582
+ ref_accumulator,
583
+ requirement_value_slots,
584
+ pkg_class_registry,
585
+ )
586
+ else:
587
+ inner_pkg = RequirementPackageInstance(
588
+ stable_id=child_id,
589
+ definition_type=definition_root_type,
590
+ definition_path=tuple(child_path[1:]),
591
+ instance_path=child_path,
592
+ package_type=block_type,
593
+ metadata=metadata,
594
+ )
595
+ package.add_member(name, inner_pkg)
596
+ _register(inner_pkg, path_registry, id_registry)
597
+ pkg_class_registry[block_type] = (introducing_class, inner_pkg)
598
+ _instantiate_requirement_block_children(
599
+ inner_pkg,
600
+ _requirement_block_compiled_artifact(block_type),
601
+ definition_root_type,
602
+ root_type,
603
+ path_registry,
604
+ id_registry,
605
+ ref_accumulator,
606
+ requirement_value_slots,
607
+ pkg_class_registry,
608
+ )
474
609
 
475
610
  elif kind in ("parameter", "attribute"):
476
611
  slot = ValueSlot(