dv-flow-mgr 0.0.1.13657597614a1__tar.gz → 0.0.1.13661289604a1__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 (100) hide show
  1. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/pyproject.toml +1 -1
  3. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/__init__.py +1 -0
  4. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/expr_parser.py +9 -3
  5. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/fileset.py +2 -1
  6. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/parsetab.py +14 -14
  7. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/std/fileset.py +7 -2
  8. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_data.py +3 -2
  9. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_runner.py +7 -0
  10. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  11. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_fileset.py +42 -5
  12. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/.github/workflows/ci.yml +0 -0
  13. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/.gitignore +0 -0
  14. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/.vscode/settings.json +0 -0
  15. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/LICENSE +0 -0
  16. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/README.md +0 -0
  17. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/KeyArchitecture.md +0 -0
  18. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Makefile +0 -0
  19. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Notes.md +0 -0
  20. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Roadmap.md +0 -0
  21. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/RundirLayout.md +0 -0
  22. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Stages.md +0 -0
  23. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Steps.md +0 -0
  24. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Tasks.md +0 -0
  25. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/TypesAndDefs.md +0 -0
  26. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/Usecases.md +0 -0
  27. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/conf.py +0 -0
  28. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/index.rst +0 -0
  29. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/intro.rst +0 -0
  30. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/quickstart.rst +0 -0
  31. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/docs/reference.rst +0 -0
  32. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/fwperiph_dma.pss +0 -0
  33. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/ivpm.yaml +0 -0
  34. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/setup.cfg +0 -0
  35. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/__main__.py +0 -0
  36. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  37. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  38. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  39. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  40. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/out +0 -0
  41. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/package.py +0 -0
  42. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/package_def.py +0 -0
  43. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  44. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/param.py +0 -0
  45. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/param_def.py +0 -0
  46. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  47. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/pkg_rgy.py +0 -0
  48. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/share/flow.json +0 -0
  49. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/std/exec.py +0 -0
  50. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  51. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/std/message.py +0 -0
  52. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  53. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task.py +0 -0
  54. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_ctor.py +0 -0
  55. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_def.py +0 -0
  56. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_exec_data.py +0 -0
  57. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_graph_builder.py +0 -0
  58. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_graph_runner.py +0 -0
  59. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_graph_runner_local.py +0 -0
  60. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_impl_data.py +0 -0
  61. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  62. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_memento.py +0 -0
  63. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_node.py +0 -0
  64. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_output.py +0 -0
  65. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  66. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/type.py +0 -0
  67. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/type_def.py +0 -0
  68. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow/mgr/util.py +0 -0
  69. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +0 -0
  70. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  71. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  72. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  73. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  74. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/examples/example1/example1.flow +0 -0
  75. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/system/test_depends.py +0 -0
  76. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/system/test_pkg_discovery.py +0 -0
  77. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/system/test_stdlib.py +0 -0
  78. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/__init__.py +0 -0
  79. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  80. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  81. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  82. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  83. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  84. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  85. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  86. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  87. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  88. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  89. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  90. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  91. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  92. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_data_merge.py +0 -0
  93. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_expr_eval.py +0 -0
  94. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_expr_parser.py +0 -0
  95. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_parse.py +0 -0
  96. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_pyclass.py +0 -0
  97. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_pytask_smoke.py +0 -0
  98. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_smoke copy.sav +0 -0
  99. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/tests/unit/test_smoke.py +0 -0
  100. {dv_flow_mgr-0.0.1.13657597614a1 → dv_flow_mgr-0.0.1.13661289604a1}/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.13657597614a1
