dv-flow-mgr 0.0.1.12941329363a1__tar.gz → 0.0.1.12941908886a1__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 (71) hide show
  1. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/pyproject.toml +1 -1
  3. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/std/fileset.py +3 -3
  4. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  5. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +1 -1
  6. dv_flow_mgr-0.0.1.12941908886a1/tests/sys/test_depends.py +47 -0
  7. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/test_fileset.py +37 -0
  8. dv_flow_mgr-0.0.1.12941329363a1/src/dv_flow/mgr/std/task_fileset.py +0 -90
  9. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/.github/workflows/ci.yml +0 -0
  10. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/.gitignore +0 -0
  11. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/.vscode/settings.json +0 -0
  12. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/LICENSE +0 -0
  13. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/README.md +0 -0
  14. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/Makefile +0 -0
  15. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/Notes.md +0 -0
  16. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/Roadmap.md +0 -0
  17. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/Stages.md +0 -0
  18. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/TypesAndDefs.md +0 -0
  19. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/conf.py +0 -0
  20. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/index.rst +0 -0
  21. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/intro.rst +0 -0
  22. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/quickstart.rst +0 -0
  23. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/docs/reference.rst +0 -0
  24. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/ivpm.yaml +0 -0
  25. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/setup.cfg +0 -0
  26. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/__init__.py +0 -0
  27. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/__main__.py +0 -0
  28. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  29. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/fileset.py +0 -0
  30. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  31. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/package.py +0 -0
  32. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/package_def.py +0 -0
  33. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  34. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/pkg_rgy.py +0 -0
  35. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/share/flow.json +0 -0
  36. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  37. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/std/message.py +0 -0
  38. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  39. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task.py +0 -0
  40. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task_data.py +0 -0
  41. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task_def.py +0 -0
  42. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task_graph_builder.py +0 -0
  43. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task_graph_runner.py +0 -0
  44. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task_graph_runner_local.py +0 -0
  45. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/task_memento.py +0 -0
  46. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow/mgr/util.py +0 -0
  47. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  48. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  49. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  50. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  51. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/examples/example1/example1.flow +0 -0
  52. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/sys/test_pkg_discovery.py +0 -0
  53. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/__init__.py +0 -0
  54. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  55. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  56. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  57. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  58. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  59. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  60. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  61. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  62. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  63. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  64. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  65. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  66. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  67. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/test_data_merge.py +0 -0
  68. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/test_pyclass.py +0 -0
  69. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/test_smoke copy.sav +0 -0
  70. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/tests/unit/test_smoke.py +0 -0
  71. {dv_flow_mgr-0.0.1.12941329363a1 → dv_flow_mgr-0.0.1.12941908886a1}/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.12941329363a1
