dv-flow-mgr 0.0.2.14149088756a1__tar.gz → 0.0.2.14150065664a1__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 (116) hide show
  1. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/pytask_api.rst +10 -0
  3. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/pyproject.toml +1 -1
  4. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/__init__.py +1 -0
  5. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node.py +1 -1
  6. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_leaf.py +2 -2
  7. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_run_ctxt.py +30 -1
  8. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  9. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/.github/workflows/ci.yml +0 -0
  10. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/.gitignore +0 -0
  11. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/.vscode/settings.json +0 -0
  12. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/LICENSE +0 -0
  13. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/README.md +0 -0
  14. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/ChangeLog.md +0 -0
  15. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/KeyArchitecture.md +0 -0
  16. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Makefile +0 -0
  17. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Notes.md +0 -0
  18. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Roadmap.md +0 -0
  19. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/RundirLayout.md +0 -0
  20. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Stages.md +0 -0
  21. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Steps.md +0 -0
  22. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Tasks.md +0 -0
  23. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/TypesAndDefs.md +0 -0
  24. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/Usecases.md +0 -0
  25. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/cmdref.rst +0 -0
  26. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/conf.py +0 -0
  27. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/index.rst +0 -0
  28. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/docs/quickstart.rst +0 -0
  29. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/fwperiph_dma.pss +0 -0
  30. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/ivpm.yaml +0 -0
  31. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/setup.cfg +0 -0
  32. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/__main__.py +0 -0
  33. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/cmds/cmd_graph.py +0 -0
  34. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  35. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/cmds/cmd_show.py +0 -0
  36. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  37. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  38. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/expr_parser.py +0 -0
  39. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/fileset.py +0 -0
  40. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  41. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/out +0 -0
  42. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/package.py +0 -0
  43. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/package_def.py +0 -0
  44. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  45. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/param.py +0 -0
  46. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/param_def.py +0 -0
  47. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  48. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/parsetab.py +0 -0
  49. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/pkg_rgy.py +0 -0
  50. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/share/flow.json +0 -0
  51. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/std/create_file.py +0 -0
  52. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/std/exec.py +0 -0
  53. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/std/fileset.py +0 -0
  54. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  55. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/std/message.py +0 -0
  56. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  57. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_data.py +0 -0
  58. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_def.py +0 -0
  59. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_graph_builder.py +0 -0
  60. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_graph_dot_writer.py +0 -0
  61. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  62. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_compound.py +0 -0
  63. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor.py +0 -0
  64. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor_compound.py +0 -0
  65. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor_compound_proxy.py +0 -0
  66. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor_def_base.py +0 -0
  67. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor_proxy.py +0 -0
  68. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor_task.py +0 -0
  69. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_node_ctor_wrapper.py +0 -0
  70. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_output.py +0 -0
  71. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  72. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/task_runner.py +0 -0
  73. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/type.py +0 -0
  74. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/type_def.py +0 -0
  75. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/util/__init__.py +0 -0
  76. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/util/__main__.py +0 -0
  77. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/util/cmds/__init__.py +0 -0
  78. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/util/cmds/cmd_schema.py +0 -0
  79. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow/mgr/util/util.py +0 -0
  80. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +0 -0
  81. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  82. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  83. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  84. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  85. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/examples/example1/example1.flow +0 -0
  86. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/system/test_depends.py +0 -0
  87. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/system/test_pkg_discovery.py +0 -0
  88. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/system/test_stdlib.py +0 -0
  89. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/__init__.py +0 -0
  90. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  91. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  92. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  93. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  94. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  95. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  96. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  97. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  98. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  99. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  100. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  101. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  102. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  103. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_compound_task.py +0 -0
  104. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_data_merge.py +0 -0
  105. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_dataflow.py +0 -0
  106. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_expr_eval.py +0 -0
  107. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_expr_parser.py +0 -0
  108. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_fileset.py +0 -0
  109. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_imports.py +0 -0
  110. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_markers.py +0 -0
  111. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_parse.py +0 -0
  112. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_pyclass.py +0 -0
  113. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_pytask_smoke.py +0 -0
  114. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_smoke copy.sav +0 -0
  115. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_smoke.py +0 -0
  116. {dv_flow_mgr-0.0.2.14149088756a1 → dv_flow_mgr-0.0.2.14150065664a1}/tests/unit/test_stdlib.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.2.14149088756a1
3
+ Version: 0.0.2.14150065664a1
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
@@ -33,6 +33,16 @@ dependencies.
33
33
  :members:
34
34
  :exclude-members: model_config
35
35
 
36
+ TaskRunCtxt
37
+ ===========
38
+
39
+ The task implementaion is passed a task-run context object that
40
+ provides utilities for the task.
41
+
42
+ .. autoclass:: dv_flow.mgr.TaskRunCtxt
43
+ :members:
44
+ :exclude-members: model_config
45
+
36
46
 
37
47
  TaskDataResult
38
48
  ==============
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "dv-flow-mgr"
8
- version = "0.0.2.14149088756a1"
8
+ version = "0.0.2.14150065664a1"
9
9
  dependencies = [
10
10
  'jq',
11
11
  'pydantic',
@@ -24,6 +24,7 @@ from .pkg_rgy import PkgRgy
24
24
  from .task_data import *
25
25
  from .task_def import *
26
26
  from .task_graph_builder import TaskGraphBuilder
27
+ from .task_run_ctxt import TaskRunCtxt
27
28
  from .task_runner import TaskRunner
28
29
  from .task_node_ctor_wrapper import task
29
30
  from .task_runner import TaskSetRunner
@@ -111,7 +111,7 @@ class TaskNode(object):
111
111
  "rundir": rundir,
112
112
  "input": input.model_dump(warnings=False),
113
113
  "needs": [need[0].name for need in self.needs],
114
- "commands": [cmd.dump_model() for cmd in ctxt._exec_info],
114
+ "commands": [cmd.model_dump() for cmd in ctxt._exec_info],
115
115
  "result": {
116
116
  "status": self.result.status,
117
117
  "changed": self.result.changed,
@@ -116,10 +116,10 @@ class TaskNodeLeaf(TaskNode):
116
116
  inputs=inputs,
117
117
  memento=memento)
118
118
 
119
- ctxt = TaskRunCtxt(runner=self, rundir=input.rundir)
119
+ ctxt = TaskRunCtxt(runner=runner, rundir=input.rundir)
120
120
 
121
121
  self._log.debug("--> Call task method %s" % str(self.task))
122
- self.result : TaskDataResult = await self.task(self, input)
122
+ self.result : TaskDataResult = await self.task(ctxt, input)
123
123
  self._log.debug("<-- Call task method %s" % str(self.task))
124
124
 
125
125
  self.result.markers.extend(ctxt._markers)
@@ -23,6 +23,19 @@ class TaskRunCtxt(object):
23
23
  logfilter=None,
24
24
  cwd=None,
25
25
  env=None):
26
+ """
27
+ Executes a command as part of the task's implementation.
28
+ Output from the command will be saved to the specified logfile,
29
+ or to a default logfile if not specified. If the command
30
+ fails, an error marker will be added.
31
+
32
+ Example:
33
+
34
+ .. code-block:: python
35
+
36
+ status |= await runner.exec(['ls', '-l'], logfile='ls.log')
37
+
38
+ """
26
39
  if logfile is None:
27
40
  logfile = "cmd_%d.log" % (self._exec_info.__len__() + 1)
28
41
 
@@ -40,13 +53,29 @@ class TaskRunCtxt(object):
40
53
  self._exec_info.append(ExecInfo(cmd=cmd, status=status))
41
54
 
42
55
  if status != 0:
43
- self.error_marker("Command failed: %s" % " ".join(cmd))
56
+ self.error("Command failed: %s" % " ".join(cmd))
57
+
58
+ return status
59
+
60
+ def create(self, path, content):
61
+ """Create a file in the task's rundir"""
62
+ if not os.path.isabs(path):
63
+ path = os.path.join(self.rundir, path)
64
+
65
+ if not os.path.isdir(os.path.dirname(path)):
66
+ os.makedirs(os.path.dirname(path))
67
+
68
+ with open(path, "w") as fp:
69
+ fp.write(content)
70
+
44
71
 
45
72
  def marker(self, msg : str, severity : SeverityE, loc : TaskMarkerLoc=None):
73
+ """Add a marker related to the task's execution"""
46
74
  if loc is not None:
47
75
  self._markers.append(TaskMarker(msg=msg, severity=severity, loc=loc))
48
76
  else:
49
77
  self._markers.append(TaskMarker(msg=msg, severity=severity))
50
78
 
51
79
  def error(self, msg : str, loc : TaskMarkerLoc=None):
80
+ """Add an error marker related to the task's execution"""
52
81
  self.marker(msg=msg, severity=SeverityE.Error, loc=loc)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 0.0.2.14149088756a1
3
+ Version: 0.0.2.14150065664a1
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