orchestrator-core 3.1.1__tar.gz → 3.1.2rc3__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 (646) hide show
  1. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.bumpversion.cfg +1 -1
  2. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/run-linting-tests.yml +2 -2
  3. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/run-unit-tests.yml +2 -0
  4. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/PKG-INFO +7 -7
  5. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/app/scaling.md +106 -0
  6. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/workflows/callbacks.md +8 -0
  7. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/__init__.py +1 -1
  8. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/processes.py +23 -0
  9. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/models.py +5 -3
  10. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/env.py +14 -1
  11. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +1 -1
  12. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +1 -1
  13. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +1 -1
  14. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/processes.py +71 -9
  15. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/state.py +73 -53
  16. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflow.py +1 -0
  17. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/pyproject.toml +6 -6
  18. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/shared.py +1 -1
  19. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/conftest.py +3 -1
  20. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/forms/test_display_subscription.py +5 -1
  21. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_subscriptions.py +1 -1
  22. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/helpers.py +1 -1
  23. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_state.py +190 -1
  24. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/test_async_workflow.py +116 -0
  25. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.coveragerc +0 -0
  26. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  27. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  28. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/dependabot.yml +0 -0
  29. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/README.md +0 -0
  30. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/build-push-container.yml +0 -0
  31. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/changelog.yml +0 -0
  32. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/codeql-analysis.yml +0 -0
  33. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/gh-pages.yml +0 -0
  34. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/issues.yml +0 -0
  35. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/publish-package.yml +0 -0
  36. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/run-codspeed-tests.yml +0 -0
  37. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.github/workflows/scheduled-build.yml +0 -0
  38. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.gitignore +0 -0
  39. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.pre-commit-config.yaml +0 -0
  40. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/.stignore +0 -0
  41. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/CHANGELOG.md +0 -0
  42. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/Dockerfile +0 -0
  43. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/LICENSE +0 -0
  44. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/NOTICE +0 -0
  45. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/README.md +0 -0
  46. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/codecov.yml +0 -0
  47. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/application/domainmodels.md +0 -0
  48. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/application/forms-frontend.md +0 -0
  49. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/application/tasks.md +0 -0
  50. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/application/workflow.md +0 -0
  51. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/framework.md +0 -0
  52. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/img/base-orchestrator-setup.png +0 -0
  53. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  54. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  55. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  56. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
  57. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/orchestration/philosophy.md +0 -0
  58. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/backfilling.md +0 -0
  59. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/context.md +0 -0
  60. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/imports.md +0 -0
  61. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/introduction.md +0 -0
  62. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/ip_static.md +0 -0
  63. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/ip_static.png +0 -0
  64. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
  65. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  66. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/l2_vpn.md +0 -0
  67. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/l2_vpn.png +0 -0
  68. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/modelling.md +0 -0
  69. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/node.md +0 -0
  70. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/node.png +0 -0
  71. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/port.md +0 -0
  72. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/port.png +0 -0
  73. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/product_block_graph.md +0 -0
  74. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/product_block_graph.png +0 -0
  75. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/standards.md +0 -0
  76. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/product_modelling/terminology.md +0 -0
  77. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/architecture/tldr.md +0 -0
  78. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/contributing/development.md +0 -0
  79. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/contributing/guidelines.md +0 -0
  80. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/contributing/testing.md +0 -0
  81. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/css/custom.css +0 -0
  82. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/css/style.css +0 -0
  83. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/css/termynal.css +0 -0
  84. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/getting-started/base.md +0 -0
  85. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/getting-started/docker.md +0 -0
  86. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/getting-started/orchestration-ui.md +0 -0
  87. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/getting-started/prepare-source-folder.md +0 -0
  88. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/getting-started/versions.md +0 -0
  89. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/img/WFO-Emblem-White.png +0 -0
  90. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/img/favicon.ico +0 -0
  91. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/index.md +0 -0
  92. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/js/custom.js +0 -0
  93. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/js/termynal.js +0 -0
  94. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/migration-guide/2.0.md +0 -0
  95. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/migration-guide/3.0.md +0 -0
  96. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/api.md +0 -0
  97. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/app/app.md +0 -0
  98. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
  99. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/cli.md +0 -0
  100. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/database.md +0 -0
  101. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/generator.md +0 -0
  102. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/instantiating.md +0 -0
  103. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/model_attributes.md +0 -0
  104. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/overview.md +0 -0
  105. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/product_blocks.md +0 -0
  106. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/product_types.md +0 -0
  107. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/properties.md +0 -0
  108. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  109. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/type_casting.md +0 -0
  110. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/union_types.md +0 -0
  111. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/domain_models/validation.md +0 -0
  112. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/forms.md +0 -0
  113. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/graphql.md +0 -0
  114. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/python.md +0 -0
  115. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/search.md +0 -0
  116. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/search_overview.png +0 -0
  117. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/serialization.md +0 -0
  118. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/tasks.md +0 -0
  119. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/tests.md +0 -0
  120. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/tldr.md +0 -0
  121. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/websockets.md +0 -0
  122. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
  123. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/reference-docs/workflows/workflow-steps.md +0 -0
  124. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/bootstrap.md +0 -0
  125. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/create-your-own.md +0 -0
  126. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/docker-installation.md +0 -0
  127. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/domain-models.md +0 -0
  128. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/execute-workflows.md +0 -0
  129. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/generator.md +0 -0
  130. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/l2_point_to_point.png +0 -0
  131. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/node-create.md +0 -0
  132. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/node-modify.md +0 -0
  133. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/node-terminate.md +0 -0
  134. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/node-validate.md +0 -0
  135. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/overview.md +0 -0
  136. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/scenario.md +0 -0
  137. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/workflow-basics.md +0 -0
  138. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/advanced/workflow-introduction.md +0 -0
  139. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/create-user-group.md +0 -0
  140. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/create-user.md +0 -0
  141. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/database-migration.md +0 -0
  142. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/debian.md +0 -0
  143. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/docker.md +0 -0
  144. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/domain-models.md +0 -0
  145. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/explore.md +0 -0
  146. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/input-forms.md +0 -0
  147. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/macos.md +0 -0
  148. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/modify-user-group.md +0 -0
  149. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/modify-user.md +0 -0
  150. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/register-workflows.md +0 -0
  151. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/start-applications.md +0 -0
  152. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/terminate-user-group.md +0 -0
  153. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/terminate-user.md +0 -0
  154. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/workflow-introduction.md +0 -0
  155. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/beginner/workshop-overview.md +0 -0
  156. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/images/Software-topology.drawio.png +0 -0
  157. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/images/clab_topology.png +0 -0
  158. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/images/metadata_products.png +0 -0
  159. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/images/netbox_devices_active.png +0 -0
  160. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/images/subscriptions.png +0 -0
  161. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/docs/workshops/images/topology.drawio.png +0 -0
  162. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/includes/abbreviations.md +0 -0
  163. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/mkdocs.yml +0 -0
  164. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/nitpick-style.toml +0 -0
  165. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/__init__.py +0 -0
  166. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/__init__.py +0 -0
  167. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/api.py +0 -0
  168. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  169. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  170. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  171. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  172. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  173. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  174. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  175. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  176. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  177. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  178. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  179. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  180. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/error_handling.py +0 -0
  181. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/helpers.py +0 -0
  182. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/api/models.py +0 -0
  183. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/app.py +0 -0
  184. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/__init__.py +0 -0
  185. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/database.py +0 -0
  186. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  187. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  188. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  189. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  190. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  191. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  192. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  193. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generate.py +0 -0
  194. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/__init__.py +0 -0
  195. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/README +0 -0
  196. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  197. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  198. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  199. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  200. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  201. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  202. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  203. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  204. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  205. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/__init__.py +0 -0
  206. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/enums.py +0 -0
  207. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/helpers.py +0 -0
  208. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/migration.py +0 -0
  209. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/product.py +0 -0
  210. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/product_block.py +0 -0
  211. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/settings.py +0 -0
  212. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/translations.py +0 -0
  213. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/unittest.py +0 -0
  214. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/validations.py +0 -0
  215. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/generator/workflow.py +0 -0
  216. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  217. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  218. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  219. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  220. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  221. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  222. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  223. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  224. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  225. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  226. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  227. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  228. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  229. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  230. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  231. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  232. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  233. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  234. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/product.j2 +0 -0
  235. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  236. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  237. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  238. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  239. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  240. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  241. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  242. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  243. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  244. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  245. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  246. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/helpers/__init__.py +0 -0
  247. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/helpers/input_helpers.py +0 -0
  248. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/helpers/print_helpers.py +0 -0
  249. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/main.py +0 -0
  250. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/migrate_domain_models.py +0 -0
  251. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/migrate_tasks.py +0 -0
  252. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/migrate_workflows.py +0 -0
  253. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/migration_helpers.py +0 -0
  254. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/cli/scheduler.py +0 -0
  255. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/config/__init__.py +0 -0
  256. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/config/assignee.py +0 -0
  257. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/__init__.py +0 -0
  258. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/database.py +0 -0
  259. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/__init__.py +0 -0
  260. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/filters.py +0 -0
  261. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/process.py +0 -0
  262. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/product.py +0 -0
  263. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/product_block.py +0 -0
  264. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/resource_type.py +0 -0
  265. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  266. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  267. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/subscription.py +0 -0
  268. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/filters/workflow.py +0 -0
  269. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/helpers.py +0 -0
  270. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/listeners.py +0 -0
  271. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/loaders.py +0 -0
  272. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/range/__init__.py +0 -0
  273. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/range/range.py +0 -0
  274. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/__init__.py +0 -0
  275. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/process.py +0 -0
  276. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/product.py +0 -0
  277. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/product_block.py +0 -0
  278. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/resource_type.py +0 -0
  279. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/sorting.py +0 -0
  280. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/subscription.py +0 -0
  281. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/db/sorting/workflow.py +0 -0
  282. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/devtools/__init__.py +0 -0
  283. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/devtools/populator.py +0 -0
  284. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/devtools/scripts/__init__.py +0 -0
  285. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  286. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  287. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/devtools/scripts/shared.py +0 -0
  288. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/distlock/__init__.py +0 -0
  289. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/distlock/distlock_manager.py +0 -0
  290. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/distlock/managers/__init__.py +0 -0
  291. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  292. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  293. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/domain/__init__.py +0 -0
  294. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/domain/base.py +0 -0
  295. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/domain/customer_description.py +0 -0
  296. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/domain/helpers.py +0 -0
  297. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/domain/lifecycle.py +0 -0
  298. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/exception_handlers.py +0 -0
  299. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/__init__.py +0 -0
  300. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/validators/__init__.py +0 -0
  301. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  302. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/validators/customer_id.py +0 -0
  303. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/validators/display_subscription.py +0 -0
  304. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/validators/network_type_validators.py +0 -0
  305. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/forms/validators/product_id.py +0 -0
  306. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/__init__.py +0 -0
  307. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/autoregistration.py +0 -0
  308. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/extensions/__init__.py +0 -0
  309. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/extensions/stats.py +0 -0
  310. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/loaders/__init__.py +0 -0
  311. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  312. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/mutations/customer_description.py +0 -0
  313. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/mutations/start_process.py +0 -0
  314. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/pagination.py +0 -0
  315. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/__init__.py +0 -0
  316. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/customer.py +0 -0
  317. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/helpers.py +0 -0
  318. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/process.py +0 -0
  319. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/product.py +0 -0
  320. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/product_block.py +0 -0
  321. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  322. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/settings.py +0 -0
  323. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/subscription.py +0 -0
  324. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/version.py +0 -0
  325. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/resolvers/workflow.py +0 -0
  326. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schema.py +0 -0
  327. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/__init__.py +0 -0
  328. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/customer.py +0 -0
  329. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/customer_description.py +0 -0
  330. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/errors.py +0 -0
  331. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  332. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/helpers.py +0 -0
  333. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/process.py +0 -0
  334. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/product.py +0 -0
  335. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/product_block.py +0 -0
  336. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/resource_type.py +0 -0
  337. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/settings.py +0 -0
  338. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  339. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/subscription.py +0 -0
  340. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/version.py +0 -0
  341. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/schemas/workflow.py +0 -0
  342. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/types.py +0 -0
  343. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/__init__.py +0 -0
  344. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  345. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  346. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  347. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  348. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  349. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  350. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/override_class.py +0 -0
  351. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  352. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/log_config.py +0 -0
  353. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/README +0 -0
  354. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/alembic.ini +0 -0
  355. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/helpers.py +0 -0
  356. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/script.py.mako +0 -0
  357. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  358. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/templates/env.py.j2 +0 -0
  359. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  360. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  361. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  362. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  363. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  364. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  365. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  366. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  367. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  368. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  369. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  370. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  371. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  372. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  373. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  374. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  375. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  376. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  377. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/migrations/versions/schema/2025-10-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  378. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/py.typed +0 -0
  379. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schedules/__init__.py +0 -0
  380. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schedules/resume_workflows.py +0 -0
  381. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schedules/scheduling.py +0 -0
  382. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schedules/task_vacuum.py +0 -0
  383. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schedules/validate_products.py +0 -0
  384. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schedules/validate_subscriptions.py +0 -0
  385. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/__init__.py +0 -0
  386. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/base.py +0 -0
  387. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/engine_settings.py +0 -0
  388. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/fixed_input.py +0 -0
  389. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/problem_detail.py +0 -0
  390. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/process.py +0 -0
  391. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/product.py +0 -0
  392. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/product_block.py +0 -0
  393. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/resource_type.py +0 -0
  394. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/subscription.py +0 -0
  395. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/subscription_descriptions.py +0 -0
  396. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/schemas/workflow.py +0 -0
  397. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/security.py +0 -0
  398. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/__init__.py +0 -0
  399. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/celery.py +0 -0
  400. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/fixed_inputs.py +0 -0
  401. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/input_state.py +0 -0
  402. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/process_broadcast_thread.py +0 -0
  403. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/products.py +0 -0
  404. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/resource_types.py +0 -0
  405. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/settings.py +0 -0
  406. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/subscription_relations.py +0 -0
  407. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/subscriptions.py +0 -0
  408. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/tasks.py +0 -0
  409. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/translations.py +0 -0
  410. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/services/workflows.py +0 -0
  411. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/settings.py +0 -0
  412. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/targets.py +0 -0
  413. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/types.py +0 -0
  414. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/__init__.py +0 -0
  415. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/crypt.py +0 -0
  416. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/datetime.py +0 -0
  417. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/deprecation_logger.py +0 -0
  418. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/docs.py +0 -0
  419. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/enrich_process.py +0 -0
  420. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/errors.py +0 -0
  421. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/fixed_inputs.py +0 -0
  422. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/functional.py +0 -0
  423. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/get_subscription_dict.py +0 -0
  424. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/get_updated_properties.py +0 -0
  425. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/helpers.py +0 -0
  426. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/json.py +0 -0
  427. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/redis.py +0 -0
  428. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/redis_client.py +0 -0
  429. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/search_query.py +0 -0
  430. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/strings.py +0 -0
  431. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/utils/validate_data_version.py +0 -0
  432. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/version.py +0 -0
  433. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/websocket/__init__.py +0 -0
  434. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  435. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  436. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/websocket/websocket_manager.py +0 -0
  437. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/__init__.py +0 -0
  438. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/modify_note.py +0 -0
  439. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/removed_workflow.py +0 -0
  440. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/steps.py +0 -0
  441. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/tasks/__init__.py +0 -0
  442. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  443. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  444. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  445. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/tasks/validate_products.py +0 -0
  446. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/translations/en-GB.json +0 -0
  447. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/orchestrator/workflows/utils.py +0 -0
  448. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/setup.cfg +0 -0
  449. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/setup.py +0 -0
  450. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/__init__.py +0 -0
  451. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/__init__.py +0 -0
  452. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/conftest.py +0 -0
  453. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  454. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  455. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
  456. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
  457. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  458. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
  459. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  460. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
  461. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  462. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
  463. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/acceptance_tests/test_test_product.py +0 -0
  464. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/__init__.py +0 -0
  465. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/__init__.py +0 -0
  466. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_caching.py +0 -0
  467. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_health.py +0 -0
  468. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_helpers.py +0 -0
  469. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_models.py +0 -0
  470. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_processes.py +0 -0
  471. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_processes_ws.py +0 -0
  472. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_product_blocks.py +0 -0
  473. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_products.py +0 -0
  474. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_resource_types.py +0 -0
  475. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_settings.py +0 -0
  476. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
  477. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_subscriptions.py +0 -0
  478. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_workflows.py +0 -0
  479. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/api/test_ws.py +0 -0
  480. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/__init__.py +0 -0
  481. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/conftest.py +0 -0
  482. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
  483. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/main.py +0 -0
  484. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/env.py +0 -0
  485. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
  486. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
  487. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
  488. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -0
  489. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -0
  490. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -0
  491. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
  492. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  493. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
  494. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
  495. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
  496. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
  497. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  498. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
  499. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
  500. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
  501. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
  502. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
  503. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
  504. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
  505. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
  506. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
  507. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
  508. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
  509. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
  510. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
  511. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
  512. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
  513. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
  514. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
  515. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
  516. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
  517. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
  518. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
  519. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
  520. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
  521. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
  522. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
  523. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
  524. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
  525. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
  526. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
  527. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
  528. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
  529. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
  530. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
  531. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/generate.sh +0 -0
  532. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
  533. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
  534. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/product_config1.yaml +0 -0
  535. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/product_config2.yaml +0 -0
  536. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/product_config3.yaml +0 -0
  537. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/data/product_config4.yaml +0 -0
  538. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/generator/__init__.py +0 -0
  539. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/generator/test_enums.py +0 -0
  540. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/helpers.py +0 -0
  541. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/test_cli_generate.py +0 -0
  542. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/test_config_validation.py +0 -0
  543. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/test_generate_code.py +0 -0
  544. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
  545. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
  546. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/config.py +0 -0
  547. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/db/__init__.py +0 -0
  548. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/db/test_listeners.py +0 -0
  549. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/__init__.py +0 -0
  550. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/test_base.py +0 -0
  551. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/test_base_multiple.py +0 -0
  552. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/test_base_performance.py +0 -0
  553. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
  554. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/test_base_with_union.py +0 -0
  555. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/domain/test_lifecycle.py +0 -0
  556. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/__init__.py +0 -0
  557. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/processes.py +0 -0
  558. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/__init__.py +0 -0
  559. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  560. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
  561. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
  562. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
  563. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
  564. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
  565. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
  566. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
  567. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  568. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
  569. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
  570. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
  571. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
  572. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
  573. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
  574. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
  575. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
  576. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
  577. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
  578. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
  579. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/products/resource_types.py +0 -0
  580. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/fixtures/workflows.py +0 -0
  581. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/forms/__init__.py +0 -0
  582. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
  583. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/forms/test_customer_id.py +0 -0
  584. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/forms/test_generic_validators.py +0 -0
  585. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/__init__.py +0 -0
  586. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/conftest.py +0 -0
  587. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/extensions/__init__.py +0 -0
  588. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
  589. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/mutations/helpers.py +0 -0
  590. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
  591. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
  592. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_customer.py +0 -0
  593. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_process.py +0 -0
  594. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_processes.py +0 -0
  595. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_product.py +0 -0
  596. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_product_blocks.py +0 -0
  597. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_resource_types.py +0 -0
  598. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_settings.py +0 -0
  599. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
  600. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_subscription.py +0 -0
  601. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
  602. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_version.py +0 -0
  603. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/test_workflows.py +0 -0
  604. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/__init__.py +0 -0
  605. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/fixtures.py +0 -0
  606. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
  607. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
  608. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
  609. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
  610. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
  611. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
  612. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/schedules/__init__.py +0 -0
  613. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/schedules/test_scheduling.py +0 -0
  614. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/__init__.py +0 -0
  615. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/test_input_state.py +0 -0
  616. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/test_processes.py +0 -0
  617. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/test_products.py +0 -0
  618. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/test_subscription_relations.py +0 -0
  619. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/test_subscriptions.py +0 -0
  620. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/services/test_translations.py +0 -0
  621. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/test_db.py +0 -0
  622. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/test_types.py +0 -0
  623. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/test_workflow.py +0 -0
  624. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/__init__.py +0 -0
  625. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/get_subscription_dict.py +0 -0
  626. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_datetime.py +0 -0
  627. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_errors.py +0 -0
  628. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_functional.py +0 -0
  629. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
  630. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_json.py +0 -0
  631. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_search_query.py +0 -0
  632. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/utils/test_strings.py +0 -0
  633. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/websocket/__init__.py +0 -0
  634. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/websocket/test_broadcast.py +0 -0
  635. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/__init__.py +0 -0
  636. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/conftest.py +0 -0
  637. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/shared/__init__.py +0 -0
  638. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
  639. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/tasks/__init__.py +0 -0
  640. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -0
  641. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
  642. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
  643. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
  644. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/test_config_db_code.py +0 -0
  645. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
  646. {orchestrator_core-3.1.1 → orchestrator_core-3.1.2rc3}/test/unit_tests/workflows/test_modify_note.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 3.1.1