3
+ Version: 0.0.1.13661289604a1
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.13657597614a1"
8
+ version = "0.0.1.13661289604a1"
9
9
  dependencies = [
10
10
  'pydantic',
11
11
  'pyyaml',
@@ -8,4 +8,5 @@ from .task_graph_runner import TaskGraphRunner
8
8
  from .task_graph_runner_local import TaskGraphRunnerLocal
9
9
  from .task_graph_builder import TaskGraphBuilder
10
10
  from .task_node import task
11
+ from .task_runner import TaskSetRunner
11
12
 
@@ -143,7 +143,6 @@ class ExprParser(object):
143
143
  t_RPAREN = r'\)'
144
144
  t_ID = r'[a-zA-Z_][a-zA-Z0-9_]*'
145
145
  t_PIPE = r'\|'
146
- t_STRING2 = r'\'.*\''
147
146
 
148
147
  def t_NUMBER(self, t):
149
148
  r'\d+'
@@ -155,8 +154,15 @@ class ExprParser(object):
155
154
  return t
156
155
 
157
156
  def t_STRING1(self, t):
158
- r'(\'|\")([^\\\n]|(\\.))*?(\'|\")'
159
- t.value = t.value[1:-1].replace('\\"', '"').replace("\\'", "'").replace('\\n', '\n').replace('\\t', '\t').replace('\\\\', '\\')
157
+ r'"([^"\\]*(\\.[^"\\]*)*)"'
158
+ t.value = t.value[1:-1].replace(r'\"', '"').replace(r'\\', '\\')
159
+
160
+ def t_STRING2(self, t):
161
+ r'\'([^\'\\]*(\\.[^\'\\]*)*)\''
162
+ t.value = t.value[1:-1].replace(r'\'', '"').replace(r'\\', '\\')
163
+
164
+ # r'(\'|\")([^\\\n]|(\\.))*?(\'|\")'
165
+ # t.value = t.value[1:-1].replace('\\"', '"').replace("\\'", "'").replace('\\n', '\n').replace('\\t', '\t').replace('\\\\', '\\')
160
166
  return t
161
167
 
162
168
  # Ignored characters
@@ -24,7 +24,8 @@ from pydantic import BaseModel
24
24
  from typing import Any, Dict, List, Tuple
25
25
 
26
26
  class FileSet(BaseModel):
27
- type : str
27
+ type: str = "std.FileSet"
28
+ filetype : str
28
29
  basedir : str
29
30
  name : str = ""
30
31
  src : str = None
@@ -27,18 +27,18 @@ for _k, _v in _lr_goto_items.items():
27
27
  del _lr_goto_items
28
28
  _lr_productions = [
29
29
  ("S' -> expression","S'",1,None,None,None),
30
- ('expression -> ID LPAREN RPAREN','expression',3,'p_call','expr_parser.py',160),
31
- ('expression -> ID LPAREN args RPAREN','expression',4,'p_call','expr_parser.py',161),
32
- ('args -> expression','args',1,'p_args','expr_parser.py',165),
33
- ('args -> args COMMA expression','args',3,'p_args','expr_parser.py',166),
34
- ('expression -> expression PLUS expression','expression',3,'p_expression_binop','expr_parser.py',174),
35
- ('expression -> expression MINUS expression','expression',3,'p_expression_binop','expr_parser.py',175),
36
- ('expression -> expression TIMES expression','expression',3,'p_expression_binop','expr_parser.py',176),
37
- ('expression -> expression PIPE expression','expression',3,'p_expression_binop','expr_parser.py',177),
38
- ('expression -> expression DIVIDE expression','expression',3,'p_expression_binop','expr_parser.py',178),
39
- ('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','expr_parser.py',189),
40
- ('expression -> NUMBER','expression',1,'p_expression_number','expr_parser.py',193),
41
- ('expression -> ID','expression',1,'p_expression_name','expr_parser.py',197),
42
- ('expression -> STRING1','expression',1,'p_expression_string1','expr_parser.py',201),
43
- ('expression -> STRING2','expression',1,'p_expression_string2','expr_parser.py',205),
30
+ ('expression -> ID LPAREN RPAREN','expression',3,'p_call','expr_parser.py',180),
31
+ ('expression -> ID LPAREN args RPAREN','expression',4,'p_call','expr_parser.py',181),
32
+ ('args -> expression','args',1,'p_args','expr_parser.py',185),
33
+ ('args -> args COMMA expression','args',3,'p_args','expr_parser.py',186),
34
+ ('expression -> expression PLUS expression','expression',3,'p_expression_binop','expr_parser.py',194),
35
+ ('expression -> expression MINUS expression','expression',3,'p_expression_binop','expr_parser.py',195),
36
+ ('expression -> expression TIMES expression','expression',3,'p_expression_binop','expr_parser.py',196),
37
+ ('expression -> expression PIPE expression','expression',3,'p_expression_binop','expr_parser.py',197),
38
+ ('expression -> expression DIVIDE expression','expression',3,'p_expression_binop','expr_parser.py',198),
39
+ ('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','expr_parser.py',209),
40
+ ('expression -> NUMBER','expression',1,'p_expression_number','expr_parser.py',213),
41
+ ('expression -> ID','expression',1,'p_expression_name','expr_parser.py',217),
42
+ ('expression -> STRING1','expression',1,'p_expression_string1','expr_parser.py',221),
43
+ ('expression -> STRING2','expression',1,'p_expression_string2','expr_parser.py',225),
44
44
  ]
@@ -23,7 +23,12 @@ async def FileSet(runner, input) -> TaskDataResult:
23
23
 
24
24
 
25
25
  changed = False
26
- ex_memento = input.memento
26
+ #
27
+ try:
28
+ ex_memento = TaskFileSetMemento(**input.memento) if input.memento is not None else None
29
+ except Exception as e:
30
+ _log.error("Failed to load memento: %s" % str(e))
31
+ ex_memento = None
27
32
  memento = TaskFileSetMemento()
28
33
 
29
34
  _log.debug("ex_memento: %s" % str(ex_memento))
@@ -39,8 +44,8 @@ async def FileSet(runner, input) -> TaskDataResult:
39
44
  _log.debug("glob_root: %s" % glob_root)
40
45
 
41
46
  fs = _FileSet(
47
+ filetype=input.params.type,
42
48
  src=input.name,
43
- type=input.params.type,
44
49
  basedir=glob_root)
45
50
 
46
51
  if not isinstance(input.params.include, list):
@@ -38,6 +38,7 @@ class TaskMarker(BaseModel):
38
38
  loc : TaskMarkerLoc = dc.Field(default=None)
39
39
 
40
40
  class TaskParameterSet(BaseModel):
41
+ type : str = None
41
42
  task : str = None # Name of the task that produced this param set
42
43
  seq : int = -1 # Order in which the param-set must appear
43
44
 
@@ -51,14 +52,14 @@ class TaskDataInput(BaseModel):
51
52
 
52
53
  class TaskDataResult(BaseModel):
53
54
  changed : bool = dc.Field(default=True)
54
- output : List[TaskParameterSet] = dc.Field(default_factory=list)
55
+ output : List[Any] = dc.Field(default_factory=list)
55
56
  memento : Any = dc.Field(default=None)
56
57
  markers : List[TaskMarker] = dc.Field(default_factory=list)
57
58
  status : int = dc.Field(default=0)
58
59
 
59
60
  class TaskDataOutput(BaseModel):
60
61
  changed : bool = True
61
- output : List[TaskParameterSet] = dc.Field(default_factory=list)
62
+ output : List[Any] = dc.Field(default_factory=list)
62
63
  dep_m : Dict[str,List[str]] = dc.Field(default_factory=dict)
63
64
 
64
65
  class TaskDataParamOpE(enum.Enum):
@@ -140,6 +140,13 @@ class TaskSetRunner(TaskRunner):
140
140
  with open(os.path.join(self.rundir, "cache", "mementos.json"), "w") as f:
141
141
  json.dump(dst_memento, f)
142
142
 
143
+ if isinstance(task, list):
144
+ return list(t.output for t in task)
145
+ else:
146
+ return task.output
147
+
148
+
149
+
143
150
  pass
144
151
 
145
152
  def _buildDepMap(self, dep_m, task : TaskNode):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13657597614a1
3
+ Version: 0.0.1.13661289604a1
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
@@ -1,11 +1,13 @@
1
1
  import asyncio
2
2
  import io
3
+ import json
3
4
  import os
4
5
  import dataclasses as dc
5
6
  import pytest
6
- from typing import List
7
+ from typing import Any, List, Union
7
8
  import yaml
8
- from dv_flow.mgr import PackageDef, TaskGraphBuilder, TaskGraphRunnerLocal
9
+ from dv_flow.mgr import PackageDef, TaskGraphBuilder, TaskSetRunner, task, TaskDataResult
10
+ from dv_flow.mgr.fileset import FileSet
9
11
  from pydantic import BaseModel
10
12
  from shutil import copytree
11
13
 
@@ -22,7 +24,7 @@ def test_fileset_1(tmpdir):
22
24
  pkg_def,
23
25
  os.path.join(tmpdir, "rundir"))
