orchestrator-core 4.1.0rc1__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.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/__init__.py +1 -1
  4. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/processes.py +64 -11
  5. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/subscriptions.py +25 -2
  6. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/create_product.j2 +1 -2
  7. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/models.py +6 -3
  8. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/process.py +21 -2
  9. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product.py +8 -9
  10. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/workflow.py +9 -0
  11. {orchestrator_core-4.1.0rc1 → 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.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/process.py +5 -1
  15. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/celery.py +7 -2
  16. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/processes.py +12 -12
  17. orchestrator_core-4.2.0rc1/orchestrator/utils/auth.py +9 -0
  18. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/enrich_process.py +4 -2
  19. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflow.py +52 -9
  20. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/modify_note.py +1 -1
  21. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/steps.py +14 -8
  22. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/utils.py +13 -7
  23. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/pyproject.toml +91 -92
  24. orchestrator_core-4.1.0rc1/.bumpversion.cfg +0 -12
  25. orchestrator_core-4.1.0rc1/.coveragerc +0 -2
  26. orchestrator_core-4.1.0rc1/.github/ISSUE_TEMPLATE/bug-report.yml +0 -52
  27. orchestrator_core-4.1.0rc1/.github/ISSUE_TEMPLATE/feature-request.yml +0 -32
  28. orchestrator_core-4.1.0rc1/.github/dependabot.yml +0 -11
  29. orchestrator_core-4.1.0rc1/.github/workflows/README.md +0 -65
  30. orchestrator_core-4.1.0rc1/.github/workflows/build-push-container.yml +0 -58
  31. orchestrator_core-4.1.0rc1/.github/workflows/changelog.yml +0 -13
  32. orchestrator_core-4.1.0rc1/.github/workflows/codeql-analysis.yml +0 -68
  33. orchestrator_core-4.1.0rc1/.github/workflows/gh-pages.yml +0 -17
  34. orchestrator_core-4.1.0rc1/.github/workflows/issues.yml +0 -13
  35. orchestrator_core-4.1.0rc1/.github/workflows/publish-package.yml +0 -25
  36. orchestrator_core-4.1.0rc1/.github/workflows/run-codspeed-tests.yml +0 -71
  37. orchestrator_core-4.1.0rc1/.github/workflows/run-linting-tests.yml +0 -36
  38. orchestrator_core-4.1.0rc1/.github/workflows/run-unit-tests.yml +0 -68
  39. orchestrator_core-4.1.0rc1/.github/workflows/scheduled-build.yml +0 -42
  40. orchestrator_core-4.1.0rc1/.gitignore +0 -135
  41. orchestrator_core-4.1.0rc1/.pre-commit-config.yaml +0 -86
  42. orchestrator_core-4.1.0rc1/.stignore +0 -101
  43. orchestrator_core-4.1.0rc1/CHANGELOG.md +0 -481
  44. orchestrator_core-4.1.0rc1/Dockerfile +0 -24
  45. orchestrator_core-4.1.0rc1/NOTICE +0 -7
  46. orchestrator_core-4.1.0rc1/PKG-INFO +0 -118
  47. orchestrator_core-4.1.0rc1/README.md +0 -200
  48. orchestrator_core-4.1.0rc1/codecov.yml +0 -8
  49. orchestrator_core-4.1.0rc1/docs/architecture/application/domainmodels.md +0 -236
  50. orchestrator_core-4.1.0rc1/docs/architecture/application/forms-frontend.md +0 -231
  51. orchestrator_core-4.1.0rc1/docs/architecture/application/tasks.md +0 -169
  52. orchestrator_core-4.1.0rc1/docs/architecture/application/workflow.md +0 -295
  53. orchestrator_core-4.1.0rc1/docs/architecture/framework.md +0 -28
  54. orchestrator_core-4.1.0rc1/docs/architecture/img/base-orchestrator-setup.png +0 -0
  55. orchestrator_core-4.1.0rc1/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  56. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  57. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  58. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/orchestrator-ui.md +0 -265
  59. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/philosophy.md +0 -16
  60. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/backfilling.md +0 -77
  61. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/context.md +0 -11
  62. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/imports.md +0 -90
  63. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/introduction.md +0 -13
  64. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/ip_static.md +0 -27
  65. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/ip_static.png +0 -0
  66. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_point_to_point.md +0 -21
  67. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  68. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_vpn.md +0 -15
  69. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_vpn.png +0 -0
  70. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/modelling.md +0 -22
  71. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/node.md +0 -20
  72. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/node.png +0 -0
  73. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/port.md +0 -20
  74. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/port.png +0 -0
  75. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/product_block_graph.md +0 -26
  76. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/product_block_graph.png +0 -0
  77. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/standards.md +0 -16
  78. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/terminology.md +0 -17
  79. orchestrator_core-4.1.0rc1/docs/architecture/tldr.md +0 -40
  80. orchestrator_core-4.1.0rc1/docs/contributing/development.md +0 -109
  81. orchestrator_core-4.1.0rc1/docs/contributing/guidelines.md +0 -41
  82. orchestrator_core-4.1.0rc1/docs/contributing/testing.md +0 -278
  83. orchestrator_core-4.1.0rc1/docs/css/custom.css +0 -24
  84. orchestrator_core-4.1.0rc1/docs/css/style.css +0 -27
  85. orchestrator_core-4.1.0rc1/docs/css/termynal.css +0 -108
  86. orchestrator_core-4.1.0rc1/docs/getting-started/base.md +0 -99
  87. orchestrator_core-4.1.0rc1/docs/getting-started/docker.md +0 -23
  88. orchestrator_core-4.1.0rc1/docs/getting-started/orchestration-ui.md +0 -59
  89. orchestrator_core-4.1.0rc1/docs/getting-started/prepare-source-folder.md +0 -110
  90. orchestrator_core-4.1.0rc1/docs/getting-started/versions.md +0 -12
  91. orchestrator_core-4.1.0rc1/docs/img/WFO-Emblem-White.png +0 -0
  92. orchestrator_core-4.1.0rc1/docs/img/favicon.ico +0 -0
  93. orchestrator_core-4.1.0rc1/docs/index.md +0 -82
  94. orchestrator_core-4.1.0rc1/docs/js/custom.js +0 -105
  95. orchestrator_core-4.1.0rc1/docs/js/termynal.js +0 -264
  96. orchestrator_core-4.1.0rc1/docs/migration-guide/2.0.md +0 -331
  97. orchestrator_core-4.1.0rc1/docs/migration-guide/3.0.md +0 -14
  98. orchestrator_core-4.1.0rc1/docs/migration-guide/4.0.md +0 -73
  99. orchestrator_core-4.1.0rc1/docs/reference-docs/api.md +0 -6
  100. orchestrator_core-4.1.0rc1/docs/reference-docs/app/app.md +0 -26
  101. orchestrator_core-4.1.0rc1/docs/reference-docs/app/scaling.md +0 -250
  102. orchestrator_core-4.1.0rc1/docs/reference-docs/app/settings_overview.md +0 -89
  103. orchestrator_core-4.1.0rc1/docs/reference-docs/auth-backend-and-frontend.md +0 -278
  104. orchestrator_core-4.1.0rc1/docs/reference-docs/cli.md +0 -761
  105. orchestrator_core-4.1.0rc1/docs/reference-docs/database.md +0 -36
  106. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/generator.md +0 -3
  107. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/instantiating.md +0 -0
  108. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/model_attributes.md +0 -57
  109. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/overview.md +0 -4
  110. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/product_blocks.md +0 -44
  111. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/product_types.md +0 -56
  112. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/properties.md +0 -0
  113. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  114. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/type_casting.md +0 -0
  115. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/union_types.md +0 -0
  116. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/validation.md +0 -0
  117. orchestrator_core-4.1.0rc1/docs/reference-docs/forms.md +0 -438
  118. orchestrator_core-4.1.0rc1/docs/reference-docs/graphql.md +0 -686
  119. orchestrator_core-4.1.0rc1/docs/reference-docs/metrics.md +0 -45
  120. orchestrator_core-4.1.0rc1/docs/reference-docs/python.md +0 -27
  121. orchestrator_core-4.1.0rc1/docs/reference-docs/search.md +0 -264
  122. orchestrator_core-4.1.0rc1/docs/reference-docs/search_overview.png +0 -0
  123. orchestrator_core-4.1.0rc1/docs/reference-docs/serialization.md +0 -0
  124. orchestrator_core-4.1.0rc1/docs/reference-docs/tasks.md +0 -0
  125. orchestrator_core-4.1.0rc1/docs/reference-docs/tests.md +0 -0
  126. orchestrator_core-4.1.0rc1/docs/reference-docs/tldr.md +0 -3
  127. orchestrator_core-4.1.0rc1/docs/reference-docs/websockets.md +0 -107
  128. orchestrator_core-4.1.0rc1/docs/reference-docs/workflows/callbacks.md +0 -178
  129. orchestrator_core-4.1.0rc1/docs/reference-docs/workflows/workflow-lifecycles.md +0 -9
  130. orchestrator_core-4.1.0rc1/docs/reference-docs/workflows/workflow-steps.md +0 -28
  131. orchestrator_core-4.1.0rc1/docs/workshops/advanced/bootstrap.md +0 -168
  132. orchestrator_core-4.1.0rc1/docs/workshops/advanced/create-your-own.md +0 -9
  133. orchestrator_core-4.1.0rc1/docs/workshops/advanced/docker-installation.md +0 -89
  134. orchestrator_core-4.1.0rc1/docs/workshops/advanced/domain-models.md +0 -10
  135. orchestrator_core-4.1.0rc1/docs/workshops/advanced/execute-workflows.md +0 -46
  136. orchestrator_core-4.1.0rc1/docs/workshops/advanced/generator.md +0 -169
  137. orchestrator_core-4.1.0rc1/docs/workshops/advanced/l2_point_to_point.png +0 -0
  138. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-create.md +0 -2
  139. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-modify.md +0 -2
  140. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-terminate.md +0 -2
  141. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-validate.md +0 -2
  142. orchestrator_core-4.1.0rc1/docs/workshops/advanced/overview.md +0 -86
  143. orchestrator_core-4.1.0rc1/docs/workshops/advanced/scenario.md +0 -19
  144. orchestrator_core-4.1.0rc1/docs/workshops/advanced/workflow-basics.md +0 -3
  145. orchestrator_core-4.1.0rc1/docs/workshops/advanced/workflow-introduction.md +0 -36
  146. orchestrator_core-4.1.0rc1/docs/workshops/beginner/create-user-group.md +0 -132
  147. orchestrator_core-4.1.0rc1/docs/workshops/beginner/create-user.md +0 -137
  148. orchestrator_core-4.1.0rc1/docs/workshops/beginner/database-migration.md +0 -192
  149. orchestrator_core-4.1.0rc1/docs/workshops/beginner/debian.md +0 -145
  150. orchestrator_core-4.1.0rc1/docs/workshops/beginner/docker.md +0 -78
  151. orchestrator_core-4.1.0rc1/docs/workshops/beginner/domain-models.md +0 -187
  152. orchestrator_core-4.1.0rc1/docs/workshops/beginner/explore.md +0 -73
  153. orchestrator_core-4.1.0rc1/docs/workshops/beginner/input-forms.md +0 -111
  154. orchestrator_core-4.1.0rc1/docs/workshops/beginner/macos.md +0 -146
  155. orchestrator_core-4.1.0rc1/docs/workshops/beginner/modify-user-group.md +0 -79
  156. orchestrator_core-4.1.0rc1/docs/workshops/beginner/modify-user.md +0 -61
  157. orchestrator_core-4.1.0rc1/docs/workshops/beginner/register-workflows.md +0 -113
  158. orchestrator_core-4.1.0rc1/docs/workshops/beginner/start-applications.md +0 -40
  159. orchestrator_core-4.1.0rc1/docs/workshops/beginner/terminate-user-group.md +0 -79
  160. orchestrator_core-4.1.0rc1/docs/workshops/beginner/terminate-user.md +0 -44
  161. orchestrator_core-4.1.0rc1/docs/workshops/beginner/workflow-introduction.md +0 -78
  162. orchestrator_core-4.1.0rc1/docs/workshops/beginner/workshop-overview.md +0 -92
  163. orchestrator_core-4.1.0rc1/docs/workshops/images/Software-topology.drawio.png +0 -0
  164. orchestrator_core-4.1.0rc1/docs/workshops/images/clab_topology.png +0 -0
  165. orchestrator_core-4.1.0rc1/docs/workshops/images/metadata_products.png +0 -0
  166. orchestrator_core-4.1.0rc1/docs/workshops/images/netbox_devices_active.png +0 -0
  167. orchestrator_core-4.1.0rc1/docs/workshops/images/subscriptions.png +0 -0
  168. orchestrator_core-4.1.0rc1/docs/workshops/images/topology.drawio.png +0 -0
  169. orchestrator_core-4.1.0rc1/includes/abbreviations.md +0 -6
  170. orchestrator_core-4.1.0rc1/mkdocs.yml +0 -248
  171. orchestrator_core-4.1.0rc1/nitpick-style.toml +0 -2
  172. orchestrator_core-4.1.0rc1/setup.cfg +0 -69
  173. orchestrator_core-4.1.0rc1/setup.py +0 -20
  174. orchestrator_core-4.1.0rc1/test/__init__.py +0 -0
  175. orchestrator_core-4.1.0rc1/test/acceptance_tests/__init__.py +0 -0
  176. orchestrator_core-4.1.0rc1/test/acceptance_tests/conftest.py +0 -110
  177. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  178. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  179. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -61
  180. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -40
  181. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  182. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -46
  183. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  184. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -33
  185. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  186. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -84
  187. orchestrator_core-4.1.0rc1/test/acceptance_tests/test_test_product.py +0 -23
  188. orchestrator_core-4.1.0rc1/test/unit_tests/__init__.py +0 -0
  189. orchestrator_core-4.1.0rc1/test/unit_tests/api/__init__.py +0 -0
  190. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_health.py +0 -30
  191. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_helpers.py +0 -85
  192. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_models.py +0 -45
  193. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_processes.py +0 -595
  194. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_processes_ws.py +0 -334
  195. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_product_blocks.py +0 -58
  196. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_products.py +0 -202
  197. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_resource_types.py +0 -56
  198. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_settings.py +0 -98
  199. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -145
  200. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_subscriptions.py +0 -846
  201. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_workflows.py +0 -57
  202. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_ws.py +0 -103
  203. orchestrator_core-4.1.0rc1/test/unit_tests/cli/__init__.py +0 -0
  204. orchestrator_core-4.1.0rc1/test/unit_tests/cli/conftest.py +0 -33
  205. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/alembic.ini +0 -45
  206. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/main.py +0 -7
  207. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/env.py +0 -89
  208. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -3
  209. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -23
  210. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -21
  211. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -93
  212. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -135
  213. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -105
  214. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/__init__.py +0 -26
  215. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  216. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -61
  217. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -30
  218. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -26
  219. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -21
  220. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  221. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -28
  222. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -16
  223. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -16
  224. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -53
  225. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -53
  226. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -53
  227. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -83
  228. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -70
  229. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -43
  230. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -35
  231. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -32
  232. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -33
  233. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -26
  234. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -16
  235. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -32
  236. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -33
  237. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -26
  238. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -16
  239. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -16
  240. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -14
  241. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -110
  242. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -98
  243. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -15
  244. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -46
  245. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -29
  246. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -79
  247. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -73
  248. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -1
  249. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -39
  250. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -78
  251. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -71
  252. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -1
  253. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -39
  254. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/shared.py +0 -36
  255. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate.sh +0 -25
  256. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -20
  257. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -24
  258. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config1.yaml +0 -87
  259. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config2.yaml +0 -29
  260. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config3.yaml +0 -26
  261. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config4.yaml +0 -32
  262. orchestrator_core-4.1.0rc1/test/unit_tests/cli/generator/__init__.py +0 -0
  263. orchestrator_core-4.1.0rc1/test/unit_tests/cli/generator/test_enums.py +0 -27
  264. orchestrator_core-4.1.0rc1/test/unit_tests/cli/helpers.py +0 -19
  265. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_cli_generate.py +0 -68
  266. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_config_validation.py +0 -20
  267. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_generate_code.py +0 -152
  268. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -764
  269. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -728
  270. orchestrator_core-4.1.0rc1/test/unit_tests/config.py +0 -12
  271. orchestrator_core-4.1.0rc1/test/unit_tests/conftest.py +0 -805
  272. orchestrator_core-4.1.0rc1/test/unit_tests/db/__init__.py +0 -0
  273. orchestrator_core-4.1.0rc1/test/unit_tests/db/test_listeners.py +0 -23
  274. orchestrator_core-4.1.0rc1/test/unit_tests/db/test_migration_does_column_exist.py +0 -10
  275. orchestrator_core-4.1.0rc1/test/unit_tests/domain/__init__.py +0 -0
  276. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base.py +0 -1301
  277. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_multiple.py +0 -226
  278. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_performance.py +0 -160
  279. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_serializable_property.py +0 -170
  280. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_with_list_union.py +0 -189
  281. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_with_union.py +0 -108
  282. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_lifecycle.py +0 -49
  283. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/__init__.py +0 -88
  284. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/processes.py +0 -180
  285. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/__init__.py +0 -0
  286. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  287. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -67
  288. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -84
  289. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -55
  290. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -64
  291. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -59
  292. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -35
  293. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -32
  294. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  295. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -64
  296. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -52
  297. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -101
  298. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -95
  299. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -65
  300. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -82
  301. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -57
  302. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -57
  303. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -45
  304. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -41
  305. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -300
  306. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/resource_types.py +0 -28
  307. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/workflows.py +0 -22
  308. orchestrator_core-4.1.0rc1/test/unit_tests/forms/__init__.py +0 -0
  309. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_customer_contact_list.py +0 -140
  310. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_customer_id.py +0 -17
  311. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_display_subscription.py +0 -77
  312. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_generic_validators.py +0 -121
  313. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/__init__.py +0 -0
  314. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/conftest.py +0 -55
  315. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/extensions/__init__.py +0 -0
  316. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/extensions/test_stats.py +0 -30
  317. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/mutations/helpers.py +0 -17
  318. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/mutations/test_customer_description.py +0 -296
  319. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/mutations/test_start_process.py +0 -86
  320. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_customer.py +0 -69
  321. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_process.py +0 -42
  322. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_processes.py +0 -679
  323. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_product.py +0 -350
  324. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_product_blocks.py +0 -317
  325. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_resource_types.py +0 -174
  326. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_settings.py +0 -166
  327. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -74
  328. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_subscription.py +0 -105
  329. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_subscription_relations.py +0 -617
  330. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_subscriptions.py +0 -1581
  331. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_version.py +0 -21
  332. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_workflows.py +0 -234
  333. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/__init__.py +0 -0
  334. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/fixtures.py +0 -157
  335. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_autoregistration.py +0 -12
  336. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -55
  337. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -49
  338. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -207
  339. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -95
  340. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_override_class.py +0 -290
  341. orchestrator_core-4.1.0rc1/test/unit_tests/helpers.py +0 -32
  342. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/__init__.py +0 -0
  343. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/conftest.py +0 -27
  344. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/test_engine_metrics.py +0 -18
  345. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/test_process_metrics.py +0 -27
  346. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/test_subscription_metrics.py +0 -60
  347. orchestrator_core-4.1.0rc1/test/unit_tests/migrations/__init__.py +0 -0
  348. orchestrator_core-4.1.0rc1/test/unit_tests/migrations/test_cascade_constraint.py +0 -55
  349. orchestrator_core-4.1.0rc1/test/unit_tests/schedules/__init__.py +0 -0
  350. orchestrator_core-4.1.0rc1/test/unit_tests/schedules/test_scheduling.py +0 -26
  351. orchestrator_core-4.1.0rc1/test/unit_tests/services/__init__.py +0 -0
  352. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_expose_settings.py +0 -35
  353. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_input_state.py +0 -62
  354. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_processes.py +0 -927
  355. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_products.py +0 -39
  356. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_subscription_relations.py +0 -190
  357. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_subscriptions.py +0 -160
  358. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_translations.py +0 -61
  359. orchestrator_core-4.1.0rc1/test/unit_tests/test_db.py +0 -183
  360. orchestrator_core-4.1.0rc1/test/unit_tests/test_types.py +0 -12
  361. orchestrator_core-4.1.0rc1/test/unit_tests/test_workflow.py +0 -630
  362. orchestrator_core-4.1.0rc1/test/unit_tests/utils/__init__.py +0 -0
  363. orchestrator_core-4.1.0rc1/test/unit_tests/utils/get_subscription_dict.py +0 -11
  364. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_datetime.py +0 -6
  365. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_errors.py +0 -54
  366. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_functional.py +0 -127
  367. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_get_updated_properties.py +0 -127
  368. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_json.py +0 -119
  369. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_search_query.py +0 -170
  370. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_state.py +0 -490
  371. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_strings.py +0 -6
  372. orchestrator_core-4.1.0rc1/test/unit_tests/websocket/__init__.py +0 -0
  373. orchestrator_core-4.1.0rc1/test/unit_tests/websocket/test_broadcast.py +0 -93
  374. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/__init__.py +0 -384
  375. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/conftest.py +0 -0
  376. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/shared/__init__.py +0 -0
  377. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -58
  378. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/__init__.py +0 -0
  379. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -75
  380. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -79
  381. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -39
  382. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_validate_products.py +0 -9
  383. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_async_workflow.py +0 -331
  384. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_config_db_code.py +0 -77
  385. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -103
  386. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -64
  387. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_modify_note.py +0 -26
  388. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/LICENSE +0 -0
  389. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/__init__.py +0 -0
  390. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/__init__.py +0 -0
  391. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/api.py +0 -0
  392. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  393. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  394. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  395. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  396. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  397. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  398. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  399. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  400. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  401. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  402. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  403. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/error_handling.py +0 -0
  404. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/helpers.py +0 -0
  405. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/api/models.py +0 -0
  406. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/app.py +0 -0
  407. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/__init__.py +0 -0
  408. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/database.py +0 -0
  409. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  410. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  411. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  412. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  413. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  414. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  415. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  416. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generate.py +0 -0
  417. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/__init__.py +0 -0
  418. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/README +0 -0
  419. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  420. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  421. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  422. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  423. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  424. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  425. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  426. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  427. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  428. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/__init__.py +0 -0
  429. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/enums.py +0 -0
  430. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/helpers.py +0 -0
  431. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/migration.py +0 -0
  432. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/product.py +0 -0
  433. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/product_block.py +0 -0
  434. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/settings.py +0 -0
  435. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/translations.py +0 -0
  436. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/unittest.py +0 -0
  437. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/validations.py +0 -0
  438. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/workflow.py +0 -0
  439. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  440. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  441. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  442. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  443. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  444. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  445. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  446. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  447. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  448. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  449. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  450. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  451. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  452. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  453. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  454. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  455. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  456. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/product.j2 +0 -0
  457. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  458. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  459. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  460. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  461. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  462. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  463. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  464. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  465. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  466. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  467. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  468. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/__init__.py +0 -0
  469. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/input_helpers.py +0 -0
  470. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/print_helpers.py +0 -0
  471. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/main.py +0 -0
  472. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_domain_models.py +0 -0
  473. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_tasks.py +0 -0
  474. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_workflows.py +0 -0
  475. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migration_helpers.py +0 -0
  476. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/cli/scheduler.py +0 -0
  477. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/config/__init__.py +0 -0
  478. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/config/assignee.py +0 -0
  479. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/__init__.py +0 -0
  480. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/database.py +0 -0
  481. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/__init__.py +0 -0
  482. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/filters.py +0 -0
  483. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/process.py +0 -0
  484. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/product.py +0 -0
  485. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/product_block.py +0 -0
  486. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/resource_type.py +0 -0
  487. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  488. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  489. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/subscription.py +0 -0
  490. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/workflow.py +0 -0
  491. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/helpers.py +0 -0
  492. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/listeners.py +0 -0
  493. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/loaders.py +0 -0
  494. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/__init__.py +0 -0
  495. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/subscription.py +0 -0
  496. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/subscription_instance.py +0 -0
  497. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/range/__init__.py +0 -0
  498. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/range/range.py +0 -0
  499. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/__init__.py +0 -0
  500. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/process.py +0 -0
  501. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/product.py +0 -0
  502. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/product_block.py +0 -0
  503. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/resource_type.py +0 -0
  504. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/sorting.py +0 -0
  505. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/subscription.py +0 -0
  506. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/workflow.py +0 -0
  507. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/__init__.py +0 -0
  508. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/populator.py +0 -0
  509. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/__init__.py +0 -0
  510. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  511. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  512. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/shared.py +0 -0
  513. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/__init__.py +0 -0
  514. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/distlock_manager.py +0 -0
  515. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/__init__.py +0 -0
  516. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  517. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  518. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/__init__.py +0 -0
  519. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/base.py +0 -0
  520. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/context_cache.py +0 -0
  521. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/customer_description.py +0 -0
  522. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/helpers.py +0 -0
  523. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/lifecycle.py +0 -0
  524. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/domain/subscription_instance_transform.py +0 -0
  525. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/exception_handlers.py +0 -0
  526. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/__init__.py +0 -0
  527. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/__init__.py +0 -0
  528. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  529. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/customer_id.py +0 -0
  530. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/display_subscription.py +0 -0
  531. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/network_type_validators.py +0 -0
  532. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/product_id.py +0 -0
  533. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/__init__.py +0 -0
  534. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/autoregistration.py +0 -0
  535. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/__init__.py +0 -0
  536. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/model_cache.py +0 -0
  537. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/stats.py +0 -0
  538. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/loaders/__init__.py +0 -0
  539. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  540. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/mutations/customer_description.py +0 -0
  541. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/mutations/start_process.py +0 -0
  542. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/pagination.py +0 -0
  543. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/__init__.py +0 -0
  544. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/customer.py +0 -0
  545. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/helpers.py +0 -0
  546. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/process.py +0 -0
  547. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/product.py +0 -0
  548. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/product_block.py +0 -0
  549. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  550. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/settings.py +0 -0
  551. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/subscription.py +0 -0
  552. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/version.py +0 -0
  553. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/workflow.py +0 -0
  554. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schema.py +0 -0
  555. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/__init__.py +0 -0
  556. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/customer.py +0 -0
  557. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/customer_description.py +0 -0
  558. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/errors.py +0 -0
  559. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  560. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/helpers.py +0 -0
  561. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product_block.py +0 -0
  562. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/resource_type.py +0 -0
  563. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/settings.py +0 -0
  564. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  565. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/subscription.py +0 -0
  566. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/version.py +0 -0
  567. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/__init__.py +0 -0
  568. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  569. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  570. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  571. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  572. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  573. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  574. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/override_class.py +0 -0
  575. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  576. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/log_config.py +0 -0
  577. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/__init__.py +0 -0
  578. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/engine.py +0 -0
  579. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/init.py +0 -0
  580. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/processes.py +0 -0
  581. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/subscriptions.py +0 -0
  582. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/README +0 -0
  583. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/alembic.ini +0 -0
  584. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/env.py +0 -0
  585. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/helpers.py +0 -0
  586. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/script.py.mako +0 -0
  587. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  588. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/env.py.j2 +0 -0
  589. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  590. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  591. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  592. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  593. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  594. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  595. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  596. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  597. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  598. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  599. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  600. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  601. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  602. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  603. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  604. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  605. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  606. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  607. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  608. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  609. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  610. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  611. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  612. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  613. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  614. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  615. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  616. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/py.typed +0 -0
  617. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/__init__.py +0 -0
  618. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/resume_workflows.py +0 -0
  619. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/scheduling.py +0 -0
  620. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/task_vacuum.py +0 -0
  621. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/validate_products.py +0 -0
  622. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/validate_subscriptions.py +0 -0
  623. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/__init__.py +0 -0
  624. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/base.py +0 -0
  625. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/engine_settings.py +0 -0
  626. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/fixed_input.py +0 -0
  627. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/problem_detail.py +0 -0
  628. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/product.py +0 -0
  629. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/product_block.py +0 -0
  630. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/resource_type.py +0 -0
  631. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/subscription.py +0 -0
  632. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/subscription_descriptions.py +0 -0
  633. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/workflow.py +0 -0
  634. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/security.py +0 -0
  635. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/__init__.py +0 -0
  636. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/fixed_inputs.py +0 -0
  637. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/input_state.py +0 -0
  638. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/process_broadcast_thread.py +0 -0
  639. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/products.py +0 -0
  640. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/resource_types.py +0 -0
  641. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/settings.py +0 -0
  642. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/settings_env_variables.py +0 -0
  643. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/subscription_relations.py +0 -0
  644. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/subscriptions.py +0 -0
  645. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/tasks.py +0 -0
  646. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/translations.py +0 -0
  647. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/services/workflows.py +0 -0
  648. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/settings.py +0 -0
  649. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/targets.py +0 -0
  650. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/types.py +0 -0
  651. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/__init__.py +0 -0
  652. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/crypt.py +0 -0
  653. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/datetime.py +0 -0
  654. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/deprecation_logger.py +0 -0
  655. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/docs.py +0 -0
  656. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/errors.py +0 -0
  657. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/expose_settings.py +0 -0
  658. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/fixed_inputs.py +0 -0
  659. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/functional.py +0 -0
  660. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/get_subscription_dict.py +0 -0
  661. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/get_updated_properties.py +0 -0
  662. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/helpers.py +0 -0
  663. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/json.py +0 -0
  664. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/redis.py +0 -0
  665. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/redis_client.py +0 -0
  666. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/search_query.py +0 -0
  667. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/state.py +0 -0
  668. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/strings.py +0 -0
  669. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/utils/validate_data_version.py +0 -0
  670. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/version.py +0 -0
  671. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/__init__.py +0 -0
  672. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  673. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  674. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/websocket_manager.py +0 -0
  675. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/__init__.py +0 -0
  676. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/removed_workflow.py +0 -0
  677. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/__init__.py +0 -0
  678. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  679. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  680. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  681. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/validate_products.py +0 -0
  682. {orchestrator_core-4.1.0rc1 → 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.0rc1"
16
+ __version__ = "4.2.0rc1"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -25,7 +25,7 @@ from fastapi.param_functions import Body, Depends, Header
25
25
  from fastapi.routing import APIRouter
26
26
  from fastapi.websockets import WebSocket
27
27
  from fastapi_etag.dependency import CacheHit
28
- from more_itertools import chunked
28
+ from more_itertools import chunked, last
29
29
  from sentry_sdk.tracing import trace
30
30
  from sqlalchemy import CompoundSelect, Select, select
31
31
  from sqlalchemy.orm import defer, joinedload
@@ -56,6 +56,7 @@ from orchestrator.services.processes import (
56
56
  )
57
57
  from orchestrator.services.settings import get_engine_settings
58
58
  from orchestrator.settings import app_settings
59
+ from orchestrator.utils.auth import Authorizer
59
60
  from orchestrator.utils.enrich_process import enrich_process
60
61
  from orchestrator.websocket import (
61
62
  WS_CHANNELS,
@@ -63,7 +64,7 @@ from orchestrator.websocket import (
63
64
  broadcast_process_update_to_websocket,
64
65
  websocket_manager,
65
66
  )
66
- from orchestrator.workflow import ProcessStatus
67
+ from orchestrator.workflow import ProcessStat, ProcessStatus, StepList, Workflow
67
68
  from pydantic_forms.types import JSON, State
68
69
 
69
70
  router = APIRouter()
@@ -86,6 +87,48 @@ def check_global_lock() -> None:
86
87
  )
87
88
 
88
89
 
90
+ def get_current_steps(pstat: ProcessStat) -> StepList:
91
+ """Extract past and current steps from the ProcessStat."""
92
+ remaining_steps = pstat.log
93
+ past_steps = pstat.workflow.steps[: -len(remaining_steps)]
94
+ return StepList(past_steps + [pstat.log[0]])
95
+
96
+
97
+ def get_auth_callbacks(steps: StepList, workflow: Workflow) -> tuple[Authorizer | None, Authorizer | None]:
98
+ """Iterate over workflow and prior steps to determine correct authorization callbacks for the current step.
99
+
100
+ It's safest to always iterate through the steps. We could track these callbacks statefully
101
+ as we progress through the workflow, but if we fail a step and the system restarts, the previous
102
+ callbacks will be lost if they're only available in the process state.
103
+
104
+ Priority:
105
+ - RESUME callback is explicit RESUME callback, else previous START/RESUME callback
106
+ - RETRY callback is explicit RETRY, else explicit RESUME, else previous RETRY
107
+ """
108
+ # Default to workflow start callbacks
109
+ auth_resume = workflow.authorize_callback
110
+ # auth_retry defaults to the workflow start callback if not otherwise specified.
111
+ # A workflow SHOULD have both callbacks set to not-None. This enforces the correct default regardless.
112
+ auth_retry = workflow.retry_auth_callback or auth_resume # type: ignore[unreachable, truthy-function]
113
+
114
+ # Choose the most recently established value for resume.
115
+ auth_resume = last(filter(None, (step.resume_auth_callback for step in steps)), auth_resume)
116
+ # Choose the most recently established value for retry, unless there is a more recent value for resume.
117
+ auth_retry = last(
118
+ filter(None, (step.retry_auth_callback or step.resume_auth_callback for step in steps)), auth_retry
119
+ )
120
+ return auth_resume, auth_retry
121
+
122
+
123
+ def can_be_resumed(status: ProcessStatus) -> bool:
124
+ return status in (
125
+ ProcessStatus.SUSPENDED, # Can be resumed
126
+ ProcessStatus.FAILED, # Can be retried
127
+ ProcessStatus.API_UNAVAILABLE, # subtype of FAILED
128
+ ProcessStatus.INCONSISTENT_DATA, # subtype of FAILED
129
+ )
130
+
131
+
89
132
  def resolve_user_name(
90
133
  *,
91
134
  reporter: Reporter | None,
@@ -115,6 +158,9 @@ def delete(process_id: UUID) -> None:
115
158
  if not process:
116
159
  raise_status(HTTPStatus.NOT_FOUND)
117
160
 
161
+ if not process.is_task:
162
+ raise_status(HTTPStatus.BAD_REQUEST)
163
+
118
164
  db.session.delete(db.session.get(ProcessTable, process_id))
119
165
  db.session.commit()
120
166
 
@@ -150,18 +196,25 @@ def new_process(
150
196
  dependencies=[Depends(check_global_lock, use_cache=False)],
151
197
  )
152
198
  def resume_process_endpoint(
153
- process_id: UUID, request: Request, json_data: JSON = Body(...), user: str = Depends(user_name)
199
+ process_id: UUID,
200
+ request: Request,
201
+ json_data: JSON = Body(...),
202
+ user: str = Depends(user_name),
203
+ user_model: OIDCUserModel | None = Depends(authenticate),
154
204
  ) -> None:
155
205
  process = _get_process(process_id)
156
206
 
157
- if process.last_status == ProcessStatus.COMPLETED:
158
- raise_status(HTTPStatus.CONFLICT, "Resuming a completed workflow is not possible")
159
-
160
- if process.last_status == ProcessStatus.RUNNING:
161
- raise_status(HTTPStatus.CONFLICT, "Resuming a running workflow is not possible")
207
+ if not can_be_resumed(process.last_status):
208
+ raise_status(HTTPStatus.CONFLICT, f"Resuming a {process.last_status.lower()} workflow is not possible")
162
209
 
163
- if process.last_status == ProcessStatus.RESUMED:
164
- raise_status(HTTPStatus.CONFLICT, "Resuming a resumed workflow is not possible")
210
+ pstat = load_process(process)
211
+ auth_resume, auth_retry = get_auth_callbacks(get_current_steps(pstat), pstat.workflow)
212
+ if process.last_status == ProcessStatus.SUSPENDED:
213
+ if auth_resume is not None and not auth_resume(user_model):
214
+ raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to resume step")
215
+ elif process.last_status == ProcessStatus.FAILED:
216
+ if auth_retry is not None and not auth_retry(user_model):
217
+ raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to retry step")
165
218
 
166
219
  broadcast_invalidate_status_counts()
167
220
  broadcast_func = api_broadcast_process_data(request)
@@ -220,7 +273,7 @@ def update_progress_on_awaiting_process_endpoint(
220
273
  @router.put(
221
274
  "/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
222
275
  )
223
- 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]:
224
277
  """Retry all task processes in status Failed, Waiting, API Unavailable or Inconsistent Data.
225
278
 
226
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")