orchestrator-core 3.0.0rc1__tar.gz → 3.1.0__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 (648) hide show
  1. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.bumpversion.cfg +1 -1
  2. orchestrator_core-3.1.0/.github/workflows/run-codspeed-tests.yml +71 -0
  3. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/run-unit-tests.yml +1 -1
  4. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/PKG-INFO +14 -12
  5. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/README.md +7 -0
  6. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/contributing/guidelines.md +14 -0
  7. orchestrator_core-3.1.0/docs/migration-guide/3.0.md +18 -0
  8. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/mkdocs.yml +3 -1
  9. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/__init__.py +1 -1
  10. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/settings.py +2 -1
  11. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/migration.py +5 -2
  12. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/models.py +17 -0
  13. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/distlock/managers/redis_distlock_manager.py +3 -2
  14. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/settings.py +2 -1
  15. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/product.py +19 -2
  16. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/helpers.py +5 -5
  17. orchestrator_core-3.1.0/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +56 -0
  18. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/celery.py +6 -3
  19. orchestrator_core-3.1.0/orchestrator/services/input_state.py +76 -0
  20. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/processes.py +6 -5
  21. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/tasks.py +11 -6
  22. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/workflows.py +13 -0
  23. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/settings.py +26 -2
  24. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/redis.py +6 -11
  25. orchestrator_core-3.1.0/orchestrator/utils/redis_client.py +35 -0
  26. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/pyproject.toml +11 -10
  27. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/setup.cfg +0 -12
  28. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_subscriptions.py +16 -8
  29. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/conftest.py +146 -8
  30. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/domain/test_base.py +4 -4
  31. orchestrator_core-3.1.0/test/unit_tests/domain/test_base_performance.py +160 -0
  32. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +12 -1
  33. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/forms/test_display_subscription.py +1 -5
  34. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_product.py +44 -0
  35. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_settings.py +2 -3
  36. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_subscription.py +18 -6
  37. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_subscriptions.py +45 -5
  38. orchestrator_core-3.1.0/test/unit_tests/services/test_input_state.py +63 -0
  39. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/services/test_processes.py +12 -1
  40. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/__init__.py +5 -1
  41. orchestrator_core-3.1.0/test/unit_tests/workflows/test_generic_workflow_steps.py +103 -0
  42. orchestrator_core-3.0.0rc1/mutmut_config.py +0 -35
  43. orchestrator_core-3.0.0rc1/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -52
  44. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.coveragerc +0 -0
  45. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  46. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  47. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/dependabot.yml +0 -0
  48. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/README.md +0 -0
  49. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/build-push-container.yml +0 -0
  50. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/changelog.yml +0 -0
  51. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/codeql-analysis.yml +0 -0
  52. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/gh-pages.yml +0 -0
  53. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/issues.yml +0 -0
  54. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/publish-package.yml +0 -0
  55. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/run-linting-tests.yml +0 -0
  56. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.github/workflows/scheduled-build.yml +0 -0
  57. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.gitignore +0 -0
  58. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.pre-commit-config.yaml +0 -0
  59. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/.stignore +0 -0
  60. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/CHANGELOG.md +0 -0
  61. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/Dockerfile +0 -0
  62. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/LICENSE +0 -0
  63. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/NOTICE +0 -0
  64. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/codecov.yml +0 -0
  65. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/application/domainmodels.md +0 -0
  66. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/application/forms-frontend.md +0 -0
  67. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/application/tasks.md +0 -0
  68. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/application/workflow.md +0 -0
  69. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/framework.md +0 -0
  70. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/img/base-orchestrator-setup.png +0 -0
  71. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  72. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  73. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  74. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
  75. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/orchestration/philosophy.md +0 -0
  76. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/backfilling.md +0 -0
  77. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/context.md +0 -0
  78. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/imports.md +0 -0
  79. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/introduction.md +0 -0
  80. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/ip_static.md +0 -0
  81. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/ip_static.png +0 -0
  82. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
  83. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  84. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/l2_vpn.md +0 -0
  85. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/l2_vpn.png +0 -0
  86. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/modelling.md +0 -0
  87. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/node.md +0 -0
  88. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/node.png +0 -0
  89. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/port.md +0 -0
  90. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/port.png +0 -0
  91. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/product_block_graph.md +0 -0
  92. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/product_block_graph.png +0 -0
  93. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/standards.md +0 -0
  94. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/product_modelling/terminology.md +0 -0
  95. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/architecture/tldr.md +0 -0
  96. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/contributing/development.md +0 -0
  97. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/contributing/testing.md +0 -0
  98. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/css/custom.css +0 -0
  99. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/css/style.css +0 -0
  100. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/css/termynal.css +0 -0
  101. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/getting-started/base.md +0 -0
  102. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/getting-started/docker.md +0 -0
  103. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/getting-started/orchestration-ui.md +0 -0
  104. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/getting-started/prepare-source-folder.md +0 -0
  105. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/getting-started/versions.md +0 -0
  106. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/img/WFO-Emblem-White.png +0 -0
  107. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/img/favicon.ico +0 -0
  108. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/index.md +0 -0
  109. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/js/custom.js +0 -0
  110. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/js/termynal.js +0 -0
  111. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/migration-guide/2.0.md +0 -0
  112. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/api.md +0 -0
  113. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/app/app.md +0 -0
  114. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/app/scaling.md +0 -0
  115. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
  116. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/cli.md +0 -0
  117. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/database.md +0 -0
  118. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/generator.md +0 -0
  119. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/instantiating.md +0 -0
  120. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/model_attributes.md +0 -0
  121. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/overview.md +0 -0
  122. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/product_blocks.md +0 -0
  123. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/product_types.md +0 -0
  124. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/properties.md +0 -0
  125. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  126. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/type_casting.md +0 -0
  127. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/union_types.md +0 -0
  128. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/domain_models/validation.md +0 -0
  129. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/forms.md +0 -0
  130. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/graphql.md +0 -0
  131. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/python.md +0 -0
  132. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/search.md +0 -0
  133. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/search_overview.png +0 -0
  134. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/serialization.md +0 -0
  135. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/tasks.md +0 -0
  136. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/tests.md +0 -0
  137. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/tldr.md +0 -0
  138. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/websockets.md +0 -0
  139. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/workflows/callbacks.md +0 -0
  140. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
  141. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/reference-docs/workflows/workflow-steps.md +0 -0
  142. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/bootstrap.md +0 -0
  143. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/create-your-own.md +0 -0
  144. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/docker-installation.md +0 -0
  145. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/domain-models.md +0 -0
  146. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/execute-workflows.md +0 -0
  147. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/generator.md +0 -0
  148. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/l2_point_to_point.png +0 -0
  149. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/node-create.md +0 -0
  150. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/node-modify.md +0 -0
  151. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/node-terminate.md +0 -0
  152. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/node-validate.md +0 -0
  153. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/overview.md +0 -0
  154. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/scenario.md +0 -0
  155. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/workflow-basics.md +0 -0
  156. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/advanced/workflow-introduction.md +0 -0
  157. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/create-user-group.md +0 -0
  158. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/create-user.md +0 -0
  159. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/database-migration.md +0 -0
  160. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/debian.md +0 -0
  161. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/docker.md +0 -0
  162. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/domain-models.md +0 -0
  163. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/explore.md +0 -0
  164. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/input-forms.md +0 -0
  165. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/macos.md +0 -0
  166. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/modify-user-group.md +0 -0
  167. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/modify-user.md +0 -0
  168. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/register-workflows.md +0 -0
  169. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/start-applications.md +0 -0
  170. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/terminate-user-group.md +0 -0
  171. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/terminate-user.md +0 -0
  172. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/workflow-introduction.md +0 -0
  173. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/beginner/workshop-overview.md +0 -0
  174. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/images/Software-topology.drawio.png +0 -0
  175. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/images/clab_topology.png +0 -0
  176. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/images/metadata_products.png +0 -0
  177. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/images/netbox_devices_active.png +0 -0
  178. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/images/subscriptions.png +0 -0
  179. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/docs/workshops/images/topology.drawio.png +0 -0
  180. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/includes/abbreviations.md +0 -0
  181. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/nitpick-style.toml +0 -0
  182. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/__init__.py +0 -0
  183. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/__init__.py +0 -0
  184. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/api.py +0 -0
  185. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  186. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  187. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  188. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  189. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  190. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  191. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  192. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  193. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  194. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  195. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  196. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  197. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/error_handling.py +0 -0
  198. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/helpers.py +0 -0
  199. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/api/models.py +0 -0
  200. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/app.py +0 -0
  201. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/__init__.py +0 -0
  202. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/database.py +0 -0
  203. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  204. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  205. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  206. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  207. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  208. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  209. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  210. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generate.py +0 -0
  211. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/__init__.py +0 -0
  212. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/README +0 -0
  213. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  214. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  215. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  216. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  217. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  218. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  219. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  220. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  221. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  222. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/__init__.py +0 -0
  223. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/enums.py +0 -0
  224. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/helpers.py +0 -0
  225. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/product.py +0 -0
  226. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/product_block.py +0 -0
  227. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/settings.py +0 -0
  228. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/translations.py +0 -0
  229. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/unittest.py +0 -0
  230. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/validations.py +0 -0
  231. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/generator/workflow.py +0 -0
  232. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  233. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  234. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  235. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  236. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  237. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  238. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  239. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  240. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  241. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  242. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  243. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  244. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  245. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  246. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  247. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  248. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  249. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  250. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/product.j2 +0 -0
  251. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  252. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  253. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  254. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  255. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  256. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  257. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  258. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  259. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  260. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  261. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  262. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/helpers/__init__.py +0 -0
  263. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/helpers/input_helpers.py +0 -0
  264. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/helpers/print_helpers.py +0 -0
  265. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/main.py +0 -0
  266. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/migrate_domain_models.py +0 -0
  267. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/migrate_tasks.py +0 -0
  268. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/migrate_workflows.py +0 -0
  269. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/migration_helpers.py +0 -0
  270. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/cli/scheduler.py +0 -0
  271. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/config/__init__.py +0 -0
  272. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/config/assignee.py +0 -0
  273. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/__init__.py +0 -0
  274. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/database.py +0 -0
  275. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/__init__.py +0 -0
  276. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/filters.py +0 -0
  277. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/process.py +0 -0
  278. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/product.py +0 -0
  279. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/product_block.py +0 -0
  280. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/resource_type.py +0 -0
  281. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  282. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  283. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/subscription.py +0 -0
  284. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/filters/workflow.py +0 -0
  285. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/helpers.py +0 -0
  286. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/listeners.py +0 -0
  287. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/loaders.py +0 -0
  288. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/range/__init__.py +0 -0
  289. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/range/range.py +0 -0
  290. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/__init__.py +0 -0
  291. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/process.py +0 -0
  292. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/product.py +0 -0
  293. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/product_block.py +0 -0
  294. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/resource_type.py +0 -0
  295. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/sorting.py +0 -0
  296. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/subscription.py +0 -0
  297. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/db/sorting/workflow.py +0 -0
  298. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/devtools/__init__.py +0 -0
  299. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/devtools/populator.py +0 -0
  300. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/devtools/scripts/__init__.py +0 -0
  301. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  302. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  303. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/devtools/scripts/shared.py +0 -0
  304. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/distlock/__init__.py +0 -0
  305. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/distlock/distlock_manager.py +0 -0
  306. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/distlock/managers/__init__.py +0 -0
  307. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  308. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/domain/__init__.py +0 -0
  309. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/domain/base.py +0 -0
  310. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/domain/customer_description.py +0 -0
  311. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/domain/helpers.py +0 -0
  312. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/domain/lifecycle.py +0 -0
  313. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/exception_handlers.py +0 -0
  314. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/__init__.py +0 -0
  315. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/validators/__init__.py +0 -0
  316. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  317. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/validators/customer_id.py +0 -0
  318. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/validators/display_subscription.py +0 -0
  319. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/validators/network_type_validators.py +0 -0
  320. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/forms/validators/product_id.py +0 -0
  321. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/__init__.py +0 -0
  322. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/autoregistration.py +0 -0
  323. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/extensions/__init__.py +0 -0
  324. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/extensions/stats.py +0 -0
  325. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/loaders/__init__.py +0 -0
  326. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  327. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/mutations/customer_description.py +0 -0
  328. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/mutations/start_process.py +0 -0
  329. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/pagination.py +0 -0
  330. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/__init__.py +0 -0
  331. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/customer.py +0 -0
  332. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/helpers.py +0 -0
  333. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/process.py +0 -0
  334. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/product.py +0 -0
  335. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/product_block.py +0 -0
  336. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  337. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/subscription.py +0 -0
  338. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/version.py +0 -0
  339. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/resolvers/workflow.py +0 -0
  340. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schema.py +0 -0
  341. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/__init__.py +0 -0
  342. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/customer.py +0 -0
  343. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/customer_description.py +0 -0
  344. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/errors.py +0 -0
  345. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  346. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/helpers.py +0 -0
  347. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/process.py +0 -0
  348. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/product_block.py +0 -0
  349. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/resource_type.py +0 -0
  350. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/settings.py +0 -0
  351. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  352. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/subscription.py +0 -0
  353. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/version.py +0 -0
  354. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/schemas/workflow.py +0 -0
  355. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/types.py +0 -0
  356. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/__init__.py +0 -0
  357. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  358. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  359. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  360. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  361. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  362. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  363. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/override_class.py +0 -0
  364. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  365. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/log_config.py +0 -0
  366. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/README +0 -0
  367. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/alembic.ini +0 -0
  368. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/env.py +0 -0
  369. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/script.py.mako +0 -0
  370. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  371. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/templates/env.py.j2 +0 -0
  372. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  373. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  374. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  375. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  376. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  377. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  378. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  379. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  380. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  381. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  382. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  383. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  384. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  385. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  386. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  387. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  388. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  389. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  390. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  391. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  392. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/migrations/versions/schema/2025-10-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  393. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/py.typed +0 -0
  394. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schedules/__init__.py +0 -0
  395. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schedules/resume_workflows.py +0 -0
  396. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schedules/scheduling.py +0 -0
  397. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schedules/task_vacuum.py +0 -0
  398. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schedules/validate_products.py +0 -0
  399. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schedules/validate_subscriptions.py +0 -0
  400. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/__init__.py +0 -0
  401. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/base.py +0 -0
  402. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/engine_settings.py +0 -0
  403. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/fixed_input.py +0 -0
  404. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/problem_detail.py +0 -0
  405. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/process.py +0 -0
  406. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/product.py +0 -0
  407. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/product_block.py +0 -0
  408. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/resource_type.py +0 -0
  409. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/subscription.py +0 -0
  410. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/subscription_descriptions.py +0 -0
  411. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/schemas/workflow.py +0 -0
  412. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/security.py +0 -0
  413. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/__init__.py +0 -0
  414. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/fixed_inputs.py +0 -0
  415. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/process_broadcast_thread.py +0 -0
  416. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/products.py +0 -0
  417. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/resource_types.py +0 -0
  418. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/settings.py +0 -0
  419. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/subscription_relations.py +0 -0
  420. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/subscriptions.py +0 -0
  421. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/services/translations.py +0 -0
  422. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/targets.py +0 -0
  423. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/types.py +0 -0
  424. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/__init__.py +0 -0
  425. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/crypt.py +0 -0
  426. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/datetime.py +0 -0
  427. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/deprecation_logger.py +0 -0
  428. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/docs.py +0 -0
  429. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/enrich_process.py +0 -0
  430. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/errors.py +0 -0
  431. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/fixed_inputs.py +0 -0
  432. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/functional.py +0 -0
  433. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/get_subscription_dict.py +0 -0
  434. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/get_updated_properties.py +0 -0
  435. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/helpers.py +0 -0
  436. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/json.py +0 -0
  437. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/search_query.py +0 -0
  438. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/state.py +0 -0
  439. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/strings.py +0 -0
  440. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/utils/validate_data_version.py +0 -0
  441. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/version.py +0 -0
  442. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/websocket/__init__.py +0 -0
  443. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  444. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  445. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/websocket/websocket_manager.py +0 -0
  446. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflow.py +0 -0
  447. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/__init__.py +0 -0
  448. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/modify_note.py +0 -0
  449. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/removed_workflow.py +0 -0
  450. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/steps.py +0 -0
  451. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/tasks/__init__.py +0 -0
  452. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  453. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  454. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  455. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/tasks/validate_products.py +0 -0
  456. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/translations/en-GB.json +0 -0
  457. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/orchestrator/workflows/utils.py +0 -0
  458. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/setup.py +0 -0
  459. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/__init__.py +0 -0
  460. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/__init__.py +0 -0
  461. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/conftest.py +0 -0
  462. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  463. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  464. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
  465. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
  466. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  467. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
  468. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  469. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
  470. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  471. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
  472. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/acceptance_tests/test_test_product.py +0 -0
  473. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/__init__.py +0 -0
  474. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/__init__.py +0 -0
  475. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_caching.py +0 -0
  476. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_health.py +0 -0
  477. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_helpers.py +0 -0
  478. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_models.py +0 -0
  479. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_processes.py +0 -0
  480. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_processes_ws.py +0 -0
  481. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_product_blocks.py +0 -0
  482. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_products.py +0 -0
  483. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_resource_types.py +0 -0
  484. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_settings.py +0 -0
  485. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
  486. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_workflows.py +0 -0
  487. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/api/test_ws.py +0 -0
  488. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/__init__.py +0 -0
  489. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/conftest.py +0 -0
  490. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
  491. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/main.py +0 -0
  492. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/env.py +0 -0
  493. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
  494. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
  495. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
  496. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -0
  497. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -0
  498. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -0
  499. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
  500. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  501. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
  502. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
  503. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
  504. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
  505. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  506. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
  507. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
  508. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
  509. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
  510. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
  511. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
  512. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
  513. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
  514. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
  515. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
  516. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
  517. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
  518. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
  519. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
  520. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
  521. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
  522. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
  523. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
  524. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
  525. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
  526. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
  527. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
  528. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
  529. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
  530. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
  531. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
  532. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
  533. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
  534. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
  535. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
  536. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
  537. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
  538. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
  539. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
  540. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/generate.sh +0 -0
  541. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
  542. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
  543. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/product_config1.yaml +0 -0
  544. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/product_config2.yaml +0 -0
  545. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/product_config3.yaml +0 -0
  546. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/data/product_config4.yaml +0 -0
  547. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/generator/__init__.py +0 -0
  548. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/generator/test_enums.py +0 -0
  549. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/helpers.py +0 -0
  550. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/test_cli_generate.py +0 -0
  551. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/test_config_validation.py +0 -0
  552. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/test_generate_code.py +0 -0
  553. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
  554. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
  555. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/config.py +0 -0
  556. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/db/__init__.py +0 -0
  557. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/db/test_listeners.py +0 -0
  558. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/domain/__init__.py +0 -0
  559. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/domain/test_base_multiple.py +0 -0
  560. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
  561. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/domain/test_base_with_union.py +0 -0
  562. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/domain/test_lifecycle.py +0 -0
  563. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/__init__.py +0 -0
  564. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/processes.py +0 -0
  565. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/__init__.py +0 -0
  566. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  567. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
  568. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
  569. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
  570. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
  571. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
  572. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
  573. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  574. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
  575. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
  576. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
  577. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
  578. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
  579. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
  580. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
  581. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
  582. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
  583. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
  584. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
  585. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/products/resource_types.py +0 -0
  586. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/fixtures/workflows.py +0 -0
  587. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/forms/__init__.py +0 -0
  588. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
  589. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/forms/test_customer_id.py +0 -0
  590. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/forms/test_generic_validators.py +0 -0
  591. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/__init__.py +0 -0
  592. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/conftest.py +0 -0
  593. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/extensions/__init__.py +0 -0
  594. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
  595. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/mutations/helpers.py +0 -0
  596. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
  597. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
  598. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_customer.py +0 -0
  599. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_process.py +0 -0
  600. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_processes.py +0 -0
  601. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_product_blocks.py +0 -0
  602. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_resource_types.py +0 -0
  603. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
  604. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
  605. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_version.py +0 -0
  606. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/test_workflows.py +0 -0
  607. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/__init__.py +0 -0
  608. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/fixtures.py +0 -0
  609. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
  610. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
  611. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
  612. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
  613. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
  614. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
  615. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/helpers.py +0 -0
  616. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/schedules/__init__.py +0 -0
  617. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/schedules/test_scheduling.py +0 -0
  618. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/services/__init__.py +0 -0
  619. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/services/test_products.py +0 -0
  620. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/services/test_subscription_relations.py +0 -0
  621. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/services/test_subscriptions.py +0 -0
  622. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/services/test_translations.py +0 -0
  623. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/test_db.py +0 -0
  624. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/test_types.py +0 -0
  625. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/test_workflow.py +0 -0
  626. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/__init__.py +0 -0
  627. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/get_subscription_dict.py +0 -0
  628. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_datetime.py +0 -0
  629. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_errors.py +0 -0
  630. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_functional.py +0 -0
  631. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
  632. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_json.py +0 -0
  633. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_search_query.py +0 -0
  634. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_state.py +0 -0
  635. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/utils/test_strings.py +0 -0
  636. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/websocket/__init__.py +0 -0
  637. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/websocket/test_broadcast.py +0 -0
  638. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/conftest.py +0 -0
  639. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/shared/__init__.py +0 -0
  640. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
  641. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/tasks/__init__.py +0 -0
  642. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -0
  643. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
  644. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
  645. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
  646. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/test_async_workflow.py +0 -0
  647. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/test_config_db_code.py +0 -0
  648. {orchestrator_core-3.0.0rc1 → orchestrator_core-3.1.0}/test/unit_tests/workflows/test_modify_note.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 3.0.0rc1