2
+ current_version = 3.1.2rc3
3
3
  commit = False
4
4
  tag = False
5
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(rc(?P<build>\d+))?
@@ -5,9 +5,9 @@ name: Linting tests
5
5
 
6
6
  on:
7
7
  push:
8
- pull_request:
9
- branches: [master]
8
+ branches: [ main ]
10
9
  workflow_call:
10
+ pull_request:
11
11
 
12
12
  jobs:
13
13
  build:
@@ -1,7 +1,9 @@
1
1
  name: Unit tests
2
2
  on:
3
3
  push:
4
+ branches: [ main ]
4
5
  workflow_call:
6
+ pull_request:
5
7
 
6
8
  jobs:
7
9
  container_job:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 3.1.1
3
+ Version: 3.1.2rc3
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Requires-Python: >=3.11,<3.14
6
6
  Classifier: Intended Audience :: Information Technology
@@ -28,7 +28,7 @@ Classifier: Programming Language :: Python :: 3.11
28
28
  Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
29
29
  Classifier: Topic :: Internet :: WWW/HTTP
30
30
  License-File: LICENSE
31
- Requires-Dist: alembic==1.14.1
31
+ Requires-Dist: alembic==1.15.1
32
32
  Requires-Dist: anyio>=3.7.0
33
33
  Requires-Dist: click==8.*
