dv-flow-mgr 0.0.1.13862522550a1__py3-none-any.whl → 0.0.1.13867752514a1__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.
- dv_flow/mgr/__init__.py +21 -1
- dv_flow/mgr/__main__.py +1 -1
- dv_flow/mgr/cmds/cmd_run.py +21 -0
- dv_flow/mgr/eval_jq.py +21 -1
- dv_flow/mgr/expr_eval.py +21 -1
- dv_flow/mgr/expr_parser.py +22 -1
- dv_flow/mgr/fileset.py +1 -1
- dv_flow/mgr/fragment_def.py +1 -1
- dv_flow/mgr/package.py +1 -1
- dv_flow/mgr/package_def.py +1 -1
- dv_flow/mgr/package_import_spec.py +1 -1
- dv_flow/mgr/param.py +21 -1
- dv_flow/mgr/param_def.py +21 -1
- dv_flow/mgr/param_ref_eval.py +21 -0
- dv_flow/mgr/pkg_rgy.py +1 -1
- dv_flow/mgr/std/create_file.py +21 -0
- dv_flow/mgr/std/exec.py +21 -0
- dv_flow/mgr/std/fileset.py +21 -1
- dv_flow/mgr/std/message.py +21 -1
- dv_flow/mgr/std/task_null.py +21 -0
- dv_flow/mgr/task.py +1 -1
- dv_flow/mgr/task_ctor.py +22 -1
- dv_flow/mgr/task_data.py +1 -1
- dv_flow/mgr/task_def.py +7 -2
- dv_flow/mgr/task_exec_data.py +21 -0
- dv_flow/mgr/task_graph_builder.py +1 -1
- dv_flow/mgr/task_graph_runner.py +1 -1
- dv_flow/mgr/task_graph_runner_local.py +1 -1
- dv_flow/mgr/task_impl_data.py +21 -1
- dv_flow/mgr/task_listener_log.py +21 -0
- dv_flow/mgr/task_memento.py +1 -1
- dv_flow/mgr/task_node.py +58 -40
- dv_flow/mgr/task_output.py +22 -1
- dv_flow/mgr/task_params_ctor.py +21 -0
- dv_flow/mgr/task_runner.py +24 -3
- dv_flow/mgr/type_def.py +21 -1
- dv_flow/mgr/util.py +1 -1
- {dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/METADATA +1 -1
- dv_flow_mgr-0.0.1.13867752514a1.dist-info/RECORD +48 -0
- dv_flow_mgr-0.0.1.13862522550a1.dist-info/RECORD +0 -48
- {dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/LICENSE +0 -0
- {dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/WHEEL +0 -0
- {dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/entry_points.txt +0 -0
- {dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/top_level.txt +0 -0
dv_flow/mgr/__init__.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* __init__.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
from .package_def import *
|
3
23
|
from .pkg_rgy import PkgRgy
|
4
24
|
from .task_graph_runner import *
|
dv_flow/mgr/__main__.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* __main__.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/cmds/cmd_run.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* cmd_run.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import asyncio
|
2
23
|
import os
|
3
24
|
import logging
|
dv_flow/mgr/eval_jq.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* eval_jq.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
import jq
|
3
23
|
|
4
24
|
def eval_jq(input, args):
|
dv_flow/mgr/expr_eval.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* expr_eval.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
import dataclasses as dc
|
3
23
|
import json
|
4
24
|
from typing import Any, Callable, Dict, List
|
dv_flow/mgr/expr_parser.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* expr_parser.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import dataclasses as dc
|
2
23
|
import enum
|
3
24
|
import ply.lex as lex
|
@@ -236,4 +257,4 @@ class ExprParser(object):
|
|
236
257
|
|
237
258
|
def parse(self, input):
|
238
259
|
return self.parser.parse(input, lexer=self.lexer)
|
239
|
-
|
260
|
+
|
dv_flow/mgr/fileset.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* fileset.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/fragment_def.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* fragment_def.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/package.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* package.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/package_def.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* package_def.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* package_import_spec.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/param.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* param.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
from pydantic import BaseModel
|
3
23
|
import pydantic.dataclasses as pdc
|
4
24
|
from typing import Any, List, Union
|
dv_flow/mgr/param_def.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* param_def.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
from typing import Any, List, Union
|
3
23
|
from pydantic import BaseModel, Field
|
4
24
|
|
dv_flow/mgr/param_ref_eval.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* param_ref_eval.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import dataclasses as dc
|
2
23
|
import json
|
3
24
|
from .expr_eval import ExprEval
|
dv_flow/mgr/pkg_rgy.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* pkg_rgy.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/std/create_file.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* create_file.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import os
|
2
23
|
import hashlib
|
3
24
|
import logging
|
dv_flow/mgr/std/exec.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* exec.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import asyncio
|
2
23
|
import logging
|
3
24
|
from dv_flow.mgr import TaskDataResult
|
dv_flow/mgr/std/fileset.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* fileset.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
import os
|
3
23
|
import fnmatch
|
4
24
|
import glob
|
dv_flow/mgr/std/message.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* message.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
from dv_flow.mgr import Task, TaskDataResult
|
3
23
|
|
4
24
|
async def Message(runner, input) -> TaskDataResult:
|
dv_flow/mgr/std/task_null.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_null_params.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
from pydantic import BaseModel
|
2
23
|
from ..task_data import TaskDataResult
|
3
24
|
|
dv_flow/mgr/task.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/task_ctor.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_ctor.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import os
|
2
23
|
import json
|
3
24
|
import dataclasses as dc
|
@@ -40,4 +61,4 @@ class TaskCtor(object):
|
|
40
61
|
|
41
62
|
def applyParams(self, params):
|
42
63
|
if self.uses is not None:
|
43
|
-
self.uses.applyParams(params)
|
64
|
+
self.uses.applyParams(params)
|
dv_flow/mgr/task_data.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task_data.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/task_def.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task_def.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
@@ -30,6 +30,11 @@ from .task_output import TaskOutput
|
|
30
30
|
class TaskSpec(object):
|
31
31
|
name : str
|
32
32
|
|
33
|
+
@dc.dataclass
|
34
|
+
class NeedSpec(object):
|
35
|
+
name : str
|
36
|
+
block : bool = False
|
37
|
+
|
33
38
|
class TaskDef(BaseModel):
|
34
39
|
"""Holds definition information (ie the YAML view) for a task"""
|
35
40
|
name : str
|
@@ -39,7 +44,7 @@ class TaskDef(BaseModel):
|
|
39
44
|
pytask : str = dc.Field(default=None)
|
40
45
|
desc : str = dc.Field(default="")
|
41
46
|
doc : str = dc.Field(default="")
|
42
|
-
needs : List[Union[str,TaskSpec]] = dc.Field(default_factory=list, alias="needs")
|
47
|
+
needs : List[Union[str,NeedSpec,TaskSpec]] = dc.Field(default_factory=list, alias="needs")
|
43
48
|
params: Dict[str,Union[str,list,ParamDef]] = dc.Field(default_factory=dict, alias="with")
|
44
49
|
passthrough: bool = dc.Field(default=False)
|
45
50
|
consumes : List[Any] = dc.Field(default_factory=list)
|
dv_flow/mgr/task_exec_data.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_exec_data.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import pydantic.dataclasses as dc
|
2
23
|
from pydantic import BaseModel
|
3
24
|
from typing import Any, Dict, List
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task_graph_builder.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/task_graph_runner.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task_graph_runner.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task_graph_runner_local.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/task_impl_data.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_impl_data.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
from pydantic import BaseModel
|
3
23
|
from typing import Any, ClassVar, Dict, Set, List, Tuple
|
4
24
|
|
dv_flow/mgr/task_listener_log.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_listener_log.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import dataclasses as dc
|
2
23
|
from datetime import datetime
|
3
24
|
from rich.console import Console
|
dv_flow/mgr/task_memento.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* task_memento.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
dv_flow/mgr/task_node.py
CHANGED
@@ -1,10 +1,31 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_node.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import os
|
2
23
|
import sys
|
3
24
|
import dataclasses as dc
|
4
25
|
import pydantic.dataclasses as pdc
|
5
26
|
import logging
|
6
27
|
import toposort
|
7
|
-
from typing import Any, Callable, ClassVar, Dict, List
|
28
|
+
from typing import Any, Callable, ClassVar, Dict, List, Tuple
|
8
29
|
from .task_data import TaskDataInput, TaskDataOutput, TaskDataResult
|
9
30
|
from .task_params_ctor import TaskParamsCtor
|
10
31
|
from .param_ref_eval import ParamRefEval
|
@@ -25,7 +46,7 @@ class TaskNode(object):
|
|
25
46
|
changed : bool = False
|
26
47
|
passthrough : bool = False
|
27
48
|
consumes : List[Any] = dc.field(default_factory=list)
|
28
|
-
needs : List['TaskNode'] = dc.field(default_factory=list)
|
49
|
+
needs : List[Tuple['TaskNode',bool]] = dc.field(default_factory=list)
|
29
50
|
rundir : str = dc.field(default=None)
|
30
51
|
output : TaskDataOutput = dc.field(default=None)
|
31
52
|
result : TaskDataResult = dc.field(default=None)
|
@@ -37,6 +58,10 @@ class TaskNode(object):
|
|
37
58
|
def __post_init__(self):
|
38
59
|
if self.needs is None:
|
39
60
|
self.needs = []
|
61
|
+
else:
|
62
|
+
for i,need in enumerate(self.needs):
|
63
|
+
if not isinstance(need, tuple):
|
64
|
+
self.needs[i] = (need, False)
|
40
65
|
|
41
66
|
async def do_run(self,
|
42
67
|
runner,
|
@@ -44,7 +69,7 @@ class TaskNode(object):
|
|
44
69
|
memento : Any = None) -> 'TaskDataResult':
|
45
70
|
self._log.debug("--> do_run: %s" % self.name)
|
46
71
|
changed = False
|
47
|
-
for dep in self.needs:
|
72
|
+
for dep,_ in self.needs:
|
48
73
|
changed |= dep.changed
|
49
74
|
|
50
75
|
self.rundir = rundir
|
@@ -52,22 +77,30 @@ class TaskNode(object):
|
|
52
77
|
# TODO: Form dep-map from inputs
|
53
78
|
|
54
79
|
dep_m = {}
|
55
|
-
for need in self.needs:
|
80
|
+
for need,block in self.needs:
|
56
81
|
self._log.debug("dep %s dep_m: %s" % (need.name, str(dep_m)))
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
82
|
+
if not block:
|
83
|
+
for subdep in need.output.dep_m.keys():
|
84
|
+
if subdep not in dep_m.keys():
|
85
|
+
dep_m[subdep] = []
|
86
|
+
for dep in need.output.dep_m[subdep]:
|
87
|
+
if dep not in dep_m[subdep]:
|
88
|
+
dep_m[subdep].append(dep)
|
61
89
|
self._log.debug("input dep_m: %s %s" % (self.name, str(dep_m)))
|
62
90
|
|
63
91
|
sorted = toposort.toposort(dep_m)
|
64
92
|
|
65
93
|
in_params_m = {}
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
94
|
+
added_srcs = set()
|
95
|
+
for need,block in self.needs:
|
96
|
+
if not block:
|
97
|
+
for p in need.output.output:
|
98
|
+
# Avoid adding parameters from a single task more than once
|
99
|
+
if p.src not in added_srcs:
|
100
|
+
added_srcs.add(p.src)
|
101
|
+
if p.src not in in_params_m.keys():
|
102
|
+
in_params_m[p.src] = []
|
103
|
+
in_params_m[p.src].append(p)
|
71
104
|
|
72
105
|
# in_params holds parameter sets ordered by dependency
|
73
106
|
in_params = []
|
@@ -129,43 +162,28 @@ class TaskNode(object):
|
|
129
162
|
|
130
163
|
# Pass-through all dependencies
|
131
164
|
# Add an entry for ourselves
|
132
|
-
dep_m[self.name] = list(need.name for need in self.needs)
|
165
|
+
dep_m[self.name] = list(need.name for need,_ in self.needs)
|
133
166
|
|
134
167
|
if self.passthrough:
|
135
168
|
self._log.debug("passthrough: %s" % self.name)
|
136
169
|
|
137
170
|
if self.consumes is None and len(self.consumes):
|
138
171
|
self._log.debug("Propagating all input parameters to output")
|
139
|
-
for need in self.needs:
|
140
|
-
|
172
|
+
for need,block in self.needs:
|
173
|
+
if not block:
|
174
|
+
output.extend(need.output.output)
|
141
175
|
else:
|
142
176
|
# Filter out parameter sets that were consumed
|
143
177
|
self._log.debug("Propagating non-consumed input parameters to output")
|
144
178
|
self._log.debug("consumes: %s" % str(self.consumes))
|
145
|
-
for need in self.needs:
|
146
|
-
|
147
|
-
|
148
|
-
self.
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
# consumed = False
|
154
|
-
# for c in self.consumes:
|
155
|
-
# match = False
|
156
|
-
# for k,v in c.items():
|
157
|
-
# self._log.debug("k,v: %s,%s" % (k,v))
|
158
|
-
# if hasattr(out, k):
|
159
|
-
# self._log.debug("has attribute: %s" % str(getattr(out ,k)))
|
160
|
-
# if getattr(out, k) == v:
|
161
|
-
# self._log.debug("match")
|
162
|
-
# match = True
|
163
|
-
# break
|
164
|
-
# if match:
|
165
|
-
# consumed = True
|
166
|
-
# break
|
167
|
-
|
168
|
-
# if not consumed:
|
179
|
+
for need,block in self.needs:
|
180
|
+
if not block:
|
181
|
+
for out in need.output.output:
|
182
|
+
if not self._matches(out, self.consumes):
|
183
|
+
self._log.debug("Propagating type %s from %s" % (
|
184
|
+
getattr(out, "type", "<unknown>"),
|
185
|
+
getattr(out, "src", "<unknown>")))
|
186
|
+
output.append(out)
|
169
187
|
else:
|
170
188
|
self._log.debug("non-passthrough: %s (only local outputs propagated)" % self.name)
|
171
189
|
# empty dependency map
|
dv_flow/mgr/task_output.py
CHANGED
@@ -1,7 +1,28 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_output.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
from pydantic import BaseModel, Field
|
2
23
|
from typing import Any, Dict, List
|
3
24
|
|
4
25
|
class TaskOutput(BaseModel):
|
5
26
|
type : str
|
6
27
|
params : List[Any] = Field(default_factory=list, alias="with")
|
7
|
-
deps : Dict[str,List[str]] = Field(default_factory=dict)
|
28
|
+
deps : Dict[str,List[str]] = Field(default_factory=dict)
|
dv_flow/mgr/task_params_ctor.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_params_ctor.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import dataclasses as dc
|
2
23
|
from typing import Any, List
|
3
24
|
|
dv_flow/mgr/task_runner.py
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
#****************************************************************************
|
2
|
+
#* task_runner.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
1
22
|
import asyncio
|
2
23
|
import json
|
3
24
|
import os
|
@@ -173,8 +194,8 @@ class TaskSetRunner(TaskRunner):
|
|
173
194
|
self._anon_tid += 1
|
174
195
|
|
175
196
|
if task not in dep_m.keys():
|
176
|
-
dep_m[task] = set(task.needs)
|
177
|
-
for need in task.needs:
|
197
|
+
dep_m[task] = set(task[0] for task in task.needs)
|
198
|
+
for need,block in task.needs:
|
178
199
|
self._buildDepMap(dep_m, need)
|
179
200
|
|
180
201
|
@dc.dataclass
|
@@ -184,7 +205,7 @@ class SingleTaskRunner(TaskRunner):
|
|
184
205
|
task : 'Task',
|
185
206
|
memento : Any = None) -> 'TaskDataResult':
|
186
207
|
changed = False
|
187
|
-
for dep in task.needs:
|
208
|
+
for dep,_ in task.needs:
|
188
209
|
changed |= dep.changed
|
189
210
|
|
190
211
|
# TODO: create an evaluator for substituting param values
|
dv_flow/mgr/type_def.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
|
1
|
+
#****************************************************************************
|
2
|
+
#* type_def.py
|
3
|
+
#*
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
|
+
#*
|
6
|
+
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
|
+
#* not use this file except in compliance with the License.
|
8
|
+
#* You may obtain a copy of the License at:
|
9
|
+
#*
|
10
|
+
#* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#*
|
12
|
+
#* Unless required by applicable law or agreed to in writing, software
|
13
|
+
#* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
#* See the License for the specific language governing permissions and
|
16
|
+
#* limitations under the License.
|
17
|
+
#*
|
18
|
+
#* Created on:
|
19
|
+
#* Author:
|
20
|
+
#*
|
21
|
+
#****************************************************************************
|
2
22
|
from typing import List, Union
|
3
23
|
from pydantic import BaseModel, Field
|
4
24
|
from .param_def import ParamDef
|
dv_flow/mgr/util.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#****************************************************************************
|
2
2
|
#* util.py
|
3
3
|
#*
|
4
|
-
#* Copyright 2023 Matthew Ballance and Contributors
|
4
|
+
#* Copyright 2023-2025 Matthew Ballance and Contributors
|
5
5
|
#*
|
6
6
|
#* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
7
7
|
#* not use this file except in compliance with the License.
|
@@ -0,0 +1,48 @@
|
|
1
|
+
dv_flow/mgr/__init__.py,sha256=63pCyRCpFj4Rdc3Lz-HKaVmFAI4BAma1OEy6dDRQeXM,1134
|
2
|
+
dv_flow/mgr/__main__.py,sha256=yH_LoWlqPc5y9fKATUyDLNVobUnjWtvcqgqcP2kc628,2213
|
3
|
+
dv_flow/mgr/eval_jq.py,sha256=bRsHtaN51qIOiZK1VJV52W0-vj5VH0nQ7XIFebZi5kI,1129
|
4
|
+
dv_flow/mgr/expr_eval.py,sha256=N_8hRIgzJK9JVqhRt8F9rc4S7AAdKHMMltafqk6KhJs,3113
|
5
|
+
dv_flow/mgr/expr_parser.py,sha256=P6u2FdSXeZbdamC3zpEnYKLcK2RULQJfSoev2Ol75fE,6543
|
6
|
+
dv_flow/mgr/fileset.py,sha256=cfKem8w5Xw4AUQkC0gyCXof2OlnoJ1t06Iw7IvMyihs,1245
|
7
|
+
dv_flow/mgr/fragment_def.py,sha256=nwxx3TW7UMa6uFMp0QEKgJdmOsO2iX89cwyD2beaGoU,1646
|
8
|
+
dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
9
|
+
dv_flow/mgr/package.py,sha256=D-jH3jqoiQG3xZIYgteFLZ4vQ0ZfkbhnW1u6wlyAJMc,1684
|
10
|
+
dv_flow/mgr/package_def.py,sha256=7WUStRgJcUY0FEKx3NYOs7hyLel0YI1lfRMutTgcblM,17193
|
11
|
+
dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
|
12
|
+
dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
|
13
|
+
dv_flow/mgr/param_def.py,sha256=ObRf289sI1xzOudjO9MzyTVuKsz3AS949XA4Deyz-kE,1549
|
14
|
+
dv_flow/mgr/param_ref_eval.py,sha256=5yH37oIX6f2qmk7GfRgNT5qZx0jm3CJFgB9lLDZZ1yQ,1981
|
15
|
+
dv_flow/mgr/parsetab.py,sha256=I-p3nC60t9jiNtPhKyl_sE92SiP96zJLnNdydcLy33g,3780
|
16
|
+
dv_flow/mgr/pkg_rgy.py,sha256=U5LgBsdCpVJ7tXjlTsn_Qjf9OoEEOjyWsYNsOecS2uQ,5337
|
17
|
+
dv_flow/mgr/task.py,sha256=BmS0wd51l4tpTrsit3-ugCB5VGnwpMJNl0dfJfHS4DQ,5981
|
18
|
+
dv_flow/mgr/task_ctor.py,sha256=YDYb5uW9Js7MnA8GqbYJljNCbeJFKGveZ2v-IJRgIa8,2221
|
19
|
+
dv_flow/mgr/task_data.py,sha256=ysawiUcbQu-ImNSgU5LsfOWlBKdfBt_8juwSacnAqAQ,11437
|
20
|
+
dv_flow/mgr/task_def.py,sha256=BJKZZE8yO_kcKaf36HnzTkhYaC0DPIya4IKlKNM4s5I,2080
|
21
|
+
dv_flow/mgr/task_exec_data.py,sha256=-mh9G2-iq6ioB7v7QrHiQAOEwd_hDKhnVf2Mb_IHRtg,1483
|
22
|
+
dv_flow/mgr/task_graph_builder.py,sha256=EYFsMZCDDHMEFWZOVSpPb7KBVE6N6XyL4KFzJVrPSPE,10106
|
23
|
+
dv_flow/mgr/task_graph_runner.py,sha256=LZ5cTXLQlcK348AxTYKqfpsFFmxA3aseGfholvQW39s,2187
|
24
|
+
dv_flow/mgr/task_graph_runner_local.py,sha256=quAxmF1go2iVhBDieksg3brAZukIvpvF-8oJ_YXiauE,4692
|
25
|
+
dv_flow/mgr/task_impl_data.py,sha256=jpO7kQ6AjYcOOfpgFIPCEYA1pQbVwFcIY_SY3Q53eGk,1163
|
26
|
+
dv_flow/mgr/task_listener_log.py,sha256=b7caUHERGkN6eT8IinBJTdZpwASUs8xAqDmtEymMKzQ,3529
|
27
|
+
dv_flow/mgr/task_memento.py,sha256=CV3d1J4ADhMpqvYPfWvUI7duSFCbLEzY41y2GZBHIhM,1101
|
28
|
+
dv_flow/mgr/task_node.py,sha256=OMw2K63HEm5Oh43uW830mEV2vRObC7B4vS44sJ2T_gA,14919
|
29
|
+
dv_flow/mgr/task_output.py,sha256=ZwyvwnYj_gHOEFAEOH3m24Xfc4Cn77hb1j7LkX8_3C4,1086
|
30
|
+
dv_flow/mgr/task_params_ctor.py,sha256=BPkbnoCtzhCxc1g8CJ6VimCcm5UAu92PXeDMhQ4lYsQ,1957
|
31
|
+
dv_flow/mgr/task_runner.py,sha256=TB4feCEItxufUyyBSwNNY3OkQ0yjSO0fUfjga0u7rsg,8790
|
32
|
+
dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
+
dv_flow/mgr/type_def.py,sha256=NDeyplKrPnWwEv4yHkhXEMK9d9j39b5MOeLB-1Mchqo,1095
|
34
|
+
dv_flow/mgr/util.py,sha256=BLp-25Ph9roqo1O3VHI5sKhwxQ0wUU7znFwcSKt0hpA,1442
|
35
|
+
dv_flow/mgr/cmds/cmd_run.py,sha256=lNMvpiyKf-Ehs0GUkzcOIoJxaXgeLKv6UFNakcm9_hw,3303
|
36
|
+
dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
|
37
|
+
dv_flow/mgr/std/create_file.py,sha256=wmn5N_mObx_wr2LPdKOVbNmdM71hhs3UXOv6Ap9l3Ts,2726
|
38
|
+
dv_flow/mgr/std/exec.py,sha256=hGvZke853iee1xw8r80vra5WLcCKveXbNHuSu3kC2Yw,1285
|
39
|
+
dv_flow/mgr/std/fileset.py,sha256=5IxS6T-x0wzA6fdEQcfHZ9kNP8IpH9hfJ3UMhL4A6Iw,3911
|
40
|
+
dv_flow/mgr/std/flow.dv,sha256=CcQOvSfT0JgsaNf7dH8gfbG8lPvQQXw9W9gqrT52Pw0,2025
|
41
|
+
dv_flow/mgr/std/message.py,sha256=_Gox9oBzL9ZYG1JfJ-WYPXojVLqGNaKxZ9tpLVT0LO0,1035
|
42
|
+
dv_flow/mgr/std/task_null.py,sha256=dw6LXBXVwth6gLPeduDvlz5znAhcVpDH8r1DticD-0w,1041
|
43
|
+
dv_flow_mgr-0.0.1.13867752514a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
44
|
+
dv_flow_mgr-0.0.1.13867752514a1.dist-info/METADATA,sha256=Jpb6C6pbqvv6xPfxetNkW3sYHKrjmK8GlKm7DXeuKUo,13314
|
45
|
+
dv_flow_mgr-0.0.1.13867752514a1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
46
|
+
dv_flow_mgr-0.0.1.13867752514a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
47
|
+
dv_flow_mgr-0.0.1.13867752514a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
48
|
+
dv_flow_mgr-0.0.1.13867752514a1.dist-info/RECORD,,
|
@@ -1,48 +0,0 @@
|
|
1
|
-
dv_flow/mgr/__init__.py,sha256=dtKBSjWYcRQmNp-l2b46eHr7c3Udc8QOs4Wohvew32Q,298
|
2
|
-
dv_flow/mgr/__main__.py,sha256=shnmbpIsD98HA1a12boQtpzunhi2atAD1T1hNJwS1Lw,2208
|
3
|
-
dv_flow/mgr/eval_jq.py,sha256=Ue-qkyNW6uOu2Wy8u6nrTbPPY7ujaHd0-4iki0eV3Ec,294
|
4
|
-
dv_flow/mgr/expr_eval.py,sha256=Mp0TvrV6gZWcj1uYwLfPNI-ARwwdAfwntE5byLBfBuY,2276
|
5
|
-
dv_flow/mgr/expr_parser.py,sha256=FhBTkKKkJXubGHUzmcMWubPfPklYLGzVz1jK4-dYb44,5702
|
6
|
-
dv_flow/mgr/fileset.py,sha256=_EhtqBVn0prylXJhR3dUV2p7ocGHzNAF_ZtYNgeKJhs,1240
|
7
|
-
dv_flow/mgr/fragment_def.py,sha256=cyzp1XeWtNOaagScmeS-BPsoXj9j2LTBbKq5ZUioz8I,1641
|
8
|
-
dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
|
9
|
-
dv_flow/mgr/package.py,sha256=878twhPD-E1pFlDNUtuyeFEgJ_Y89b560og4St-Iwrs,1679
|
10
|
-
dv_flow/mgr/package_def.py,sha256=EChN0LwvAcrASBSlzQ3LaWqt_SyFaedfPEujG9FNj6Y,17188
|
11
|
-
dv_flow/mgr/package_import_spec.py,sha256=K5bwbO82A7MB5WeR7kmzWk7wQmQbQVMG1BOtpSPKQRU,1755
|
12
|
-
dv_flow/mgr/param.py,sha256=3BY-ucig6JRw73FhjyJQL-vpd57qhAzixgZ8I5FoUpw,553
|
13
|
-
dv_flow/mgr/param_def.py,sha256=gLua-EQiY8V2CFX-2svLRIlrs8PEeGh4-EPtn4a2Mng,712
|
14
|
-
dv_flow/mgr/param_ref_eval.py,sha256=U8QhDf1n_9bLnExdc1oQamq5-pOUXrFalOX4oyR9UoM,1138
|
15
|
-
dv_flow/mgr/parsetab.py,sha256=I-p3nC60t9jiNtPhKyl_sE92SiP96zJLnNdydcLy33g,3780
|
16
|
-
dv_flow/mgr/pkg_rgy.py,sha256=UGQvBYUbAiabiBk8lKxknpk-yAOVfgeQzTB180iG9h4,5332
|
17
|
-
dv_flow/mgr/task.py,sha256=kLQSvnVwj9ROIDtxq8lLu-4mJizTxOqvUeogmgN6QAA,5976
|
18
|
-
dv_flow/mgr/task_ctor.py,sha256=hlfl-UVvyjzLFN6D0Oel9eBs0xUQPqCX7gQ0uEHoL7o,1382
|
19
|
-
dv_flow/mgr/task_data.py,sha256=m3W7k-xv09ZyhpP2gg33CLOhBLyQDJS2mlG35yOZjZQ,11432
|
20
|
-
dv_flow/mgr/task_def.py,sha256=Wmh78mQLAiHXlpD2KCvFxTWtnjjwgct8fEm8gelCg1c,1987
|
21
|
-
dv_flow/mgr/task_exec_data.py,sha256=aT__kmVmNxqnS_GbTRS1vrYgKiv8cH-HUSmRb6YYKsI,640
|
22
|
-
dv_flow/mgr/task_graph_builder.py,sha256=a9g_2WYlxqD_3R9wa7QDKxA5lqQozGskb8afg8ArP1Y,10101
|
23
|
-
dv_flow/mgr/task_graph_runner.py,sha256=jUGI49QvxUCfQoKQDDk2psbeapIcCg72qNOW1JipHzM,2182
|
24
|
-
dv_flow/mgr/task_graph_runner_local.py,sha256=OrydPwtQ8E7hYWvSXx0h7lI3nfUNFyklULhsyMwz9dA,4687
|
25
|
-
dv_flow/mgr/task_impl_data.py,sha256=bFPijoKrh9x7fZN2DsvRJp0UHo-gGM0VjtDQISyfhFk,321
|
26
|
-
dv_flow/mgr/task_listener_log.py,sha256=d4GQcT3n_0Dq-XWQP-WNJIhuxvw948RbFPSiJ6X1_eI,2683
|
27
|
-
dv_flow/mgr/task_memento.py,sha256=C7VTQpBhDEoYuDmE6YTM-6TLMLnqHp6Y0Vat1aTgtCs,1096
|
28
|
-
dv_flow/mgr/task_node.py,sha256=I1wbq-EpuZZ94R42rtBSQRnk-2Yf6ZQhctsxjn2Vbus,14228
|
29
|
-
dv_flow/mgr/task_output.py,sha256=dkJhhNRFGFQSkVsw_bGirK0_0ghTxBYq1LjRMZCVWnA,245
|
30
|
-
dv_flow/mgr/task_params_ctor.py,sha256=aXgB8o9xFPjaEjGW_xYkEC0N0apzGzGUPDj7g2ZLvus,1112
|
31
|
-
dv_flow/mgr/task_runner.py,sha256=NFGAAlOKMeXkWQtSX3YcZ6RMPn5xlZ92R6q57xPpueg,7922
|
32
|
-
dv_flow/mgr/type.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
dv_flow/mgr/type_def.py,sha256=KdhuNlfw-NKU-4VZFCnMPyj775yEB7cpr5tz73a9yuQ,259
|
34
|
-
dv_flow/mgr/util.py,sha256=06eVyURF4ga-s8C9Sd3ZSDebwO4QS0XXaB8xADVbWRc,1437
|
35
|
-
dv_flow/mgr/cmds/cmd_run.py,sha256=w1KdnS5Skg4RH1xTB1RZP7gAElZMNcRuOhz3G98n9uk,2467
|
36
|
-
dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
|
37
|
-
dv_flow/mgr/std/create_file.py,sha256=gPNasXwjg3NSIc2QhMp-UlBW1r5dRDLt6pluFTJhfek,1886
|
38
|
-
dv_flow/mgr/std/exec.py,sha256=ETx9xSxhdCD_iw6pcmhrafDCJ-41AneyEAPwQf3q-3w,452
|
39
|
-
dv_flow/mgr/std/fileset.py,sha256=nW5Cg4IyCs-ccKKsIxA5W5aZvaluFk6LXDyFh9Jixcs,3076
|
40
|
-
dv_flow/mgr/std/flow.dv,sha256=CcQOvSfT0JgsaNf7dH8gfbG8lPvQQXw9W9gqrT52Pw0,2025
|
41
|
-
dv_flow/mgr/std/message.py,sha256=T8Ye44784rD6CT2qIAP5SD7sKPdAlGMFimc4IaPCxxE,200
|
42
|
-
dv_flow/mgr/std/task_null.py,sha256=UKwUnqwFPBY8BO44ZAPcgehQB59kHZFa1qyZc1TwUqE,196
|
43
|
-
dv_flow_mgr-0.0.1.13862522550a1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
44
|
-
dv_flow_mgr-0.0.1.13862522550a1.dist-info/METADATA,sha256=B8h8L4Nr9ywSDxAGO4ElhZg4cIHndSyJCmNRMJGP4d4,13314
|
45
|
-
dv_flow_mgr-0.0.1.13862522550a1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
46
|
-
dv_flow_mgr-0.0.1.13862522550a1.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
|
47
|
-
dv_flow_mgr-0.0.1.13862522550a1.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
|
48
|
-
dv_flow_mgr-0.0.1.13862522550a1.dist-info/RECORD,,
|
{dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/LICENSE
RENAMED
File without changes
|
{dv_flow_mgr-0.0.1.13862522550a1.dist-info → dv_flow_mgr-0.0.1.13867752514a1.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|