orchestrator-core 2.10.0rc2__py3-none-any.whl → 3.0.0rc1__py3-none-any.whl
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.
- orchestrator/__init__.py +1 -1
- orchestrator/api/api_v1/endpoints/processes.py +1 -1
- orchestrator/cli/generator/templates/create_product.j2 +2 -1
- orchestrator/cli/generator/templates/modify_product.j2 +2 -1
- orchestrator/cli/generator/templates/shared_workflows.j2 +2 -1
- orchestrator/cli/generator/templates/terminate_product.j2 +1 -1
- orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -1
- orchestrator/cli/generator/templates/test_modify_workflow.j2 +1 -2
- orchestrator/cli/generator/templates/test_terminate_workflow.j2 +1 -1
- orchestrator/cli/generator/templates/validate_product.j2 +3 -1
- orchestrator/cli/helpers/print_helpers.py +1 -1
- orchestrator/config/assignee.py +1 -1
- orchestrator/devtools/populator.py +1 -1
- orchestrator/devtools/scripts/migrate_20.py +11 -106
- orchestrator/devtools/scripts/migrate_30.py +61 -0
- orchestrator/devtools/scripts/shared.py +108 -0
- orchestrator/domain/base.py +1 -2
- orchestrator/domain/lifecycle.py +2 -1
- orchestrator/migrations/helpers.py +1 -1
- orchestrator/schemas/engine_settings.py +1 -1
- orchestrator/schemas/subscription.py +2 -1
- orchestrator/services/celery.py +1 -1
- orchestrator/services/processes.py +2 -1
- orchestrator/services/products.py +1 -1
- orchestrator/services/subscriptions.py +2 -1
- orchestrator/services/tasks.py +2 -1
- orchestrator/settings.py +1 -1
- orchestrator/targets.py +1 -1
- orchestrator/types.py +8 -43
- orchestrator/utils/errors.py +2 -1
- orchestrator/utils/state.py +2 -1
- orchestrator/workflow.py +3 -1
- orchestrator/workflows/modify_note.py +1 -2
- orchestrator/workflows/steps.py +2 -1
- orchestrator/workflows/tasks/cleanup_tasks_log.py +1 -1
- orchestrator/workflows/tasks/resume_workflows.py +1 -1
- orchestrator/workflows/tasks/validate_product_type.py +1 -1
- orchestrator/workflows/tasks/validate_products.py +1 -1
- orchestrator/workflows/utils.py +2 -2
- {orchestrator_core-2.10.0rc2.dist-info → orchestrator_core-3.0.0rc1.dist-info}/METADATA +1 -1
- {orchestrator_core-2.10.0rc2.dist-info → orchestrator_core-3.0.0rc1.dist-info}/RECORD +43 -41
- {orchestrator_core-2.10.0rc2.dist-info → orchestrator_core-3.0.0rc1.dist-info}/LICENSE +0 -0
- {orchestrator_core-2.10.0rc2.dist-info → orchestrator_core-3.0.0rc1.dist-info}/WHEEL +0 -0
orchestrator/__init__.py
CHANGED
|
@@ -61,7 +61,6 @@ from orchestrator.services.processes import (
|
|
|
61
61
|
)
|
|
62
62
|
from orchestrator.services.settings import get_engine_settings
|
|
63
63
|
from orchestrator.settings import app_settings
|
|
64
|
-
from orchestrator.types import JSON, State
|
|
65
64
|
from orchestrator.utils.enrich_process import enrich_process
|
|
66
65
|
from orchestrator.websocket import (
|
|
67
66
|
WS_CHANNELS,
|
|
@@ -70,6 +69,7 @@ from orchestrator.websocket import (
|
|
|
70
69
|
websocket_manager,
|
|
71
70
|
)
|
|
72
71
|
from orchestrator.workflow import ProcessStatus
|
|
72
|
+
from pydantic_forms.types import JSON, State
|
|
73
73
|
|
|
74
74
|
router = APIRouter()
|
|
75
75
|
|
|
@@ -7,11 +7,12 @@ from typing import Annotated
|
|
|
7
7
|
|
|
8
8
|
import structlog
|
|
9
9
|
from pydantic import AfterValidator, ConfigDict, model_validator
|
|
10
|
+
from pydantic_forms.types import FormGenerator, State, UUIDstr
|
|
10
11
|
|
|
11
12
|
from orchestrator.forms import FormPage
|
|
12
13
|
from orchestrator.forms.validators import Divider, Label, CustomerId, MigrationSummary
|
|
13
14
|
from orchestrator.targets import Target
|
|
14
|
-
from orchestrator.types import
|
|
15
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
15
16
|
from orchestrator.workflow import StepList, begin, step
|
|
16
17
|
from orchestrator.workflows.steps import store_process_subscription
|
|
17
18
|
from orchestrator.workflows.utils import create_workflow
|
|
@@ -6,11 +6,12 @@ from typing import Annotated
|
|
|
6
6
|
|
|
7
7
|
import structlog
|
|
8
8
|
from pydantic import AfterValidator, ConfigDict, model_validator
|
|
9
|
+
from pydantic_forms.types import FormGenerator, State, UUIDstr
|
|
9
10
|
from pydantic_forms.validators import ReadOnlyField
|
|
10
11
|
|
|
11
12
|
from orchestrator.forms import FormPage
|
|
12
13
|
from orchestrator.forms.validators import CustomerId, Divider
|
|
13
|
-
from orchestrator.types import
|
|
14
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
14
15
|
from orchestrator.workflow import StepList, begin, step
|
|
15
16
|
from orchestrator.workflows.steps import set_status
|
|
16
17
|
from orchestrator.workflows.utils import modify_workflow
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import structlog
|
|
4
4
|
from pydantic import AfterValidator, ConfigDict, model_validator
|
|
5
|
+
from pydantic_forms.types import InputForm, State, UUIDstr
|
|
5
6
|
|
|
6
7
|
from orchestrator.forms import FormPage
|
|
7
8
|
from orchestrator.forms.validators import DisplaySubscription
|
|
8
|
-
from orchestrator.types import InputForm, State, UUIDstr
|
|
9
9
|
from orchestrator.workflow import StepList, begin, step
|
|
10
10
|
from orchestrator.workflows.utils import terminate_workflow
|
|
11
11
|
|
|
@@ -4,7 +4,6 @@ from orchestrator.db import ProductTable
|
|
|
4
4
|
from orchestrator.forms import FormValidationError
|
|
5
5
|
|
|
6
6
|
from test.unit_tests.workflows import assert_complete, extract_state, run_workflow
|
|
7
|
-
|
|
8
7
|
from {{ product_types_module }}.{{ product.variable }} import {{ product.type }}
|
|
9
8
|
|
|
10
9
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
from orchestrator.forms import FormValidationError
|
|
3
|
-
|
|
4
3
|
from orchestrator.types import SubscriptionLifecycle
|
|
5
|
-
from test.unit_tests.workflows import assert_complete, extract_state, run_workflow
|
|
6
4
|
|
|
5
|
+
from test.unit_tests.workflows import assert_complete, extract_state, run_workflow
|
|
7
6
|
from {{ product_types_module }}.{{ product.variable }} import {{ product.type }}
|
|
8
7
|
|
|
9
8
|
|
|
@@ -4,8 +4,8 @@ import pytest
|
|
|
4
4
|
from orchestrator.forms import FormValidationError
|
|
5
5
|
{% endif %}
|
|
6
6
|
from orchestrator.types import SubscriptionLifecycle
|
|
7
|
-
from test.unit_tests.workflows import assert_complete, extract_state, run_workflow
|
|
8
7
|
|
|
8
|
+
from test.unit_tests.workflows import assert_complete, extract_state, run_workflow
|
|
9
9
|
from {{ product_types_module }}.{{ product.variable }} import {{ product.type }}
|
|
10
10
|
|
|
11
11
|
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
import structlog
|
|
4
4
|
{% if product.nso_service_id_path %}
|
|
5
5
|
from deepdiff import DeepDiff
|
|
6
|
+
{% endif %}
|
|
7
|
+
from pydantic_forms.types import State
|
|
8
|
+
{% if product.nso_service_id_path %}
|
|
6
9
|
from surf.products.services.nso.nso import build_payload
|
|
7
10
|
{% endif %}
|
|
8
|
-
from orchestrator.types import State
|
|
9
11
|
from orchestrator.workflow import StepList, begin, step
|
|
10
12
|
from orchestrator.workflows.utils import validate_workflow
|
|
11
13
|
|
orchestrator/config/assignee.py
CHANGED
|
@@ -26,8 +26,8 @@ import structlog
|
|
|
26
26
|
from more_itertools import first, first_true
|
|
27
27
|
|
|
28
28
|
from nwastdlib.url import URL
|
|
29
|
-
from orchestrator.types import State
|
|
30
29
|
from pydantic_forms.types import InputForm as LegacyInputForm
|
|
30
|
+
from pydantic_forms.types import State
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class JSONSubSchema(TypedDict, total=False):
|
|
@@ -6,61 +6,17 @@ Refer to the 2.0 migration guide documentation for background.
|
|
|
6
6
|
import re
|
|
7
7
|
import sys
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from subprocess import run
|
|
10
9
|
from typing import Iterable
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
rgx = r"(from %s import \b%s\b(\s*#[^\n]*)*\n)" % (re.escape(module), symbol)
|
|
22
|
-
text = re.sub(rgx, "", text)
|
|
23
|
-
|
|
24
|
-
# middle or last of multiple imports from module -> strip symbol
|
|
25
|
-
rgx = r"(from %s import .+)(, \b%s\b)" % (re.escape(module), symbol)
|
|
26
|
-
text = re.sub(rgx, r"\1", text)
|
|
27
|
-
|
|
28
|
-
# first of multiple imports from same module -> strip symbol
|
|
29
|
-
rgx = r"(from %s import )\b%s\b, " % (re.escape(module), symbol)
|
|
30
|
-
text = re.sub(rgx, r"\1", text)
|
|
31
|
-
|
|
32
|
-
# multiline import -> remove line with symbol
|
|
33
|
-
rgx_verbose = r"""(?P<before>^from\s%s\simport\s*\([^\n]*\n(?:^[^\n]+,\n)*)
|
|
34
|
-
(^\s*\b%s\b,[^\n]*\n)
|
|
35
|
-
(?P<after>(?:^[^\n]+,\n)*\)[^\n]*$)"""
|
|
36
|
-
text = re.sub(rgx_verbose % (re.escape(module), symbol), r"\g<before>\g<after>", text, flags=re.M | re.X)
|
|
37
|
-
return text, text_orig != text
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def insert_import(text: str, import_stmt: str) -> str:
|
|
41
|
-
# Find the first import line and add our line above that
|
|
42
|
-
# Rely on ruff & black for formatting
|
|
43
|
-
return re.sub(r"(^(?:from .+|import .+)$)", f"{import_stmt}\n" + r"\1", text, count=1, flags=re.M)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def find_and_remove_aliases(text: str, symbol: str) -> tuple[str, list[str]]:
|
|
47
|
-
"""In the given text find aliases of the given symbol and remove them.
|
|
48
|
-
|
|
49
|
-
Return updated text and aliases removed.
|
|
50
|
-
"""
|
|
51
|
-
rgx = r"(\b%s as (\w+))" % (symbol,)
|
|
52
|
-
aliases = [aliasgroup for fullgroup, aliasgroup in re.findall(rgx, text)]
|
|
53
|
-
newtext = re.sub(rgx, symbol, text)
|
|
54
|
-
return newtext, aliases
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def replace_words(text: str, words: list[str], replace: str) -> str:
|
|
58
|
-
rgx = r"\b(%s)\b" % ("|".join(words),)
|
|
59
|
-
return re.sub(rgx, replace, text)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def has_word(text: str, word: str) -> bool:
|
|
63
|
-
return bool(re.search(r"\b%s\b" % (word,), text))
|
|
11
|
+
from orchestrator.devtools.scripts.shared import (
|
|
12
|
+
find_and_remove_aliases,
|
|
13
|
+
has_word,
|
|
14
|
+
insert_import,
|
|
15
|
+
migrate,
|
|
16
|
+
move_import,
|
|
17
|
+
remove_imports,
|
|
18
|
+
replace_words,
|
|
19
|
+
)
|
|
64
20
|
|
|
65
21
|
|
|
66
22
|
def rewrite_subscription_instance_lists(f: Path) -> list[str]:
|
|
@@ -124,17 +80,6 @@ def rewrite_subscription_instance_lists(f: Path) -> list[str]:
|
|
|
124
80
|
return names
|
|
125
81
|
|
|
126
82
|
|
|
127
|
-
def move_import(f: Path, symbol: str, old_module: str, new_module: str) -> bool:
|
|
128
|
-
text = f.read_text()
|
|
129
|
-
text, changed = remove_imports(text, old_module, symbol)
|
|
130
|
-
if not changed:
|
|
131
|
-
return False
|
|
132
|
-
text = insert_import(text, f"from {new_module} import {symbol}")
|
|
133
|
-
with f.open(mode="w"):
|
|
134
|
-
f.write_text(text)
|
|
135
|
-
return True
|
|
136
|
-
|
|
137
|
-
|
|
138
83
|
re_serializable_property = re.compile(r"^(\s+)(@serializable_property)([^\n]*)\n", flags=re.MULTILINE)
|
|
139
84
|
|
|
140
85
|
|
|
@@ -167,7 +112,7 @@ def replace_serializable_props(f: Path) -> bool:
|
|
|
167
112
|
return True
|
|
168
113
|
|
|
169
114
|
|
|
170
|
-
def migrate_file(f: Path) ->
|
|
115
|
+
def migrate_file(f: Path) -> bool:
|
|
171
116
|
imports = {
|
|
172
117
|
"SI": move_import(f, "SI", "orchestrator.domain.base", "orchestrator.types"),
|
|
173
118
|
"VlanRanges": move_import(f, "VlanRanges", "orchestrator.utils.vlans", "nwastdlib.vlans"),
|
|
@@ -189,46 +134,6 @@ def migrate_file(f: Path) -> int:
|
|
|
189
134
|
return bool(lines)
|
|
190
135
|
|
|
191
136
|
|
|
192
|
-
def run_tool(*args: str) -> bool:
|
|
193
|
-
cmd = " ".join(args)
|
|
194
|
-
try:
|
|
195
|
-
r = run(args, capture_output=True) # noqa: S603
|
|
196
|
-
if r.returncode == 0:
|
|
197
|
-
return True
|
|
198
|
-
print(f"{cmd} failed:", r.stdout, r.stderr)
|
|
199
|
-
except FileNotFoundError:
|
|
200
|
-
print(f"{cmd }failed: could not find executable in the current venv")
|
|
201
|
-
return False
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
def migrate(target_dir: Path) -> bool:
|
|
205
|
-
abs_path = str(target_dir.resolve())
|
|
206
|
-
|
|
207
|
-
def run_tools() -> bool:
|
|
208
|
-
return run_tool("ruff", "--fix", abs_path) and run_tool("black", "--quiet", abs_path)
|
|
209
|
-
|
|
210
|
-
print(f"\n### Verifing files in {abs_path}... ", end="")
|
|
211
|
-
if not run_tools():
|
|
212
|
-
print("Failed to verify files, aborting migration. Please resolve the errors.")
|
|
213
|
-
return False
|
|
214
|
-
print("Ok")
|
|
215
|
-
|
|
216
|
-
files_migrated = files_checked = 0
|
|
217
|
-
print(f"\n### Migrating files in {abs_path}")
|
|
218
|
-
try:
|
|
219
|
-
for f in target_dir.glob("**/*.py"):
|
|
220
|
-
if migrate_file(f):
|
|
221
|
-
files_migrated += 1
|
|
222
|
-
files_checked += 1
|
|
223
|
-
except KeyboardInterrupt:
|
|
224
|
-
print("Interrupted...")
|
|
225
|
-
|
|
226
|
-
print(f"\n### Migrated {files_migrated}/{files_checked} files in {abs_path}")
|
|
227
|
-
|
|
228
|
-
print(f"\n### Formatting files in {abs_path}")
|
|
229
|
-
return run_tools()
|
|
230
|
-
|
|
231
|
-
|
|
232
137
|
if __name__ == "__main__":
|
|
233
138
|
try:
|
|
234
139
|
_target_dir = Path(sys.argv[1])
|
|
@@ -237,4 +142,4 @@ if __name__ == "__main__":
|
|
|
237
142
|
print("Need a directory as parameter")
|
|
238
143
|
sys.exit(1)
|
|
239
144
|
|
|
240
|
-
sys.exit(0 if migrate(_target_dir) else 1)
|
|
145
|
+
sys.exit(0 if migrate(_target_dir, migrate_file) else 1)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""Helper script to rewrite import statements in your orchestrator.
|
|
2
|
+
|
|
3
|
+
Since types have been externalised in `pydantic_forms`, they were re-imported in `orchestrator.types` for backwards
|
|
4
|
+
compatibility. These import statements have been removed, and therefore need to be updated in orchestrator
|
|
5
|
+
implementations.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import sys
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
from orchestrator.devtools.scripts.shared import migrate, move_import
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def migrate_file(f: Path) -> bool:
|
|
15
|
+
imports = {
|
|
16
|
+
"JSON": move_import(f, "JSON", "orchestrator.types", "pydantic_forms.types"),
|
|
17
|
+
"AcceptData": move_import(f, "AcceptData", "orchestrator.types", "pydantic_forms.types"),
|
|
18
|
+
"AcceptItemType": move_import(f, "AcceptItemType", "orchestrator.types", "pydantic_forms.types"),
|
|
19
|
+
"FormGenerator": move_import(f, "FormGenerator", "orchestrator.types", "pydantic_forms.types"),
|
|
20
|
+
"FormGeneratorAsync": move_import(f, "FormGeneratorAsync", "orchestrator.types", "pydantic_forms.types"),
|
|
21
|
+
"InputForm": move_import(f, "InputForm", "orchestrator.types", "pydantic_forms.types"),
|
|
22
|
+
"InputFormGenerator": move_import(f, "InputFormGenerator", "orchestrator.types", "pydantic_forms.types"),
|
|
23
|
+
"InputStepFunc": move_import(f, "InputStepFunc", "orchestrator.types", "pydantic_forms.types"),
|
|
24
|
+
"SimpleInputFormGenerator": move_import(
|
|
25
|
+
f, "SimpleInputFormGenerator", "orchestrator.types", "pydantic_forms.types"
|
|
26
|
+
),
|
|
27
|
+
"State": move_import(f, "State", "orchestrator.types", "pydantic_forms.types"),
|
|
28
|
+
"StateInputFormGenerator": move_import(
|
|
29
|
+
f, "StateInputFormGenerator", "orchestrator.types", "pydantic_forms.types"
|
|
30
|
+
),
|
|
31
|
+
"StateInputFormGeneratorAsync": move_import(
|
|
32
|
+
f, "StateInputFormGeneratorAsync", "orchestrator.types", "pydantic_forms.types"
|
|
33
|
+
),
|
|
34
|
+
"StateInputStepFunc": move_import(f, "StateInputStepFunc", "orchestrator.types", "pydantic_forms.types"),
|
|
35
|
+
"StateSimpleInputFormGenerator": move_import(
|
|
36
|
+
f, "StateSimpleInputFormGenerator", "orchestrator.types", "pydantic_forms.types"
|
|
37
|
+
),
|
|
38
|
+
"SubscriptionMapping": move_import(f, "SubscriptionMapping", "orchestrator.types", "pydantic_forms.types"),
|
|
39
|
+
"SummaryData": move_import(f, "SummaryData", "orchestrator.types", "pydantic_forms.types"),
|
|
40
|
+
"UUIDstr": move_import(f, "UUIDstr", "orchestrator.types", "pydantic_forms.types"),
|
|
41
|
+
"strEnum": move_import(f, "strEnum", "orchestrator.types", "pydantic_forms.types"),
|
|
42
|
+
}
|
|
43
|
+
lines = []
|
|
44
|
+
lines.extend([f"Moved {k} import" for k, v in imports.items() if v])
|
|
45
|
+
|
|
46
|
+
if lines:
|
|
47
|
+
formatted_lines = "\n".join(f" - {line}" for line in lines)
|
|
48
|
+
print(f"Updated {f.name:50s}\n{formatted_lines}")
|
|
49
|
+
|
|
50
|
+
return bool(lines)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
if __name__ == "__main__":
|
|
54
|
+
try:
|
|
55
|
+
_target_dir = Path(sys.argv[1])
|
|
56
|
+
assert _target_dir.is_dir()
|
|
57
|
+
except Exception:
|
|
58
|
+
print("Need a directory as parameter")
|
|
59
|
+
sys.exit(1)
|
|
60
|
+
|
|
61
|
+
sys.exit(0 if migrate(_target_dir, migrate_file) else 1)
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from subprocess import run
|
|
4
|
+
from typing import Callable
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def remove_imports(text: str, module: str, symbol: str) -> tuple[str, bool]:
|
|
8
|
+
"""Find imports and remove them.
|
|
9
|
+
|
|
10
|
+
Assumes code is formatted through Black to keep the regex somewhat readable.
|
|
11
|
+
"""
|
|
12
|
+
text_orig = text
|
|
13
|
+
|
|
14
|
+
# single import from module (may have a #comment) -> remove line
|
|
15
|
+
rgx = r"(from %s import \b%s\b(\s*#[^\n]*)*\n)" % (re.escape(module), symbol)
|
|
16
|
+
text = re.sub(rgx, "", text)
|
|
17
|
+
|
|
18
|
+
# middle or last of multiple imports from module -> strip symbol
|
|
19
|
+
rgx = r"(from %s import .+)(, \b%s\b)" % (re.escape(module), symbol)
|
|
20
|
+
text = re.sub(rgx, r"\1", text)
|
|
21
|
+
|
|
22
|
+
# first of multiple imports from same module -> strip symbol
|
|
23
|
+
rgx = r"(from %s import )\b%s\b, " % (re.escape(module), symbol)
|
|
24
|
+
text = re.sub(rgx, r"\1", text)
|
|
25
|
+
|
|
26
|
+
# multiline import -> remove line with symbol
|
|
27
|
+
rgx_verbose = r"""(?P<before>^from\s%s\simport\s*\([^\n]*\n(?:^[^\n]+,\n)*)
|
|
28
|
+
(^\s*\b%s\b,[^\n]*\n)
|
|
29
|
+
(?P<after>(?:^[^\n]+,\n)*\)[^\n]*$)"""
|
|
30
|
+
text = re.sub(rgx_verbose % (re.escape(module), symbol), r"\g<before>\g<after>", text, flags=re.M | re.X)
|
|
31
|
+
return text, text_orig != text
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def insert_import(text: str, import_stmt: str) -> str:
|
|
35
|
+
# Find the first import line and add our line above that
|
|
36
|
+
# Rely on ruff & black for formatting
|
|
37
|
+
return re.sub(r"(^(?:from .+|import .+)$)", f"{import_stmt}\n" + r"\1", text, count=1, flags=re.M)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def move_import(f: Path, symbol: str, old_module: str, new_module: str) -> bool:
|
|
41
|
+
text = f.read_text()
|
|
42
|
+
text, changed = remove_imports(text, old_module, symbol)
|
|
43
|
+
if not changed:
|
|
44
|
+
return False
|
|
45
|
+
text = insert_import(text, f"from {new_module} import {symbol}")
|
|
46
|
+
with f.open(mode="w"):
|
|
47
|
+
f.write_text(text)
|
|
48
|
+
return True
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def find_and_remove_aliases(text: str, symbol: str) -> tuple[str, list[str]]:
|
|
52
|
+
"""In the given text find aliases of the given symbol and remove them.
|
|
53
|
+
|
|
54
|
+
Return updated text and aliases removed.
|
|
55
|
+
"""
|
|
56
|
+
rgx = r"(\b%s as (\w+))" % (symbol,)
|
|
57
|
+
aliases = [aliasgroup for fullgroup, aliasgroup in re.findall(rgx, text)]
|
|
58
|
+
newtext = re.sub(rgx, symbol, text)
|
|
59
|
+
return newtext, aliases
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def replace_words(text: str, words: list[str], replace: str) -> str:
|
|
63
|
+
rgx = r"\b(%s)\b" % ("|".join(words),)
|
|
64
|
+
return re.sub(rgx, replace, text)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def has_word(text: str, word: str) -> bool:
|
|
68
|
+
return bool(re.search(r"\b%s\b" % (word,), text))
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def run_tool(*args: str) -> bool:
|
|
72
|
+
cmd = " ".join(args)
|
|
73
|
+
try:
|
|
74
|
+
r = run(args, capture_output=True) # noqa: S603
|
|
75
|
+
if r.returncode == 0:
|
|
76
|
+
return True
|
|
77
|
+
print(f"{cmd} failed:", r.stdout, r.stderr)
|
|
78
|
+
except FileNotFoundError:
|
|
79
|
+
print(f"{cmd} failed: could not find executable in the current venv")
|
|
80
|
+
return False
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def migrate(target_dir: Path, migrate_file: Callable[[Path], bool]) -> bool:
|
|
84
|
+
abs_path = str(target_dir.resolve())
|
|
85
|
+
|
|
86
|
+
def run_tools() -> bool:
|
|
87
|
+
return run_tool("ruff", "check", "--fix", abs_path) and run_tool("black", "--quiet", abs_path)
|
|
88
|
+
|
|
89
|
+
print(f"\n### Verifying files in {abs_path}... ", end="")
|
|
90
|
+
if not run_tools():
|
|
91
|
+
print("Failed to verify files, aborting migration. Please resolve errors.")
|
|
92
|
+
return False
|
|
93
|
+
print("Ok")
|
|
94
|
+
|
|
95
|
+
files_migrated = files_checked = 0
|
|
96
|
+
print(f"\n### Migrating files in {abs_path}")
|
|
97
|
+
try:
|
|
98
|
+
for f in target_dir.glob("**/*.py"):
|
|
99
|
+
if migrate_file(f):
|
|
100
|
+
files_migrated += 1
|
|
101
|
+
files_checked += 1
|
|
102
|
+
except KeyboardInterrupt:
|
|
103
|
+
print("Interrupted...")
|
|
104
|
+
|
|
105
|
+
print(f"\n### Migrated {files_migrated}/{files_checked} files in {abs_path}")
|
|
106
|
+
|
|
107
|
+
print(f"\n### Formatting files in {abs_path}")
|
|
108
|
+
return run_tools()
|
orchestrator/domain/base.py
CHANGED
|
@@ -55,9 +55,7 @@ from orchestrator.domain.lifecycle import (
|
|
|
55
55
|
from orchestrator.services.products import get_product_by_id
|
|
56
56
|
from orchestrator.types import (
|
|
57
57
|
SAFE_USED_BY_TRANSITIONS_FOR_STATUS,
|
|
58
|
-
State,
|
|
59
58
|
SubscriptionLifecycle,
|
|
60
|
-
UUIDstr,
|
|
61
59
|
filter_nonetype,
|
|
62
60
|
get_origin_and_args,
|
|
63
61
|
get_possible_product_block_types,
|
|
@@ -69,6 +67,7 @@ from orchestrator.types import (
|
|
|
69
67
|
)
|
|
70
68
|
from orchestrator.utils.datetime import nowtz
|
|
71
69
|
from orchestrator.utils.docs import make_product_block_docstring, make_subscription_model_docstring
|
|
70
|
+
from pydantic_forms.types import State, UUIDstr
|
|
72
71
|
|
|
73
72
|
logger = structlog.get_logger(__name__)
|
|
74
73
|
|
orchestrator/domain/lifecycle.py
CHANGED
|
@@ -16,7 +16,8 @@ from typing import TYPE_CHECKING, TypeVar
|
|
|
16
16
|
import strawberry
|
|
17
17
|
import structlog
|
|
18
18
|
|
|
19
|
-
from orchestrator.types import SubscriptionLifecycle
|
|
19
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
20
|
+
from pydantic_forms.types import strEnum
|
|
20
21
|
|
|
21
22
|
if TYPE_CHECKING:
|
|
22
23
|
from orchestrator.domain.base import DomainModel
|
|
@@ -22,7 +22,8 @@ from orchestrator.schemas.product import ProductBaseSchema
|
|
|
22
22
|
from orchestrator.schemas.product_block import ProductBlockSchema
|
|
23
23
|
from orchestrator.schemas.resource_type import ResourceTypeSchema
|
|
24
24
|
from orchestrator.schemas.subscription_descriptions import SubscriptionDescriptionSchema
|
|
25
|
-
from orchestrator.types import SubscriptionLifecycle
|
|
25
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
26
|
+
from pydantic_forms.types import strEnum
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
class PortMode(strEnum):
|
orchestrator/services/celery.py
CHANGED
|
@@ -24,8 +24,8 @@ from orchestrator.api.error_handling import raise_status
|
|
|
24
24
|
from orchestrator.db import ProcessTable, db
|
|
25
25
|
from orchestrator.services.processes import create_process, delete_process
|
|
26
26
|
from orchestrator.targets import Target
|
|
27
|
-
from orchestrator.types import State
|
|
28
27
|
from orchestrator.workflows import get_workflow
|
|
28
|
+
from pydantic_forms.types import State
|
|
29
29
|
|
|
30
30
|
SYSTEM_USER = "SYSTEM"
|
|
31
31
|
|
|
@@ -39,7 +39,7 @@ from orchestrator.services.settings import get_engine_settings_for_update
|
|
|
39
39
|
from orchestrator.services.workflows import get_workflow_by_name
|
|
40
40
|
from orchestrator.settings import ExecutorType, app_settings
|
|
41
41
|
from orchestrator.targets import Target
|
|
42
|
-
from orchestrator.types import BroadcastFunc
|
|
42
|
+
from orchestrator.types import BroadcastFunc
|
|
43
43
|
from orchestrator.utils.datetime import nowtz
|
|
44
44
|
from orchestrator.utils.errors import error_state_to_dict
|
|
45
45
|
from orchestrator.websocket import broadcast_invalidate_status_counts
|
|
@@ -60,6 +60,7 @@ from orchestrator.workflows import get_workflow
|
|
|
60
60
|
from orchestrator.workflows.removed_workflow import removed_workflow
|
|
61
61
|
from pydantic_forms.core import post_form
|
|
62
62
|
from pydantic_forms.exceptions import FormValidationError
|
|
63
|
+
from pydantic_forms.types import State
|
|
63
64
|
|
|
64
65
|
logger = structlog.get_logger(__name__)
|
|
65
66
|
|
|
@@ -18,7 +18,7 @@ from sqlalchemy import select
|
|
|
18
18
|
from sqlalchemy.orm import joinedload
|
|
19
19
|
|
|
20
20
|
from orchestrator.db import ProductTable, db
|
|
21
|
-
from
|
|
21
|
+
from pydantic_forms.types import UUIDstr
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
def get_products(*, filters: list | None = None) -> list[ProductTable]:
|
|
@@ -43,9 +43,10 @@ from orchestrator.db.models import (
|
|
|
43
43
|
)
|
|
44
44
|
from orchestrator.domain.base import SubscriptionModel
|
|
45
45
|
from orchestrator.targets import Target
|
|
46
|
-
from orchestrator.types import SubscriptionLifecycle
|
|
46
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
47
47
|
from orchestrator.utils.datetime import nowtz
|
|
48
48
|
from orchestrator.utils.helpers import is_ipaddress_type
|
|
49
|
+
from pydantic_forms.types import UUIDstr
|
|
49
50
|
|
|
50
51
|
logger = structlog.get_logger(__name__)
|
|
51
52
|
|
orchestrator/services/tasks.py
CHANGED
|
@@ -30,10 +30,11 @@ from orchestrator.services.processes import (
|
|
|
30
30
|
safe_logstep,
|
|
31
31
|
thread_resume_process,
|
|
32
32
|
)
|
|
33
|
-
from orchestrator.types import BroadcastFunc
|
|
33
|
+
from orchestrator.types import BroadcastFunc
|
|
34
34
|
from orchestrator.utils.json import json_dumps, json_loads
|
|
35
35
|
from orchestrator.workflow import ProcessStat, ProcessStatus, Success, runwf
|
|
36
36
|
from orchestrator.workflows import get_workflow
|
|
37
|
+
from pydantic_forms.types import State
|
|
37
38
|
|
|
38
39
|
logger = get_task_logger(__name__)
|
|
39
40
|
|
orchestrator/settings.py
CHANGED
|
@@ -20,7 +20,7 @@ from pydantic import PostgresDsn, RedisDsn
|
|
|
20
20
|
from pydantic_settings import BaseSettings
|
|
21
21
|
|
|
22
22
|
from oauth2_lib.settings import oauth2lib_settings
|
|
23
|
-
from
|
|
23
|
+
from pydantic_forms.types import strEnum
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class ExecutorType(strEnum):
|
orchestrator/targets.py
CHANGED
orchestrator/types.py
CHANGED
|
@@ -34,59 +34,24 @@ from annotated_types import Len, MaxLen, MinLen
|
|
|
34
34
|
from more_itertools import first, last
|
|
35
35
|
from pydantic.fields import FieldInfo
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
# these types from pydantic_forms themselves
|
|
39
|
-
from pydantic_forms.types import (
|
|
40
|
-
JSON,
|
|
41
|
-
AcceptData,
|
|
42
|
-
AcceptItemType,
|
|
43
|
-
FormGenerator,
|
|
44
|
-
FormGeneratorAsync,
|
|
45
|
-
InputForm,
|
|
46
|
-
InputFormGenerator,
|
|
47
|
-
InputStepFunc,
|
|
48
|
-
SimpleInputFormGenerator,
|
|
49
|
-
State,
|
|
50
|
-
StateInputFormGenerator,
|
|
51
|
-
StateInputFormGeneratorAsync,
|
|
52
|
-
StateInputStepFunc,
|
|
53
|
-
StateSimpleInputFormGenerator,
|
|
54
|
-
SubscriptionMapping,
|
|
55
|
-
SummaryData,
|
|
56
|
-
UUIDstr,
|
|
57
|
-
strEnum,
|
|
58
|
-
)
|
|
37
|
+
from pydantic_forms.types import InputForm, State, strEnum
|
|
59
38
|
|
|
60
39
|
__all__ = [
|
|
61
|
-
"
|
|
40
|
+
"SAFE_USED_BY_TRANSITIONS_FOR_STATUS",
|
|
62
41
|
"BroadcastFunc",
|
|
63
|
-
"AcceptData",
|
|
64
|
-
"AcceptItemType",
|
|
65
42
|
"ErrorDict",
|
|
66
43
|
"ErrorState",
|
|
67
|
-
"FormGenerator",
|
|
68
|
-
"FormGeneratorAsync",
|
|
69
|
-
"InputForm",
|
|
70
|
-
"InputFormGenerator",
|
|
71
|
-
"InputStepFunc",
|
|
72
|
-
"SimpleInputFormGenerator",
|
|
73
|
-
"State",
|
|
74
|
-
"StateInputFormGenerator",
|
|
75
|
-
"StateInputFormGeneratorAsync",
|
|
76
|
-
"StateInputStepFunc",
|
|
77
|
-
"StateSimpleInputFormGenerator",
|
|
78
44
|
"StateStepFunc",
|
|
79
45
|
"StepFunc",
|
|
80
46
|
"SubscriptionLifecycle",
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
47
|
+
"filter_nonetype",
|
|
48
|
+
"get_origin_and_args",
|
|
49
|
+
"get_possible_product_block_types",
|
|
84
50
|
"is_list_type",
|
|
85
51
|
"is_of_type",
|
|
86
52
|
"is_optional_type",
|
|
87
53
|
"is_union_type",
|
|
88
|
-
"
|
|
89
|
-
"strEnum",
|
|
54
|
+
"list_factory",
|
|
90
55
|
]
|
|
91
56
|
|
|
92
57
|
if TYPE_CHECKING:
|
|
@@ -97,8 +62,8 @@ def is_union(tp: type[Any] | None) -> bool:
|
|
|
97
62
|
return tp is Union or tp is types.UnionType # type: ignore[comparison-overlap]
|
|
98
63
|
|
|
99
64
|
|
|
100
|
-
# ErrorState is either a string containing an error message, a
|
|
101
|
-
#
|
|
65
|
+
# ErrorState is either a string containing an error message, a caught Exception, or a tuple containing a message and
|
|
66
|
+
# an HTTP status code
|
|
102
67
|
ErrorState = Union[str, Exception, tuple[str, Union[int, HTTPStatus]]]
|
|
103
68
|
# An ErrorDict should have the following keys:
|
|
104
69
|
# error: str # A message describing the error
|
orchestrator/utils/errors.py
CHANGED
|
@@ -18,7 +18,8 @@ from typing import Any, cast
|
|
|
18
18
|
import structlog
|
|
19
19
|
|
|
20
20
|
from nwastdlib.ex import show_ex
|
|
21
|
-
from orchestrator.types import
|
|
21
|
+
from orchestrator.types import ErrorDict
|
|
22
|
+
from pydantic_forms.types import JSON
|
|
22
23
|
|
|
23
24
|
logger = structlog.get_logger(__name__)
|
|
24
25
|
|
orchestrator/utils/state.py
CHANGED
|
@@ -19,7 +19,7 @@ from typing import Any, cast, get_args
|
|
|
19
19
|
from uuid import UUID
|
|
20
20
|
|
|
21
21
|
from orchestrator.domain.base import SubscriptionModel
|
|
22
|
-
from orchestrator.types import
|
|
22
|
+
from orchestrator.types import StepFunc, is_list_type, is_optional_type
|
|
23
23
|
from orchestrator.utils.functional import logger
|
|
24
24
|
from pydantic_forms.types import (
|
|
25
25
|
FormGenerator,
|
|
@@ -27,6 +27,7 @@ from pydantic_forms.types import (
|
|
|
27
27
|
InputFormGenerator,
|
|
28
28
|
InputStepFunc,
|
|
29
29
|
SimpleInputFormGenerator,
|
|
30
|
+
State,
|
|
30
31
|
StateInputStepFunc,
|
|
31
32
|
)
|
|
32
33
|
|
orchestrator/workflow.py
CHANGED
|
@@ -43,7 +43,7 @@ from orchestrator.config.assignee import Assignee
|
|
|
43
43
|
from orchestrator.db import db, transactional
|
|
44
44
|
from orchestrator.services.settings import get_engine_settings
|
|
45
45
|
from orchestrator.targets import Target
|
|
46
|
-
from orchestrator.types import ErrorDict,
|
|
46
|
+
from orchestrator.types import ErrorDict, StepFunc
|
|
47
47
|
from orchestrator.utils.docs import make_workflow_doc
|
|
48
48
|
from orchestrator.utils.errors import error_state_to_dict
|
|
49
49
|
from orchestrator.utils.state import form_inject_args, inject_args
|
|
@@ -52,9 +52,11 @@ from pydantic_forms.types import (
|
|
|
52
52
|
FormGenerator,
|
|
53
53
|
InputFormGenerator,
|
|
54
54
|
InputStepFunc,
|
|
55
|
+
State,
|
|
55
56
|
StateInputFormGenerator,
|
|
56
57
|
StateInputStepFunc,
|
|
57
58
|
StateSimpleInputFormGenerator,
|
|
59
|
+
strEnum,
|
|
58
60
|
)
|
|
59
61
|
|
|
60
62
|
logger = structlog.get_logger(__name__)
|
|
@@ -15,12 +15,11 @@ from orchestrator.forms import SubmitFormPage
|
|
|
15
15
|
from orchestrator.services import subscriptions
|
|
16
16
|
from orchestrator.settings import app_settings
|
|
17
17
|
from orchestrator.targets import Target
|
|
18
|
-
from orchestrator.types import UUIDstr
|
|
19
18
|
from orchestrator.utils.json import to_serializable
|
|
20
19
|
from orchestrator.workflow import StepList, conditional, done, init, step, workflow
|
|
21
20
|
from orchestrator.workflows.steps import cache_domain_models, store_process_subscription
|
|
22
21
|
from orchestrator.workflows.utils import wrap_modify_initial_input_form
|
|
23
|
-
from pydantic_forms.types import FormGenerator, State
|
|
22
|
+
from pydantic_forms.types import FormGenerator, State, UUIDstr
|
|
24
23
|
from pydantic_forms.validators import LongText
|
|
25
24
|
|
|
26
25
|
|
orchestrator/workflows/steps.py
CHANGED
|
@@ -23,11 +23,12 @@ from orchestrator.domain.base import ProductBlockModel, SubscriptionModel
|
|
|
23
23
|
from orchestrator.services.settings import reset_search_index
|
|
24
24
|
from orchestrator.services.subscriptions import build_extended_domain_model, get_subscription
|
|
25
25
|
from orchestrator.targets import Target
|
|
26
|
-
from orchestrator.types import
|
|
26
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
27
27
|
from orchestrator.utils.json import to_serializable
|
|
28
28
|
from orchestrator.utils.redis import delete_from_redis, to_redis
|
|
29
29
|
from orchestrator.websocket import sync_invalidate_subscription_cache
|
|
30
30
|
from orchestrator.workflow import Step, step
|
|
31
|
+
from pydantic_forms.types import State, UUIDstr
|
|
31
32
|
|
|
32
33
|
logger = structlog.get_logger(__name__)
|
|
33
34
|
|
|
@@ -19,9 +19,9 @@ from sqlalchemy import select
|
|
|
19
19
|
from orchestrator.db import ProcessTable, db
|
|
20
20
|
from orchestrator.settings import app_settings
|
|
21
21
|
from orchestrator.targets import Target
|
|
22
|
-
from orchestrator.types import State
|
|
23
22
|
from orchestrator.utils.datetime import nowtz
|
|
24
23
|
from orchestrator.workflow import ProcessStatus, StepList, done, init, step, workflow
|
|
24
|
+
from pydantic_forms.types import State
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
@step("Clean up completed tasks older than TASK_LOG_RETENTION_DAYS")
|
|
@@ -18,8 +18,8 @@ from sqlalchemy import select
|
|
|
18
18
|
from orchestrator.db import ProcessTable, db
|
|
19
19
|
from orchestrator.services import processes
|
|
20
20
|
from orchestrator.targets import Target
|
|
21
|
-
from orchestrator.types import State, UUIDstr
|
|
22
21
|
from orchestrator.workflow import ProcessStatus, StepList, done, init, step, workflow
|
|
22
|
+
from pydantic_forms.types import State, UUIDstr
|
|
23
23
|
|
|
24
24
|
logger = structlog.get_logger(__name__)
|
|
25
25
|
|
|
@@ -26,8 +26,8 @@ from orchestrator.services.workflows import (
|
|
|
26
26
|
start_validation_workflow_for_workflows,
|
|
27
27
|
)
|
|
28
28
|
from orchestrator.targets import Target
|
|
29
|
-
from orchestrator.types import FormGenerator, State
|
|
30
29
|
from orchestrator.workflow import StepList, done, init, step, workflow
|
|
30
|
+
from pydantic_forms.types import FormGenerator, State
|
|
31
31
|
|
|
32
32
|
logger = structlog.get_logger(__name__)
|
|
33
33
|
|
|
@@ -27,10 +27,10 @@ from orchestrator.services.products import get_products
|
|
|
27
27
|
from orchestrator.services.translations import generate_translations
|
|
28
28
|
from orchestrator.services.workflows import get_workflow_by_name, get_workflows
|
|
29
29
|
from orchestrator.targets import Target
|
|
30
|
-
from orchestrator.types import State
|
|
31
30
|
from orchestrator.utils.errors import ProcessFailureError
|
|
32
31
|
from orchestrator.utils.fixed_inputs import fixed_input_configuration as fi_configuration
|
|
33
32
|
from orchestrator.workflow import StepList, done, init, step, workflow
|
|
33
|
+
from pydantic_forms.types import State
|
|
34
34
|
|
|
35
35
|
# Since these errors are probably programming failures we should not throw AssertionErrors
|
|
36
36
|
|
orchestrator/workflows/utils.py
CHANGED
|
@@ -25,7 +25,7 @@ from orchestrator.forms.validators import ProductId
|
|
|
25
25
|
from orchestrator.services import subscriptions
|
|
26
26
|
from orchestrator.settings import app_settings
|
|
27
27
|
from orchestrator.targets import Target
|
|
28
|
-
from orchestrator.types import
|
|
28
|
+
from orchestrator.types import SubscriptionLifecycle
|
|
29
29
|
from orchestrator.utils.errors import StaleDataError
|
|
30
30
|
from orchestrator.utils.redis import caching_models_enabled
|
|
31
31
|
from orchestrator.utils.state import form_inject_args
|
|
@@ -41,7 +41,7 @@ from orchestrator.workflows.steps import (
|
|
|
41
41
|
unsync_unchecked,
|
|
42
42
|
)
|
|
43
43
|
from pydantic_forms.core import FormPage
|
|
44
|
-
from pydantic_forms.types import FormGenerator, InputForm, InputStepFunc, StateInputStepFunc
|
|
44
|
+
from pydantic_forms.types import FormGenerator, InputForm, InputStepFunc, State, StateInputStepFunc
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
def _generate_new_subscription_form(_workflow_target: str, workflow_name: str) -> InputForm:
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
orchestrator/__init__.py,sha256=
|
|
1
|
+
orchestrator/__init__.py,sha256=PnH1xL8hwv-BN9lOpIIDdCKTzsJ5VLGvZxYxQU39j_U,1058
|
|
2
2
|
orchestrator/app.py,sha256=8GMzoHjdR0bkgRBCejiG8nIUjeo43f12I3WNNZ89pKE,11659
|
|
3
3
|
orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
|
|
4
4
|
orchestrator/log_config.py,sha256=1tPRX5q65e57a6a_zEii_PFK8SzWT0mnA5w2sKg4hh8,1853
|
|
5
5
|
orchestrator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
orchestrator/security.py,sha256=_W_wFkjmlwVwwHRsql69iMoqRvDCiaA63i5rvRHSrZ0,2414
|
|
7
|
-
orchestrator/settings.py,sha256=
|
|
8
|
-
orchestrator/targets.py,sha256=
|
|
9
|
-
orchestrator/types.py,sha256=
|
|
7
|
+
orchestrator/settings.py,sha256=9T0faNp2TQTLlI22RCj22EZzj8IFoqWvsapvOnUgbRA,3619
|
|
8
|
+
orchestrator/targets.py,sha256=q_IMCdVUUYWcyKHqyls38fJPveJDBNfSzMKj_U2hLsk,768
|
|
9
|
+
orchestrator/types.py,sha256=4vDeL5teRnugXoet3O2dMv8WwTsEyimrIfzagx9jQRo,15451
|
|
10
10
|
orchestrator/version.py,sha256=b58e08lxs47wUNXv0jXFO_ykpksmytuzEXD4La4W-NQ,1366
|
|
11
|
-
orchestrator/workflow.py,sha256=
|
|
11
|
+
orchestrator/workflow.py,sha256=sdHAuxOsMNzHf3xum-9Lm9FE0OfCm2VcauroOTYn1fw,43051
|
|
12
12
|
orchestrator/api/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
13
13
|
orchestrator/api/error_handling.py,sha256=YrPCxSa-DSa9KwqIMlXI-KGBGnbGIW5ukOPiikUH9E4,1502
|
|
14
14
|
orchestrator/api/helpers.py,sha256=s0QRHYw8AvEmlkmRhuEzz9xixaZKUF3YuPzUVHkcoXk,6933
|
|
@@ -17,7 +17,7 @@ orchestrator/api/api_v1/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n
|
|
|
17
17
|
orchestrator/api/api_v1/api.py,sha256=Q_Yh9w_SBoyx06jV_kf6leGFrAMXoGjF8UikIAie_us,2858
|
|
18
18
|
orchestrator/api/api_v1/endpoints/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
19
19
|
orchestrator/api/api_v1/endpoints/health.py,sha256=iaxs1XX1_250_gKNsspuULCV2GEMBjbtjsmfQTOvMAI,1284
|
|
20
|
-
orchestrator/api/api_v1/endpoints/processes.py,sha256=
|
|
20
|
+
orchestrator/api/api_v1/endpoints/processes.py,sha256=VPNqzogjgK9Y-70b9r-tqPSJD-6PyMj9kOrmhPC__lc,12763
|
|
21
21
|
orchestrator/api/api_v1/endpoints/product_blocks.py,sha256=kZ6ywIOsS_S2qGq7RvZ4KzjvaS1LmwbGWR37AKRvWOw,2146
|
|
22
22
|
orchestrator/api/api_v1/endpoints/products.py,sha256=BfFtwu9dZXEQbtKxYj9icc73GKGvAGMR5ytyf41nQlQ,3081
|
|
23
23
|
orchestrator/api/api_v1/endpoints/resource_types.py,sha256=gGyuaDyOD0TAVoeFGaGmjDGnQ8eQQArOxKrrk4MaDzA,2145
|
|
@@ -77,30 +77,30 @@ orchestrator/cli/generator/templates/additional_modify_steps.j2,sha256=jwle7hIvd
|
|
|
77
77
|
orchestrator/cli/generator/templates/additional_terminate_steps.j2,sha256=jwle7hIvd-EYbnecVFmG0n-6Jpr4DearM0era8AvGYM,25
|
|
78
78
|
orchestrator/cli/generator/templates/constrained_int_definitions.j2,sha256=59FKIWOeXrO0nblLmbhaFXKb4UQesQ8zFUZ1jDCp9Vk,282
|
|
79
79
|
orchestrator/cli/generator/templates/create_data_head.j2,sha256=ArP9TUsbobXF4CIpckcaIYos-dgGmPeL-n7SQATvSiE,361
|
|
80
|
-
orchestrator/cli/generator/templates/create_product.j2,sha256=
|
|
80
|
+
orchestrator/cli/generator/templates/create_product.j2,sha256=ZPzY1clJ7in_UlBJf0TS94-KYuwN71kGjJn_6eM1Bo4,4838
|
|
81
81
|
orchestrator/cli/generator/templates/enums.j2,sha256=pmx7_DeoE4X9u83_In18C97XqZP_YwETiw54_E33p1A,298
|
|
82
82
|
orchestrator/cli/generator/templates/lazy_workflow_instance.j2,sha256=BYB6LwE19OarY7_7Ovej5rqppZWtjiDkG7TDK5dYU7Y,523
|
|
83
83
|
orchestrator/cli/generator/templates/list_definitions.j2,sha256=XS-F5XXy4HOdsZ-xahprwxfhU0UaiF4VeopkIxfoado,277
|
|
84
84
|
orchestrator/cli/generator/templates/macros.j2,sha256=fEODRym4gLfL40w9OelXFMDtAjtzmN5nccWDk86oTNI,904
|
|
85
|
-
orchestrator/cli/generator/templates/modify_product.j2,sha256=
|
|
85
|
+
orchestrator/cli/generator/templates/modify_product.j2,sha256=we2TqyHD5L8dprnOitmwBT8MU7PzVG8iMrzdxXquDfM,4751
|
|
86
86
|
orchestrator/cli/generator/templates/new_product_migration.j2,sha256=d67I9haNkKdzWzNT0f1S6-UhG86fOWEohF0Al7NmXmA,3023
|
|
87
87
|
orchestrator/cli/generator/templates/product.j2,sha256=gcN1poWRuGWbsLrQv0Z8SXO6MGuXBHBr33UvQtqsF8E,1241
|
|
88
88
|
orchestrator/cli/generator/templates/product_block.j2,sha256=X5ynyBG39UiYekPHms7IkSHmxq2j-2OrhAYsFaRqktU,2454
|
|
89
89
|
orchestrator/cli/generator/templates/shared_forms.j2,sha256=tXbauuMMExwHLYLJVkmAJ74SSFriXlwpOyd04jwWE0k,545
|
|
90
|
-
orchestrator/cli/generator/templates/shared_workflows.j2,sha256=
|
|
90
|
+
orchestrator/cli/generator/templates/shared_workflows.j2,sha256=Y2bu1wP4fmoBXwzBecXqz2O-_9ckTGrGTKRfXux-2H0,1301
|
|
91
91
|
orchestrator/cli/generator/templates/subscription_model_registry.j2,sha256=7IJF9jX6tJMAuCOYQnfTjsgK0eaF0bFzUuLJImsdl4s,291
|
|
92
|
-
orchestrator/cli/generator/templates/terminate_product.j2,sha256=
|
|
93
|
-
orchestrator/cli/generator/templates/test_create_workflow.j2,sha256=
|
|
94
|
-
orchestrator/cli/generator/templates/test_modify_workflow.j2,sha256=
|
|
92
|
+
orchestrator/cli/generator/templates/terminate_product.j2,sha256=sPqZlMA-Cj-P6RumCMAKwGtvLljlaZfQ1z-Vx3z6eU8,1885
|
|
93
|
+
orchestrator/cli/generator/templates/test_create_workflow.j2,sha256=CnVRdfua1EqXvZx-UY0tq1b3Vmgtq3muQ3nuzHevnT0,1801
|
|
94
|
+
orchestrator/cli/generator/templates/test_modify_workflow.j2,sha256=N91sRRIWQhVB2jcyBAXungoWNb9b1wbSNfsTGq1NwXo,1676
|
|
95
95
|
orchestrator/cli/generator/templates/test_product_type.j2,sha256=1fRF3HbhQk3BIo58KVsbnchwdQFKM8As7atm9ULjf8s,1860
|
|
96
|
-
orchestrator/cli/generator/templates/test_terminate_workflow.j2,sha256=
|
|
96
|
+
orchestrator/cli/generator/templates/test_terminate_workflow.j2,sha256=Dwgjf_81drED3z3hNdS3F4Gtsg9VJGStj3VSvD2YuwA,1518
|
|
97
97
|
orchestrator/cli/generator/templates/test_validate_workflow.j2,sha256=T27fNTOqgbKosI_ZqE1Gdhd8gJCACEVjy2oNrSK6908,985
|
|
98
|
-
orchestrator/cli/generator/templates/validate_product.j2,sha256=
|
|
98
|
+
orchestrator/cli/generator/templates/validate_product.j2,sha256=_gPNYS8dGOSpRm2E_nf6oxQS0AmXN7MkKm2Klz9HLek,2366
|
|
99
99
|
orchestrator/cli/helpers/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
100
100
|
orchestrator/cli/helpers/input_helpers.py,sha256=pv5GTMuIWLzBE_bKNhn1XD_gxoqB0s1ZN4cnKkIIu5I,1139
|
|
101
|
-
orchestrator/cli/helpers/print_helpers.py,sha256=
|
|
101
|
+
orchestrator/cli/helpers/print_helpers.py,sha256=b3ePg6HfBLKPYBBVr5XOA__JnFEMI5HBjbjov3CP8Po,859
|
|
102
102
|
orchestrator/config/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
103
|
-
orchestrator/config/assignee.py,sha256=
|
|
103
|
+
orchestrator/config/assignee.py,sha256=jxMIY6iCLjlbfxwhp-UhImunpE32C9sAR7FSpMD-LvU,772
|
|
104
104
|
orchestrator/db/__init__.py,sha256=6yC3HSSIgHgfLvGpYE-j8ENr8A2urJxjxUEiZ0C7JJY,3454
|
|
105
105
|
orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,10269
|
|
106
106
|
orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
|
|
@@ -128,19 +128,21 @@ orchestrator/db/sorting/sorting.py,sha256=WpwImCDRKiOp4Tr54vovWpHkoJIov8SNQNPods
|
|
|
128
128
|
orchestrator/db/sorting/subscription.py,sha256=uepBMyfRFLZz5yoYK4VK3mdRBvO1Gc-6jSQXQ41fR-8,1441
|
|
129
129
|
orchestrator/db/sorting/workflow.py,sha256=6-JceMyB99M994Re58E0MX5uhlpnTW5OJCxmXopEfRU,576
|
|
130
130
|
orchestrator/devtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
|
-
orchestrator/devtools/populator.py,sha256=
|
|
131
|
+
orchestrator/devtools/populator.py,sha256=MeO7qv7YskY5i5p1Ko9yluplY520GFq0HjFlz-WXMio,19680
|
|
132
132
|
orchestrator/devtools/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
|
-
orchestrator/devtools/scripts/migrate_20.py,sha256=
|
|
133
|
+
orchestrator/devtools/scripts/migrate_20.py,sha256=8-qLiWfjYctu2kNl5MHtZvfeCdUs0YzRjepy4VYOUkc,4891
|
|
134
|
+
orchestrator/devtools/scripts/migrate_30.py,sha256=pRnJQFvmliwTLgbbDSUGyS9sCWqQcTms-g_3yfUO5vQ,3030
|
|
135
|
+
orchestrator/devtools/scripts/shared.py,sha256=ZnGb2nA62gjG0DSEpXcnVq1xIjdkadUXJIZsF5O3tEc,3775
|
|
134
136
|
orchestrator/distlock/__init__.py,sha256=0uCW-4efWGbU4RXSb7t3U1yA2T8z77OGgb9SDNebdmA,2491
|
|
135
137
|
orchestrator/distlock/distlock_manager.py,sha256=VVfBpOnk574JncfHwS6sPavKwPxCgAneDqZNT8fVWNw,2508
|
|
136
138
|
orchestrator/distlock/managers/__init__.py,sha256=ImIkNsrXcyE7-NgRWqEhUXUuUzda9KwcDkhebipfSdI,571
|
|
137
139
|
orchestrator/distlock/managers/memory_distlock_manager.py,sha256=HWQafcVKBF-Cka_wukZZ1GM69AWPVOpJPje3quIebQ8,3114
|
|
138
140
|
orchestrator/distlock/managers/redis_distlock_manager.py,sha256=Lk0Krw7dQD58uleAz3Eancc4La-xSCFHxB8ymg3qWf0,3271
|
|
139
141
|
orchestrator/domain/__init__.py,sha256=Rnt9XXHasAgieQiLT0JhUFRrysa9EIubvzcd5kk3Gvc,894
|
|
140
|
-
orchestrator/domain/base.py,sha256=
|
|
142
|
+
orchestrator/domain/base.py,sha256=cMBJps91vtJJPXQUk0Ejps-K6DaEdkK6GTGdvtPpDnA,61953
|
|
141
143
|
orchestrator/domain/customer_description.py,sha256=v7o6TTN4oc6bWHZU-jCT-fUYvkeYahbpXOwlKXofuI8,3360
|
|
142
144
|
orchestrator/domain/helpers.py,sha256=2j2j_7J8qvniHxxpdoEQsoVpC-llkn0tbww2eCA0K1A,989
|
|
143
|
-
orchestrator/domain/lifecycle.py,sha256=
|
|
145
|
+
orchestrator/domain/lifecycle.py,sha256=VeQwik9nNX-6bQl12G9VP4JPq6ephDV73XDXu1pfh5g,2914
|
|
144
146
|
orchestrator/forms/__init__.py,sha256=bw_1238HKy_T0gvfA5oEjJFwkALzvWU4O_VJ0xE8UyU,1168
|
|
145
147
|
orchestrator/forms/validators/__init__.py,sha256=2T7w429dQhChsAbnQDeyp2BrM_iKj6-nkNrz27RZatY,1906
|
|
146
148
|
orchestrator/forms/validators/customer_contact_list.py,sha256=61A7FpXBjWhurIAGzJcLVlZSWajm41QWgFZP-rUT_5o,1508
|
|
@@ -197,7 +199,7 @@ orchestrator/graphql/utils/to_graphql_result_page.py,sha256=8ObkJP8reVf-TQOQVPKv
|
|
|
197
199
|
orchestrator/migrations/README,sha256=heMzebYwlGhnE8_4CWJ4LS74WoEZjBy-S-mIJRxAEKI,39
|
|
198
200
|
orchestrator/migrations/alembic.ini,sha256=kMoADqhGeubU8xanILNaqm4oixLy9m4ngYtdGpZcc7I,873
|
|
199
201
|
orchestrator/migrations/env.py,sha256=AwlgBPYbV2hr5rHNwlOPJ5rs-vRyfmzcWyxae0btpZ4,3382
|
|
200
|
-
orchestrator/migrations/helpers.py,sha256=
|
|
202
|
+
orchestrator/migrations/helpers.py,sha256=iGDHvFR2cHIHyG0kTnXP0XrJCAKAeG57S79GEHbtd64,43771
|
|
201
203
|
orchestrator/migrations/script.py.mako,sha256=607Zrgp-Z-m9WGLt4wewN1QDOmHeifxcePUdADkSZyM,510
|
|
202
204
|
orchestrator/migrations/templates/alembic.ini.j2,sha256=jA-QykVparwWSNt5XDP0Zk7epLOhK7D87Af-i2shJV4,905
|
|
203
205
|
orchestrator/migrations/templates/env.py.j2,sha256=RfLAQItZ56Jlzwi6LJfBo92m1-th_bdfkFKD1mwTZIE,2821
|
|
@@ -230,27 +232,27 @@ orchestrator/schedules/validate_products.py,sha256=YMr7ASSqdXM6pd6oZu0kr8mfmH8If
|
|
|
230
232
|
orchestrator/schedules/validate_subscriptions.py,sha256=YYcU2iGf8Ga_s577kgpKdhQV4p7wCEHGYvUf8FCvBvQ,2022
|
|
231
233
|
orchestrator/schemas/__init__.py,sha256=YDyZ0YBvzB4ML9oDBCBPGnBvf680zFFgUzg7X0tYBRY,2326
|
|
232
234
|
orchestrator/schemas/base.py,sha256=Vc444LetsINLRhG2SxW9Bq01hOzChPOhQWCImQTr-As,930
|
|
233
|
-
orchestrator/schemas/engine_settings.py,sha256=
|
|
235
|
+
orchestrator/schemas/engine_settings.py,sha256=8cgJHPigu2TjYG-t3uRrBLFjcVJGKVPpAnIKFs29mL4,1288
|
|
234
236
|
orchestrator/schemas/fixed_input.py,sha256=Rth3hT5K7zYuQr1bUY_NJRzb03xEZuT1p6EvYXVNE54,1214
|
|
235
237
|
orchestrator/schemas/problem_detail.py,sha256=DxiUhWv6EVXLZgdKFv0EYVnCgtkDj7xteDCR0q2f5yw,802
|
|
236
238
|
orchestrator/schemas/process.py,sha256=NgS1eBRtO2GUCRNsvbvYyjNkR2aBdH-kwcsR_y8DfNU,2354
|
|
237
239
|
orchestrator/schemas/product.py,sha256=MhMCh058ZuS2RJq-wSmxIPUNlhQexxXIx3DSz2OmOh4,1570
|
|
238
240
|
orchestrator/schemas/product_block.py,sha256=kCqvm6qadHpegMr9aWI_fYX-T7mS-5S-ldPxnGQZg7M,1519
|
|
239
241
|
orchestrator/schemas/resource_type.py,sha256=VDju4XywcDDLxdpbWU62RTvR9QF8x_GRrpTlN_NE8uI,1064
|
|
240
|
-
orchestrator/schemas/subscription.py,sha256=
|
|
242
|
+
orchestrator/schemas/subscription.py,sha256=1SKrhw25-HtTp39lM05R9gynr9GprMxQol4GjnXPEwM,3415
|
|
241
243
|
orchestrator/schemas/subscription_descriptions.py,sha256=Ft_jw1U0bf9Z0U8O4OWfLlcl0mXCVT_qYVagBP3GbIQ,1262
|
|
242
244
|
orchestrator/schemas/workflow.py,sha256=w-CaRPp9AAddhnd8o_0jPaey1Vnnh-s-A5s5kWlR2pI,1977
|
|
243
245
|
orchestrator/services/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
244
|
-
orchestrator/services/celery.py,sha256=
|
|
246
|
+
orchestrator/services/celery.py,sha256=aiWw7ps5a1f6dPTLzJG67JmwqpKSBhsD7ZiBKhbWDPk,4636
|
|
245
247
|
orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
|
|
246
248
|
orchestrator/services/process_broadcast_thread.py,sha256=D44YbjF8mRqGuznkRUV4SoRn1J0lfy_x1H508GnSVlU,4649
|
|
247
|
-
orchestrator/services/processes.py,sha256=
|
|
248
|
-
orchestrator/services/products.py,sha256=
|
|
249
|
+
orchestrator/services/processes.py,sha256=466d7WgRwh6qNxNjDZRMvL0QFiQYEU_WG3D2sI4REPQ,27491
|
|
250
|
+
orchestrator/services/products.py,sha256=w6b6sSA3MstmbM_YN8xWEvkb_YnuCQFph48wYU3_Lx4,1935
|
|
249
251
|
orchestrator/services/resource_types.py,sha256=_QBy_JOW_X3aSTqH0CuLrq4zBJL0p7Q-UDJUcuK2_qc,884
|
|
250
252
|
orchestrator/services/settings.py,sha256=u-834F4KWloXS8zi7R9mp-D3cjl-rbVjKJRU35IqhXo,2723
|
|
251
253
|
orchestrator/services/subscription_relations.py,sha256=9C126TUfFvyBe7y4x007kH_dvxJ9pZ1zSnaWeH6HC5k,12261
|
|
252
|
-
orchestrator/services/subscriptions.py,sha256=
|
|
253
|
-
orchestrator/services/tasks.py,sha256=
|
|
254
|
+
orchestrator/services/subscriptions.py,sha256=yEeZbgXqrfAgo-l0Tz_NtNJHG5-CkXa8-l76gZ_aw6A,26209
|
|
255
|
+
orchestrator/services/tasks.py,sha256=n-J8At0R4ZuGs7MqGFGVxLs06EbPIlsM2DCyAbsZVKw,6318
|
|
254
256
|
orchestrator/services/translations.py,sha256=GyP8soUFGej8AS8uulBsk10CCK6Kwfjv9AHMFm3ElQY,1713
|
|
255
257
|
orchestrator/services/workflows.py,sha256=DStBiQQdPV3zEg1EgPDlk85T6kkBc9AKbiEpxrQG6dI,3170
|
|
256
258
|
orchestrator/utils/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
@@ -259,7 +261,7 @@ orchestrator/utils/datetime.py,sha256=a1WQ_yvu7MA0TiaRpC5avwbOSFdrj4eMrV4a7I2sD5
|
|
|
259
261
|
orchestrator/utils/deprecation_logger.py,sha256=oqju7ecJcB_r7cMnldaOAA79QUZYS_h69IkDrFV9nAg,875
|
|
260
262
|
orchestrator/utils/docs.py,sha256=GbyD61oKn1yVYaphUKHCBvrWEWJDTQfRc_VEbVb-zgU,6172
|
|
261
263
|
orchestrator/utils/enrich_process.py,sha256=o_QSy5Q4wn1SMHhzVOw6bp7uhDXr7GhAIWRDDMWUVO4,4699
|
|
262
|
-
orchestrator/utils/errors.py,sha256=
|
|
264
|
+
orchestrator/utils/errors.py,sha256=4dJ3BvAEunG5w-VUtc8346zzOTUv_102qeH2YFdJhPs,4645
|
|
263
265
|
orchestrator/utils/fixed_inputs.py,sha256=pnL6I_19VMp_Bny8SYjSzVFNvTFDyeCxFFOWGhTnDiQ,2665
|
|
264
266
|
orchestrator/utils/functional.py,sha256=w_iqB8zppLMnUaioyRjsZAAYC4y5kLw3zih5NKkEFoM,8063
|
|
265
267
|
orchestrator/utils/get_subscription_dict.py,sha256=fkgDM54hn5YGUP9_2MOcJApJK1Z6c_Rl6sJERsrOy6M,686
|
|
@@ -268,7 +270,7 @@ orchestrator/utils/helpers.py,sha256=NjUF3IvWdnLulliP8-JQvGGGpHrh0vs0Vm092ynw-ss
|
|
|
268
270
|
orchestrator/utils/json.py,sha256=7386sdqkrKYyy4sbn5NscwctH_v1hLyw5172P__rU3g,8341
|
|
269
271
|
orchestrator/utils/redis.py,sha256=fvALD_Yt4lZuIfgCLGJwwQSElgKOLHrxH_RdhSXkeZw,7222
|
|
270
272
|
orchestrator/utils/search_query.py,sha256=ji5LHtrzohGz6b1IG41cnPdpWXzLEzz4SGWgHly_yfU,16205
|
|
271
|
-
orchestrator/utils/state.py,sha256=
|
|
273
|
+
orchestrator/utils/state.py,sha256=DLHBnpEjhHQNeBGYV6H6geqZclToeMuWwqU26TVy220,13185
|
|
272
274
|
orchestrator/utils/strings.py,sha256=N0gWjmQaMjE9_99VtRvRaU8IBLTKMgBKSXcTZ9TpWAg,1077
|
|
273
275
|
orchestrator/utils/validate_data_version.py,sha256=3Eioy2wE2EWKSgkyMKcEKrkCAfUIAq-eb73iRcpgppw,184
|
|
274
276
|
orchestrator/websocket/__init__.py,sha256=V79jskk1z3uPIYgu0Gt6JLzuqr7NGfNeAZ-hbBqoUv4,5745
|
|
@@ -276,17 +278,17 @@ orchestrator/websocket/websocket_manager.py,sha256=Vw5GW67rP_RYoPUhfPp9Fi8_M9E9S
|
|
|
276
278
|
orchestrator/websocket/managers/broadcast_websocket_manager.py,sha256=fwoSgTjkHJ2GmsLTU9dqQpAA9i8b1McPu7gLNzxtfG4,5401
|
|
277
279
|
orchestrator/websocket/managers/memory_websocket_manager.py,sha256=lF5EEx1iFMCGEkTbItTDr88NENMSaSeG1QrJ7teoPkY,3324
|
|
278
280
|
orchestrator/workflows/__init__.py,sha256=NzIGGI-8SNAwCk2YqH6sHhEWbgAY457ntDwjO15N8v4,4131
|
|
279
|
-
orchestrator/workflows/modify_note.py,sha256=
|
|
281
|
+
orchestrator/workflows/modify_note.py,sha256=FcyxUajzGeBX0O1XjXDgqNLpBHqU6Uk3iA1Vzq6gMHc,2408
|
|
280
282
|
orchestrator/workflows/removed_workflow.py,sha256=V0Da5TEdfLdZZKD38ig-MTp3_IuE7VGqzHHzvPYQmLI,909
|
|
281
|
-
orchestrator/workflows/steps.py,sha256=
|
|
282
|
-
orchestrator/workflows/utils.py,sha256=
|
|
283
|
+
orchestrator/workflows/steps.py,sha256=8va4iHbU35bUB-RVatI8dMs8LzB0Y29s9ZdmDFTv7VE,9794
|
|
284
|
+
orchestrator/workflows/utils.py,sha256=9KfhnDL88csT4fvFfUVDv8o9mHBtNUQuG3LBDms8ApQ,13525
|
|
283
285
|
orchestrator/workflows/tasks/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
284
|
-
orchestrator/workflows/tasks/cleanup_tasks_log.py,sha256=
|
|
285
|
-
orchestrator/workflows/tasks/resume_workflows.py,sha256=
|
|
286
|
-
orchestrator/workflows/tasks/validate_product_type.py,sha256=
|
|
287
|
-
orchestrator/workflows/tasks/validate_products.py,sha256=
|
|
286
|
+
orchestrator/workflows/tasks/cleanup_tasks_log.py,sha256=A3R_EQHJ75EYvzRK8ZdDcFNC9KjsSOQXLugmaNVOcWA,1616
|
|
287
|
+
orchestrator/workflows/tasks/resume_workflows.py,sha256=R0I3jxGToiqDr5mF3YjDd6dNQjQrSYb7-X7GCn7E9uc,2351
|
|
288
|
+
orchestrator/workflows/tasks/validate_product_type.py,sha256=5FwhRQyMNgtys5DM846EIIY0uXKvnSYy3Orf7lOg0DA,3176
|
|
289
|
+
orchestrator/workflows/tasks/validate_products.py,sha256=5uXX7MXMDDP13cXRvfLDNvvCp4nG7zLQBm_IYdf8BSs,8513
|
|
288
290
|
orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
|
|
289
|
-
orchestrator_core-
|
|
290
|
-
orchestrator_core-
|
|
291
|
-
orchestrator_core-
|
|
292
|
-
orchestrator_core-
|
|
291
|
+
orchestrator_core-3.0.0rc1.dist-info/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
|
|
292
|
+
orchestrator_core-3.0.0rc1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
293
|
+
orchestrator_core-3.0.0rc1.dist-info/METADATA,sha256=mtEpdm66aYgUKffNCNR3Qn5sWf4ztiYjJoK9julFcTs,4925
|
|
294
|
+
orchestrator_core-3.0.0rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|