2
+ current_version = 3.1.0
3
3
  commit = False
4
4
  tag = False
5
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(rc(?P<build>\d+))?
@@ -0,0 +1,71 @@
1
+ name: CodSpeed
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" ]
6
+ pull_request:
7
+ branches: [ "main" ]
8
+
9
+ jobs:
10
+ codspeed:
11
+ name: Run benchmarks
12
+ runs-on: ubuntu-latest
13
+ container:
14
+ image: python:3.13
15
+ options: --privileged
16
+ services:
17
+ postgres:
18
+ image: postgres:15-alpine
19
+ # Provide the password for postgres
20
+ env:
21
+ POSTGRES_PASSWORD: nwa
22
+ POSTGRES_USER: nwa
23
+ # Set health checks to wait until postgres has started
24
+ options: >-
25
+ --health-cmd pg_isready
26
+ --health-interval 10s
27
+ --health-timeout 5s
28
+ --health-retries 5
29
+ redis:
30
+ # Docker Hub image
31
+ image: redis
32
+ # Set health checks to wait until redis has started
33
+ options: >-
34
+ --health-cmd "redis-cli ping"
35
+ --health-interval 10s
36
+ --health-timeout 5s
37
+ --health-retries 5
38
+ steps:
39
+ # Downloads a copy of the code in your repository before running CI tests
40
+ - name: Check out repository code
41
+ uses: actions/checkout@v3
42
+
43
+ - name: Install dependencies
44
+ run: |
45
+ apt update
46
+ apt install curl git build-essential libpq-dev libffi-dev -y
47
+ python -m pip install --upgrade pip
48
+ pip install flit
49
+ flit install --deps develop --symlink
50
+ echo "GIT_COMMIT_HASH=\"test\"" > orchestrator/version.py
51
+ env:
52
+ FLIT_ROOT_INSTALL: 1
53
+
54
+ # Prevent error "repository path is not owned by the current user"
55
+ - name: Fix git owner
56
+ run: git config --global --add safe.directory "*"
57
+
58
+ # Speculatively add the cargo binary directory to the PATH because codspeed's installer script somehow doesn't
59
+ - name: Add $HOME/.cargo/bin to PATH
60
+ run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
61
+
62
+ - uses: CodSpeedHQ/action@v3
63
+ with:
64
+ run: CACHE_URI=redis://redis DATABASE_URI=postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB pytest test/unit_tests --codspeed
65
+ token: ${{ secrets.CODSPEED_TOKEN }}
66
+ env:
67
+ POSTGRES_DB: orchestrator-core-test
68
+ POSTGRES_USER: nwa
69
+ POSTGRES_PASSWORD: nwa
70
+ POSTGRES_HOST: postgres
71
+ ENVIRONMENT: TESTING
@@ -51,7 +51,7 @@ jobs:
51
51
  env:
52
52
  FLIT_ROOT_INSTALL: 1
53
53
  - name: Run Unit tests
54
- run: CACHE_URI=redis://redis DATABASE_URI=postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB pytest --cov-branch --cov=orchestrator --cov-report=xml --ignore=test --ignore=orchestrator/devtools --ignore=examples --ignore=docs --ignore=orchestrator/vendor
54
+ run: CACHE_URI=redis://redis DATABASE_URI=postgresql+psycopg://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB pytest --cov-branch --cov=orchestrator --cov-report=xml --ignore=test --ignore=orchestrator/devtools --ignore=examples --ignore=docs --ignore=orchestrator/vendor
55
55
  env:
56
56
  POSTGRES_DB: orchestrator-core-test
57
57
  POSTGRES_USER: nwa
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 3.0.0rc1
3
+ Version: 3.1.0
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Requires-Python: >=3.11,<3.14
6
6
  Classifier: Intended Audience :: Information Technology
@@ -27,36 +27,37 @@ Classifier: Programming Language :: Python :: 3.12
27
27
  Classifier: Programming Language :: Python :: 3.11
28
28
  Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
29
29
  Classifier: Topic :: Internet :: WWW/HTTP
30
+ License-File: LICENSE
30
31
  Requires-Dist: alembic==1.14.1