34
34
  Requires-Dist: deprecated
@@ -37,18 +37,18 @@ Requires-Dist: fastapi~=0.115.2
37
37
  Requires-Dist: fastapi-etag==0.4.0
38
38
  Requires-Dist: more-itertools~=10.6.0
39
39
  Requires-Dist: itsdangerous
40
- Requires-Dist: Jinja2==3.1.5
40
+ Requires-Dist: Jinja2==3.1.6
41
41
  Requires-Dist: orjson==3.10.15
42
- Requires-Dist: psycopg[binary]==3.2.5
43
- Requires-Dist: pydantic[email]~=2.10.6
42
+ Requires-Dist: psycopg[binary]==3.2.6
43
+ Requires-Dist: pydantic[email]~=2.8.2
44
44
  Requires-Dist: pydantic-settings~=2.8.0
45
45
  Requires-Dist: python-dateutil==2.8.2
46
46
  Requires-Dist: python-rapidjson>=1.18,<1.21
47
47
  Requires-Dist: pytz==2025.1
48
- Requires-Dist: redis==5.0.3
48
+ Requires-Dist: redis==5.1.1
49
49
  Requires-Dist: schedule==1.1.0
50
50
  Requires-Dist: sentry-sdk[fastapi]~=2.22.0
51
- Requires-Dist: SQLAlchemy==2.0.38
51
+ Requires-Dist: SQLAlchemy==2.0.39
52
52
  Requires-Dist: SQLAlchemy-Utils==0.41.2