3
+ Version: 0.0.1.12941908886a1
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.12941329363a1"
8
+ version = "0.0.1.12941908886a1"
9
9
  dependencies = [
10
10
  'pydantic',
11
11
  'pyyaml',
@@ -25,21 +25,21 @@ class FileSet(Task):
25
25
 
26
26
  if self.params is not None:
27
27
  glob_root = os.path.join(self.srcdir, self.params.base)
28
+ glob_root = glob_root.strip()
28
29
 
29
- print("glob_root: %s" % glob_root)
30
+ if glob_root[-1] == '/' or glob_root == '\\':
31
+ glob_root = glob_root[:-1]
30
32
 
31
33
  fs = _FileSet(
32
34
  src=self.name,
33
35
  type=self.params.type,
34
36
  basedir=glob_root)
35
- print("glob_root: %s" % glob_root)
36
37
 
37
38
  if not isinstance(self.params.include, list):
38
39
  self.params.include = [self.params.include]
39
40
 
40
41
  included_files = []
41
42
  for pattern in self.params.include:
42
- print("pattern: %s" % pattern)
43
43
  included_files.extend(glob.glob(os.path.join(glob_root, pattern), recursive=False))
44
44
 
45
45
  for file in included_files:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.1.12941329363a1
3
+ Version: 0.0.1.12941908886a1
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
@@ -36,7 +36,6 @@ src/dv_flow/mgr/share/flow.json
36
36
  src/dv_flow/mgr/std/fileset.py
37
37
  src/dv_flow/mgr/std/flow.dv
38
38
  src/dv_flow/mgr/std/message.py
39
- src/dv_flow/mgr/std/task_fileset.py
40
39
  src/dv_flow/mgr/std/task_null.py
41
40
  src/dv_flow_mgr.egg-info/PKG-INFO
42
41
  src/dv_flow_mgr.egg-info/SOURCES.txt
@@ -45,6 +44,7 @@ src/dv_flow_mgr.egg-info/entry_points.txt
45
44
  src/dv_flow_mgr.egg-info/requires.txt
46
45
  src/dv_flow_mgr.egg-info/top_level.txt
47
46
  tests/examples/example1/example1.flow
47
+ tests/sys/test_depends.py
48
48
  tests/sys/test_pkg_discovery.py
49
49
  tests/unit/__init__.py
50
50
  tests/unit/test_data_merge.py
@@ -0,0 +1,47 @@
1
+ import os
2
+ import pytest
3
+ import subprocess
4
+ import sys
5
+
6
+ def test_seq_1(tmpdir):
7
+ rundir = os.path.join(tmpdir)
8
+
9
+ flow_dv = """
10
+ package:
11
+ name: p1
12
+
13
+ tasks:
14
+ - name: files
15
+ uses: std.FileSet
16
+ with:
17
+ type: textFiles
18
+ include: "*.txt"
19
+
20
+ - name: print
21
+ uses: std.Message
22
+ with:
23
+ msg: "Running Print"
24
+ """
25
+
26
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
27
+ fp.write(flow_dv)
28
+
29
+ with open(os.path.join(rundir, "file.txt"), "w") as fp:
30
+ fp.write("Hello There\n")
31
+
32
+ env = os.environ.copy()
33
+ env["DV_FLOW_PATH"] = rundir
34
+
35
+ cmd = [
36
+ sys.executable,
37
+ "-m",
38
+ "dv_flow.mgr",
39
+ "run",
40
+ "print"
41
+ ]
42
+
43
+ output = subprocess.check_output(cmd, cwd=rundir, env=env)
44
+
45
+ output = output.decode()
46
+
47
+ assert output.find("Running Print") != -1
@@ -52,3 +52,40 @@ def test_fileset_1(tmpdir):
52
52
 
53
53
  out = asyncio.run(runner.run(task))
54
54
  assert out.changed == True
55
+
56
+ def test_glob_sys(tmpdir):
57
+ flow_dv = """
58
+ package:
59
+ name: p1
60
+
61
+ tasks:
62
+ - name: glob
63
+ uses: std.FileSet
64
+ with:
65
+ type: systemVerilogSource
66
+ include: "*.sv"
67
+ """
68
+
69
+ rundir = os.path.join(tmpdir)
70
+
71
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
72
+ fp.write(flow_dv)
73
+
74
+ with open(os.path.join(rundir, "top.sv"), "w") as fp:
75
+ fp.write("\n")
76
+
77
+ pkg_def = PackageDef.load(os.path.join(tmpdir, "flow.dv"))
78
+ builder = TaskGraphBuilder(
79
+ root_pkg=pkg_def,
80
+ rundir=os.path.join(tmpdir, "rundir"))
81
+ runner = TaskGraphRunnerLocal(rundir=os.path.join(tmpdir, "rundir"))
82
+
83
+ task = builder.mkTaskGraph("p1.glob")
84
+ output = asyncio.run(runner.run(task))
85
+
86
+ print("output: %s" % str(output))
87
+
88
+ assert len(output.filesets) == 1
89
+ fs = output.filesets[0]
90
+ assert len(fs.files) == 1
91
+ assert fs.files[0] == "top.sv"
@@ -1,90 +0,0 @@
1
- import os
2
- import glob
3
- import fnmatch
4
- import pydantic.dataclasses as dc
5
- from ..fileset import FileSet
6
- from ..package import TaskCtor
7
- from ..task import Task, TaskParams
8
- from ..task_data import TaskData
9
- from ..task_memento import TaskMemento
10
- from typing import List, Tuple
11
-
12
- class TaskFileSet(Task):
13
-
14
- async def run(self, input : TaskData) -> TaskData:
15
- print("TaskFileSet run: %s: basedir=%s, base=%s type=%s include=%s" % (
16
- self.name,
17
- self.basedir,
18
- self.params.base, self.params.type, str(self.params.include)
19
- ))
20
-
21
- glob_root = os.path.join(self.basedir, self.params.base)
22
-
23
- ex_memento = self.getMemento(TaskFileSetMemento)
24
-
25
- fs = FileSet(
26
- src=self.name,
27
- type=self.params.type,
28
- basedir=glob_root)
29
- print("glob_root: %s" % glob_root)
30
-
31
- if not isinstance(self.params.include, list):
32
- self.params.include = [self.params.include]
33
-
34
- included_files = []
35
- for pattern in self.params.include:
36
- print("pattern: %s" % pattern)
37
- included_files.extend(glob.glob(os.path.join(glob_root, pattern), recursive=False))
38
-
39
- memento = TaskFileSetMemento()
40
- for file in included_files:
41
- if not any(glob.fnmatch.fnmatch(file, os.path.join(glob_root, pattern)) for pattern in self.params.exclude):
42
- memento.files.append((file, os.path.getmtime(os.path.join(glob_root, file))))
43
- fs.files.append(file[len(glob_root):])
44
-
45
- # Check to see if the filelist or fileset have changed
46
- # Only bother doing this if the upstream task data has not changed
47
- if ex_memento is not None and not input.changed:
48
- ex_memento.files.sort(key=lambda x: x[0])
49
- memento.files.sort(key=lambda x: x[0])
50
- input.changed = ex_memento != memento
51
- else:
52
- input.changed = True
53
-
54
- self.setMemento(memento)
55
-
56
- input.addFileSet(fs)
57
- return input
58
-
59
- class TaskFileSetParams(TaskParams):
60
- base : str = ""
61
- type : str = "Unknown"
62
- include : List[str] = dc.Field(default_factory=list)
63
- exclude : List[str] = dc.Field(default_factory=list)
64
-
65
- class TaskFileSetMemento(TaskMemento):
66
- files : List[Tuple[str,float]] = dc.Field(default_factory=list)
67
-
68
- class TaskFileSetCtor(TaskCtor):
69
-
70
- def mkTaskParams(self) -> TaskParams:
71
- return TaskFileSetParams()
72
-
73
- def setTaskParams(self, params : TaskParams, pvals : dict):
74
- for p in pvals.keys():
75
- if not hasattr(params, p):
76
- raise Exception("Unsupported parameter: " + p)
77
- else:
78
- setattr(params, p, pvals[p])
79
-
80
- def mkTask(self, name : str, task_id : int, session : 'Session', params : TaskParams, depends : List['Task']) -> 'Task':
81
- task = TaskFileSet(
82
- name=name,
83
- task_id=task_id,
84
- session=session,
85
- params=params,
86
- basedir=os.path.dirname(os.path.abspath(__file__)),
87
- srcdir=os.path.dirname(os.path.abspath(__file__)))
88
- task.depends.extend(depends)
89
- return task
90
-