24
26
  task = builder.mkTaskGraph("test1.files1")
25
- runner = TaskGraphRunnerLocal(rundir=os.path.join(tmpdir, "rundir"))
27
+ runner = TaskSetRunner(rundir=os.path.join(tmpdir, "rundir"))
26
28
 
27
29
  out = asyncio.run(runner.run(task))
28
30
  assert out.changed == True
@@ -34,7 +36,7 @@ def test_fileset_1(tmpdir):
34
36
  pkg_def,
35
37
  os.path.join(tmpdir, "rundir"))
36
38
  task = builder.mkTaskGraph("test1.files1")
37
- runner = TaskGraphRunnerLocal(rundir=os.path.join(tmpdir, "rundir"))
39
+ runner = TaskSetRunner(rundir=os.path.join(tmpdir, "rundir"))
38
40
 
39
41
  out = asyncio.run(runner.run(task))
40
42
  assert out.changed == False
@@ -48,11 +50,46 @@ def test_fileset_1(tmpdir):
48
50
  pkg_def,
49
51
  os.path.join(tmpdir, "rundir"))
50
52
  task = builder.mkTaskGraph("test1.files1")
51
- runner = TaskGraphRunnerLocal(rundir=os.path.join(tmpdir, "rundir"))
53
+ runner = TaskSetRunner(rundir=os.path.join(tmpdir, "rundir"))
52
54
 
