dv-flow-mgr 0.0.1.13862522550a1__tar.gz → 0.0.1.13867752514a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/pyproject.toml +1 -1
  3. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/__init__.py +31 -0
  4. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/__main__.py +1 -1
  5. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/cmds/cmd_run.py +21 -0
  6. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/eval_jq.py +36 -0
  7. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/expr_eval.py +21 -1
  8. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/expr_parser.py +22 -1
  9. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/fileset.py +1 -1
  10. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/fragment_def.py +1 -1
  11. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/package.py +1 -1
  12. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/package_def.py +1 -1
  13. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/package_import_spec.py +1 -1
  14. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/param.py +40 -0
  15. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/param_def.py +44 -0
  16. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/param_ref_eval.py +21 -0
  17. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/pkg_rgy.py +1 -1
  18. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/std/create_file.py +21 -0
  19. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/std/exec.py +40 -0
  20. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/std/fileset.py +21 -1
  21. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/std/message.py +26 -0
  22. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/std/task_null.py +30 -0
  23. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task.py +1 -1
  24. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_ctor.py +22 -1
  25. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_data.py +1 -1
  26. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_def.py +7 -2
  27. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/task_exec_data.py +43 -0
  28. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_graph_builder.py +1 -1
  29. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_graph_runner.py +1 -1
  30. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_graph_runner_local.py +1 -1
  31. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/task_impl_data.py +37 -0
  32. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_listener_log.py +21 -0
  33. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_memento.py +1 -1
  34. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_node.py +58 -40
  35. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/task_output.py +28 -0
  36. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_params_ctor.py +21 -0
  37. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/task_runner.py +24 -3
  38. dv_flow_mgr-0.0.1.13867752514a1/src/dv_flow/mgr/type_def.py +30 -0
  39. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/util.py +1 -1
  40. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  41. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/__init__.py +0 -11
  42. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/eval_jq.py +0 -16
  43. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/param.py +0 -20
  44. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/param_def.py +0 -24
  45. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/std/exec.py +0 -19
  46. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/std/message.py +0 -6
  47. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/std/task_null.py +0 -9
  48. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/task_exec_data.py +0 -22
  49. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/task_impl_data.py +0 -17
  50. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/task_output.py +0 -7
  51. dv_flow_mgr-0.0.1.13862522550a1/src/dv_flow/mgr/type_def.py +0 -10
  52. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/.github/workflows/ci.yml +0 -0
  53. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/.gitignore +0 -0
  54. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/.vscode/settings.json +0 -0
  55. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/LICENSE +0 -0
  56. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/README.md +0 -0
  57. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/KeyArchitecture.md +0 -0
  58. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Makefile +0 -0
  59. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Notes.md +0 -0
  60. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Roadmap.md +0 -0
  61. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/RundirLayout.md +0 -0
  62. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Stages.md +0 -0
  63. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Steps.md +0 -0
  64. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Tasks.md +0 -0
  65. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/TypesAndDefs.md +0 -0
  66. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/Usecases.md +0 -0
  67. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/conf.py +0 -0
  68. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/index.rst +0 -0
  69. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/intro.rst +0 -0
  70. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/quickstart.rst +0 -0
  71. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/docs/reference.rst +0 -0
  72. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/fwperiph_dma.pss +0 -0
  73. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/ivpm.yaml +0 -0
  74. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/setup.cfg +0 -0
  75. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/out +0 -0
  76. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/parsetab.py +0 -0
  77. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/share/flow.json +0 -0
  78. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  79. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow/mgr/type.py +0 -0
  80. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +0 -0
  81. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  82. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  83. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  84. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  85. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/examples/example1/example1.flow +0 -0
  86. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/system/test_depends.py +0 -0
  87. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/system/test_pkg_discovery.py +0 -0
  88. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/system/test_stdlib.py +0 -0
  89. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/__init__.py +0 -0
  90. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  91. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  92. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  93. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  94. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  95. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  96. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  97. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  98. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  99. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  100. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  101. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  102. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  103. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_data_merge.py +0 -0
  104. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_expr_eval.py +0 -0
  105. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_expr_parser.py +0 -0
  106. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_fileset.py +0 -0
  107. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_imports.py +0 -0
  108. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_markers.py +0 -0
  109. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_parse.py +0 -0
  110. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_pyclass.py +0 -0
  111. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_pytask_smoke.py +0 -0
  112. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_smoke copy.sav +0 -0
  113. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_smoke.py +0 -0
  114. {dv_flow_mgr-0.0.1.13862522550a1 → dv_flow_mgr-0.0.1.13867752514a1}/tests/unit/test_stdlib.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13862522550a1
3
+ Version: 0.0.1.13867752514a1
4
4
  Summary: DV Flow Manager is a build system for silicon design
5
5
  Author-email: Matthew Ballance <matt.ballance@gmail.com>