53
53
  Requires-Dist: structlog
54
54
  Requires-Dist: typer==0.15.2
@@ -108,6 +108,112 @@ The code above sets our local Celery instance (which initializes the workflows)
108
108
  going to be used by the orchestrator-core. Without this code, the orchestrator-core would be only aware of a limited
109
109
  set of workflows that are part of orchestrator-core itself.
110
110
 
111
+ ### An example implementation
112
+
113
+ When using Celery and Websockets you can use the following example and change it to your needs.
114
+
115
+ ```python
116
+ """This module contains functions and classes necessary for celery worker processes.
117
+
118
+ When the orchestrator-core's thread process executor is specified as "celery", the `OrchestratorCore` FastAPI
119
+ application registers celery-specific task functions and `start_process` and `resume_process` now defer to the
120
+ celery task queue.
121
+
122
+ Celery's task queue enables features like nightly validations by providing a task queue and workers to execute
123
+ workflows that are all started in parallel, which would crash a single-threaded orchestrator-core.
124
+
125
+ The application flow looks like this when "celery" is the executor (and websockets are enabled):
126
+
127
+ - FastAPI application validates form input, and places a task on celery queue (create new process).
128
+ - If websockets are enabled, a connection should exist already b/t the client and backend.
129
+ - FastAPI application begins watching redis pubsub channel for process updates from celery.
130
+ - Celery worker picks up task from queue and begins executing.
131
+ - On each step completion, it publishes state information to redis pubsub channel.
132
+ - FastAPI application grabs this information and publishes it to the client websocket connection.
133
+
134
+ A celery worker container will start by calling this module instead of `main.py` like so:
135
+ ```sh
136
+ celery -A esnetorch.celery_worker worker -E -l INFO -Q new_tasks,resume_tasks,new_workflows,resume_workflows
137
+ ```
138
+
139
+ * `-A` points to this module where the worker class is defined
140
+ * `-E` sends task-related events (capturable and monitorable)
141
+ * `-l` is the short flag for --loglevel
142
+ * `-Q` specifies the queues which the worker should watch for new tasks
143
+
144
+ See https://workfloworchestrator.org/orchestrator-core/reference-docs/app/scaling for more information.
145
+ """
146
+
147
+ from uuid import UUID
148
+
149
+ from celery import Celery
150
+ from celery.signals import worker_shutting_down
151
+ from orchestrator.db import init_database
152
+ from orchestrator.domain import SUBSCRIPTION_MODEL_REGISTRY
153
+ from orchestrator.services.tasks import initialise_celery
154
+ from orchestrator.types import BroadcastFunc
155
+ from orchestrator.websocket import broadcast_process_update_to_websocket, init_websocket_manager
156
+ from orchestrator.websocket.websocket_manager import WebSocketManager
157
+ from orchestrator.workflows import ALL_WORKFLOWS
158
+ from structlog import get_logger
159
+
160
+ from esnetorch.settings import app_settings
161
+
162
+
163
+ logger = get_logger(__name__)
164
+
165
+
166
+ def process_broadcast_fn(process_id: UUID) -> None:
167
+ # Catch all exceptions as broadcasting failure is noncritical to workflow completion
168
+ try:
169
+ broadcast_process_update_to_websocket(process_id)
170
+ except Exception as e:
171
+ logger.exception(e)
172
+
173
+
174
+ class OrchestratorWorker(Celery):
175
+ websocket_manager: WebSocketManager
176
+ process_broadcast_fn: BroadcastFunc
177
+
178
+ def on_init(self) -> None:
179
+ init_database(app_settings)
180
+
181
+ # Prepare the wrapped_websocket_manager
182
+ # Note: cannot prepare the redis connections here as broadcasting is async
183
+ self.websocket_manager = init_websocket_manager(app_settings)
184
+ self.process_broadcast_fn = process_broadcast_fn
185
+
186
+ # Load the products and load the workflows
187
+ import esnetorch.products # noqa: F401 Side-effects
188
+ import esnetorch.workflows # noqa: F401 Side-effects
189
+
190
+ logger.info(
191
+ "Loaded the workflows and products",
192
+ workflows=len(ALL_WORKFLOWS.values()),
193
+ products=len(SUBSCRIPTION_MODEL_REGISTRY.values()),
194
+ )
195
+
196
+ def close(self) -> None:
197
+ super().close()
198
+
199
+
200
+ celery = OrchestratorWorker(
201
+ f"{app_settings.SERVICE_NAME}-worker", broker=str(app_settings.CACHE_URI), include=["orchestrator.services.tasks"]
202
+ )
203
+
204
+ if app_settings.TESTING:
205
+ celery.conf.update(backend=str(app_settings.CACHE_URI), task_ignore_result=False)
206
+ else:
207
+ celery.conf.update(task_ignore_result=True)
208
+
209
+ celery.conf.update(
210
+ result_expires=3600,
211
+ worker_prefetch_multiplier=1,
212
+ worker_send_task_event=True,
213
+ task_send_sent_event=True,
214
+ )
215
+ ```
216
+
111
217
  ### Running locally