31
32
  Requires-Dist: anyio>=3.7.0
32
33
  Requires-Dist: click==8.*
33
34
  Requires-Dist: deprecated
34
- Requires-Dist: deepmerge==1.1.1
35
+ Requires-Dist: deepmerge==2.0
35
36
  Requires-Dist: fastapi~=0.115.2
36
37
  Requires-Dist: fastapi-etag==0.4.0
37
38
  Requires-Dist: more-itertools~=10.6.0
38
39
  Requires-Dist: itsdangerous
39
40
  Requires-Dist: Jinja2==3.1.5
40
41
  Requires-Dist: orjson==3.10.15
41
- Requires-Dist: psycopg2-binary==2.9.10
42
- Requires-Dist: pydantic[email]~=2.8.2
43
- Requires-Dist: pydantic-settings~=2.7.1
42
+ Requires-Dist: psycopg[binary]==3.2.5
43
+ Requires-Dist: pydantic[email]~=2.9.2
44
+ Requires-Dist: pydantic-settings~=2.8.0
44
45
  Requires-Dist: python-dateutil==2.8.2
45
46
  Requires-Dist: python-rapidjson>=1.18,<1.21
46
- Requires-Dist: pytz==2024.1
47
+ Requires-Dist: pytz==2025.1
47
48
  Requires-Dist: redis==5.0.3
