orchestrator-core 3.2.2__tar.gz → 4.0.0rc1__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 (662) hide show
  1. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.bumpversion.cfg +2 -2
  2. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/PKG-INFO +6 -6
  3. orchestrator_core-4.0.0rc1/docs/migration-guide/4.0.md +16 -0
  4. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/mkdocs.yml +1 -0
  5. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/__init__.py +1 -1
  6. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -2
  7. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/models.py +1 -1
  8. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/base.py +4 -24
  9. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/customer_description.py +0 -4
  10. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/mutations/customer_description.py +1 -1
  11. orchestrator_core-4.0.0rc1/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +33 -0
  12. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/processes.py +2 -1
  13. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/subscriptions.py +6 -22
  14. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/settings.py +0 -4
  15. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/get_subscription_dict.py +0 -4
  16. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/redis.py +1 -67
  17. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/modify_note.py +3 -11
  18. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/steps.py +2 -86
  19. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/utils.py +2 -22
  20. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/pyproject.toml +5 -5
  21. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_subscriptions.py +3 -58
  22. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/conftest.py +1 -2
  23. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/workflows.py +8 -1
  24. orchestrator_core-4.0.0rc1/test/unit_tests/utils/get_subscription_dict.py +11 -0
  25. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +7 -3
  26. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/test_async_workflow.py +56 -8
  27. orchestrator_core-3.2.2/test/unit_tests/api/test_caching.py +0 -120
  28. orchestrator_core-3.2.2/test/unit_tests/utils/get_subscription_dict.py +0 -38
  29. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.coveragerc +0 -0
  30. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  31. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  32. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/dependabot.yml +0 -0
  33. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/README.md +0 -0
  34. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/build-push-container.yml +0 -0
  35. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/changelog.yml +0 -0
  36. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/codeql-analysis.yml +0 -0
  37. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/gh-pages.yml +0 -0
  38. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/issues.yml +0 -0
  39. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/publish-package.yml +0 -0
  40. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/run-codspeed-tests.yml +0 -0
  41. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/run-linting-tests.yml +0 -0
  42. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/run-unit-tests.yml +0 -0
  43. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.github/workflows/scheduled-build.yml +0 -0
  44. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.gitignore +0 -0
  45. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.pre-commit-config.yaml +0 -0
  46. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/.stignore +0 -0
  47. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/CHANGELOG.md +0 -0
  48. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/Dockerfile +0 -0
  49. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/LICENSE +0 -0
  50. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/NOTICE +0 -0
  51. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/README.md +0 -0
  52. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/codecov.yml +0 -0
  53. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/application/domainmodels.md +0 -0
  54. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/application/forms-frontend.md +0 -0
  55. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/application/tasks.md +0 -0
  56. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/application/workflow.md +0 -0
  57. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/framework.md +0 -0
  58. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/img/base-orchestrator-setup.png +0 -0
  59. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  60. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  61. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  62. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
  63. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/orchestration/philosophy.md +0 -0
  64. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/backfilling.md +0 -0
  65. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/context.md +0 -0
  66. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/imports.md +0 -0
  67. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/introduction.md +0 -0
  68. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/ip_static.md +0 -0
  69. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/ip_static.png +0 -0
  70. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
  71. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  72. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/l2_vpn.md +0 -0
  73. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/l2_vpn.png +0 -0
  74. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/modelling.md +0 -0
  75. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/node.md +0 -0
  76. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/node.png +0 -0
  77. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/port.md +0 -0
  78. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/port.png +0 -0
  79. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/product_block_graph.md +0 -0
  80. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/product_block_graph.png +0 -0
  81. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/standards.md +0 -0
  82. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/product_modelling/terminology.md +0 -0
  83. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/architecture/tldr.md +0 -0
  84. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/contributing/development.md +0 -0
  85. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/contributing/guidelines.md +0 -0
  86. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/contributing/testing.md +0 -0
  87. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/css/custom.css +0 -0
  88. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/css/style.css +0 -0
  89. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/css/termynal.css +0 -0
  90. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/getting-started/base.md +0 -0
  91. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/getting-started/docker.md +0 -0
  92. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/getting-started/orchestration-ui.md +0 -0
  93. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/getting-started/prepare-source-folder.md +0 -0
  94. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/getting-started/versions.md +0 -0
  95. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/img/WFO-Emblem-White.png +0 -0
  96. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/img/favicon.ico +0 -0
  97. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/index.md +0 -0
  98. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/js/custom.js +0 -0
  99. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/js/termynal.js +0 -0
  100. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/migration-guide/2.0.md +0 -0
  101. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/migration-guide/3.0.md +0 -0
  102. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/api.md +0 -0
  103. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/app/app.md +0 -0
  104. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/app/scaling.md +0 -0
  105. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
  106. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/cli.md +0 -0
  107. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/database.md +0 -0
  108. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/generator.md +0 -0
  109. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/instantiating.md +0 -0
  110. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/model_attributes.md +0 -0
  111. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/overview.md +0 -0
  112. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/product_blocks.md +0 -0
  113. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/product_types.md +0 -0
  114. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/properties.md +0 -0
  115. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  116. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/type_casting.md +0 -0
  117. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/union_types.md +0 -0
  118. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/domain_models/validation.md +0 -0
  119. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/forms.md +0 -0
  120. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/graphql.md +0 -0
  121. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/python.md +0 -0
  122. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/search.md +0 -0
  123. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/search_overview.png +0 -0
  124. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/serialization.md +0 -0
  125. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/tasks.md +0 -0
  126. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/tests.md +0 -0
  127. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/tldr.md +0 -0
  128. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/websockets.md +0 -0
  129. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/workflows/callbacks.md +0 -0
  130. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
  131. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/reference-docs/workflows/workflow-steps.md +0 -0
  132. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/bootstrap.md +0 -0
  133. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/create-your-own.md +0 -0
  134. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/docker-installation.md +0 -0
  135. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/domain-models.md +0 -0
  136. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/execute-workflows.md +0 -0
  137. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/generator.md +0 -0
  138. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/l2_point_to_point.png +0 -0
  139. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/node-create.md +0 -0
  140. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/node-modify.md +0 -0
  141. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/node-terminate.md +0 -0
  142. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/node-validate.md +0 -0
  143. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/overview.md +0 -0
  144. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/scenario.md +0 -0
  145. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/workflow-basics.md +0 -0
  146. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/advanced/workflow-introduction.md +0 -0
  147. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/create-user-group.md +0 -0
  148. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/create-user.md +0 -0
  149. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/database-migration.md +0 -0
  150. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/debian.md +0 -0
  151. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/docker.md +0 -0
  152. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/domain-models.md +0 -0
  153. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/explore.md +0 -0
  154. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/input-forms.md +0 -0
  155. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/macos.md +0 -0
  156. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/modify-user-group.md +0 -0
  157. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/modify-user.md +0 -0
  158. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/register-workflows.md +0 -0
  159. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/start-applications.md +0 -0
  160. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/terminate-user-group.md +0 -0
  161. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/terminate-user.md +0 -0
  162. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/workflow-introduction.md +0 -0
  163. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/beginner/workshop-overview.md +0 -0
  164. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/images/Software-topology.drawio.png +0 -0
  165. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/images/clab_topology.png +0 -0
  166. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/images/metadata_products.png +0 -0
  167. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/images/netbox_devices_active.png +0 -0
  168. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/images/subscriptions.png +0 -0
  169. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/docs/workshops/images/topology.drawio.png +0 -0
  170. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/includes/abbreviations.md +0 -0
  171. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/nitpick-style.toml +0 -0
  172. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/__init__.py +0 -0
  173. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/__init__.py +0 -0
  174. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/api.py +0 -0
  175. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  176. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  177. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  178. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  179. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  180. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  181. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  182. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  183. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  184. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  185. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  186. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  187. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/error_handling.py +0 -0
  188. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/helpers.py +0 -0
  189. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/api/models.py +0 -0
  190. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/app.py +0 -0
  191. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/__init__.py +0 -0
  192. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/database.py +0 -0
  193. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  194. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  195. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  196. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  197. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  198. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  199. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  200. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generate.py +0 -0
  201. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/__init__.py +0 -0
  202. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/README +0 -0
  203. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  204. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  205. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  206. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  207. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  208. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  209. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  210. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  211. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  212. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/__init__.py +0 -0
  213. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/enums.py +0 -0
  214. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/helpers.py +0 -0
  215. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/migration.py +0 -0
  216. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/product.py +0 -0
  217. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/product_block.py +0 -0
  218. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/settings.py +0 -0
  219. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/translations.py +0 -0
  220. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/unittest.py +0 -0
  221. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/validations.py +0 -0
  222. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/generator/workflow.py +0 -0
  223. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  224. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  225. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  226. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  227. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  228. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  229. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  230. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  231. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  232. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  233. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  234. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  235. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  236. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  237. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  238. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  239. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  240. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  241. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/product.j2 +0 -0
  242. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  243. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  244. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  245. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  246. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  247. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  248. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  249. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  250. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  251. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  252. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  253. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/helpers/__init__.py +0 -0
  254. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/helpers/input_helpers.py +0 -0
  255. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/helpers/print_helpers.py +0 -0
  256. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/main.py +0 -0
  257. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/migrate_domain_models.py +0 -0
  258. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/migrate_tasks.py +0 -0
  259. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/migrate_workflows.py +0 -0
  260. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/migration_helpers.py +0 -0
  261. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/cli/scheduler.py +0 -0
  262. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/config/__init__.py +0 -0
  263. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/config/assignee.py +0 -0
  264. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/__init__.py +0 -0
  265. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/database.py +0 -0
  266. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/__init__.py +0 -0
  267. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/filters.py +0 -0
  268. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/process.py +0 -0
  269. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/product.py +0 -0
  270. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/product_block.py +0 -0
  271. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/resource_type.py +0 -0
  272. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  273. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  274. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/subscription.py +0 -0
  275. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/filters/workflow.py +0 -0
  276. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/helpers.py +0 -0
  277. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/listeners.py +0 -0
  278. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/loaders.py +0 -0
  279. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/queries/__init__.py +0 -0
  280. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/queries/subscription.py +0 -0
  281. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/queries/subscription_instance.py +0 -0
  282. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/range/__init__.py +0 -0
  283. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/range/range.py +0 -0
  284. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/__init__.py +0 -0
  285. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/process.py +0 -0
  286. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/product.py +0 -0
  287. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/product_block.py +0 -0
  288. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/resource_type.py +0 -0
  289. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/sorting.py +0 -0
  290. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/subscription.py +0 -0
  291. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/db/sorting/workflow.py +0 -0
  292. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/devtools/__init__.py +0 -0
  293. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/devtools/populator.py +0 -0
  294. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/devtools/scripts/__init__.py +0 -0
  295. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  296. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  297. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/devtools/scripts/shared.py +0 -0
  298. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/distlock/__init__.py +0 -0
  299. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/distlock/distlock_manager.py +0 -0
  300. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/distlock/managers/__init__.py +0 -0
  301. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  302. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  303. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/__init__.py +0 -0
  304. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/context_cache.py +0 -0
  305. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/helpers.py +0 -0
  306. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/lifecycle.py +0 -0
  307. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/domain/subscription_instance_transform.py +0 -0
  308. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/exception_handlers.py +0 -0
  309. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/__init__.py +0 -0
  310. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/validators/__init__.py +0 -0
  311. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  312. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/validators/customer_id.py +0 -0
  313. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/validators/display_subscription.py +0 -0
  314. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/validators/network_type_validators.py +0 -0
  315. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/forms/validators/product_id.py +0 -0
  316. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/__init__.py +0 -0
  317. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/autoregistration.py +0 -0
  318. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/extensions/__init__.py +0 -0
  319. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/extensions/model_cache.py +0 -0
  320. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/extensions/stats.py +0 -0
  321. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/loaders/__init__.py +0 -0
  322. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  323. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/mutations/start_process.py +0 -0
  324. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/pagination.py +0 -0
  325. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/__init__.py +0 -0
  326. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/customer.py +0 -0
  327. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/helpers.py +0 -0
  328. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/process.py +0 -0
  329. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/product.py +0 -0
  330. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/product_block.py +0 -0
  331. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  332. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/settings.py +0 -0
  333. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/subscription.py +0 -0
  334. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/version.py +0 -0
  335. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/resolvers/workflow.py +0 -0
  336. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schema.py +0 -0
  337. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/__init__.py +0 -0
  338. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/customer.py +0 -0
  339. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/customer_description.py +0 -0
  340. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/errors.py +0 -0
  341. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  342. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/helpers.py +0 -0
  343. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/process.py +0 -0
  344. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/product.py +0 -0
  345. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/product_block.py +0 -0
  346. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/resource_type.py +0 -0
  347. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/settings.py +0 -0
  348. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  349. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/subscription.py +0 -0
  350. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/version.py +0 -0
  351. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/schemas/workflow.py +0 -0
  352. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/types.py +0 -0
  353. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/__init__.py +0 -0
  354. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  355. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  356. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  357. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  358. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  359. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  360. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/override_class.py +0 -0
  361. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  362. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/log_config.py +0 -0
  363. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/README +0 -0
  364. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/alembic.ini +0 -0
  365. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/env.py +0 -0
  366. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/helpers.py +0 -0
  367. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/script.py.mako +0 -0
  368. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  369. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/templates/env.py.j2 +0 -0
  370. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  371. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  372. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  373. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  374. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  375. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  376. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  377. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  378. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  379. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  380. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  381. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  382. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  383. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  384. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  385. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  386. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  387. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  388. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  389. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  390. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  391. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  392. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  393. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  394. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  395. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/py.typed +0 -0
  396. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schedules/__init__.py +0 -0
  397. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schedules/resume_workflows.py +0 -0
  398. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schedules/scheduling.py +0 -0
  399. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schedules/task_vacuum.py +0 -0
  400. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schedules/validate_products.py +0 -0
  401. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schedules/validate_subscriptions.py +0 -0
  402. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/__init__.py +0 -0
  403. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/base.py +0 -0
  404. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/engine_settings.py +0 -0
  405. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/fixed_input.py +0 -0
  406. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/problem_detail.py +0 -0
  407. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/process.py +0 -0
  408. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/product.py +0 -0
  409. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/product_block.py +0 -0
  410. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/resource_type.py +0 -0
  411. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/subscription.py +0 -0
  412. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/subscription_descriptions.py +0 -0
  413. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/schemas/workflow.py +0 -0
  414. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/security.py +0 -0
  415. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/__init__.py +0 -0
  416. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/celery.py +0 -0
  417. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/fixed_inputs.py +0 -0
  418. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/input_state.py +0 -0
  419. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/process_broadcast_thread.py +0 -0
  420. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/products.py +0 -0
  421. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/resource_types.py +0 -0
  422. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/settings.py +0 -0
  423. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/subscription_relations.py +0 -0
  424. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/tasks.py +0 -0
  425. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/translations.py +0 -0
  426. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/services/workflows.py +0 -0
  427. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/targets.py +0 -0
  428. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/types.py +0 -0
  429. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/__init__.py +0 -0
  430. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/crypt.py +0 -0
  431. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/datetime.py +0 -0
  432. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/deprecation_logger.py +0 -0
  433. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/docs.py +0 -0
  434. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/enrich_process.py +0 -0
  435. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/errors.py +0 -0
  436. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/fixed_inputs.py +0 -0
  437. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/functional.py +0 -0
  438. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/get_updated_properties.py +0 -0
  439. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/helpers.py +0 -0
  440. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/json.py +0 -0
  441. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/redis_client.py +0 -0
  442. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/search_query.py +0 -0
  443. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/state.py +0 -0
  444. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/strings.py +0 -0
  445. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/utils/validate_data_version.py +0 -0
  446. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/version.py +0 -0
  447. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/websocket/__init__.py +0 -0
  448. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  449. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  450. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/websocket/websocket_manager.py +0 -0
  451. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflow.py +0 -0
  452. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/__init__.py +0 -0
  453. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/removed_workflow.py +0 -0
  454. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/tasks/__init__.py +0 -0
  455. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  456. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  457. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  458. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/tasks/validate_products.py +0 -0
  459. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/orchestrator/workflows/translations/en-GB.json +0 -0
  460. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/setup.cfg +0 -0
  461. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/setup.py +0 -0
  462. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/__init__.py +0 -0
  463. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/__init__.py +0 -0
  464. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/conftest.py +0 -0
  465. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  466. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  467. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
  468. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
  469. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  470. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
  471. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  472. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
  473. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  474. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
  475. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/acceptance_tests/test_test_product.py +0 -0
  476. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/__init__.py +0 -0
  477. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/__init__.py +0 -0
  478. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_health.py +0 -0
  479. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_helpers.py +0 -0
  480. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_models.py +0 -0
  481. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_processes.py +0 -0
  482. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_processes_ws.py +0 -0
  483. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_product_blocks.py +0 -0
  484. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_products.py +0 -0
  485. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_resource_types.py +0 -0
  486. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_settings.py +0 -0
  487. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
  488. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_workflows.py +0 -0
  489. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/api/test_ws.py +0 -0
  490. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/__init__.py +0 -0
  491. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/conftest.py +0 -0
  492. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
  493. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/main.py +0 -0
  494. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/env.py +0 -0
  495. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
  496. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
  497. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
  498. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -0
  499. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -0
  500. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -0
  501. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
  502. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  503. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
  504. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
  505. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
  506. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
  507. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  508. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
  509. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
  510. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
  511. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
  512. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
  513. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
  514. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
  515. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
  516. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
  517. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
  518. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
  519. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
  520. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
  521. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
  522. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
  523. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
  524. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
  525. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
  526. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
  527. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
  528. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
  529. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
  530. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
  531. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
  532. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
  533. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
  534. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
  535. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
  536. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
  537. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
  538. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
  539. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
  540. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
  541. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
  542. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/generate.sh +0 -0
  543. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
  544. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
  545. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/product_config1.yaml +0 -0
  546. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/product_config2.yaml +0 -0
  547. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/product_config3.yaml +0 -0
  548. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/data/product_config4.yaml +0 -0
  549. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/generator/__init__.py +0 -0
  550. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/generator/test_enums.py +0 -0
  551. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/helpers.py +0 -0
  552. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/test_cli_generate.py +0 -0
  553. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/test_config_validation.py +0 -0
  554. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/test_generate_code.py +0 -0
  555. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
  556. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
  557. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/config.py +0 -0
  558. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/db/__init__.py +0 -0
  559. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/db/test_listeners.py +0 -0
  560. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/__init__.py +0 -0
  561. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_base.py +0 -0
  562. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_base_multiple.py +0 -0
  563. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_base_performance.py +0 -0
  564. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_base_serializable_property.py +0 -0
  565. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
  566. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_base_with_union.py +0 -0
  567. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/domain/test_lifecycle.py +0 -0
  568. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/__init__.py +0 -0
  569. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/processes.py +0 -0
  570. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/__init__.py +0 -0
  571. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  572. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
  573. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
  574. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
  575. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
  576. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
  577. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
  578. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
  579. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  580. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
  581. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
  582. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
  583. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
  584. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
  585. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
  586. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
  587. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
  588. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
  589. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
  590. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
  591. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/fixtures/products/resource_types.py +0 -0
  592. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/forms/__init__.py +0 -0
  593. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
  594. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/forms/test_customer_id.py +0 -0
  595. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/forms/test_display_subscription.py +0 -0
  596. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/forms/test_generic_validators.py +0 -0
  597. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/__init__.py +0 -0
  598. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/conftest.py +0 -0
  599. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/extensions/__init__.py +0 -0
  600. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
  601. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/mutations/helpers.py +0 -0
  602. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
  603. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
  604. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_customer.py +0 -0
  605. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_process.py +0 -0
  606. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_processes.py +0 -0
  607. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_product.py +0 -0
  608. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_product_blocks.py +0 -0
  609. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_resource_types.py +0 -0
  610. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_settings.py +0 -0
  611. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
  612. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_subscription.py +0 -0
  613. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
  614. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_subscriptions.py +0 -0
  615. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_version.py +0 -0
  616. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/test_workflows.py +0 -0
  617. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/__init__.py +0 -0
  618. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/fixtures.py +0 -0
  619. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
  620. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
  621. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
  622. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
  623. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
  624. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
  625. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/helpers.py +0 -0
  626. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/migrations/__init__.py +0 -0
  627. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/migrations/test_cascade_constraint.py +0 -0
  628. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/schedules/__init__.py +0 -0
  629. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/schedules/test_scheduling.py +0 -0
  630. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/__init__.py +0 -0
  631. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/test_input_state.py +0 -0
  632. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/test_processes.py +0 -0
  633. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/test_products.py +0 -0
  634. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/test_subscription_relations.py +0 -0
  635. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/test_subscriptions.py +0 -0
  636. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/services/test_translations.py +0 -0
  637. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/test_db.py +0 -0
  638. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/test_types.py +0 -0
  639. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/test_workflow.py +0 -0
  640. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/__init__.py +0 -0
  641. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_datetime.py +0 -0
  642. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_errors.py +0 -0
  643. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_functional.py +0 -0
  644. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
  645. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_json.py +0 -0
  646. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_search_query.py +0 -0
  647. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_state.py +0 -0
  648. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/utils/test_strings.py +0 -0
  649. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/websocket/__init__.py +0 -0
  650. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/websocket/test_broadcast.py +0 -0
  651. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/__init__.py +0 -0
  652. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/conftest.py +0 -0
  653. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/shared/__init__.py +0 -0
  654. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
  655. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/tasks/__init__.py +0 -0
  656. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
  657. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
  658. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
  659. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/test_config_db_code.py +0 -0
  660. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
  661. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -0
  662. {orchestrator_core-3.2.2 → orchestrator_core-4.0.0rc1}/test/unit_tests/workflows/test_modify_note.py +0 -0
