orchestrator-core 4.1.0rc2__tar.gz → 4.2.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 (682) hide show
  1. orchestrator_core-4.2.0rc1/PKG-INFO +167 -0
  2. orchestrator_core-4.2.0rc1/README.md +96 -0
  3. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/__init__.py +1 -1
  4. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/processes.py +4 -1
  5. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/subscriptions.py +25 -2
  6. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/create_product.j2 +1 -2
  7. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/models.py +6 -3
  8. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/process.py +21 -2
  9. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product.py +8 -9
  10. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/workflow.py +9 -0
  11. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/types.py +7 -1
  12. orchestrator_core-4.2.0rc1/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +65 -0
  13. orchestrator_core-4.2.0rc1/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +30 -0
  14. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/process.py +5 -1
  15. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/processes.py +11 -2
  16. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/enrich_process.py +4 -2
  17. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflow.py +7 -2
  18. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/modify_note.py +1 -1
  19. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/steps.py +14 -8
  20. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/utils.py +3 -3
  21. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/pyproject.toml +91 -92
  22. orchestrator_core-4.1.0rc2/.bumpversion.cfg +0 -12
  23. orchestrator_core-4.1.0rc2/.coveragerc +0 -2
  24. orchestrator_core-4.1.0rc2/.github/ISSUE_TEMPLATE/bug-report.yml +0 -52
  25. orchestrator_core-4.1.0rc2/.github/ISSUE_TEMPLATE/feature-request.yml +0 -32
  26. orchestrator_core-4.1.0rc2/.github/dependabot.yml +0 -11
  27. orchestrator_core-4.1.0rc2/.github/workflows/README.md +0 -65
  28. orchestrator_core-4.1.0rc2/.github/workflows/build-push-container.yml +0 -58
  29. orchestrator_core-4.1.0rc2/.github/workflows/changelog.yml +0 -13
  30. orchestrator_core-4.1.0rc2/.github/workflows/codeql-analysis.yml +0 -68
  31. orchestrator_core-4.1.0rc2/.github/workflows/gh-pages.yml +0 -17
  32. orchestrator_core-4.1.0rc2/.github/workflows/issues.yml +0 -13
  33. orchestrator_core-4.1.0rc2/.github/workflows/publish-package.yml +0 -25
  34. orchestrator_core-4.1.0rc2/.github/workflows/run-codspeed-tests.yml +0 -71
  35. orchestrator_core-4.1.0rc2/.github/workflows/run-linting-tests.yml +0 -36
  36. orchestrator_core-4.1.0rc2/.github/workflows/run-unit-tests.yml +0 -68
  37. orchestrator_core-4.1.0rc2/.github/workflows/scheduled-build.yml +0 -42
  38. orchestrator_core-4.1.0rc2/.gitignore +0 -135
  39. orchestrator_core-4.1.0rc2/.pre-commit-config.yaml +0 -86
  40. orchestrator_core-4.1.0rc2/.stignore +0 -101
  41. orchestrator_core-4.1.0rc2/CHANGELOG.md +0 -481
  42. orchestrator_core-4.1.0rc2/Dockerfile +0 -24
  43. orchestrator_core-4.1.0rc2/NOTICE +0 -7
  44. orchestrator_core-4.1.0rc2/PKG-INFO +0 -118
  45. orchestrator_core-4.1.0rc2/README.md +0 -200
  46. orchestrator_core-4.1.0rc2/codecov.yml +0 -8
  47. orchestrator_core-4.1.0rc2/docs/architecture/application/domainmodels.md +0 -236
  48. orchestrator_core-4.1.0rc2/docs/architecture/application/forms-frontend.md +0 -231
  49. orchestrator_core-4.1.0rc2/docs/architecture/application/tasks.md +0 -169
  50. orchestrator_core-4.1.0rc2/docs/architecture/application/workflow.md +0 -295
  51. orchestrator_core-4.1.0rc2/docs/architecture/framework.md +0 -28
  52. orchestrator_core-4.1.0rc2/docs/architecture/img/base-orchestrator-setup.png +0 -0
  53. orchestrator_core-4.1.0rc2/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  54. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  55. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  56. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/orchestrator-ui.md +0 -265
  57. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/philosophy.md +0 -16
  58. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/backfilling.md +0 -77
  59. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/context.md +0 -11
  60. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/imports.md +0 -90
  61. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/introduction.md +0 -13
  62. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/ip_static.md +0 -27
  63. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/ip_static.png +0 -0
  64. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_point_to_point.md +0 -21
  65. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  66. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_vpn.md +0 -15
  67. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_vpn.png +0 -0
  68. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/modelling.md +0 -22
  69. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/node.md +0 -20
  70. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/node.png +0 -0
  71. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/port.md +0 -20
  72. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/port.png +0 -0
  73. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/product_block_graph.md +0 -26
  74. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/product_block_graph.png +0 -0
  75. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/standards.md +0 -16
  76. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/terminology.md +0 -17
  77. orchestrator_core-4.1.0rc2/docs/architecture/tldr.md +0 -40
  78. orchestrator_core-4.1.0rc2/docs/contributing/development.md +0 -109
  79. orchestrator_core-4.1.0rc2/docs/contributing/guidelines.md +0 -41
  80. orchestrator_core-4.1.0rc2/docs/contributing/testing.md +0 -278
  81. orchestrator_core-4.1.0rc2/docs/css/custom.css +0 -24
  82. orchestrator_core-4.1.0rc2/docs/css/style.css +0 -27
  83. orchestrator_core-4.1.0rc2/docs/css/termynal.css +0 -108
  84. orchestrator_core-4.1.0rc2/docs/getting-started/base.md +0 -99
  85. orchestrator_core-4.1.0rc2/docs/getting-started/docker.md +0 -23
  86. orchestrator_core-4.1.0rc2/docs/getting-started/orchestration-ui.md +0 -59
  87. orchestrator_core-4.1.0rc2/docs/getting-started/prepare-source-folder.md +0 -110
  88. orchestrator_core-4.1.0rc2/docs/getting-started/versions.md +0 -12
  89. orchestrator_core-4.1.0rc2/docs/img/WFO-Emblem-White.png +0 -0
  90. orchestrator_core-4.1.0rc2/docs/img/favicon.ico +0 -0
  91. orchestrator_core-4.1.0rc2/docs/index.md +0 -82
  92. orchestrator_core-4.1.0rc2/docs/js/custom.js +0 -105
  93. orchestrator_core-4.1.0rc2/docs/js/termynal.js +0 -264
  94. orchestrator_core-4.1.0rc2/docs/migration-guide/2.0.md +0 -331
  95. orchestrator_core-4.1.0rc2/docs/migration-guide/3.0.md +0 -14
  96. orchestrator_core-4.1.0rc2/docs/migration-guide/4.0.md +0 -73
  97. orchestrator_core-4.1.0rc2/docs/reference-docs/api.md +0 -6
  98. orchestrator_core-4.1.0rc2/docs/reference-docs/app/app.md +0 -26
  99. orchestrator_core-4.1.0rc2/docs/reference-docs/app/scaling.md +0 -250
  100. orchestrator_core-4.1.0rc2/docs/reference-docs/app/settings_overview.md +0 -89
  101. orchestrator_core-4.1.0rc2/docs/reference-docs/auth-backend-and-frontend.md +0 -595
  102. orchestrator_core-4.1.0rc2/docs/reference-docs/cli.md +0 -761
  103. orchestrator_core-4.1.0rc2/docs/reference-docs/database.md +0 -36
  104. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/generator.md +0 -3
  105. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/instantiating.md +0 -0
  106. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/model_attributes.md +0 -57
  107. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/overview.md +0 -4
  108. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/product_blocks.md +0 -44
  109. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/product_types.md +0 -56
  110. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/properties.md +0 -0
  111. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  112. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/type_casting.md +0 -0
  113. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/union_types.md +0 -0
  114. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/validation.md +0 -0
  115. orchestrator_core-4.1.0rc2/docs/reference-docs/forms.md +0 -438
  116. orchestrator_core-4.1.0rc2/docs/reference-docs/graphql.md +0 -686
  117. orchestrator_core-4.1.0rc2/docs/reference-docs/metrics.md +0 -45
  118. orchestrator_core-4.1.0rc2/docs/reference-docs/python.md +0 -27
  119. orchestrator_core-4.1.0rc2/docs/reference-docs/search.md +0 -264
  120. orchestrator_core-4.1.0rc2/docs/reference-docs/search_overview.png +0 -0
  121. orchestrator_core-4.1.0rc2/docs/reference-docs/serialization.md +0 -0
  122. orchestrator_core-4.1.0rc2/docs/reference-docs/tasks.md +0 -0
  123. orchestrator_core-4.1.0rc2/docs/reference-docs/tests.md +0 -0
  124. orchestrator_core-4.1.0rc2/docs/reference-docs/tldr.md +0 -3
  125. orchestrator_core-4.1.0rc2/docs/reference-docs/websockets.md +0 -107
  126. orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/callbacks.md +0 -178
  127. orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/workflow-lifecycles.md +0 -9
  128. orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/workflow-steps.md +0 -28
  129. orchestrator_core-4.1.0rc2/docs/workshops/advanced/bootstrap.md +0 -168
  130. orchestrator_core-4.1.0rc2/docs/workshops/advanced/create-your-own.md +0 -9
  131. orchestrator_core-4.1.0rc2/docs/workshops/advanced/docker-installation.md +0 -89
  132. orchestrator_core-4.1.0rc2/docs/workshops/advanced/domain-models.md +0 -10
  133. orchestrator_core-4.1.0rc2/docs/workshops/advanced/execute-workflows.md +0 -46
  134. orchestrator_core-4.1.0rc2/docs/workshops/advanced/generator.md +0 -169
  135. orchestrator_core-4.1.0rc2/docs/workshops/advanced/l2_point_to_point.png +0 -0
  136. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-create.md +0 -2
  137. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-modify.md +0 -2
  138. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-terminate.md +0 -2
  139. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-validate.md +0 -2
  140. orchestrator_core-4.1.0rc2/docs/workshops/advanced/overview.md +0 -86
  141. orchestrator_core-4.1.0rc2/docs/workshops/advanced/scenario.md +0 -19
  142. orchestrator_core-4.1.0rc2/docs/workshops/advanced/workflow-basics.md +0 -3
  143. orchestrator_core-4.1.0rc2/docs/workshops/advanced/workflow-introduction.md +0 -36
  144. orchestrator_core-4.1.0rc2/docs/workshops/beginner/create-user-group.md +0 -132
  145. orchestrator_core-4.1.0rc2/docs/workshops/beginner/create-user.md +0 -137
  146. orchestrator_core-4.1.0rc2/docs/workshops/beginner/database-migration.md +0 -192
  147. orchestrator_core-4.1.0rc2/docs/workshops/beginner/debian.md +0 -145
  148. orchestrator_core-4.1.0rc2/docs/workshops/beginner/docker.md +0 -78
  149. orchestrator_core-4.1.0rc2/docs/workshops/beginner/domain-models.md +0 -187
  150. orchestrator_core-4.1.0rc2/docs/workshops/beginner/explore.md +0 -73
  151. orchestrator_core-4.1.0rc2/docs/workshops/beginner/input-forms.md +0 -111
  152. orchestrator_core-4.1.0rc2/docs/workshops/beginner/macos.md +0 -146
  153. orchestrator_core-4.1.0rc2/docs/workshops/beginner/modify-user-group.md +0 -79
  154. orchestrator_core-4.1.0rc2/docs/workshops/beginner/modify-user.md +0 -61
  155. orchestrator_core-4.1.0rc2/docs/workshops/beginner/register-workflows.md +0 -113
  156. orchestrator_core-4.1.0rc2/docs/workshops/beginner/start-applications.md +0 -40
  157. orchestrator_core-4.1.0rc2/docs/workshops/beginner/terminate-user-group.md +0 -79
  158. orchestrator_core-4.1.0rc2/docs/workshops/beginner/terminate-user.md +0 -44
  159. orchestrator_core-4.1.0rc2/docs/workshops/beginner/workflow-introduction.md +0 -78
  160. orchestrator_core-4.1.0rc2/docs/workshops/beginner/workshop-overview.md +0 -92
  161. orchestrator_core-4.1.0rc2/docs/workshops/images/Software-topology.drawio.png +0 -0
  162. orchestrator_core-4.1.0rc2/docs/workshops/images/clab_topology.png +0 -0
  163. orchestrator_core-4.1.0rc2/docs/workshops/images/metadata_products.png +0 -0
  164. orchestrator_core-4.1.0rc2/docs/workshops/images/netbox_devices_active.png +0 -0
  165. orchestrator_core-4.1.0rc2/docs/workshops/images/subscriptions.png +0 -0
  166. orchestrator_core-4.1.0rc2/docs/workshops/images/topology.drawio.png +0 -0
  167. orchestrator_core-4.1.0rc2/includes/abbreviations.md +0 -6
  168. orchestrator_core-4.1.0rc2/mkdocs.yml +0 -248
  169. orchestrator_core-4.1.0rc2/nitpick-style.toml +0 -2
  170. orchestrator_core-4.1.0rc2/setup.cfg +0 -69
  171. orchestrator_core-4.1.0rc2/setup.py +0 -20
  172. orchestrator_core-4.1.0rc2/test/__init__.py +0 -0
  173. orchestrator_core-4.1.0rc2/test/acceptance_tests/__init__.py +0 -0
  174. orchestrator_core-4.1.0rc2/test/acceptance_tests/conftest.py +0 -110
  175. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  176. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  177. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -61
  178. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -40
  179. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  180. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -46
  181. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  182. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -33
  183. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  184. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -84
  185. orchestrator_core-4.1.0rc2/test/acceptance_tests/test_test_product.py +0 -23
  186. orchestrator_core-4.1.0rc2/test/unit_tests/__init__.py +0 -0
  187. orchestrator_core-4.1.0rc2/test/unit_tests/api/__init__.py +0 -0
  188. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_health.py +0 -30
  189. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_helpers.py +0 -85
  190. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_models.py +0 -45
  191. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_processes.py +0 -756
  192. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_processes_ws.py +0 -334
  193. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_product_blocks.py +0 -58
  194. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_products.py +0 -202
  195. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_resource_types.py +0 -56
  196. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_settings.py +0 -98
  197. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -145
  198. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_subscriptions.py +0 -846
  199. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_workflows.py +0 -57
  200. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_ws.py +0 -103
  201. orchestrator_core-4.1.0rc2/test/unit_tests/cli/__init__.py +0 -0
  202. orchestrator_core-4.1.0rc2/test/unit_tests/cli/conftest.py +0 -33
  203. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/alembic.ini +0 -45
  204. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/main.py +0 -7
  205. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/env.py +0 -89
  206. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -3
  207. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -23
  208. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -21
  209. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -93
  210. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -135
  211. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -105
  212. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/__init__.py +0 -26
  213. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  214. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -61
  215. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -30
  216. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -26
  217. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -21
  218. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  219. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -28
  220. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -16
  221. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -16
  222. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -53
  223. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -53
  224. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -53
  225. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -83
  226. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -70
  227. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -43
  228. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -35
  229. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -32
  230. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -33
  231. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -26
  232. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -16
  233. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -32
  234. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -33
  235. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -26
  236. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -16
  237. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -16
  238. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -14
  239. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -110
  240. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -98
  241. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -15
  242. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -46
  243. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -29
  244. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -79
  245. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -73
  246. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -1
  247. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -39
  248. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -78
  249. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -71
  250. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -1
  251. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -39
  252. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/shared.py +0 -36
  253. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate.sh +0 -25
  254. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -20
  255. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -24
  256. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config1.yaml +0 -87
  257. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config2.yaml +0 -29
  258. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config3.yaml +0 -26
  259. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config4.yaml +0 -32
  260. orchestrator_core-4.1.0rc2/test/unit_tests/cli/generator/__init__.py +0 -0
  261. orchestrator_core-4.1.0rc2/test/unit_tests/cli/generator/test_enums.py +0 -27
  262. orchestrator_core-4.1.0rc2/test/unit_tests/cli/helpers.py +0 -19
  263. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_cli_generate.py +0 -68
  264. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_config_validation.py +0 -20
  265. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_generate_code.py +0 -152
  266. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -764
  267. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -728
  268. orchestrator_core-4.1.0rc2/test/unit_tests/config.py +0 -12
  269. orchestrator_core-4.1.0rc2/test/unit_tests/conftest.py +0 -805
  270. orchestrator_core-4.1.0rc2/test/unit_tests/db/__init__.py +0 -0
  271. orchestrator_core-4.1.0rc2/test/unit_tests/db/test_listeners.py +0 -23
  272. orchestrator_core-4.1.0rc2/test/unit_tests/db/test_migration_does_column_exist.py +0 -10
  273. orchestrator_core-4.1.0rc2/test/unit_tests/domain/__init__.py +0 -0
  274. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base.py +0 -1301
  275. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_multiple.py +0 -226
  276. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_performance.py +0 -160
  277. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_serializable_property.py +0 -170
  278. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_with_list_union.py +0 -189
  279. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_with_union.py +0 -108
  280. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_lifecycle.py +0 -49
  281. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/__init__.py +0 -88
  282. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/processes.py +0 -180
  283. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/__init__.py +0 -0
  284. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  285. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -67
  286. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -84
  287. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -55
  288. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -64
  289. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -59
  290. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -35
  291. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -32
  292. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  293. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -64
  294. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -52
  295. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -101
  296. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -95
  297. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -65
  298. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -82
  299. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -57
  300. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -57
  301. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -45
  302. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -41
  303. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -300
  304. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/resource_types.py +0 -28
  305. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/workflows.py +0 -22
  306. orchestrator_core-4.1.0rc2/test/unit_tests/forms/__init__.py +0 -0
  307. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_customer_contact_list.py +0 -140
  308. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_customer_id.py +0 -17
  309. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_display_subscription.py +0 -77
  310. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_generic_validators.py +0 -121
  311. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/__init__.py +0 -0
  312. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/conftest.py +0 -55
  313. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/extensions/__init__.py +0 -0
  314. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/extensions/test_stats.py +0 -30
  315. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/helpers.py +0 -17
  316. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/test_customer_description.py +0 -296
  317. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/test_start_process.py +0 -86
  318. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_customer.py +0 -69
  319. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_process.py +0 -42
  320. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_processes.py +0 -679
  321. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_product.py +0 -350
  322. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_product_blocks.py +0 -317
  323. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_resource_types.py +0 -174
  324. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_settings.py +0 -166
  325. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -74
  326. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscription.py +0 -105
  327. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscription_relations.py +0 -617
  328. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscriptions.py +0 -1581
  329. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_version.py +0 -21
  330. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_workflows.py +0 -234
  331. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/__init__.py +0 -0
  332. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/fixtures.py +0 -157
  333. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_autoregistration.py +0 -12
  334. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -55
  335. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -49
  336. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -207
  337. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -95
  338. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_override_class.py +0 -290
  339. orchestrator_core-4.1.0rc2/test/unit_tests/helpers.py +0 -32
  340. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/__init__.py +0 -0
  341. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/conftest.py +0 -27
  342. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_engine_metrics.py +0 -18
  343. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_process_metrics.py +0 -27
  344. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_subscription_metrics.py +0 -60
  345. orchestrator_core-4.1.0rc2/test/unit_tests/migrations/__init__.py +0 -0
  346. orchestrator_core-4.1.0rc2/test/unit_tests/migrations/test_cascade_constraint.py +0 -55
  347. orchestrator_core-4.1.0rc2/test/unit_tests/schedules/__init__.py +0 -0
  348. orchestrator_core-4.1.0rc2/test/unit_tests/schedules/test_scheduling.py +0 -26
  349. orchestrator_core-4.1.0rc2/test/unit_tests/services/__init__.py +0 -0
  350. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_expose_settings.py +0 -35
  351. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_input_state.py +0 -62
  352. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_processes.py +0 -927
  353. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_products.py +0 -39
  354. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_subscription_relations.py +0 -190
  355. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_subscriptions.py +0 -160
  356. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_translations.py +0 -61
  357. orchestrator_core-4.1.0rc2/test/unit_tests/test_db.py +0 -183
  358. orchestrator_core-4.1.0rc2/test/unit_tests/test_types.py +0 -12
  359. orchestrator_core-4.1.0rc2/test/unit_tests/test_workflow.py +0 -630
  360. orchestrator_core-4.1.0rc2/test/unit_tests/utils/__init__.py +0 -0
  361. orchestrator_core-4.1.0rc2/test/unit_tests/utils/get_subscription_dict.py +0 -11
  362. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_datetime.py +0 -6
  363. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_errors.py +0 -54
  364. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_functional.py +0 -127
  365. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_get_updated_properties.py +0 -127
  366. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_json.py +0 -119
  367. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_search_query.py +0 -170
  368. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_state.py +0 -490
  369. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_strings.py +0 -6
  370. orchestrator_core-4.1.0rc2/test/unit_tests/websocket/__init__.py +0 -0
  371. orchestrator_core-4.1.0rc2/test/unit_tests/websocket/test_broadcast.py +0 -93
  372. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/__init__.py +0 -384
  373. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/conftest.py +0 -0
  374. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/shared/__init__.py +0 -0
  375. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -58
  376. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/__init__.py +0 -0
  377. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -75
  378. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -79
  379. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -39
  380. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_validate_products.py +0 -9
  381. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_async_workflow.py +0 -331
  382. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_config_db_code.py +0 -77
  383. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -103
  384. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -64
  385. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_modify_note.py +0 -26
  386. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/LICENSE +0 -0
  387. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/__init__.py +0 -0
  388. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/__init__.py +0 -0
  389. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/api.py +0 -0
  390. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  391. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  392. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  393. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  394. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  395. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  396. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  397. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  398. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  399. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  400. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  401. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/error_handling.py +0 -0
  402. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/helpers.py +0 -0
  403. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/models.py +0 -0
  404. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/app.py +0 -0
  405. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/__init__.py +0 -0
  406. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/database.py +0 -0
  407. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  408. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  409. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  410. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  411. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  412. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  413. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  414. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generate.py +0 -0
  415. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/__init__.py +0 -0
  416. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/README +0 -0
  417. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  418. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  419. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  420. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  421. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  422. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  423. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  424. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  425. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  426. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/__init__.py +0 -0
  427. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/enums.py +0 -0
  428. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/helpers.py +0 -0
  429. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/migration.py +0 -0
  430. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/product.py +0 -0
  431. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/product_block.py +0 -0
  432. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/settings.py +0 -0
  433. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/translations.py +0 -0
  434. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/unittest.py +0 -0
  435. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/validations.py +0 -0
  436. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/workflow.py +0 -0
  437. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  438. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  439. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  440. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  441. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  442. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  443. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  444. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  445. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  446. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  447. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  448. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  449. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  450. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  451. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  452. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  453. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  454. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/product.j2 +0 -0
  455. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  456. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  457. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  458. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  459. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  460. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  461. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  462. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  463. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  464. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  465. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  466. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/__init__.py +0 -0
  467. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/input_helpers.py +0 -0
  468. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/print_helpers.py +0 -0
  469. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/main.py +0 -0
  470. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_domain_models.py +0 -0
  471. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_tasks.py +0 -0
  472. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_workflows.py +0 -0
  473. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migration_helpers.py +0 -0
  474. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/scheduler.py +0 -0
  475. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/config/__init__.py +0 -0
  476. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/config/assignee.py +0 -0
  477. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/__init__.py +0 -0
  478. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/database.py +0 -0
  479. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/__init__.py +0 -0
  480. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/filters.py +0 -0
  481. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/process.py +0 -0
  482. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/product.py +0 -0
  483. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/product_block.py +0 -0
  484. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/resource_type.py +0 -0
  485. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  486. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  487. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/subscription.py +0 -0
  488. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/workflow.py +0 -0
  489. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/helpers.py +0 -0
  490. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/listeners.py +0 -0
  491. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/loaders.py +0 -0
  492. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/__init__.py +0 -0
  493. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/subscription.py +0 -0
  494. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/subscription_instance.py +0 -0
  495. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/range/__init__.py +0 -0
  496. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/range/range.py +0 -0
  497. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/__init__.py +0 -0
  498. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/process.py +0 -0
  499. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/product.py +0 -0
  500. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/product_block.py +0 -0
  501. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/resource_type.py +0 -0
  502. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/sorting.py +0 -0
  503. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/subscription.py +0 -0
  504. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/workflow.py +0 -0
  505. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/__init__.py +0 -0
  506. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/populator.py +0 -0
  507. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/__init__.py +0 -0
  508. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  509. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  510. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/shared.py +0 -0
  511. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/__init__.py +0 -0
  512. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/distlock_manager.py +0 -0
  513. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/__init__.py +0 -0
  514. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  515. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  516. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/__init__.py +0 -0
  517. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/base.py +0 -0
  518. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/context_cache.py +0 -0
  519. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/customer_description.py +0 -0
  520. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/helpers.py +0 -0
  521. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/lifecycle.py +0 -0
  522. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/subscription_instance_transform.py +0 -0
  523. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/exception_handlers.py +0 -0
  524. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/__init__.py +0 -0
  525. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/__init__.py +0 -0
  526. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  527. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/customer_id.py +0 -0
  528. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/display_subscription.py +0 -0
  529. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/network_type_validators.py +0 -0
  530. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/product_id.py +0 -0
  531. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/__init__.py +0 -0
  532. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/autoregistration.py +0 -0
  533. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/__init__.py +0 -0
  534. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/model_cache.py +0 -0
  535. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/stats.py +0 -0
  536. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/loaders/__init__.py +0 -0
  537. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  538. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/mutations/customer_description.py +0 -0
  539. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/mutations/start_process.py +0 -0
  540. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/pagination.py +0 -0
  541. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/__init__.py +0 -0
  542. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/customer.py +0 -0
  543. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/helpers.py +0 -0
  544. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/process.py +0 -0
  545. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/product.py +0 -0
  546. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/product_block.py +0 -0
  547. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  548. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/settings.py +0 -0
  549. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/subscription.py +0 -0
  550. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/version.py +0 -0
  551. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/workflow.py +0 -0
  552. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schema.py +0 -0
  553. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/__init__.py +0 -0
  554. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/customer.py +0 -0
  555. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/customer_description.py +0 -0
  556. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/errors.py +0 -0
  557. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  558. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/helpers.py +0 -0
  559. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product_block.py +0 -0
  560. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/resource_type.py +0 -0
  561. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/settings.py +0 -0
  562. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  563. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/subscription.py +0 -0
  564. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/version.py +0 -0
  565. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/__init__.py +0 -0
  566. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  567. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  568. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  569. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  570. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  571. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  572. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/override_class.py +0 -0
  573. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  574. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/log_config.py +0 -0
  575. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/__init__.py +0 -0
  576. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/engine.py +0 -0
  577. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/init.py +0 -0
  578. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/processes.py +0 -0
  579. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/subscriptions.py +0 -0
  580. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/README +0 -0
  581. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/alembic.ini +0 -0
  582. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/env.py +0 -0
  583. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/helpers.py +0 -0
  584. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/script.py.mako +0 -0
  585. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  586. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/env.py.j2 +0 -0
  587. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  588. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  589. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  590. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  591. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  592. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  593. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  594. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  595. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  596. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  597. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  598. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  599. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  600. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  601. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  602. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  603. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  604. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  605. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  606. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  607. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  608. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  609. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  610. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  611. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  612. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  613. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  614. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/py.typed +0 -0
  615. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/__init__.py +0 -0
  616. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/resume_workflows.py +0 -0
  617. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/scheduling.py +0 -0
  618. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/task_vacuum.py +0 -0
  619. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/validate_products.py +0 -0
  620. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/validate_subscriptions.py +0 -0
  621. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/__init__.py +0 -0
  622. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/base.py +0 -0
  623. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/engine_settings.py +0 -0
  624. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/fixed_input.py +0 -0
  625. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/problem_detail.py +0 -0
  626. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/product.py +0 -0
  627. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/product_block.py +0 -0
  628. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/resource_type.py +0 -0
  629. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/subscription.py +0 -0
  630. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/subscription_descriptions.py +0 -0
  631. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/workflow.py +0 -0
  632. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/security.py +0 -0
  633. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/__init__.py +0 -0
  634. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/celery.py +0 -0
  635. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/fixed_inputs.py +0 -0
  636. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/input_state.py +0 -0
  637. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/process_broadcast_thread.py +0 -0
  638. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/products.py +0 -0
  639. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/resource_types.py +0 -0
  640. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/settings.py +0 -0
  641. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/settings_env_variables.py +0 -0
  642. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/subscription_relations.py +0 -0
  643. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/subscriptions.py +0 -0
  644. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/tasks.py +0 -0
  645. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/translations.py +0 -0
  646. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/workflows.py +0 -0
  647. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/settings.py +0 -0
  648. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/targets.py +0 -0
  649. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/types.py +0 -0
  650. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/__init__.py +0 -0
  651. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/auth.py +0 -0
  652. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/crypt.py +0 -0
  653. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/datetime.py +0 -0
  654. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/deprecation_logger.py +0 -0
  655. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/docs.py +0 -0
  656. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/errors.py +0 -0
  657. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/expose_settings.py +0 -0
  658. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/fixed_inputs.py +0 -0
  659. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/functional.py +0 -0
  660. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/get_subscription_dict.py +0 -0
  661. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/get_updated_properties.py +0 -0
  662. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/helpers.py +0 -0
  663. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/json.py +0 -0
  664. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/redis.py +0 -0
  665. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/redis_client.py +0 -0
  666. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/search_query.py +0 -0
  667. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/state.py +0 -0
  668. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/strings.py +0 -0
  669. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/validate_data_version.py +0 -0
  670. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/version.py +0 -0
  671. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/__init__.py +0 -0
  672. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  673. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  674. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/websocket_manager.py +0 -0
  675. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/__init__.py +0 -0
  676. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/removed_workflow.py +0 -0
  677. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/__init__.py +0 -0
  678. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  679. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  680. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  681. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/validate_products.py +0 -0
  682. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/translations/en-GB.json +0 -0
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.4
2
+ Name: orchestrator-core
3
+ Version: 4.2.0rc1
4
+ Summary: This is the orchestrator workflow engine.
5
+ Author-email: SURF <automation-beheer@surf.nl>
6
+ Requires-Python: >=3.11,<3.14
7
+ Description-Content-Type: text/markdown
8
+ License-Expression: Apache-2.0
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Environment :: Web Environment
11
+ Classifier: Framework :: AsyncIO
12
+ Classifier: Framework :: FastAPI
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Information Technology
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: Intended Audience :: Telecommunications Industry
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python
24
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
25
+ Classifier: Topic :: Internet :: WWW/HTTP
26
+ Classifier: Topic :: Internet
27
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Classifier: Topic :: Software Development :: Libraries
30
+ Classifier: Topic :: Software Development
31
+ Classifier: Typing :: Typed
32
+ License-File: LICENSE
33
+ Requires-Dist: alembic==1.16.1
34
+ Requires-Dist: anyio>=3.7.0
35
+ Requires-Dist: click==8.*
36
+ Requires-Dist: deepmerge==2.0
37
+ Requires-Dist: deprecated>=1.2.18
38
+ Requires-Dist: fastapi~=0.115.2
39
+ Requires-Dist: fastapi-etag==0.4.0
40
+ Requires-Dist: itsdangerous>=2.2.0
41
+ Requires-Dist: jinja2==3.1.6
42
+ Requires-Dist: more-itertools~=10.7.0
43
+ Requires-Dist: nwa-stdlib~=1.9.0
44
+ Requires-Dist: oauth2-lib~=2.4.0
45
+ Requires-Dist: orjson==3.10.18
46
+ Requires-Dist: prometheus-client==0.22.1
47
+ Requires-Dist: psycopg2-binary==2.9.10
48
+ Requires-Dist: pydantic-forms>=1.4.0,<=2.1.0
49
+ Requires-Dist: pydantic-settings~=2.9.1
50
+ Requires-Dist: pydantic[email]~=2.8.2
51
+ Requires-Dist: python-dateutil==2.8.2
52
+ Requires-Dist: python-rapidjson>=1.18,<1.21
53
+ Requires-Dist: pytz==2025.2
54
+ Requires-Dist: redis==5.1.1
55
+ Requires-Dist: schedule==1.1.0
56
+ Requires-Dist: semver==3.0.4
57
+ Requires-Dist: sentry-sdk[fastapi]~=2.29.1
58
+ Requires-Dist: sqlalchemy==2.0.41
59
+ Requires-Dist: sqlalchemy-utils==0.41.2
60
+ Requires-Dist: strawberry-graphql>=0.246.2
61
+ Requires-Dist: structlog>=25.4.0
62
+ Requires-Dist: tabulate==0.9.0
63
+ Requires-Dist: typer==0.15.4
64
+ Requires-Dist: uvicorn[standard]~=0.34.0
65
+ Requires-Dist: celery~=5.5.1 ; extra == "celery"
66
+ Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
67
+ Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
68
+ Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
69
+ Provides-Extra: celery
70
+
71
+ # Orchestrator-Core
72
+
73
+ [![Downloads](https://pepy.tech/badge/orchestrator-core/month)](https://pepy.tech/project/orchestrator-core)
74
+ [![codecov](https://codecov.io/gh/workfloworchestrator/orchestrator-core/branch/main/graph/badge.svg?token=5ANQFI2DHS)](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
75
+ [![pypi_version](https://img.shields.io/pypi/v/orchestrator-core?color=%2334D058&label=pypi%20package)](https://pypi.org/project/orchestrator-core)
76
+ [![Supported python versions](https://img.shields.io/pypi/pyversions/orchestrator-core.svg?color=%2334D058)](https://pypi.org/project/orchestrator-core)
77
+ ![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%2FKNgF6gE8)
78
+
79
+ <p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
80
+
81
+ ## Documentation
82
+
83
+ The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).
84
+
85
+ ## Installation (quick start)
86
+
87
+ Simplified steps to install and use the orchestrator-core.
88
+ For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.
89
+
90
+ ### Step 1 - Install the package
91
+
92
+ Create a virtualenv and install the orchestrator-core.
93
+
94
+ ```shell
95
+ python -m venv .venv
96
+ source .venv/bin/activate
97
+ pip install orchestrator-core
98
+ ```
99
+
100
+ ### Step 2 - Setup the database
101
+
102
+ Create a postgres database:
103
+
104
+ ```shell
105
+ createuser -sP nwa
106
+ createdb orchestrator-core -O nwa # set password to 'nwa'
107
+ ```
108
+
109
+ Configure the database URI in your local environment:
110
+
111
+ ```
112
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
113
+ ```
114
+
115
+ ### Step 3 - Create main.py
116
+
117
+ Create a `main.py` file.
118
+
119
+ ```python
120
+ from orchestrator import OrchestratorCore
121
+ from orchestrator.cli.main import app as core_cli
122
+ from orchestrator.settings import AppSettings
123
+
124
+ app = OrchestratorCore(base_settings=AppSettings())
125
+
126
+ if __name__ == "__main__":
127
+ core_cli()
128
+ ```
129
+
130
+ ### Step 4 - Run the database migrations
131
+
132
+ Initialize the migration environment and database tables.
133
+
134
+ ```shell
135
+ python main.py db init
136
+ python main.py db upgrade heads
137
+ ```
138
+
139
+ ### Step 5 - Run the app
140
+
141
+ ```shell
142
+ export OAUTH2_ACTIVE=False
143
+ uvicorn --reload --host 127.0.0.1 --port 8080 main:app
144
+ ```
145
+
146
+ Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
147
+
148
+ ## Contributing
149
+
150
+ We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage dependencies.
151
+
152
+ To get started, follow these steps:
153
+
154
+ ```shell
155
+ # in your postgres database
156
+ createdb orchestrator-core-test -O nwa # set password to 'nwa'
157
+
158
+ # on your local machine
159
+ git clone https://github.com/workfloworchestrator/orchestrator-core
160
+ cd orchestrator-core
161
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core-test
162
+ uv sync --all-extras --all-groups
163
+ uv run pytest
164
+ ```
165
+
166
+ For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).
167
+
@@ -0,0 +1,96 @@
1
+ # Orchestrator-Core
2
+
3
+ [![Downloads](https://pepy.tech/badge/orchestrator-core/month)](https://pepy.tech/project/orchestrator-core)
4
+ [![codecov](https://codecov.io/gh/workfloworchestrator/orchestrator-core/branch/main/graph/badge.svg?token=5ANQFI2DHS)](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
5
+ [![pypi_version](https://img.shields.io/pypi/v/orchestrator-core?color=%2334D058&label=pypi%20package)](https://pypi.org/project/orchestrator-core)
6
+ [![Supported python versions](https://img.shields.io/pypi/pyversions/orchestrator-core.svg?color=%2334D058)](https://pypi.org/project/orchestrator-core)
7
+ ![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%2FKNgF6gE8)
8
+
9
+ <p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
10
+
11
+ ## Documentation
12
+
13
+ The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).
14
+
15
+ ## Installation (quick start)
16
+
17
+ Simplified steps to install and use the orchestrator-core.
18
+ For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.
19
+
20
+ ### Step 1 - Install the package
21
+
22
+ Create a virtualenv and install the orchestrator-core.
23
+
24
+ ```shell
25
+ python -m venv .venv
26
+ source .venv/bin/activate
27
+ pip install orchestrator-core
28
+ ```
29
+
30
+ ### Step 2 - Setup the database
31
+
32
+ Create a postgres database:
33
+
34
+ ```shell
35
+ createuser -sP nwa
36
+ createdb orchestrator-core -O nwa # set password to 'nwa'
37
+ ```
38
+
39
+ Configure the database URI in your local environment:
40
+
41
+ ```
42
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
43
+ ```
44
+
45
+ ### Step 3 - Create main.py
46
+
47
+ Create a `main.py` file.
48
+
49
+ ```python
50
+ from orchestrator import OrchestratorCore
51
+ from orchestrator.cli.main import app as core_cli
52
+ from orchestrator.settings import AppSettings
53
+
54
+ app = OrchestratorCore(base_settings=AppSettings())
55
+
56
+ if __name__ == "__main__":
57
+ core_cli()
58
+ ```
59
+
60
+ ### Step 4 - Run the database migrations
61
+
62
+ Initialize the migration environment and database tables.
63
+
64
+ ```shell
65
+ python main.py db init
66
+ python main.py db upgrade heads
67
+ ```
68
+
69
+ ### Step 5 - Run the app
70
+
71
+ ```shell
72
+ export OAUTH2_ACTIVE=False
73
+ uvicorn --reload --host 127.0.0.1 --port 8080 main:app
74
+ ```
75
+
76
+ Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
77
+
78
+ ## Contributing
79
+
80
+ We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage dependencies.
81
+
82
+ To get started, follow these steps:
83
+
84
+ ```shell
85
+ # in your postgres database
86
+ createdb orchestrator-core-test -O nwa # set password to 'nwa'
87
+
88
+ # on your local machine
89
+ git clone https://github.com/workfloworchestrator/orchestrator-core
90
+ cd orchestrator-core
91
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core-test
92
+ uv sync --all-extras --all-groups
93
+ uv run pytest
94
+ ```
95
+
96
+ For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "4.1.0rc2"
16
+ __version__ = "4.2.0rc1"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -158,6 +158,9 @@ def delete(process_id: UUID) -> None:
158
158
  if not process:
159
159
  raise_status(HTTPStatus.NOT_FOUND)
160
160
 
161
+ if not process.is_task:
162
+ raise_status(HTTPStatus.BAD_REQUEST)
163
+
161
164
  db.session.delete(db.session.get(ProcessTable, process_id))
162
165
  db.session.commit()
163
166
 
@@ -270,7 +273,7 @@ def update_progress_on_awaiting_process_endpoint(
270
273
  @router.put(
271
274
  "/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
272
275
  )
273
- async def resume_all_processess_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
276
+ async def resume_all_processes_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
274
277
  """Retry all task processes in status Failed, Waiting, API Unavailable or Inconsistent Data.
275
278
 
276
279
  The retry is started in the background, returning status 200 and number of processes in message.
@@ -47,10 +47,12 @@ from orchestrator.services.subscriptions import (
47
47
  subscription_workflows,
48
48
  )
49
49
  from orchestrator.settings import app_settings
50
+ from orchestrator.targets import Target
50
51
  from orchestrator.types import SubscriptionLifecycle
51
52
  from orchestrator.utils.deprecation_logger import deprecated_endpoint
52
53
  from orchestrator.utils.get_subscription_dict import get_subscription_dict
53
54
  from orchestrator.websocket import sync_invalidate_subscription_cache
55
+ from orchestrator.workflows import get_workflow
54
56
 
55
57
  router = APIRouter()
56
58
 
@@ -100,6 +102,25 @@ def _filter_statuses(filter_statuses: str | None = None) -> list[str]:
100
102
  return statuses
101
103
 
102
104
 
105
+ def _authorized_subscription_workflows(
106
+ subscription: SubscriptionTable, current_user: OIDCUserModel | None
107
+ ) -> dict[str, list[dict[str, list[Any] | str]]]:
108
+ subscription_workflows_dict = subscription_workflows(subscription)
109
+
110
+ for workflow_target in Target.values():
111
+ for workflow_dict in subscription_workflows_dict[workflow_target.lower()]:
112
+ workflow = get_workflow(workflow_dict["name"])
113
+ if not workflow:
114
+ continue
115
+ if (
116
+ not workflow.authorize_callback(current_user) # The current user isn't allowed to run this workflow
117
+ and "reason" not in workflow_dict # and there isn't already a reason why this workflow cannot run
118
+ ):
119
+ workflow_dict["reason"] = "subscription.insufficient_workflow_permissions"
120
+
121
+ return subscription_workflows_dict
122
+
123
+
103
124
  @router.get(
104
125
  "/domain-model/{subscription_id}",
105
126
  response_model=SubscriptionDomainModelSchema | None,
@@ -169,7 +190,9 @@ def subscriptions_search(
169
190
  description="This endpoint is deprecated and will be removed in a future release. Please use the GraphQL query",
170
191
  dependencies=[Depends(deprecated_endpoint)],
171
192
  )
172
- def subscription_workflows_by_id(subscription_id: UUID) -> dict[str, list[dict[str, list[Any] | str]]]:
193
+ def subscription_workflows_by_id(
194
+ subscription_id: UUID, current_user: OIDCUserModel | None = Depends(authenticate)
195
+ ) -> dict[str, list[dict[str, list[Any] | str]]]:
173
196
  subscription = db.session.get(
174
197
  SubscriptionTable,
175
198
  subscription_id,
@@ -181,7 +204,7 @@ def subscription_workflows_by_id(subscription_id: UUID) -> dict[str, list[dict[s
181
204
  if not subscription:
182
205
  raise_status(HTTPStatus.NOT_FOUND)
183
206
 
184
- return subscription_workflows(subscription)
207
+ return _authorized_subscription_workflows(subscription, current_user)
185
208
 
186
209
 
187
210
  @router.put("/{subscription_id}/set_in_sync", response_model=None, status_code=HTTPStatus.OK)
@@ -11,7 +11,6 @@ from pydantic_forms.types import FormGenerator, State, UUIDstr
11
11
 
12
12
  from orchestrator.forms import FormPage
13
13
  from orchestrator.forms.validators import Divider, Label, CustomerId, MigrationSummary
14
- from orchestrator.targets import Target
15
14
  from orchestrator.types import SubscriptionLifecycle
16
15
  from orchestrator.workflow import StepList, begin, step
17
16
  from orchestrator.workflows.steps import store_process_subscription
@@ -119,6 +118,6 @@ def create_{{ product.variable }}() -> StepList:
119
118
  return (
120
119
  begin
121
120
  >> construct_{{ product.variable }}_model
122
- >> store_process_subscription(Target.CREATE)
121
+ >> store_process_subscription()
123
122
  # TODO add provision step(s)
124
123
  )
@@ -117,7 +117,7 @@ class ProcessTable(BaseModel):
117
117
  is_task = mapped_column(Boolean, nullable=False, server_default=text("false"), index=True)
118
118
 
119
119
  steps = relationship(
120
- "ProcessStepTable", cascade="delete", passive_deletes=True, order_by="asc(ProcessStepTable.executed_at)"
120
+ "ProcessStepTable", cascade="delete", passive_deletes=True, order_by="asc(ProcessStepTable.completed_at)"
121
121
  )
122
122
  input_states = relationship("InputStateTable", cascade="delete", order_by="desc(InputStateTable.input_time)")
123
123
  process_subscriptions = relationship("ProcessSubscriptionTable", back_populates="process", passive_deletes=True)
@@ -141,7 +141,8 @@ class ProcessStepTable(BaseModel):
141
141
  status = mapped_column(String(50), nullable=False)
142
142
  state = mapped_column(pg.JSONB(), nullable=False)
143
143
  created_by = mapped_column(String(255), nullable=True)
144
- executed_at = mapped_column(UtcTimestamp, server_default=text("statement_timestamp()"), nullable=False)
144
+ completed_at = mapped_column(UtcTimestamp, server_default=text("statement_timestamp()"), nullable=False)
145
+ started_at = mapped_column(UtcTimestamp, server_default=text("statement_timestamp()"), nullable=False)
145
146
  commit_hash = mapped_column(String(40), nullable=True, default=GIT_COMMIT_HASH)
146
147
 
147
148
 
@@ -154,7 +155,9 @@ class ProcessSubscriptionTable(BaseModel):
154
155
  )
155
156
  subscription_id = mapped_column(UUIDType, ForeignKey("subscriptions.subscription_id"), nullable=False, index=True)
156
157
  created_at = mapped_column(UtcTimestamp, server_default=text("current_timestamp()"), nullable=False)
157
- workflow_target = mapped_column(String(255), nullable=False, server_default=Target.CREATE)
158
+
159
+ # FIXME: workflow_target is already stored in the workflow table, this column should get removed in a later release.
160
+ workflow_target = mapped_column(String(255), nullable=True)
158
161
 
159
162
  process = relationship("ProcessTable", back_populates="process_subscriptions")
160
163
  subscription = relationship("SubscriptionTable", back_populates="processes")
@@ -6,14 +6,17 @@ from strawberry.federation.schema_directives import Key
6
6
  from strawberry.scalars import JSON
7
7
 
8
8
  from oauth2_lib.strawberry import authenticated_field
9
+ from orchestrator.api.api_v1.endpoints.processes import get_auth_callbacks, get_current_steps
9
10
  from orchestrator.db import ProcessTable, ProductTable, db
10
11
  from orchestrator.graphql.pagination import EMPTY_PAGE, Connection
11
12
  from orchestrator.graphql.schemas.customer import CustomerType
12
13
  from orchestrator.graphql.schemas.helpers import get_original_model
13
14
  from orchestrator.graphql.schemas.product import ProductType
14
- from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
15
+ from orchestrator.graphql.types import FormUserPermissionsType, GraphqlFilter, GraphqlSort, OrchestratorInfo
15
16
  from orchestrator.schemas.process import ProcessSchema, ProcessStepSchema
17
+ from orchestrator.services.processes import load_process
16
18
  from orchestrator.settings import app_settings
19
+ from orchestrator.workflows import get_workflow
17
20
 
18
21
  if TYPE_CHECKING:
19
22
  from orchestrator.graphql.schemas.subscription import SubscriptionInterface
@@ -29,7 +32,11 @@ class ProcessStepType:
29
32
  name: strawberry.auto
30
33
  status: strawberry.auto
31
34
  created_by: strawberry.auto
32
- executed: strawberry.auto
35
+ executed: strawberry.auto = strawberry.field(
36
+ deprecation_reason="Deprecated, use 'started' and 'completed' for step start and completion times"
37
+ )
38
+ started: strawberry.auto
39
+ completed: strawberry.auto
33
40
  commit_hash: strawberry.auto
34
41
  state: JSON | None
35
42
  state_delta: JSON | None
@@ -74,6 +81,18 @@ class ProcessType:
74
81
  shortcode=app_settings.DEFAULT_CUSTOMER_SHORTCODE,
75
82
  )
76
83
 
84
+ @strawberry.field(description="Returns user permissions for operations on this process") # type: ignore
85
+ def user_permissions(self, info: OrchestratorInfo) -> FormUserPermissionsType:
86
+ oidc_user = info.context.get_current_user
87
+ workflow = get_workflow(self.workflow_name)
88
+ process = load_process(db.session.get(ProcessTable, self.process_id)) # type: ignore[arg-type]
89
+ auth_resume, auth_retry = get_auth_callbacks(get_current_steps(process), workflow) # type: ignore[arg-type]
90
+
91
+ return FormUserPermissionsType(
92
+ retryAllowed=auth_retry and auth_retry(oidc_user), # type: ignore[arg-type]
93
+ resumeAllowed=auth_resume and auth_resume(oidc_user), # type: ignore[arg-type]
94
+ )
95
+
77
96
  @authenticated_field(description="Returns list of subscriptions of the process") # type: ignore
78
97
  async def subscriptions(
79
98
  self,
@@ -52,21 +52,20 @@ class ProductType:
52
52
  return await resolve_subscriptions(info, filter_by_with_related_subscriptions, sort_by, first, after)
53
53
 
54
54
  @strawberry.field(description="Returns list of all nested productblock names") # type: ignore
55
- async def all_pb_names(self) -> list[str]:
56
-
55
+ async def all_product_block_names(self) -> list[str]:
57
56
  model = get_original_model(self, ProductTable)
58
57
 
59
- def get_all_pb_names(product_blocks: list[ProductBlockTable]) -> Iterable[str]:
58
+ def get_names(product_blocks: list[ProductBlockTable], visited: set) -> Iterable[str]:
60
59
  for product_block in product_blocks:
60
+ if product_block.product_block_id in visited:
61
+ continue
62
+ visited.add(product_block.product_block_id)
61
63
  yield product_block.name
62
-
63
64
  if product_block.depends_on:
64
- yield from get_all_pb_names(product_block.depends_on)
65
-
66
- names: list[str] = list(get_all_pb_names(model.product_blocks))
67
- names.sort()
65
+ yield from get_names(product_block.depends_on, visited)
68
66
 
69
- return names
67
+ names = set(get_names(model.product_blocks, set()))
68
+ return sorted(names)
70
69
 
71
70
  @strawberry.field(description="Return product blocks") # type: ignore
72
71
  async def product_blocks(self) -> list[Annotated["ProductBlock", strawberry.lazy(".product_block")]]:
@@ -5,6 +5,7 @@ import strawberry
5
5
  from orchestrator.config.assignee import Assignee
6
6
  from orchestrator.db import WorkflowTable
7
7
  from orchestrator.graphql.schemas.helpers import get_original_model
8
+ from orchestrator.graphql.types import OrchestratorInfo
8
9
  from orchestrator.schemas import StepSchema, WorkflowSchema
9
10
  from orchestrator.workflows import get_workflow
10
11
 
@@ -30,3 +31,11 @@ class Workflow:
30
31
  @strawberry.field(description="Return all steps for this workflow") # type: ignore
31
32
  def steps(self) -> list[Step]:
32
33
  return [Step(name=step.name, assignee=step.assignee) for step in get_workflow(self.name).steps] # type: ignore
34
+
35
+ @strawberry.field(description="Return whether the currently logged-in used is allowed to start this workflow") # type: ignore
36
+ def is_allowed(self, info: OrchestratorInfo) -> bool:
37
+ oidc_user = info.context.get_current_user
38
+ workflow_table = get_original_model(self, WorkflowTable)
39
+ workflow = get_workflow(workflow_table.name)
40
+
41
+ return workflow.authorize_callback(oidc_user) # type: ignore
@@ -1,4 +1,4 @@
1
- # Copyright 2022-2023 SURF, GÉANT.
1
+ # Copyright 2022-2025 SURF, GÉANT.
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -132,6 +132,12 @@ SCALAR_OVERRIDES: ScalarOverrideType = {
132
132
  }
133
133
 
134
134
 
135
+ @strawberry.type(description="User permissions on a specific process")
136
+ class FormUserPermissionsType:
137
+ retryAllowed: bool
138
+ resumeAllowed: bool
139
+
140
+
135
141
  @strawberry.type(description="Generic class to capture errors")
136
142
  class MutationError:
137
143
  message: str = strawberry.field(description="Error message")
@@ -0,0 +1,65 @@
1
+ """Changed timestamping fields in process_steps.
2
+
3
+ Revision ID: 93fc5834c7e5
4
+ Revises: 4b58e336d1bf
5
+ Create Date: 2025-07-01 14:20:44.755694
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ from orchestrator import db
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = "93fc5834c7e5"
16
+ down_revision = "4b58e336d1bf"
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade() -> None:
22
+ # ### commands auto generated by Alembic - please adjust! ###
23
+ op.add_column(
24
+ "process_steps",
25
+ sa.Column(
26
+ "started_at",
27
+ db.UtcTimestamp(timezone=True),
28
+ server_default=sa.text("statement_timestamp()"),
29
+ nullable=False,
30
+ ),
31
+ )
32
+ op.alter_column("process_steps", "executed_at", new_column_name="completed_at")
33
+ # conn = op.get_bind()
34
+ # sa.select
35
+ # ### end Alembic commands ###
36
+ # Backfill started_at field correctly using proper aliasing
37
+ op.execute(
38
+ """
39
+ WITH backfill_started_at AS (
40
+ SELECT
41
+ ps1.stepid,
42
+ COALESCE(prev.completed_at, p.started_at) AS new_started_at
43
+ FROM process_steps ps1
44
+ JOIN processes p ON ps1.pid = p.pid
45
+ LEFT JOIN LATERAL (
46
+ SELECT ps2.completed_at
47
+ FROM process_steps ps2
48
+ WHERE ps2.pid = ps1.pid AND ps2.completed_at < ps1.completed_at
49
+ ORDER BY ps2.completed_at DESC
50
+ LIMIT 1
51
+ ) prev ON true
52
+ )
53
+ UPDATE process_steps
54
+ SET started_at = b.new_started_at
55
+ FROM backfill_started_at b
56
+ WHERE process_steps.stepid = b.stepid;
57
+ """
58
+ )
59
+
60
+
61
+ def downgrade() -> None:
62
+ # ### commands auto generated by Alembic - please adjust! ###
63
+ op.drop_column("process_steps", "started_at")
64
+ op.alter_column("process_steps", "completed_at", new_column_name="executed_at")
65
+ # ### end Alembic commands ###
@@ -0,0 +1,30 @@
1
+ """Deprecating workflow target in ProcessSubscriptionTable.
2
+
3
+ Revision ID: 4b58e336d1bf
4
+ Revises: 161918133bec
5
+ Create Date: 2025-07-04 15:27:23.814954
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "4b58e336d1bf"
14
+ down_revision = "161918133bec"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade() -> None:
20
+ op.alter_column("processes_subscriptions", "workflow_target", existing_type=sa.VARCHAR(length=255), nullable=True)
21
+
22
+
23
+ def downgrade() -> None:
24
+ op.alter_column(
25
+ "processes_subscriptions",
26
+ "workflow_target",
27
+ existing_type=sa.VARCHAR(length=255),
28
+ nullable=False,
29
+ existing_server_default=sa.text("'CREATE'::character varying"),
30
+ )
@@ -49,7 +49,11 @@ class ProcessStepSchema(OrchestratorBaseModel):
49
49
  name: str
50
50
  status: str
51
51
  created_by: str | None = None
52
- executed: datetime | None = None
52
+ executed: datetime | None = Field(
53
+ None, deprecated="Deprecated, use 'started' and 'completed' for step start and completion times"
54
+ )
55
+ started: datetime | None = None
56
+ completed: datetime | None = None
53
57
  commit_hash: str | None = None
54
58
  state: dict[str, Any] | None = None
55
59
  state_delta: dict[str, Any] | None = None