48
49
  Requires-Dist: schedule==1.1.0
49
- Requires-Dist: sentry-sdk[fastapi]~=2.18.0
50
+ Requires-Dist: sentry-sdk[fastapi]~=2.22.0
50
51
  Requires-Dist: SQLAlchemy==2.0.38
51
52
  Requires-Dist: SQLAlchemy-Utils==0.41.2
52
53
  Requires-Dist: structlog
53
- Requires-Dist: typer==0.15.1
54
- Requires-Dist: uvicorn[standard]~=0.32.0
54
+ Requires-Dist: typer==0.15.2
55
+ Requires-Dist: uvicorn[standard]~=0.34.0
55
56
  Requires-Dist: nwa-stdlib~=1.9.0
56
57
  Requires-Dist: oauth2-lib~=2.4.0
57
58
  Requires-Dist: tabulate==0.9.0
58
59
  Requires-Dist: strawberry-graphql>=0.246.2
59
- Requires-Dist: pydantic-forms~=1.2.1
60
+ Requires-Dist: pydantic-forms~=1.3.0
60
61
  Requires-Dist: celery~=5.4.0 ; extra == "celery"
61
62
  Requires-Dist: toml ; extra == "dev"
62
63
  Requires-Dist: bumpversion ; extra == "dev"
@@ -81,8 +82,9 @@ Requires-Dist: dirty-equals ; extra == "test"
81
82
  Requires-Dist: jsonref ; extra == "test"
82
83
  Requires-Dist: mypy==1.9 ; extra == "test"
83
84
  Requires-Dist: pyinstrument ; extra == "test"
84
- Requires-Dist: pytest==8.3.2 ; extra == "test"
85
+ Requires-Dist: pytest==8.3.5 ; extra == "test"
85
86
  Requires-Dist: pytest-asyncio==0.21.2 ; extra == "test"
87
+ Requires-Dist: pytest-codspeed ; extra == "test"
86
88
  Requires-Dist: pytest-cov ; extra == "test"
87
89
  Requires-Dist: pytest-httpx ; extra == "test"
88
90
  Requires-Dist: pytest-xdist ; extra == "test"
@@ -191,3 +191,10 @@ You can do the necessary change with a clean, e.g. every change committed, branc
191
191
  ```shell
192
192
  bumpversion patch --new-version 0.4.1-rc3
193
193
  ```
194
+
195
+ ### Changing the Core database schema
196
+ When you would like to change the core database schema, execute the following steps.
197
+
198
+ - Create the new model `orchestrator/database/models.py`
199
+ - `cd orchestrator/migrations`
200
+ - `alembic revision --autogenerate -m "Name of the migratioin"`
@@ -6,6 +6,20 @@ free to raise an issue in the project. We will strive to reply to your enquiry A
6
6
  ## Documentation