6
6
  License: Apache License
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "dv-flow-mgr"
8
- version = "0.0.1.13862522550a1"
8
+ version = "0.0.1.13867752514a1"
9
9
  dependencies = [
10
10
  'jq',
11
11
  'pydantic',
@@ -0,0 +1,31 @@
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
+ #****************************************************************************
22
+ from .package_def import *
23
+ from .pkg_rgy import PkgRgy
24
+ from .task_graph_runner import *
25
+ from .task import *
26
+ from .task_data import *
27
+ from .task_graph_builder import TaskGraphBuilder
28
+ from .task_node import task
29
+ from .task_runner import TaskSetRunner
30
+ from .task_listener_log import TaskListenerLog
31
+
@@ -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.
@@ -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
@@ -0,0 +1,36 @@
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
+ #****************************************************************************
22
+ import jq
23
+
24
+ def eval_jq(input, args):
25
+ if len(args) != 1:
26
+ raise Exception("jq requires a single argument")
27
+
28
+ filt = jq.compile(args[0])
29
+
30
+ if type(input) == str:
31
+ ret = filt.input_text(input).text()
32
+ else:
33
+ ret = filt.input_value(input).text()
34
+
35
+
36
+ return ret
@@ -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
@@ -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
+
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -0,0 +1,40 @@
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
+ #****************************************************************************
22
+ from pydantic import BaseModel
23
+ import pydantic.dataclasses as pdc
24
+ from typing import Any, List, Union
25
+
26
+ class ParamMeta(type):
27
+ def __getitem__(self, T):
28
+ ret = Union[T, Param]
29
+ return ret
30
+
31
+ class ParamT(metaclass=ParamMeta):
32
+ pass
33
+
34
+ class Param(BaseModel):
35
+ append : Union[Any,List] = pdc.Field(default=None)
36
+ prepend : Union[Any,List] = pdc.Field(default=None)
37
+ append_path : Union[Any,List] = pdc.Field(default=None, alias="append-path")
38
+ prepend_path : Union[Any,List] = pdc.Field(default=None, alias="prepend-path")
39
+
40
+
@@ -0,0 +1,44 @@
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
+ #****************************************************************************
22
+ from typing import Any, List, Union
23
+ from pydantic import BaseModel, Field
24
+
25
+ class ListType(BaseModel):
26
+ item : Union[str, 'ComplexType']
27
+
28
+ class MapType(BaseModel):
29
+ key : Union[str, 'ComplexType']
30
+ item : Union[str, 'ComplexType']
31
+
32
+ class ComplexType(BaseModel):
33
+ list : Union[ListType, None] = None
34
+ map : Union[MapType, None] = None
35
+
36
+ class ParamDef(BaseModel):
37
+ doc : str = None
38
+ type : Union[str, 'ComplexType'] = None
39
+ value : Union[Any, None] = None
40
+ append : Union[Any, None] = None
41
+ prepend : Union[Any, None] = None
42
+ path_append : Union[Any, None] = Field(alias="path-append", default=None)
43
+ path_prepend : Union[Any, None] = Field(alias="path-prepend", default=None)
44
+
@@ -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
@@ -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.
@@ -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
@@ -0,0 +1,40 @@
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
+ #****************************************************************************
22
+ import asyncio
23
+ import logging
24
+ from dv_flow.mgr import TaskDataResult
25
+
26
+ _log = logging.getLogger("Exec")
27
+
28
+ async def Exec(runner, input) -> TaskDataResult:
29
+ _log.debug("TaskExec run: %s: cmd=%s" % (input.name, input.params.command))
30
+
31
+
32
+ proc = await asyncio.create_subprocess_shell(
33
+ input.params.command,
34
+ stdout=asyncio.subprocess.PIPE,
35
+ stderr=asyncio.subprocess.PIPE)
36
+
37
+ await proc.wait()
38
+
39
+ return TaskDataResult()
40
+
@@ -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
@@ -0,0 +1,26 @@
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
+ #****************************************************************************
22
+ from dv_flow.mgr import Task, TaskDataResult
23
+
24
+ async def Message(runner, input) -> TaskDataResult:
25
+ print("%s: %s" % (input.name, input.params.msg), flush=True)
26
+ return TaskDataResult()
@@ -0,0 +1,30 @@
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
+ #****************************************************************************
22
+ from pydantic import BaseModel
23
+ from ..task_data import TaskDataResult
24
+
25
+ class TaskNullParams(BaseModel):
26
+ pass
27
+
28
+ async def TaskNull(runner, input) -> TaskDataResult:
29
+ return TaskDataResult()
30
+
@@ -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.
@@ -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)
@@ -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.
@@ -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)
@@ -0,0 +1,43 @@
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
+ #****************************************************************************
22
+ import pydantic.dataclasses as dc
23
+ from pydantic import BaseModel
24
+ from typing import Any, Dict, List
25
+
26
+
27
+ class TaskExecData(BaseModel):
28
+ """Data from a single exection of a task"""
29
+ name : str
30
+ start : str
31
+ finish : str
32
+ status : int
33
+ memento : Any
34
+ markers : List[Any]
35
+
36
+ class FlowExecData(BaseModel):
37
+ """
38
+ Data from multiple tasks executions. 'info' holds information
39
+ across multiple flow invocations. 'tasks' holds the names of
40
+ tasks executed in the most-recent invocation.
41
+ """
42
+ info : Dict[str, TaskExecData] = dc.Field(default_factory=dict)
43
+ tasks : List[str] = dc.Field(default_factory=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.
@@ -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.