@@ -1,9 +1,9 @@
1
1
  [bumpversion]
2
- current_version = 3.2.2
2
+ current_version = 4.0.0rc1
3
3
  commit = False
4
4
  tag = False
5
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(rc(?P<build>\d+))?
6
- serialize =
6
+ serialize =
7
7
  {major}.{minor}.{patch}rc{build}
8
8
  {major}.{minor}.{patch}
9
9
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 3.2.2
3
+ Version: 4.0.0rc1
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Requires-Python: >=3.11,<3.14
6
6
  Classifier: Intended Audience :: Information Technology
@@ -35,24 +35,24 @@ Requires-Dist: deprecated
35
35
  Requires-Dist: deepmerge==2.0
36
36
  Requires-Dist: fastapi~=0.115.2
37
37
  Requires-Dist: fastapi-etag==0.4.0
38
- Requires-Dist: more-itertools~=10.6.0
38
+ Requires-Dist: more-itertools~=10.7.0
39
39
  Requires-Dist: itsdangerous
40
40
  Requires-Dist: Jinja2==3.1.6
41
- Requires-Dist: orjson==3.10.16
41
+ Requires-Dist: orjson==3.10.18
42
42
  Requires-Dist: psycopg2-binary==2.9.10
43
43
  Requires-Dist: pydantic[email]~=2.8.2