112
218
 
113
219
  If you want to test your application locally you have to start both the orchestrator-api and one or more workers.
@@ -168,3 +168,11 @@ def create_l2vpn() -> StepList:
168
168
  >> set_status(SubscriptionLifecycle.ACTIVE)
169
169
  )
170
170
  ```
171
+
172
+ ## Callback progress during execution
173
+
174
+ For long-running jobs, such as executing Terraform or Ansible playbooks, the Orchestrator allows callback jobs to send real-time progress updates which can be used to provide operators with feedback on the progress of the running task.
175
+
176
+ Progress updates should be delivered to `{callback_route}/progress`, where `"/progress"` is a fixed endpoint appended to the callback URL.
177
+
178
+ The remote service should send a JSON or plain string payload with each progress callback, this replaces the previous progress update and refreshes the UI. Once the final callback is triggered and the job completes, progress updates are removed, leaving only the callback result. Therefore, all troubleshooting or diagnostic information must be included in the final callback payload, as progress updates are not retained for debugging.
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "3.1.1"
16
+ __version__ = "3.1.2rc3"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -58,6 +58,7 @@ from orchestrator.services.processes import (
58
58
  load_process,
59
59
  resume_process,
60
60
  start_process,
61
+ update_awaiting_process_progress,
61
62
  )
62
63
  from orchestrator.services.settings import get_engine_settings
63
64
  from orchestrator.settings import app_settings
@@ -197,6 +198,28 @@ def continue_awaiting_process_endpoint(
197
198
  raise_status(HTTPStatus.NOT_FOUND, str(e))
198
199
 
199
200
 
201
+ @router.post(
202
+ "/{process_id}/callback/{token}/progress",
203
+ response_model=None,
204
+ status_code=HTTPStatus.OK,
205
+ dependencies=[Depends(check_global_lock, use_cache=False)],
206
+ )
207
+ def update_progress_on_awaiting_process_endpoint(
208
+ process_id: UUID,
209
+ token: str,
210
+ data: str | State = Body(...),
211
+ ) -> None:
212
+ process = _get_process(process_id)
213
+
214
+ if process.last_status != ProcessStatus.AWAITING_CALLBACK:
215
+ raise_status(HTTPStatus.CONFLICT, "This process is not in an awaiting state.")
216
+
217
+ try:
218
+ update_awaiting_process_progress(process, token=token, data=data)
219
+ except AssertionError as exc:
220
+ raise_status(HTTPStatus.NOT_FOUND, str(exc))
221
+
222
+
200
223
  @router.put(
201
224
  "/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
202
225
  )
@@ -92,7 +92,7 @@ class InputStateTable(BaseModel):
92
92
 
93
93
  input_state_id = mapped_column(UUIDType, primary_key=True, server_default=text("uuid_generate_v4()"), index=True)
94
94
  process_id = mapped_column("pid", UUIDType, ForeignKey("processes.pid"), nullable=False)
95
- input_state = mapped_column(pg.JSONB(), nullable=False) # type: ignore
95
+ input_state = mapped_column(pg.JSONB(), nullable=False)
96
96
  input_time = mapped_column(UtcTimestamp, server_default=text("current_timestamp()"), nullable=False)
97
97
  input_type = mapped_column(Enum(InputType), nullable=False)
98
98
 
@@ -137,7 +137,7 @@ class ProcessStepTable(BaseModel):
137
137
  )
138
138
  name = mapped_column(String(), nullable=False)
139
139
  status = mapped_column(String(50), nullable=False)
140
- state = mapped_column(pg.JSONB(), nullable=False) # type: ignore
140
+ state = mapped_column(pg.JSONB(), nullable=False)
141
141
  created_by = mapped_column(String(255), nullable=True)
142
142
  executed_at = mapped_column(UtcTimestamp, server_default=text("statement_timestamp()"), nullable=False)
143
143
  commit_hash = mapped_column(String(40), nullable=True, default=GIT_COMMIT_HASH)
@@ -642,7 +642,7 @@ class SubscriptionMetadataTable(BaseModel):
642
642
  primary_key=True,
643
643
  index=True,
644
644
  )
645
- metadata_ = mapped_column("metadata", pg.JSONB(), nullable=False) # type: ignore
645
+ metadata_ = mapped_column("metadata", pg.JSONB(), nullable=False)
646
646
 
647
647
  @staticmethod
648
648
  def find_by_subscription_id(subscription_id: str) -> SubscriptionMetadataTable | None:
@@ -651,6 +651,8 @@ class SubscriptionMetadataTable(BaseModel):
651
651
 
652
652
  class SubscriptionSearchView(BaseModel):
653
653
  __tablename__ = "subscriptions_search"
654
+ __table_args__ = {"info": {"materialized_view": True}}
655
+
654
656
  subscription_id = mapped_column(
655
657
  UUIDType, ForeignKey("subscriptions.subscription_id"), nullable=False, index=True, primary_key=True
656
658
  )
@@ -41,6 +41,14 @@ target_metadata = BaseModel.metadata
41
41
  # ... etc.
42
42
 
43
43
 
44
+ def include_object(object, name, type_, reflected, compare_to): # type: ignore
45
+ """Determines if an object should be included."""
46
+
47
+ if type_ == "table" and object.info.get("materialized_view", False):
48
+ return False
49
+ return True
50
+
51
+
44
52
  def run_migrations_offline() -> None:
45
53
  """Run migrations in 'offline' mode.
46
54
 
@@ -55,7 +63,11 @@ def run_migrations_offline() -> None:
55
63
  """
56
64
  url = config.get_main_option("sqlalchemy.url")
57
65
  context.configure(
58
- url=url, target_metadata=target_metadata, literal_binds=True, dialect_opts={"paramstyle": "named"}
66
+ url=url,
67
+ target_metadata=target_metadata,
68
+ literal_binds=True,
69
+ dialect_opts={"paramstyle": "named"},
70
+ include_object=include_object,
59
71
  )
60
72
 
61
73
  with context.begin_transaction():
@@ -90,6 +102,7 @@ def run_migrations_online() -> None:
90
102
  target_metadata=target_metadata,
91
103
  process_revision_directives=process_revision_directives,
92
104
  compare_type=True,
105
+ include_object=include_object,
93
106
  )
94
107
 
95
108
  try:
@@ -157,7 +157,7 @@ def upgrade() -> None:
157
157
  sa.Column("pid", sqlalchemy_utils.types.uuid.UUIDType(), nullable=False),
158
158
  sa.Column("name", sa.String(), nullable=False),
159
159
  sa.Column("status", sa.String(length=50), nullable=False),
160
- sa.Column("state", postgresql.JSONB(astext_type=sa.Text()), nullable=False), # type: ignore
160
+ sa.Column("state", postgresql.JSONB(astext_type=sa.Text()), nullable=False),
161
161
  sa.Column("created_by", sa.String(length=255), nullable=True),
162
162
  sa.Column(
163
163
  "executed_at",
@@ -29,7 +29,7 @@ def upgrade() -> None:
29
29
  nullable=False,
30
30
  index=True,
31
31
  ),
32
- sa.Column("metadata", postgresql.JSONB(astext_type=sa.Text()), nullable=False), # type: ignore
32
+ sa.Column("metadata", postgresql.JSONB(astext_type=sa.Text()), nullable=False),
33
33
  sa.ForeignKeyConstraint(["subscription_id"], ["subscriptions.subscription_id"], ondelete="CASCADE"),
34
34
  )
35
35
 
@@ -31,7 +31,7 @@ def upgrade() -> None:
31
31
  nullable=False,
32
32
  ),
33
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
34
+ sa.Column("input_state", postgresql.JSONB(astext_type=sa.Text()), nullable=False),
35
35
  sa.Column(
36
36
  "input_time",
37
37
  db.models.UtcTimestamp(timezone=True),
@@ -43,9 +43,10 @@ from orchestrator.targets import Target
43
43
  from orchestrator.types import BroadcastFunc
44
44
  from orchestrator.utils.datetime import nowtz
45
45
  from orchestrator.utils.errors import error_state_to_dict
46
- from orchestrator.websocket import broadcast_invalidate_status_counts
46
+ from orchestrator.websocket import broadcast_invalidate_status_counts, broadcast_process_update_to_websocket
47
47
  from orchestrator.workflow import (
48
48
  CALLBACK_TOKEN_KEY,
49
+ DEFAULT_CALLBACK_PROGRESS_KEY,
49
50
  Failed,
50
51
  ProcessStat,
51
52
  ProcessStatus,
@@ -566,6 +567,39 @@ def resume_process(
566
567
  return resume_func(process, user_inputs=user_inputs, user=user, broadcast_func=broadcast_func)
567
568
 
568
569
 
570
+ def ensure_correct_callback_token(pstat: ProcessStat, *, token: str) -> None:
571
+ """Ensure that a callback token matches the expected value in state.
572
+
573
+ Args:
574
+ pstat: ProcessStat of process.
575
+ token: The token which was generated for the process.
576
+
577
+ Raises:
578
+ AssertionError: if the supplied token does not match the generated process token.
579
+
580
+ """
581
+ state = pstat.state.unwrap()
582
+
583
+ # Check if the token matches
584
+ token_from_state = state.get(CALLBACK_TOKEN_KEY)
585
+ if token != token_from_state:
586
+ raise AssertionError("Invalid token")
587
+
588
+
589
+ def replace_current_step_state(process: ProcessTable, *, new_state: State) -> None:
590
+ """Replace the state of the current step in a process.
591
+
592
+ Args:
593
+ process: Process from database
594
+ new_state: The new state
595
+
596
+ """
597
+ current_step = process.steps[-1]
598
+ current_step.state = new_state
599
+ db.session.add(current_step)
600
+ db.session.commit()
601
+
602
+
569
603
  def continue_awaiting_process(
570
604
  process: ProcessTable,
571
605
  *,
@@ -589,10 +623,7 @@ def continue_awaiting_process(
589
623
  pstat = load_process(process)
590
624
  state = pstat.state.unwrap()
591
625
 
592
- # Check if the token matches
593
- token_from_state = state.get(CALLBACK_TOKEN_KEY)
594
- if token != token_from_state:
595
- raise AssertionError("Invalid token")
626
+ ensure_correct_callback_token(pstat, token=token)
596
627
 
597
628
  # We need to pass the callback data to the worker executor. Currently, this is not supported.
598
629
  # Therefore, we update the step state in the db and kick-off resume_workflow
@@ -600,16 +631,47 @@ def continue_awaiting_process(
600
631
  result_key = state.get("__callback_result_key", "callback_result")
601
632
  state = {**state, result_key: input_data}
602
633
 
603
- current_step = process.steps[-1]
604
- current_step.state = state
605
- db.session.add(current_step)
606
- db.session.commit()
634
+ replace_current_step_state(process, new_state=state)
607
635
 
608
636
  # Continue the workflow
609
637
  resume_func = get_execution_context()["resume"]
610
638
  return resume_func(process, broadcast_func=broadcast_func)
611
639
 
612
640
 
641
+ def update_awaiting_process_progress(
642
+ process: ProcessTable,
643
+ *,
644
+ token: str,
645
+ data: str | State,
646
+ ) -> UUID:
647
+ """Update progress for a process awaiting data from a callback.
648
+
649
+ Args:
650
+ process: Process from database
651
+ token: The token which was generated for the process. This must match.
652
+ data: Progress data posted to the callback
653
+
654
+ Returns:
655
+ process id
656
+
657
+ Raises:
658
+ AssertionError: if the supplied token does not match the generated process token.
659
+
660
+ """
661
+ pstat = load_process(process)
662
+
663
+ ensure_correct_callback_token(pstat, token=token)
664
+
665
+ state = pstat.state.unwrap()
666
+ progress_key = state.get(DEFAULT_CALLBACK_PROGRESS_KEY, "callback_progress")
667
+ state = {**state, progress_key: data} | {"__remove_keys": [progress_key]}
668
+
669
+ replace_current_step_state(process, new_state=state)
670
+ broadcast_process_update_to_websocket(process.process_id)
671
+
672
+ return process.process_id
673
+
674
+
613
675
  async def _async_resume_processes(
614
676
  processes: Sequence[ProcessTable],
615
677
  user_name: str,
@@ -150,65 +150,85 @@ def _build_arguments(func: StepFunc | InputStepFunc, state: State) -> list: # n
150
150
 
151
151
  Raises:
152
152
  KeyError: if requested argument is not in the state, or cannot be reconstructed as an initial domain model.
153
+ ValueError: if requested argument cannot be converted to the expected type.
153
154
 
154
155
  """
156
+
155
157
  sig = inspect.signature(func)
158
+ if not sig.parameters:
159
+ return []
160
+
161
+ def _convert_to_uuid(v: Any) -> UUID:
162
+ """Converts the value to a UUID instance if it is not already one."""
163
+ return v if isinstance(v, UUID) else UUID(v)
164
+
156
165
  arguments: list[Any] = []
157
- if sig.parameters:
158
- for name, param in sig.parameters.items():
159
- # Ignore dynamic arguments. Mostly need to deal with `const`
160
- if param.kind in (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD):
161
- logger.warning("*args and **kwargs are not supported as step params")
162
- continue
163
-
164
- # If we find an argument named "state" we use the whole state as argument to
165
- # This is mainly to be backward compatible with code that needs the whole state...
166
- # TODO: Remove this construction
167
- if name == "state":
168
- arguments.append(state)
169
- continue
170
-
171
- # Workaround for the fact that you can't call issubclass on typing types
166
+ for name, param in sig.parameters.items():
167
+ # Ignore dynamic arguments. Mostly need to deal with `const`
168
+ if param.kind in (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD):
169
+ logger.warning("*args and **kwargs are not supported as step params")
170
+ continue
171
+
172
+ # If we find an argument named "state" we use the whole state as argument to
173
+ # This is mainly to be backward compatible with code that needs the whole state...
174
+ # TODO: Remove this construction
175
+ if name == "state":
176
+ arguments.append(state)
177
+ continue
178
+
179
+ # Workaround for the fact that you can't call issubclass on typing types
180
+ try:
181
+ is_subscription_model_type = issubclass(param.annotation, SubscriptionModel)
182
+ except Exception:
183
+ is_subscription_model_type = False
184
+
185
+ if is_subscription_model_type:
186
+ subscription_id = _get_sub_id(state.get(name))
187
+ if subscription_id:
188
+ sub_mod = param.annotation.from_subscription(subscription_id)
189
+ arguments.append(sub_mod)
190
+ else:
191
+ logger.error("Could not find key in state.", key=name, state=state)
192
+ raise KeyError(f"Could not find key '{name}' in state.")
193
+ elif is_list_type(param.annotation, SubscriptionModel):
194
+ subscription_ids = [_get_sub_id(item) for item in state.get(name, [])]
195
+ # Actual type is first argument from list type
196
+ if (actual_type := get_args(param.annotation)[0]) == Any:
197
+ raise ValueError(
198
+ f"Step function argument '{param.name}' cannot be serialized from database with type 'Any'"
199
+ )
200
+ subscriptions = [actual_type.from_subscription(subscription_id) for subscription_id in subscription_ids]
201
+ arguments.append(subscriptions)
202
+ elif is_optional_type(param.annotation, SubscriptionModel):
203
+ subscription_id = _get_sub_id(state.get(name))
204
+ if subscription_id:
205
+ # Actual type is first argument from optional type
206
+ sub_mod = get_args(param.annotation)[0].from_subscription(subscription_id)
207
+ arguments.append(sub_mod)
208
+ else:
209
+ arguments.append(None)
210
+ elif param.default is not inspect.Parameter.empty:
211
+ arguments.append(state.get(name, param.default))
212
+ else:
172
213
  try:
173
- is_subscription_model_type = issubclass(param.annotation, SubscriptionModel)
174
- except Exception:
175
- is_subscription_model_type = False
176
-
177
- if is_subscription_model_type:
178
- subscription_id = _get_sub_id(state.get(name))
179
- if subscription_id:
180
- sub_mod = param.annotation.from_subscription(subscription_id)
181
- arguments.append(sub_mod)
182
- else:
183
- logger.error("Could not find key in state.", key=name, state=state)
184
- raise KeyError(f"Could not find key '{name}' in state.")
185
- elif is_list_type(param.annotation, SubscriptionModel):
186
- subscription_ids = map(_get_sub_id, state.get(name, []))
187
- # Actual type is first argument from list type
188
- if (actual_type := get_args(param.annotation)[0]) == Any:
189
- raise ValueError(
190
- f"Step function argument '{param.name}' cannot be serialized from database with type 'Any'"
191
- )
192
- subscriptions = [actual_type.from_subscription(subscription_id) for subscription_id in subscription_ids]
193
- arguments.append(subscriptions)
194
- elif is_optional_type(param.annotation, SubscriptionModel):
195
- subscription_id = _get_sub_id(state.get(name))
196
- if subscription_id:
197
- # Actual type is first argument from optional type
198
- sub_mod = get_args(param.annotation)[0].from_subscription(subscription_id)
199
- arguments.append(sub_mod)
214
+ value = state[name]
215
+ if param.annotation == UUID:
216
+ arguments.append(_convert_to_uuid(value))
217
+ elif is_list_type(param.annotation, UUID):
218
+ arguments.append([_convert_to_uuid(item) for item in value])
219
+ elif is_optional_type(param.annotation, UUID):
220
+ arguments.append(None if value is None else _convert_to_uuid(value))
200
221
  else:
201
- arguments.append(None)
202
- elif param.default is not inspect.Parameter.empty:
203
- arguments.append(state.get(name, param.default))
204
- else:
205
- try:
206
- arguments.append(state[name])
207
- except KeyError as key_error:
208
- logger.error("Could not find key in state.", key=name, state=state)
209
- raise KeyError(
210
- f"Could not find key '{name}' in state. for function {func.__module__}.{func.__qualname__}"
211
- ) from key_error
222
+ arguments.append(value)
223
+ except KeyError as key_error:
224
+ logger.error("Could not find key in state.", key=name, state=state)
225
+ raise KeyError(
226
+ f"Could not find key '{name}' in state. for function {func.__module__}.{func.__qualname__}"
227
+ ) from key_error
228
+ except ValueError as value_error:
229
+ logger.error("Could not convert value to expected type.", key=name, state=state, value=state[name])
230
+ raise ValueError(f"Could not convert value '{state[name]}' to {param.annotation}") from value_error
231
+
212
232
  return arguments
213
233
 
214
234
 
@@ -69,6 +69,7 @@ step_log_fn_var: contextvars.ContextVar[StepLogFuncInternal] = contextvars.Conte
69
69
 
70
70
  DEFAULT_CALLBACK_ROUTE_KEY = "callback_route"
71
71
  CALLBACK_TOKEN_KEY = "__callback_token" # noqa: S105
72
+ DEFAULT_CALLBACK_PROGRESS_KEY = "callback_progress" # noqa: S105
72
73
 
73
74
 
74
75
  @runtime_checkable
@@ -36,7 +36,7 @@ classifiers = [
36
36
  "Topic :: Internet :: WWW/HTTP",
37
37
  ]
38
38
  dependencies = [
39
- "alembic==1.14.1",
39
+ "alembic==1.15.1",
40
40
  "anyio>=3.7.0",
41
41
  "click==8.*",
42
42
  "deprecated",
@@ -45,18 +45,18 @@ dependencies = [
45
45
  "fastapi-etag==0.4.0",
46
46
  "more-itertools~=10.6.0",
47
47
  "itsdangerous",
48
- "Jinja2==3.1.5",
48
+ "Jinja2==3.1.6",
49
49
  "orjson==3.10.15",
50
- "psycopg[binary]==3.2.5",
51
- "pydantic[email]~=2.10.6",
50
+ "psycopg[binary]==3.2.6",
51
+ "pydantic[email]~=2.8.2",
52
52
  "pydantic-settings~=2.8.0",
53
53
  "python-dateutil==2.8.2",
54
54
  "python-rapidjson>=1.18,<1.21",
55
55
  "pytz==2025.1",
56
- "redis==5.0.3",
56
+ "redis==5.1.1",
57
57
  "schedule==1.1.0",
58
58
  "sentry-sdk[fastapi]~=2.22.0",
59
- "SQLAlchemy==2.0.38",
59
+ "SQLAlchemy==2.0.39",
60
60
  "SQLAlchemy-Utils==0.41.2",
61
61
  "structlog",
62
62
  "typer==0.15.2",
@@ -8,7 +8,7 @@ from pydantic import ConfigDict
8
8
 
9
9
 
10
10
  def summary_form(product_name: str, summary_data: dict) -> Generator:
11
- ProductSummary: TypeAlias = cast(type[MigrationSummary], migration_summary(summary_data))
11
+ ProductSummary: TypeAlias = cast("type[MigrationSummary]", migration_summary(summary_data))
12
12
 
13
13
  class SummaryForm(FormPage):
14
14
  model_config = ConfigDict(title=f"{product_name} summary")