53
55
  out = asyncio.run(runner.run(task))
54
56
  assert out.changed == True
55
57
 
58
+ def test_fileset_input_1(tmpdir):
59
+ """"""
60
+ datadir = os.path.join(os.path.dirname(__file__), "data/fileset")
61
+
62
+ copytree(
63
+ os.path.join(datadir, "test1"),
64
+ os.path.join(tmpdir, "test1"))
65
+
66
+ class ConsumeFilesParams(BaseModel):
67
+ files : Union[str,List[Any]] = """
68
+ ${{ in | jq('[ .[] | select(.type == "std.FileSet") ]') }}
69
+ """
70
+
71
+ @task(ConsumeFilesParams)
72
+ async def consume_files(runner, input) -> TaskDataResult:
73
+ print("consume_files: %s (%s)" % (str(input.params.files), str(type(input.params.files))))
74
+
75
+ fs_l = json.loads(input.params.files)
76
+ fs = FileSet(**(fs_l[0]))
77
+
78
+ return TaskDataResult(
79
+ output=[input.params.files]
80
+ )
81
+
82
+ pkg_def = PackageDef.load(os.path.join(tmpdir, "test1", "flow.dv"))
83
+ builder = TaskGraphBuilder(
84
+ pkg_def,
85
+ os.path.join(tmpdir, "rundir"))
86
+ files1 = builder.mkTaskGraph("test1.files1")
87
+ cfiles = consume_files(srcdir="srcdir", needs=[files1])
88
+
89
+ runner = TaskSetRunner(rundir=os.path.join(tmpdir, "rundir"))
90
+
91
+ out = asyncio.run(runner.run(cfiles))
92
+
56
93
  def test_glob_sys(tmpdir):
57
94
  flow_dv = """
58
95
  package: