dv-flow-mgr 0.0.1.13711470441a1__tar.gz → 0.0.1.13711946395a1__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 (101) hide show
  1. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/pyproject.toml +1 -1
  3. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/pkg_rgy.py +6 -0
  4. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_graph_builder.py +13 -3
  5. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  6. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +1 -0
  7. dv_flow_mgr-0.0.1.13711946395a1/tests/unit/test_imports.py +112 -0
  8. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/.github/workflows/ci.yml +0 -0
  9. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/.gitignore +0 -0
  10. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/.vscode/settings.json +0 -0
  11. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/LICENSE +0 -0
  12. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/README.md +0 -0
  13. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/KeyArchitecture.md +0 -0
  14. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Makefile +0 -0
  15. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Notes.md +0 -0
  16. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Roadmap.md +0 -0
  17. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/RundirLayout.md +0 -0
  18. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Stages.md +0 -0
  19. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Steps.md +0 -0
  20. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Tasks.md +0 -0
  21. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/TypesAndDefs.md +0 -0
  22. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/Usecases.md +0 -0
  23. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/conf.py +0 -0
  24. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/index.rst +0 -0
  25. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/intro.rst +0 -0
  26. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/quickstart.rst +0 -0
  27. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/docs/reference.rst +0 -0
  28. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/fwperiph_dma.pss +0 -0
  29. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/ivpm.yaml +0 -0
  30. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/setup.cfg +0 -0
  31. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/__init__.py +0 -0
  32. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/__main__.py +0 -0
  33. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  34. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  35. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  36. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/expr_parser.py +0 -0
  37. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/fileset.py +0 -0
  38. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  39. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/out +0 -0
  40. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/package.py +0 -0
  41. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/package_def.py +0 -0
  42. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  43. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/param.py +0 -0
  44. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/param_def.py +0 -0
  45. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  46. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/parsetab.py +0 -0
  47. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/share/flow.json +0 -0
  48. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/std/exec.py +0 -0
  49. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/std/fileset.py +0 -0
  50. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  51. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/std/message.py +0 -0
  52. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  53. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task.py +0 -0
  54. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_ctor.py +0 -0
  55. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_data.py +0 -0
  56. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_def.py +0 -0
  57. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_exec_data.py +0 -0
  58. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_graph_runner.py +0 -0
  59. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_graph_runner_local.py +0 -0
  60. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_impl_data.py +0 -0
  61. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  62. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_memento.py +0 -0
  63. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_node.py +0 -0
  64. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_output.py +0 -0
  65. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  66. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/task_runner.py +0 -0
  67. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/type.py +0 -0
  68. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/type_def.py +0 -0
  69. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow/mgr/util.py +0 -0
  70. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  71. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  72. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  73. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  74. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/examples/example1/example1.flow +0 -0
  75. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/system/test_depends.py +0 -0
  76. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/system/test_pkg_discovery.py +0 -0
  77. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/system/test_stdlib.py +0 -0
  78. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/__init__.py +0 -0
  79. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  80. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  81. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  82. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  83. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  84. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  85. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  86. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  87. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  88. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  89. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  90. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  91. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  92. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_data_merge.py +0 -0
  93. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_expr_eval.py +0 -0
  94. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_expr_parser.py +0 -0
  95. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_fileset.py +0 -0
  96. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_parse.py +0 -0
  97. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_pyclass.py +0 -0
  98. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_pytask_smoke.py +0 -0
  99. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_smoke copy.sav +0 -0
  100. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/tests/unit/test_smoke.py +0 -0
  101. {dv_flow_mgr-0.0.1.13711470441a1 → dv_flow_mgr-0.0.1.13711946395a1}/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.13711470441a1
3
+ Version: 0.0.1.13711946395a1
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.13711470441a1"
8
+ version = "0.0.1.13711946395a1"
9
9
  dependencies = [
10
10
  'jq',
11
11
  'pydantic',
@@ -122,6 +122,12 @@ class PkgRgy(object):
122
122
  # for pkg in self._load_pkg_list():
123
123
  # self._pkgs[pkg.name] = pkg
124
124
 
125
+ def copy(self):
126
+ ret = PkgRgy()
127
+ ret._pkgpath = self._pkgpath.copy()
128
+ ret._pkg_m = self._pkg_m.copy()
129
+ return ret
130
+
125
131
  @classmethod
126
132
  def inst(cls):
127
133
  if cls._inst is None:
@@ -43,7 +43,7 @@ class TaskGraphBuilder(object):
43
43
 
44
44
  def __post_init__(self):
45
45
  if self.pkg_rgy is None:
46
- self.pkg_rgy = PkgRgy.inst()
46
+ self.pkg_rgy = PkgRgy.inst().copy()
47
47
 
48
48
  self._logger = logging.getLogger(type(self).__name__)
49
49
  self._logger.debug("TaskGraphBuilder: root_pkg: %s" % str(self.root_pkg))
@@ -51,6 +51,7 @@ class TaskGraphBuilder(object):
51
51
  if self.root_pkg is not None:
52
52
 
53
53
  # Register package definitions found during loading
54
+ self._logger.debug("Packages: %s" % str(self.root_pkg))
54
55
  for subpkg in self.root_pkg.subpkg_m.values():
55
56
  self._logger.debug("Registering package %s" % subpkg.name)
56
57
  self.pkg_rgy.registerPackage(subpkg)
@@ -110,9 +111,11 @@ class TaskGraphBuilder(object):
110
111
  needs = []
111
112
 
112
113
  for need_def in ctor_t.getNeeds():
114
+ # Resolve the full name of the need
115
+ need_fullname = self._resolveNeedRef(need_def)
113
116
  if not need_def in self._task_m.keys():
114
- task = self._mkTaskGraph(need_def, rundir)
115
- self._task_m[need_def] = task
117
+ need_t = self._mkTaskGraph(need_def, rundir)
118
+ self._task_m[need_def] = need_t
116
119
  needs.append(self._task_m[need_def])
117
120
 
118
121
  # The returned task should have all param references resolved
@@ -134,6 +137,13 @@ class TaskGraphBuilder(object):
134
137
 
135
138
  return task
136
139
 
140
+ def _resolveNeedRef(self, need_def) -> str:
141
+ if need_def.find(".") == -1:
142
+ # Need is a local task. Prefix to avoid ambiguity
143
+ return self._pkg_s[-1].name + "." + need_def
144
+ else:
145
+ return need_def
146
+
137
147
  def getPackage(self, spec : PackageSpec) -> Package:
138
148
  # Obtain the active package definition
139
149
  self._logger.debug("--> getPackage: %s len: %d" % (spec.name, len(self._pkg_spec_s)))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.13711470441a1
3
+ Version: 0.0.1.13711946395a1
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
@@ -77,6 +77,7 @@ tests/unit/test_data_merge.py
77
77
  tests/unit/test_expr_eval.py
78
78
  tests/unit/test_expr_parser.py
79
79
  tests/unit/test_fileset.py
80
+ tests/unit/test_imports.py
80
81
  tests/unit/test_parse.py
81
82
  tests/unit/test_pyclass.py
82
83
  tests/unit/test_pytask_smoke.py
@@ -0,0 +1,112 @@
1
+
2
+ import asyncio
3
+ import io
4
+ import json
5
+ import os
6
+ import dataclasses as dc
7
+ import pytest
8
+ from typing import Any, List, Union
9
+ import yaml
10
+ from dv_flow.mgr import PackageDef, TaskGraphBuilder, TaskSetRunner, task, TaskDataResult
11
+ from dv_flow.mgr import TaskGraphBuilder, TaskGraphRunnerLocal, PackageDef
12
+ from dv_flow.mgr.task_runner import TaskSetRunner
13
+ from dv_flow.mgr.task_listener_log import TaskListenerLog
14
+ from dv_flow.mgr.fileset import FileSet
15
+ from pydantic import BaseModel
16
+ from shutil import copytree
17
+
18
+ def test_pkg_path_imp(tmpdir):
19
+ top_flow_dv = """
20
+ package:
21
+ name: top
22
+
23
+ imports:
24
+ - subdir/flow.dv
25
+
26
+ tasks:
27
+ - name: top
28
+ uses: subpkg.top
29
+ # with:
30
+ # msg: "top.top"
31
+ """
32
+ subpkg_flow_dv = """
33
+ package:
34
+ name: subpkg
35
+
36
+ tasks:
37
+ - name: top
38
+ uses: std.Message
39
+ with:
40
+ msg: "subpkg.top"
41
+ """
42
+
43
+ os.makedirs(os.path.join(tmpdir, "subdir"))
44
+
45
+ with open(os.path.join(tmpdir, "flow.dv"), "w") as f:
46
+ f.write(top_flow_dv)
47
+
48
+ with open(os.path.join(tmpdir, "subdir/flow.dv"), "w") as f:
49
+ f.write(subpkg_flow_dv)
50
+
51
+ pkg_def = PackageDef.load(os.path.join(tmpdir, "flow.dv"))
52
+ print("pkg_def: %s" % str(pkg_def), flush=True)
53
+ builder = TaskGraphBuilder(
54
+ root_pkg=pkg_def,
55
+ rundir=os.path.join(tmpdir, "rundir"))
56
+ runner = TaskSetRunner(os.path.join(tmpdir, "rundir"))
57
+
58
+ task = builder.mkTaskGraph("top.top")
59
+ output = asyncio.run(runner.run(task))
60
+
61
+ def test_local_name_collision(tmpdir):
62
+ top_flow_dv = """
63
+ package:
64
+ name: top
65
+
66
+ imports:
67
+ - subdir/flow.dv
68
+
69
+ tasks:
70
+ - name: subtask
71
+ uses: std.Message
72
+ with:
73
+ msg: "top.subtask"
74
+ - name: top
75
+ needs: [subtask, subpkg.top]
76
+ uses: std.Message
77
+ with:
78
+ msg: "top.top"
79
+ """
80
+ subpkg_flow_dv = """
81
+ package:
82
+ name: subpkg
83
+
84
+ tasks:
85
+ - name: subtask
86
+ uses: std.Message
87
+ with:
88
+ msg: "subpkg.subtask"
89
+ - name: top
90
+ uses: std.Message
91
+ needs: [subtask]
92
+ with:
93
+ msg: "subpkg.top"
94
+ """
95
+
96
+ os.makedirs(os.path.join(tmpdir, "subdir"))
97
+
98
+ with open(os.path.join(tmpdir, "flow.dv"), "w") as f:
99
+ f.write(top_flow_dv)
100
+
101
+ with open(os.path.join(tmpdir, "subdir/flow.dv"), "w") as f:
102
+ f.write(subpkg_flow_dv)
103
+
104
+ pkg_def = PackageDef.load(os.path.join(tmpdir, "flow.dv"))
105
+ print("pkg_def: %s" % str(pkg_def), flush=True)
106
+ builder = TaskGraphBuilder(
107
+ root_pkg=pkg_def,
108
+ rundir=os.path.join(tmpdir, "rundir"))
109
+ runner = TaskSetRunner(os.path.join(tmpdir, "rundir"))
110
+
111
+ task = builder.mkTaskGraph("top.top")
112
+ output = asyncio.run(runner.run(task))