7
7
  We use [**MKDOCS**](https://www.mkdocs.org) as a documentation tool. Please create a PR if you have any additions or contributions to make. All docs can be written in MD or html. Full guidelines on how to set this up can be found [here](development.md).
8
8
 
9
+ ## Pre-commit hooks
10
+ We use pre-commit hooks to ensure that the code is formatted correctly and that the tests pass. To install the
11
+ pre-commit hooks, run the following command:
12
+
13
+ ```shell
14
+ pre-commit install
15
+ ```
16
+
17
+ To run the pre-commit hooks manually, run the following command:
18
+
19
+ ```shell
20
+ pre-commit run --all-files
21
+ ```
22
+
9
23
  ## Orchestrator release
10
24
  The `orchestrator-core` has no release schedule but is actively used and maintained by the workflow orchestrator group.
11
25
  Creating a new release is done by the developers of the project and the procedure is as follows.
@@ -0,0 +1,18 @@
1
+ ---
2
+ hide:
3
+ - navigation
4
+ ---
5
+ # 3.0 Migration Guide
6
+
7
+ In this document we describe the steps that should be taken to migrate from `orchestrator-core` v2 to v3.
8
+
9
+ ## About 3.0
10
+
11
+ In this release, deprecated import statements from the `orchestrator.types` module are removed, that now come from
12
+ `pydantic-forms.types` instead. These will have to be updated in your implementation of the orchestrator as well.
13
+
14
+ ## Steps
15
+
16
+ To update the import statements you may have in your implementation of Workflow Orchestrator, we offer a migration
17
+ script that can be run as follows: `python -m orchestrator.devtools.scripts.migrate_30 <dir>` where `<dir>` points to
18
+ your orchestrator implementation.
@@ -189,7 +189,9 @@ nav:
189
189
  # - Workflow Lifecycles: reference-docs/workflows/workflow-lifecycles.md
190
190
  - Callbacks: reference-docs/workflows/callbacks.md
191
191
  - Websockets: reference-docs/websockets.md
192
- - Migration guide: migration-guide/2.0.md
192
+ - Migration guides:
193
+ - 2.x: migration-guide/2.0.md
194
+ - 3.x: migration-guide/3.0.md
193
195
 
194
196
  - Workshops:
195
197
  # - Beginner:
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "3.0.0rc1"
16
+ __version__ = "3.1.0"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -28,6 +28,7 @@ from orchestrator.services import processes, settings
28
28
  from orchestrator.settings import ExecutorType, app_settings
29
29
  from orchestrator.utils.json import json_dumps
30
30
  from orchestrator.utils.redis import delete_keys_matching_pattern
31
+ from orchestrator.utils.redis_client import create_redis_asyncio_client
31
32
  from orchestrator.websocket import WS_CHANNELS, broadcast_invalidate_cache, websocket_manager
32
33
 
33
34
  router = APIRouter()
@@ -41,7 +42,7 @@ CACHE_FLUSH_OPTIONS: dict[str, str] = {
41
42
 
42
43
  @router.delete("/cache/{name}")
43
44
  async def clear_cache(name: str) -> int | None:
44
- cache: AIORedis = AIORedis.from_url(str(app_settings.CACHE_URI))
45
+ cache: AIORedis = create_redis_asyncio_client(app_settings.CACHE_URI)
45
46
  if name not in CACHE_FLUSH_OPTIONS:
46
47
  raise_status(HTTPStatus.BAD_REQUEST, "Invalid cache name")
47
48
 
@@ -31,13 +31,16 @@ from orchestrator.cli.generator.generator.helpers import (
31
31
  sort_product_blocks_by_dependencies,
32
32
  )
33
33
  from orchestrator.cli.generator.generator.settings import product_generator_settings as settings
34
+ from orchestrator.settings import convert_database_uri
34
35
 
35
36
  logger = structlog.getLogger(__name__)
36
37
 
37
38
 
38
39
  def create_migration_file(message: str, head: str) -> Path | None:
39
- if not environ.get("DATABASE_URI"):
40
- environ.update({"DATABASE_URI": "postgresql://nwa:nwa@localhost/orchestrator-core"})
40
+ if environ.get("DATABASE_URI"):
41
+ environ.update({"DATABASE_URI": convert_database_uri(environ["DATABASE_URI"])})
42
+ else:
43
+ environ.update({"DATABASE_URI": "postgresql+psycopg://nwa:nwa@localhost/orchestrator-core"})
41
44
  if not environ.get("PYTHONPATH"):
42
45
  environ.update({"PYTHONPATH": "."})
43
46
  logger.info(
@@ -13,6 +13,7 @@
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
+ import enum
16
17
  from datetime import datetime, timezone
17
18
 
18
19
  import sqlalchemy
@@ -23,6 +24,7 @@ from sqlalchemy import (
23
24
  Boolean,
24
25
  CheckConstraint,
25
26
  Column,
27
+ Enum,
26
28
  ForeignKey,
27
29
  Index,
28
30
  Integer,
@@ -81,6 +83,20 @@ class UtcTimestamp(TypeDecorator):
81
83
  return value.astimezone(timezone.utc) if value else value
82
84
 
83
85
 
86
+ class InputStateTable(BaseModel):
87
+ __tablename__ = "input_states"
88
+
89
+ class InputType(enum.Enum):
90
+ user_input = "user_input"
91
+ initial_state = "initial_state"
92
+
93
+ input_state_id = mapped_column(UUIDType, primary_key=True, server_default=text("uuid_generate_v4()"), index=True)
94
+ process_id = mapped_column("pid", UUIDType, ForeignKey("processes.pid"), nullable=False)
95
+ input_state = mapped_column(pg.JSONB(), nullable=False) # type: ignore
96
+ input_time = mapped_column(UtcTimestamp, server_default=text("current_timestamp()"), nullable=False)
97
+ input_type = mapped_column(Enum(InputType), nullable=False)
98
+
99
+
84
100
  class ProcessTable(BaseModel):
85
101
  __tablename__ = "processes"
86
102
 
@@ -101,6 +117,7 @@ class ProcessTable(BaseModel):
101
117
  steps = relationship(
102
118
  "ProcessStepTable", cascade="delete", passive_deletes=True, order_by="asc(ProcessStepTable.executed_at)"
103
119
  )
120
+ input_states = relationship("InputStateTable", cascade="delete", order_by="desc(InputStateTable.input_time)")
104
121
  process_subscriptions = relationship("ProcessSubscriptionTable", back_populates="process", passive_deletes=True)
105
122
  workflow = relationship("WorkflowTable", back_populates="processes")
106
123
 
@@ -20,6 +20,7 @@ from redis.lock import Lock as SyncLock
20
20
  from structlog import get_logger
21
21
 
22
22
  from orchestrator.settings import app_settings
23
+ from orchestrator.utils.redis_client import create_redis_asyncio_client, create_redis_client
23
24
 
24
25
  logger = get_logger(__name__)
25
26
 
@@ -37,7 +38,7 @@ class RedisDistLockManager:
37
38
  self.redis_address = redis_address
38
39
 
39
40
  async def connect_redis(self) -> None:
40
- self.redis_conn = AIORedis.from_url(str(self.redis_address))
41
+ self.redis_conn = create_redis_asyncio_client(self.redis_address)
41
42
 
42
43
  async def disconnect_redis(self) -> None:
43
44
  if self.redis_conn:
@@ -78,7 +79,7 @@ class RedisDistLockManager:
78
79
  def release_sync(self, lock: Lock) -> None:
79
80
  redis_conn: Redis | None = None
80
81
  try:
81
- redis_conn = Redis.from_url(str(app_settings.CACHE_URI))
82
+ redis_conn = create_redis_client(app_settings.CACHE_URI)
82
83
  sync_lock: SyncLock = SyncLock(
83
84
  redis=redis_conn,
84
85
  name=lock.name, # type: ignore
@@ -21,6 +21,7 @@ from orchestrator.services.processes import SYSTEM_USER, ThreadPoolWorkerStatus,
21
21
  from orchestrator.services.settings import get_engine_settings, get_engine_settings_for_update, post_update_to_slack
22
22
  from orchestrator.settings import ExecutorType, app_settings
23
23
  from orchestrator.utils.redis import delete_keys_matching_pattern
24
+ from orchestrator.utils.redis_client import create_redis_asyncio_client
24
25
 
25
26
  logger = structlog.get_logger(__name__)
26
27
 
@@ -57,7 +58,7 @@ def resolve_settings(info: OrchestratorInfo) -> StatusType:
57
58
 
58
59
  # Mutations
59
60
  async def clear_cache(info: OrchestratorInfo, name: str) -> CacheClearSuccess | Error:
60
- cache: AIORedis = AIORedis.from_url(str(app_settings.CACHE_URI))
61
+ cache: AIORedis = create_redis_asyncio_client(app_settings.CACHE_URI)
61
62
  if name not in CACHE_FLUSH_OPTIONS:
62
63
  return Error(message="Invalid cache name")
63
64
 
@@ -1,11 +1,11 @@
1
- from typing import TYPE_CHECKING, Annotated
1
+ from typing import TYPE_CHECKING, Annotated, Iterable
2
2
 
3
3
  import strawberry
4
4
  from strawberry import UNSET
5
5
  from strawberry.federation.schema_directives import Key
6
6
 
7
7
  from oauth2_lib.strawberry import authenticated_field
8
- from orchestrator.db import ProductTable
8
+ from orchestrator.db import ProductBlockTable, ProductTable
9
9
  from orchestrator.domain.base import ProductModel
10
10
  from orchestrator.graphql.pagination import Connection
11
11
  from orchestrator.graphql.schemas.fixed_input import FixedInput
@@ -51,6 +51,23 @@ class ProductType:
51
51
  filter_by_with_related_subscriptions = (filter_by or []) + [GraphqlFilter(field="product", value=self.name)]
52
52
  return await resolve_subscriptions(info, filter_by_with_related_subscriptions, sort_by, first, after)
53
53
 
54
+ @strawberry.field(description="Returns list of all nested productblock names") # type: ignore
55
+ async def all_pb_names(self) -> list[str]:
56
+
57
+ model = get_original_model(self, ProductTable)
58
+
59
+ def get_all_pb_names(product_blocks: list[ProductBlockTable]) -> Iterable[str]:
60
+ for product_block in product_blocks:
61
+ yield product_block.name
62
+
63
+ if product_block.depends_on:
64
+ yield from get_all_pb_names(product_block.depends_on)
65
+
66
+ names: list[str] = list(get_all_pb_names(model.product_blocks))
67
+ names.sort()
68
+
69
+ return names
70
+
54
71
  @strawberry.field(description="Return product blocks") # type: ignore
55
72
  async def product_blocks(self) -> list[Annotated["ProductBlock", strawberry.lazy(".product_block")]]:
56
73
  from orchestrator.graphql.schemas.product_block import ProductBlock
@@ -880,10 +880,10 @@ def delete_product(conn: sa.engine.Connection, name: str) -> None:
880
880
  RETURNING product_id
881
881
  ),
882
882
  deleted_p_pb AS (
883
- DELETE FROM product_product_blocks WHERE product_id IN (SELECT product_id FROM deleted_p)
883
+ DELETE FROM product_product_blocks WHERE product_id = ANY(SELECT product_id FROM deleted_p)
884
884
  ),
885
885
  deleted_pb_rt AS (
886
- DELETE FROM products_workflows WHERE product_id IN (SELECT product_id FROM deleted_p)
886
+ DELETE FROM products_workflows WHERE product_id = ANY(SELECT product_id FROM deleted_p)
887
887
  )
888
888
  SELECT * from deleted_p;
889
889
  """
@@ -911,10 +911,10 @@ def delete_product_block(conn: sa.engine.Connection, name: str) -> None:
911
911
  RETURNING product_block_id
912
912
  ),
913
913
  deleted_p_pb AS (
914
- DELETE FROM product_product_blocks WHERE product_block_id IN (SELECT product_block_id FROM deleted_pb)
914
+ DELETE FROM product_product_blocks WHERE product_block_id =ANY(SELECT product_block_id FROM deleted_pb)
915
915
  ),
916
916
  deleted_pb_rt AS (
917
- DELETE FROM product_block_resource_types WHERE product_block_id IN (SELECT product_block_id FROM deleted_pb)
917
+ DELETE FROM product_block_resource_types WHERE product_block_id =ANY(SELECT product_block_id FROM deleted_pb)
918
918
  )
919
919
  SELECT * from deleted_pb;
920
920
  """
@@ -968,7 +968,7 @@ def delete_resource_type(conn: sa.engine.Connection, resource_type: str) -> None
968
968
  RETURNING resource_type_id
969
969
  ),
970
970
  deleted_pb_rt AS (
971
- DELETE FROM product_block_resource_types WHERE resource_type_id IN (SELECT resource_type_id FROM deleted_pb)
971
+ DELETE FROM product_block_resource_types WHERE resource_type_id =ANY(SELECT resource_type_id FROM deleted_pb)
972
972
  )
973
973
  SELECT * from deleted_pb;
974
974
  """
@@ -0,0 +1,56 @@
1
+ """Added Input State Table.
2
+
3
+ Revision ID: bac6be6f2b4f
4
+ Revises: 4fjdn13f83ga
5
+ Create Date: 2025-02-12 14:39:53.664284
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ import sqlalchemy_utils
11
+ from alembic import op
12
+ from sqlalchemy.dialects import postgresql
13
+
14
+ from orchestrator import db
15
+
16
+ # revision identifiers, used by Alembic.
17
+ revision = "bac6be6f2b4f"
18
+ down_revision = "4fjdn13f83ga"
19
+ branch_labels = None
20
+ depends_on = None
21
+
22
+
23
+ def upgrade() -> None:
24
+ # ### commands auto generated by Alembic - please adjust! ###
25
+ op.create_table(
26
+ "input_states",
27
+ sa.Column(
28
+ "input_state_id",
29
+ sqlalchemy_utils.types.uuid.UUIDType(),
30
+ server_default=sa.text("uuid_generate_v4()"),
31
+ nullable=False,
32
+ ),
33
+ sa.Column("pid", sqlalchemy_utils.types.uuid.UUIDType(), nullable=False),
34
+ sa.Column("input_state", postgresql.JSONB(astext_type=sa.Text()), nullable=False), # type: ignore
35
+ sa.Column(
36
+ "input_time",
37
+ db.models.UtcTimestamp(timezone=True),
38
+ server_default=sa.text("current_timestamp"),
39
+ nullable=False,
40
+ ),
41
+ sa.Column("input_type", sa.Enum("user_input", "initial_state", name="inputtype"), nullable=False),
42
+ sa.ForeignKeyConstraint(
43
+ ["pid"],
44
+ ["processes.pid"],
45
+ ),
46
+ sa.PrimaryKeyConstraint("input_state_id"),
47
+ )
48
+ op.create_index(op.f("ix_input_state_input_state_id"), "input_states", ["input_state_id"], unique=False)
49
+ # ### end Alembic commands ###
50
+
51
+
52
+ def downgrade() -> None:
53
+ # ### commands auto generated by Alembic - please adjust! ###
54
+ op.drop_index(op.f("ix_input_state_input_state_id"), table_name="input_states")
55
+ op.drop_table("input_statse")
56
+ # ### end Alembic commands ###
@@ -22,6 +22,7 @@ from kombu.exceptions import ConnectionError, OperationalError
22
22
  from orchestrator import app_settings
23
23
  from orchestrator.api.error_handling import raise_status
24
24
  from orchestrator.db import ProcessTable, db
25
+ from orchestrator.services.input_state import store_input_state
25
26
  from orchestrator.services.processes import create_process, delete_process
26
27
  from orchestrator.targets import Target
27
28
  from orchestrator.workflows import get_workflow
@@ -53,9 +54,8 @@ def _celery_start_process(
53
54
  task_name = NEW_TASK if workflow.target == Target.SYSTEM else NEW_WORKFLOW
54
55
  trigger_task = get_celery_task(task_name)
55
56
  pstat = create_process(workflow_key, user_inputs, user)
56
- tasks = pstat.state.s
57
57
  try:
58
- result = trigger_task.delay(pstat.process_id, workflow_key, tasks, user)
58
+ result = trigger_task.delay(pstat.process_id, workflow_key, user)
59
59
  _block_when_testing(result)
60
60
  return pstat.process_id
61
61
  except (ConnectionError, OperationalError) as e:
@@ -82,9 +82,12 @@ def _celery_resume_process(
82
82
 
83
83
  task_name = RESUME_TASK if workflow.target == Target.SYSTEM else RESUME_WORKFLOW
84
84
  trigger_task = get_celery_task(task_name)
85
+
86
+ user_inputs = user_inputs or [{}]
87
+ store_input_state(pstat.process_id, user_inputs, "user_input")
85
88
  try:
86
89
  _celery_set_process_status_resumed(process)
87
- result = trigger_task.delay(pstat.process_id, user_inputs, user)
90
+ result = trigger_task.delay(pstat.process_id, user)
88
91
  _block_when_testing(result)
89
92
 
90
93
  return pstat.process_id
@@ -0,0 +1,76 @@
1
+ # Copyright 2019-2025 SURF.
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ from typing import Any, Literal
14
+ from uuid import UUID
15
+
16
+ import structlog
17
+ from sqlalchemy import select
18
+
19
+ from orchestrator.db import db
20
+ from orchestrator.db.models import InputStateTable
21
+
22
+ logger = structlog.get_logger(__name__)
23
+
24
+ InputType = Literal["initial_state", "user_input"]
25
+
26
+
27
+ def retrieve_input_state(process_id: UUID, input_type: InputType) -> InputStateTable:
28
+ """Get user input.
29
+
30
+ Args:
31
+ process_id: Process ID
32
+ input_type: The type of the input.
33
+
34
+ Returns:
35
+ User input table
36
+
37
+ """
38
+
39
+ res: InputStateTable | None = db.session.scalars(
40
+ select(InputStateTable)
41
+ .filter(InputStateTable.process_id == process_id)
42
+ .filter(InputStateTable.input_type == input_type)
43
+ .order_by(InputStateTable.input_time.asc())
44
+ ).first()
45
+
46
+ if res:
47
+ logger.debug("Retrieved input state", process_id=process_id, input_state=res, input_type=input_type)
48
+ return res
49
+ raise ValueError(f"No input state for pid: {process_id}")
50
+
51
+
52
+ def store_input_state(
53
+ process_id: UUID,
54
+ input_state: dict[str, Any] | list[dict[str, Any]],
55
+ input_type: InputType,
56
+ ) -> None:
57
+ """Store user input state.
58
+
59
+ Args:
60
+ process_id: Process ID
61
+ input_state: Dictionary of user input state
62
+ input_type: The type of the input.
63
+
64
+ Returns:
65
+ None
66
+
67
+ """
68
+ logger.debug("Store input state", process_id=process_id, input_state=input_state, input_type=input_type)
69
+ db.session.add(
70
+ InputStateTable(
71
+ process_id=process_id,
72
+ input_state=input_state,
73
+ input_type=input_type,
74
+ )
75
+ )
76
+ db.session.commit()
@@ -18,7 +18,7 @@ from typing import Any
18
18
  from uuid import UUID, uuid4
19
19
 
20
20
  import structlog
21
- from deepmerge import Merger
21
+ from deepmerge.merger import Merger
22
22
  from sqlalchemy import delete, select
23
23
  from sqlalchemy.exc import SQLAlchemyError
24
24
  from sqlalchemy.orm import joinedload
@@ -35,6 +35,7 @@ from orchestrator.db import (
35
35
  )
36
36
  from orchestrator.distlock import distlock_manager
37
37
  from orchestrator.schemas.engine_settings import WorkerStatus
38
+ from orchestrator.services.input_state import store_input_state
38
39
  from orchestrator.services.settings import get_engine_settings_for_update
39
40
  from orchestrator.services.workflows import get_workflow_by_name
40
41
  from orchestrator.settings import ExecutorType, app_settings
@@ -450,7 +451,7 @@ def create_process(
450
451
  )
451
452
 
452
453
  _db_create_process(pstat)
453
-
454
+ store_input_state(process_id, state | initial_state, "initial_state")
454
455
  return pstat
455
456
 
456
457
 
@@ -514,7 +515,7 @@ def thread_resume_process(
514
515
 
515
516
  if user_input:
516
517
  pstat.update(state=pstat.state.map(lambda state: StateMerger.merge(state, user_input)))
517
-
518
+ store_input_state(pstat.process_id, user_input, "user_input")
518
519
  # enforce an update to the process status to properly show the process
519
520
  process.last_status = ProcessStatus.RUNNING
520
521
  db.session.add(process)
@@ -529,8 +530,8 @@ def thread_validate_workflow(validation_workflow: str, json: list[State] | None)
529
530
 
530
531
 
531
532
  THREADPOOL_EXECUTION_CONTEXT: dict[str, Callable] = {
532
- "start": lambda *args, **kwargs: thread_start_process(*args, **kwargs),
533
- "resume": lambda *args, **kwargs: thread_resume_process(*args, **kwargs),
533
+ "start": thread_start_process,
534
+ "resume": thread_resume_process,
534
535
  "validate": thread_validate_workflow,
535
536
  }
536
537