44
- Requires-Dist: pydantic-settings~=2.8.0
44
+ Requires-Dist: pydantic-settings~=2.9.1
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.2
48
48
  Requires-Dist: redis==5.1.1
49
49
  Requires-Dist: schedule==1.1.0
50
50
  Requires-Dist: semver==3.0.4
51
- Requires-Dist: sentry-sdk[fastapi]~=2.25.1
51
+ Requires-Dist: sentry-sdk[fastapi]~=2.27.0
52
52
  Requires-Dist: SQLAlchemy==2.0.40
53
53
  Requires-Dist: SQLAlchemy-Utils==0.41.2
54
54
  Requires-Dist: structlog
55
- Requires-Dist: typer==0.15.2
55
+ Requires-Dist: typer==0.15.3
56
56
  Requires-Dist: uvicorn[standard]~=0.34.0
57
57
  Requires-Dist: nwa-stdlib~=1.9.0
58
58
  Requires-Dist: oauth2-lib~=2.4.0
@@ -0,0 +1,16 @@
1
+ ---
2
+ hide:
3
+ - navigation
4
+ ---
5
+ # 4.0 Migration Guide
6
+
7
+ In this document we describe the steps that should be taken to migrate from `orchestrator-core` v3 to v4.
8
+
9
+ ## About 4.0
10
+
11
+ In this release we have removed the caching of domain models. Domain models will always be loaded from the database.
12
+
13
+ ## Steps
14
+
15
+ To use 4.0 all workflows must have run to completion. The `cache_domain_models` step no longer is part of the codebase
16
+ therfore `in flight` workflows will fail.
@@ -192,6 +192,7 @@ nav:
192
192
  - Migration guides:
193
193
  - 2.x: migration-guide/2.0.md
194
194
  - 3.x: migration-guide/3.0.md
195
+ - 4.x: migration-guide/4.0.md
195
196
 
196
197
  - Workshops:
197
198
  # - Beginner:
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "3.2.2"
16
+ __version__ = "4.0.0rc1"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -28,7 +28,6 @@ from orchestrator.domain.customer_description import (
28
28
  from orchestrator.schemas import SubscriptionDescriptionBaseSchema, SubscriptionDescriptionSchema
29
29
  from orchestrator.schemas.subscription_descriptions import UpdateSubscriptionDescriptionSchema
30
30
  from orchestrator.utils.errors import StaleDataError
31
- from orchestrator.utils.redis import delete_from_redis
32
31
 
33
32
  router = APIRouter()
34
33
 
@@ -55,7 +54,6 @@ def delete_subscription_customer_descriptions(_id: UUID) -> None:
55
54
  description = db.session.get(SubscriptionCustomerDescriptionTable, _id)
56
55
  if description:
57
56
  delete(SubscriptionCustomerDescriptionTable, _id)
58
- delete_from_redis(description.subscription_id)
59
57
 
60
58
 
61
59
  @router.get("/{_id}", response_model=SubscriptionDescriptionSchema)
@@ -400,7 +400,7 @@ class WorkflowTable(BaseModel):
400
400
  workflow_id = mapped_column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
401
401
  name = mapped_column(String(), nullable=False, unique=True)
402
402
  target = mapped_column(String(), nullable=False)
403
- description = mapped_column(Text(), nullable=True)
403
+ description = mapped_column(Text(), nullable=False)
404
404
  created_at = mapped_column(UtcTimestamp, nullable=False, server_default=text("current_timestamp()"))
405
405
  deleted_at = mapped_column(UtcTimestamp, deferred=True)
406
406
 
@@ -1294,27 +1294,13 @@ class SubscriptionModel(DomainModel):
1294
1294
  # Some common functions shared by from_other_product and from_subscription
1295
1295
  @classmethod
1296
1296
  def _get_subscription(cls: type[S], subscription_id: UUID | UUIDstr) -> SubscriptionTable | None:
1297
- from orchestrator.settings import app_settings
1298
1297
 
1299
1298
  if not isinstance(subscription_id, UUID | UUIDstr):
1300
1299
  raise TypeError(f"subscription_id is of type {type(subscription_id)} instead of UUID | UUIDstr")
1301
1300
 
1302
- if app_settings.ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS:
1303
- # TODO #900 remove toggle and make this path the default
1304
- loaders = [
1305
- joinedload(SubscriptionTable.product).selectinload(ProductTable.fixed_inputs),
1306
- ]
1307
-
1308
- else:
1309
- loaders = [
1310
- selectinload(SubscriptionTable.instances)
1311
- .joinedload(SubscriptionInstanceTable.product_block)
1312
- .selectinload(ProductBlockTable.resource_types),
1313
- selectinload(SubscriptionTable.instances).selectinload(
1314
- SubscriptionInstanceTable.in_use_by_block_relations
1315
- ),
1316
- selectinload(SubscriptionTable.instances).selectinload(SubscriptionInstanceTable.values),
1317
- ]
1301
+ loaders = [
1302
+ joinedload(SubscriptionTable.product).selectinload(ProductTable.fixed_inputs),
1303
+ ]
1318
1304
 
1319
1305
  return db.session.get(SubscriptionTable, subscription_id, options=loaders)
1320
1306
 
@@ -1394,7 +1380,6 @@ class SubscriptionModel(DomainModel):
1394
1380
  def from_subscription(cls: type[S], subscription_id: UUID | UUIDstr) -> S:
1395
1381
  """Use a subscription_id to return required fields of an existing subscription."""
1396
1382
  from orchestrator.domain.context_cache import get_from_cache, store_in_cache
1397
- from orchestrator.settings import app_settings
1398
1383
 
1399
1384
  if cached_model := get_from_cache(subscription_id):
1400
1385
  return cast(S, cached_model)
@@ -1421,12 +1406,7 @@ class SubscriptionModel(DomainModel):
1421
1406
 
1422
1407
  fixed_inputs = {fi.name: fi.value for fi in subscription.product.fixed_inputs}
1423
1408
 
1424
- instances: dict[str, Any]
1425
- if app_settings.ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS:
1426
- # TODO #900 remove toggle and make this path the default
1427
- instances = cls._load_root_instances(subscription_id)
1428
- else:
1429
- instances = cls._load_instances(subscription.instances, status, match_domain_attr=False)
1409
+ instances = cls._load_root_instances(subscription_id)
1430
1410
 
1431
1411
  try:
1432
1412
  model = cls(
@@ -21,7 +21,6 @@ from sqlalchemy import select
21
21
  from orchestrator.api.models import delete
22
22
  from orchestrator.db import SubscriptionCustomerDescriptionTable, db
23
23
  from orchestrator.utils.errors import StaleDataError
24
- from orchestrator.utils.redis import delete_subscription_from_redis
25
24
  from orchestrator.utils.validate_data_version import validate_data_version
26
25
  from orchestrator.websocket import invalidate_subscription_cache
27
26
 
@@ -38,7 +37,6 @@ def get_customer_description_by_customer_subscription(
38
37
  return db.session.scalars(stmt).one_or_none()
39
38
 
40
39
 
41
- @delete_subscription_from_redis()
42
40
  async def create_subscription_customer_description(
43
41
  customer_id: str, subscription_id: UUID, description: str
44
42
  ) -> SubscriptionCustomerDescriptionTable:
@@ -53,7 +51,6 @@ async def create_subscription_customer_description(
53
51
  return customer_description
54
52
 
55
53
 
56
- @delete_subscription_from_redis()
57
54
  async def update_subscription_customer_description(
58
55
  customer_description: SubscriptionCustomerDescriptionTable,
59
56
  description: str,
@@ -70,7 +67,6 @@ async def update_subscription_customer_description(
70
67
  return customer_description
71
68
 
72
69
 
73
- @delete_subscription_from_redis()
74
70
  async def delete_subscription_customer_description_by_customer_subscription(
75
71
  customer_id: str, subscription_id: UUID
76
72
  ) -> SubscriptionCustomerDescriptionTable | None:
@@ -60,7 +60,7 @@ async def resolve_remove_customer_description(
60
60
  )
61
61
  if not description:
62
62
  return NotFoundError(message="Customer description not found")
63
- return CustomerDescription.from_pydantic(description)
63
+ return CustomerDescription.from_pydantic(description) # type: ignore
64
64
 
65
65
 
66
66
  @strawberry.type(description="Customer subscription description mutations")
@@ -0,0 +1,33 @@
1
+ """Make workflow description mandatory.
2
+
3
+ Revision ID: 68d14db1b8da
4
+ Revises: bac6be6f2b4f
5
+ Create Date: 2025-02-20 16:39:34.889953
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+ from structlog import get_logger
12
+
13
+ logger = get_logger(__name__)
14
+
15
+ # revision identifiers, used by Alembic.
16
+ revision = "68d14db1b8da"
17
+ down_revision = "bac6be6f2b4f"
18
+ branch_labels = None
19
+ depends_on = None
20
+
21
+
22
+ def upgrade() -> None:
23
+ try:
24
+ op.alter_column("workflows", "description", existing_type=sa.TEXT(), nullable=False)
25
+ except sa.exc.IntegrityError:
26
+ logger.error(
27
+ "Unable to execute migrations due to missing descriptions in workflow table, please create a migration to backfill this column."
28
+ )
29
+ raise
30
+
31
+
32
+ def downgrade() -> None:
33
+ op.alter_column("workflows", "description", existing_type=sa.TEXT(), nullable=True)
@@ -441,6 +441,7 @@ def create_process(
441
441
  }
442
442
 
443
443
  try:
444
+
444
445
  state = post_form(workflow.initial_input_form, initial_state, user_inputs)
445
446
  except FormValidationError:
446
447
  logger.exception("Validation errors", user_inputs=user_inputs)
@@ -682,7 +683,7 @@ def update_awaiting_process_progress(
682
683
  ensure_correct_callback_token(pstat, token=token)
683
684
 
684
685
  state = pstat.state.unwrap()
685
- progress_key = state.get(DEFAULT_CALLBACK_PROGRESS_KEY, "callback_progress")
686
+ progress_key = DEFAULT_CALLBACK_PROGRESS_KEY
686
687
  state = {**state, progress_key: data} | {"__remove_keys": [progress_key]}
687
688
 
688
689
  replace_current_step_state(process, new_state=state)
@@ -605,7 +605,6 @@ def build_domain_model(subscription_model: SubscriptionModel) -> dict:
605
605
 
606
606
  def build_extended_domain_model(subscription_model: SubscriptionModel) -> dict:
607
607
  """Create a subscription dict from the SubscriptionModel with additional keys."""
608
- from orchestrator.settings import app_settings
609
608
 
610
609
  stmt = select(SubscriptionCustomerDescriptionTable).where(
611
610
  SubscriptionCustomerDescriptionTable.subscription_id == subscription_model.subscription_id
@@ -615,27 +614,12 @@ def build_extended_domain_model(subscription_model: SubscriptionModel) -> dict:
615
614
  with cache_subscription_models():
616
615
  subscription = subscription_model.model_dump()
617
616
 
618
- def inject_in_use_by_ids(path_to_block: str) -> None:
619
- if not (in_use_by_subs := getattr_in(subscription_model, f"{path_to_block}.in_use_by")):
620
- return
621
-
622
- in_use_by_ids = [obj.in_use_by_id for obj in in_use_by_subs.col]
623
- in_use_by_relations = [convert_to_in_use_by_relation(instance) for instance in in_use_by_subs]
624
- update_in(subscription, f"{path_to_block}.in_use_by_ids", in_use_by_ids)
625
- update_in(subscription, f"{path_to_block}.in_use_by_relations", in_use_by_relations)
626
-
627
- if app_settings.ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS:
628
- # TODO #900 remove toggle and make this path the default
629
- # query all subscription instances and inject the in_use_by_ids/in_use_by_relations into the subscription dict.
630
- instance_to_in_use_by = {
631
- instance.subscription_instance_id: instance.in_use_by
632
- for instance in eagerload_all_subscription_instances_only_inuseby(subscription_model.subscription_id)
633
- }
634
- inject_in_use_by_ids_v2(subscription, instance_to_in_use_by)
635
- else:
636
- # find all product blocks, check if they have in_use_by and inject the in_use_by_ids into the subscription dict.
637
- for path in product_block_paths(subscription):
638
- inject_in_use_by_ids(path)
617
+ # query all subscription instances and inject the in_use_by_ids/in_use_by_relations into the subscription dict.
618
+ instance_to_in_use_by = {
619
+ instance.subscription_instance_id: instance.in_use_by
620
+ for instance in eagerload_all_subscription_instances_only_inuseby(subscription_model.subscription_id)
621
+ }
622
+ inject_in_use_by_ids_v2(subscription, instance_to_in_use_by)
639
623
 
640
624
  subscription["customer_descriptions"] = customer_descriptions
641
625
 
@@ -55,7 +55,6 @@ class AppSettings(BaseSettings):
55
55
  MAIL_PORT: int = 25
56
56
  MAIL_STARTTLS: bool = False
57
57
  CACHE_URI: RedisDsn = "redis://localhost:6379/0" # type: ignore
58
- CACHE_DOMAIN_MODELS: bool = False
59
58
  CACHE_HMAC_SECRET: str | None = None # HMAC signing key, used when pickling results in the cache
60
59
  REDIS_RETRY_COUNT: NonNegativeInt = Field(
61
60
  2, description="Number of retries for redis connection errors/timeouts, 0 to disable"
@@ -87,9 +86,6 @@ class AppSettings(BaseSettings):
87
86
  ENABLE_GRAPHQL_STATS_EXTENSION: bool = False
88
87
  VALIDATE_OUT_OF_SYNC_SUBSCRIPTIONS: bool = False
89
88
  FILTER_BY_MODE: Literal["partial", "exact"] = "exact"
90
- ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS: bool = (
91
- True # True=ignore cache + optimized DB queries; False=use cache + unoptimized DB queries. Remove in #900
92
- )
93
89
 
94
90
 
95
91
  app_settings = AppSettings()
@@ -2,15 +2,11 @@ from uuid import UUID
2
2
 
3
3
  from orchestrator.domain.base import SubscriptionModel
4
4
  from orchestrator.services.subscriptions import _generate_etag, build_domain_model, build_extended_domain_model
5
- from orchestrator.utils.redis import from_redis
6
5
 
7
6
 
8
7
  async def get_subscription_dict(subscription_id: UUID, inject_inuseby: bool = True) -> tuple[dict, str]:
9
8
  """Helper function to get subscription dict by uuid from db or cache."""
10
9
 
11
- if cached_model := from_redis(subscription_id):
12
- return cached_model # type: ignore
13
-
14
10
  subscription_model = SubscriptionModel.from_subscription(subscription_id)
15
11
 
16
12
  if not inject_inuseby:
@@ -10,11 +10,9 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- import functools
14
13
  from collections.abc import AsyncGenerator
15
14
  from contextlib import asynccontextmanager
16
- from os import getenv
17
- from typing import Any, Callable
15
+ from typing import Any
18
16
  from uuid import UUID
19
17
 
20
18
  from anyio import CancelScope, get_cancelled_exc_class
@@ -22,9 +20,7 @@ from redis.asyncio import Redis as AIORedis
22
20
  from redis.asyncio.client import Pipeline, PubSub
23
21
  from structlog import get_logger
24
22
 
25
- from orchestrator.services.subscriptions import _generate_etag
26
23
  from orchestrator.settings import app_settings
27
- from orchestrator.utils.json import PY_JSON_TYPES, json_dumps, json_loads
28
24
  from orchestrator.utils.redis_client import (
29
25
  create_redis_asyncio_client,
30
26
  create_redis_client,
@@ -37,52 +33,6 @@ cache = create_redis_client(app_settings.CACHE_URI)
37
33
  ONE_WEEK = 3600 * 24 * 7
38
34
 
39
35
 
40
- def caching_models_enabled() -> bool:
41
- return getenv("AIOCACHE_DISABLE", "0") == "0" and app_settings.CACHE_DOMAIN_MODELS
42
-
43
-
44
- def to_redis(subscription: dict[str, Any]) -> str | None:
45
- if caching_models_enabled():
46
- logger.info("Setting cache for subscription", subscription=subscription["subscription_id"])
47
- etag = _generate_etag(subscription)
48
- cache.set(f"orchestrator:domain:{subscription['subscription_id']}", json_dumps(subscription), ex=ONE_WEEK)
49
- cache.set(f"orchestrator:domain:etag:{subscription['subscription_id']}", etag, ex=ONE_WEEK)
50
- return etag
51
-
52
- logger.warning("Caching disabled, not caching subscription", subscription=subscription["subscription_id"])
53
- return None
54
-
55
-
56
- def from_redis(subscription_id: UUID) -> tuple[PY_JSON_TYPES, str] | None:
57
- log = logger.bind(subscription_id=subscription_id)
58
-
59
- if app_settings.ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS:
60
- # TODO #900 remove toggle and remove usage of this function in get_subscription_dict
61
- log.info("Using SubscriptionModel optimization, not loading subscription from redis cache")
62
- return None
63
-
64
- if caching_models_enabled():
65
- log.debug("Try to retrieve subscription from cache")
66
- obj = cache.get(f"orchestrator:domain:{subscription_id}")
67
- etag = cache.get(f"orchestrator:domain:etag:{subscription_id}")
68
- if obj and etag:
69
- log.info("Retrieved subscription from cache")
70
- return json_loads(obj), etag.decode("utf-8")
71
- log.info("Subscription not found in cache")
72
- return None
73
- log.warning("Caching disabled, not loading subscription")
74
- return None
75
-
76
-
77
- def delete_from_redis(subscription_id: UUID) -> None:
78
- if caching_models_enabled():
79
- logger.info("Deleting subscription object from cache", subscription_id=subscription_id)
80
- cache.delete(f"orchestrator:domain:{subscription_id}")
81
- cache.delete(f"orchestrator:domain:etag:{subscription_id}")
82
- else:
83
- logger.warning("Caching disabled, not deleting subscription", subscription=subscription_id)
84
-
85
-
86
36
  def default_get_subscription_id(data: Any) -> UUID:
87
37
  if hasattr(data, "subscription_id"):
88
38
  return data.subscription_id
@@ -91,22 +41,6 @@ def default_get_subscription_id(data: Any) -> UUID:
91
41
  return data
92
42
 
93
43
 
94
- def delete_subscription_from_redis(
95
- extract_fn: Callable[..., UUID] = default_get_subscription_id,
96
- ) -> Callable[[Callable[..., Any]], Callable[..., Any]]:
97
- def _delete_subscription_from_redis(func: Callable[..., Any]) -> Callable[..., Any]:
98
- @functools.wraps(func)
99
- async def wrapper(*args: tuple, **kwargs: dict[str, Any]) -> Any:
100
- data = await func(*args, **kwargs)
101
- key = extract_fn(data)
102
- delete_from_redis(key)
103
- return data
104
-
105
- return wrapper
106
-
107
- return _delete_subscription_from_redis
108
-
109
-
110
44
  async def delete_keys_matching_pattern(_cache: AIORedis, pattern: str, chunksize: int = 5000) -> int:
111
45
  """Delete all keys matching the given pattern.
112
46
 
@@ -13,11 +13,10 @@
13
13
  from orchestrator.db import db
14
14
  from orchestrator.forms import SubmitFormPage
15
15
  from orchestrator.services import subscriptions
16
- from orchestrator.settings import app_settings
17
16
  from orchestrator.targets import Target
18
17
  from orchestrator.utils.json import to_serializable
19
- from orchestrator.workflow import StepList, conditional, done, init, step, workflow
20
- from orchestrator.workflows.steps import cache_domain_models, store_process_subscription
18
+ from orchestrator.workflow import StepList, done, init, step, workflow
19
+ from orchestrator.workflows.steps import store_process_subscription
21
20
  from orchestrator.workflows.utils import wrap_modify_initial_input_form
22
21
  from pydantic_forms.types import FormGenerator, State, UUIDstr
23
22
  from pydantic_forms.validators import LongText
@@ -54,11 +53,4 @@ def store_subscription_note(subscription_id: UUIDstr, note: str) -> State:
54
53
 
55
54
  @workflow("Modify Note", initial_input_form=wrap_modify_initial_input_form(initial_input_form), target=Target.MODIFY)
56
55
  def modify_note() -> StepList:
57
- push_subscriptions = conditional(lambda _: app_settings.CACHE_DOMAIN_MODELS)
58
- return (
59
- init
60
- >> store_process_subscription(Target.MODIFY)
61
- >> store_subscription_note
62
- >> push_subscriptions(cache_domain_models)
63
- >> done
64
- )
56
+ return init >> store_process_subscription(Target.MODIFY) >> store_subscription_note >> done
@@ -11,22 +11,18 @@
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
13
  from copy import deepcopy
14
- from typing import Any
15
- from uuid import UUID
16
14
 
17
15
  import structlog
18
16
  from pydantic import ValidationError
19
17
 
20
18
  from orchestrator.db import db
21
19
  from orchestrator.db.models import ProcessSubscriptionTable
22
- from orchestrator.domain.base import ProductBlockModel, SubscriptionModel
20
+ from orchestrator.domain.base import SubscriptionModel
23
21
  from orchestrator.services.settings import reset_search_index
24
- from orchestrator.services.subscriptions import build_extended_domain_model, get_subscription
22
+ from orchestrator.services.subscriptions import get_subscription
25
23
  from orchestrator.targets import Target
26
24
  from orchestrator.types import SubscriptionLifecycle
27
25
  from orchestrator.utils.json import to_serializable
28
- from orchestrator.utils.redis import delete_from_redis, to_redis
29
- from orchestrator.websocket import sync_invalidate_subscription_cache
30
26
  from orchestrator.workflow import Step, step
31
27
  from pydantic_forms.types import State, UUIDstr
32
28
 
@@ -138,86 +134,6 @@ def set_status(status: SubscriptionLifecycle) -> Step:
138
134
  return _set_status
139
135
 
140
136
 
141
- @step("Remove domain model from cache")
142
- def remove_domain_model_from_cache(
143
- workflow_name: str, subscription: SubscriptionModel | None = None, subscription_id: UUID | None = None
144
- ) -> State:
145
- """Remove the domain model from the cache if it exists.
146
-
147
- Args:
148
- workflow_name: The workflow name
149
- subscription: Subscription Model
150
- subscription_id: The subscription id
151
-
152
- Returns:
153
- State
154
-
155
- """
156
-
157
- if not (subscription or subscription_id):
158
- logger.warning("No subscription found in this workflow", workflow_name=workflow_name)
159
- return {"deleted_subscription_id": None}
160
- if subscription:
161
- delete_from_redis(subscription.subscription_id)
162
- elif subscription_id:
163
- delete_from_redis(subscription_id)
164
-
165
- return {"deleted_subscription_id": subscription_id or subscription.subscription_id} # type: ignore[union-attr]
166
-
167
-
168
- @step("Cache Subscription and related subscriptions")
169
- def cache_domain_models(workflow_name: str, subscription: SubscriptionModel | None = None) -> State: # noqa: C901
170
- """Attempt to cache all Subscriptions once they have been touched once.
171
-
172
- Args:
173
- workflow_name: The Workflow Name
174
- subscription: The Subscription if it exists.
175
-
176
- Returns:
177
- Returns State.
178
-
179
- """
180
- cached_subscription_ids: set[UUID] = set()
181
- if not subscription:
182
- logger.warning("No subscription found in this workflow", workflow_name=workflow_name)
183
- return {"cached_subscription_ids": cached_subscription_ids}
184
-
185
- def _cache_other_subscriptions(product_block: ProductBlockModel) -> None:
186
- for field in product_block.model_fields:
187
- # subscription_instance is a ProductBlockModel or an arbitrary type
188
- subscription_instance: ProductBlockModel | Any = getattr(product_block, field)
189
- # If subscription_instance is a list, we need to step into it and loop.
190
- if isinstance(subscription_instance, list):
191
- for item in subscription_instance:
192
- if isinstance(item, ProductBlockModel):
193
- _cache_other_subscriptions(item)
194
-
195
- # If subscription_instance is a ProductBlockModel check the owner_subscription_id to decide the cache
196
- elif isinstance(subscription_instance, ProductBlockModel):
197
- _cache_other_subscriptions(subscription_instance)
198
- if not subscription_instance.owner_subscription_id == subscription.subscription_id:
199
- cached_subscription_ids.add(subscription_instance.owner_subscription_id)
200
-
201
- for field in subscription.model_fields:
202
- # There always is a single Root Product Block, it cannot be a list, so no need to check.
203
- instance: ProductBlockModel | Any = getattr(subscription, field)
204
- if isinstance(instance, ProductBlockModel):
205
- _cache_other_subscriptions(instance)
206
-
207
- # Cache all the sub subscriptions
208
- for subscription_id in cached_subscription_ids:
209
- subscription_model = SubscriptionModel.from_subscription(subscription_id)
210
- to_redis(build_extended_domain_model(subscription_model))
211
- sync_invalidate_subscription_cache(subscription.subscription_id, invalidate_all=False)
212
-
213
- # Cache the main subscription
214
- to_redis(build_extended_domain_model(subscription))
215
- cached_subscription_ids.add(subscription.subscription_id)
216
- sync_invalidate_subscription_cache(subscription.subscription_id)
217
-
218
- return {"cached_subscription_ids": cached_subscription_ids}
219
-
220
-
221
137
  @step("Refresh subscription search index")
222
138
  def refresh_subscription_search_index() -> State:
223
139
  try:
@@ -24,16 +24,13 @@ from oauth2_lib.fastapi import OIDCUserModel
24
24
  from orchestrator.db import ProductTable, SubscriptionTable, db
25
25
  from orchestrator.forms.validators import ProductId
26
26
  from orchestrator.services import subscriptions
27
- from orchestrator.settings import app_settings
28
27
  from orchestrator.targets import Target
29
28
  from orchestrator.types import SubscriptionLifecycle
30
29
  from orchestrator.utils.errors import StaleDataError
31
- from orchestrator.utils.redis import caching_models_enabled
32
30
  from orchestrator.utils.state import form_inject_args
33
31
  from orchestrator.utils.validate_data_version import validate_data_version
34
- from orchestrator.workflow import Step, StepList, Workflow, begin, conditional, done, init, make_workflow, step
32
+ from orchestrator.workflow import Step, StepList, Workflow, begin, done, init, make_workflow, step
35
33
  from orchestrator.workflows.steps import (
36
- cache_domain_models,
37
34
  refresh_subscription_search_index,
38
35
  resync,
39
36
  set_status,
@@ -198,8 +195,6 @@ modify_initial_input_form_generator = None
198
195
 
199
196
  validate_initial_input_form_generator = wrap_modify_initial_input_form(modify_initial_input_form_generator)
200
197
 
201
- push_domain_models = conditional(lambda _: caching_models_enabled())
202
-
203
198
 
204
199
  def create_workflow(
205
200
  description: str,
@@ -228,7 +223,6 @@ def create_workflow(
228
223
  >> (additional_steps or StepList())
229
224
  >> set_status(status)
230
225
  >> resync
231
- >> push_domain_models(cache_domain_models)
232
226
  >> refresh_subscription_search_index
233
227
  >> done
234
228
  )
@@ -270,11 +264,9 @@ def modify_workflow(
270
264
  init
271
265
  >> store_process_subscription(Target.MODIFY)
272
266
  >> unsync
273
- >> push_domain_models(cache_domain_models)
274
267
  >> f()
275
268
  >> (additional_steps or StepList())
276
269
  >> resync
277
- >> push_domain_models(cache_domain_models)
278
270
  >> refresh_subscription_search_index
279
271
  >> done
280
272
  )
@@ -316,12 +308,10 @@ def terminate_workflow(
316
308
  init
317
309
  >> store_process_subscription(Target.TERMINATE)
318
310
  >> unsync
319
- >> push_domain_models(cache_domain_models)
320
311
  >> f()
321
312
  >> (additional_steps or StepList())
322
313
  >> set_status(SubscriptionLifecycle.TERMINATED)
323
314
  >> resync
324
- >> push_domain_models(cache_domain_models)
325
315
  >> refresh_subscription_search_index
326
316
  >> done
327
317
  )
@@ -352,17 +342,7 @@ def validate_workflow(description: str) -> Callable[[Callable[[], StepList]], Wo
352
342
  """
353
343
 
354
344
  def _validate_workflow(f: Callable[[], StepList]) -> Workflow:
355
- push_subscriptions = conditional(lambda _: app_settings.CACHE_DOMAIN_MODELS)
356
- steplist = (
357
- init
358
- >> store_process_subscription(Target.SYSTEM)
359
- >> unsync_unchecked
360
- >> push_subscriptions(cache_domain_models)
361
- >> f()
362
- >> resync
363
- >> push_subscriptions(cache_domain_models)
364
- >> done
365
- )
345
+ steplist = init >> store_process_subscription(Target.SYSTEM) >> unsync_unchecked >> f() >> resync >> done
366
346
 
367
347
  return make_workflow(f, description, validate_initial_input_form_generator, Target.SYSTEM, steplist)
368
348