dv-flow-mgr 1.0.0.14420805951a1__tar.gz → 1.0.0.14458222178a1__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 (139) hide show
  1. dv_flow_mgr-1.0.0.14458222178a1/.env +1 -0
  2. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/.gitignore +0 -1
  3. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/PKG-INFO +1 -1
  4. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/pyproject.toml +1 -1
  5. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_graph_builder.py +15 -11
  6. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_compound.py +8 -3
  7. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  8. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +1 -0
  9. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_compound_task.py +158 -0
  10. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/.github/workflows/ci.yml +0 -0
  11. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/.vscode/settings.json +0 -0
  12. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/LICENSE +0 -0
  13. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/README.md +0 -0
  14. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/ChangeLog.md +0 -0
  15. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/KeyArchitecture.md +0 -0
  16. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Makefile +0 -0
  17. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Notes.md +0 -0
  18. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Roadmap.md +0 -0
  19. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/RundirLayout.md +0 -0
  20. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Stages.md +0 -0
  21. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Steps.md +0 -0
  22. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Tasks.md +0 -0
  23. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/TypesAndDefs.md +0 -0
  24. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/Usecases.md +0 -0
  25. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/cmdref.rst +0 -0
  26. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/conf.py +0 -0
  27. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/index.rst +0 -0
  28. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/pytask_api.rst +0 -0
  29. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/docs/quickstart.rst +0 -0
  30. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/fwperiph_dma.pss +0 -0
  31. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/ivpm.yaml +0 -0
  32. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/setup.cfg +0 -0
  33. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/__init__.py +0 -0
  34. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/__main__.py +0 -0
  35. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/cmds/cmd_graph.py +0 -0
  36. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  37. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/cmds/cmd_show.py +0 -0
  38. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/cond_def.py +0 -0
  39. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/config.py +0 -0
  40. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/config_def.py +0 -0
  41. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  42. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/exec_callable.py +0 -0
  43. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  44. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/expr_parser.py +0 -0
  45. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/ext_rgy.py +0 -0
  46. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/extend_def.py +0 -0
  47. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/fileset.py +0 -0
  48. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  49. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/listener_list.py +0 -0
  50. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/need_def.py +0 -0
  51. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/null_callable.py +0 -0
  52. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/out +0 -0
  53. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/package.py +0 -0
  54. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/package_def.py +0 -0
  55. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  56. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/package_loader.py +0 -0
  57. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/param.py +0 -0
  58. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/param_def.py +0 -0
  59. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  60. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/parser.out +0 -0
  61. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/parsetab.py +0 -0
  62. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/pytask_callable.py +0 -0
  63. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/root_package.py +0 -0
  64. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/share/flow.json +0 -0
  65. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/shell_callable.py +0 -0
  66. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/srcinfo.py +0 -0
  67. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/std/create_file.py +0 -0
  68. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/std/exec.py +0 -0
  69. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/std/fileset.py +0 -0
  70. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  71. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/std/message.py +0 -0
  72. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  73. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task.py +0 -0
  74. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_data.py +0 -0
  75. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_def.py +0 -0
  76. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_graph_dot_writer.py +0 -0
  77. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  78. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node.py +0 -0
  79. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor.py +0 -0
  80. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor_compound.py +0 -0
  81. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor_compound_proxy.py +0 -0
  82. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor_def_base.py +0 -0
  83. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor_proxy.py +0 -0
  84. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor_task.py +0 -0
  85. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_ctor_wrapper.py +0 -0
  86. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_node_leaf.py +0 -0
  87. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_output.py +0 -0
  88. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  89. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_run_ctxt.py +0 -0
  90. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/task_runner.py +0 -0
  91. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/type.py +0 -0
  92. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/type_def.py +0 -0
  93. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/util/__init__.py +0 -0
  94. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/util/__main__.py +0 -0
  95. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/util/cmds/__init__.py +0 -0
  96. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/util/cmds/cmd_schema.py +0 -0
  97. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/util/util.py +0 -0
  98. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow/mgr/yaml_srcinfo_loader.py +0 -0
  99. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  100. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  101. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  102. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  103. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/examples/example1/example1.flow +0 -0
  104. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/system/test_depends.py +0 -0
  105. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/system/test_pkg_discovery.py +0 -0
  106. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/system/test_stdlib.py +0 -0
  107. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/__init__.py +0 -0
  108. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  109. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  110. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  111. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  112. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  113. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  114. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  115. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  116. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  117. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  118. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  119. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  120. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  121. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/marker_collector.py +0 -0
  122. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/task_listener_test.py +0 -0
  123. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_data_merge.py +0 -0
  124. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_dataflow.py +0 -0
  125. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_deps.py +0 -0
  126. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_expr_eval.py +0 -0
  127. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_expr_parser.py +0 -0
  128. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_fileset.py +0 -0
  129. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_graph.py +0 -0
  130. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_imports.py +0 -0
  131. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_load_package.py +0 -0
  132. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_markers.py +0 -0
  133. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_parse.py +0 -0
  134. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_pyclass.py +0 -0
  135. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_pyexec.py +0 -0
  136. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_pytask_smoke.py +0 -0
  137. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_smoke copy.sav +0 -0
  138. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_smoke.py +0 -0
  139. {dv_flow_mgr-1.0.0.14420805951a1 → dv_flow_mgr-1.0.0.14458222178a1}/tests/unit/test_stdlib.py +0 -0
@@ -0,0 +1 @@
1
+ PYTHONPATH=./src
@@ -122,7 +122,6 @@ celerybeat.pid
122
122
  *.sage.py
123
123
 
124
124
  # Environments
125
- .env
126
125
  .venv
127
126
  env/
128
127
  venv/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.0.0.14420805951a1
3
+ Version: 1.0.0.14458222178a1
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 = "1.0.0.14420805951a1"
8
+ version = "1.0.0.14458222178a1"
9
9
  dependencies = [
10
10
  'jq',
11
11
  'pydantic',
@@ -235,7 +235,7 @@ class TaskGraphBuilder(object):
235
235
  else:
236
236
  raise Exception("Task %s parameters do not include %s" % (task.name, k))
237
237
 
238
- self._log.debug("<-- mkTaskNode: %s" % task_t)
238
+ self._log.debug("<-- mkTaskNode: %s (%d needs)" % (task_t, len(ret.needs)))
239
239
  return ret
240
240
 
241
241
  def _findTask(self, pkg, name):
@@ -386,13 +386,14 @@ class TaskGraphBuilder(object):
386
386
  node.input.rundir = self.get_rundir()
387
387
  self.leave_rundir()
388
388
 
389
- self._log.debug("--> processing needs (%s)" % task.name)
389
+ self._log.debug("--> processing needs (%s) (%d)" % (task.name, len(task.needs)))
390
390
  for need in task.needs:
391
391
  need_n = self._getTaskNode(need.name)
392
- self._log.debug("Add need %s" % need_n.name)
393
392
  if need_n is None:
394
393
  raise Exception("Failed to find need %s" % need.name)
394
+ self._log.debug("Add need %s with %d dependencies" % (need_n.name, len(need_n.needs)))
395
395
  node.input.needs.append((need_n, False))
396
+ # node.needs.append((need_n, False))
396
397
  self._log.debug("<-- processing needs")
397
398
 
398
399
  # TODO: handle strategy
@@ -414,10 +415,13 @@ class TaskGraphBuilder(object):
414
415
  self._log.debug("Process node %s" % t.name)
415
416
 
416
417
  referenced = None
417
- for tt in task.subtasks:
418
- if tt in t.needs:
419
- referenced = tt
420
- break
418
+ for tt in node.tasks:
419
+ self._log.debug(" Checking task %s" % tt.name)
420
+ for tnn,_ in tt.needs:
421
+ self._log.debug(" Check against need %s" % tnn.name)
422
+ if tn == tnn:
423
+ referenced = tnn
424
+ break
421
425
 
422
426
  refs_internal = None
423
427
  # Assess how this task is connected to others in the compound node
@@ -439,12 +443,12 @@ class TaskGraphBuilder(object):
439
443
  self._log.debug("Node %s references internal node %s" % (t.name, refs_internal.name))
440
444
 
441
445
  if referenced is not None:
446
+ self._log.debug("Node %s has internal needs: %s" % (tn.name, referenced.name))
447
+ else:
442
448
  # Add this task as a dependency of the output
443
449
  # node (the root one)
444
450
  self._log.debug("Add node %s as a top-level dependency" % tn.name)
445
451
  node.needs.append((tn, False))
446
- else:
447
- self._log.debug("Node %s has internal needs" % tn.name)
448
452
 
449
453
  if task.rundir == RundirE.Unique:
450
454
  self.leave_rundir()
@@ -452,7 +456,7 @@ class TaskGraphBuilder(object):
452
456
  return node
453
457
 
454
458
  def _gatherNeeds(self, task_t, node):
455
- self._log.debug("--> _gatherNeeds %s" % task_t.name)
459
+ self._log.debug("--> _gatherNeeds %s (%d)" % (task_t.name, len(task_t.needs)))
456
460
  if task_t.uses is not None:
457
461
  self._gatherNeeds(task_t.uses, node)
458
462
 
@@ -461,7 +465,7 @@ class TaskGraphBuilder(object):
461
465
  if need_n is None:
462
466
  raise Exception("Failed to find need %s" % need.name)
463
467
  node.needs.append((need_n, False))
464
- self._log.debug("<-- _gatherNeeds %s" % task_t.name)
468
+ self._log.debug("<-- _gatherNeeds %s (%d)" % (task_t.name, len(node.needs)))
465
469
 
466
470
  def error(self, msg, loc=None):
467
471
  if loc is not None:
@@ -21,7 +21,7 @@
21
21
  #****************************************************************************
22
22
  import dataclasses as dc
23
23
  from pydantic import BaseModel
24
- from .task_def import ConsumesE
24
+ from .task_def import ConsumesE, PassthroughE, PassthroughE, PassthroughE, PassthroughE
25
25
  from .task_node import TaskNode
26
26
  from .task_node_leaf import TaskNodeLeaf
27
27
  from .task_data import TaskDataResult, TaskDataInput, TaskDataOutput
@@ -44,7 +44,9 @@ class TaskNodeCompound(TaskNode):
44
44
  self.input = TaskNodeLeaf(
45
45
  name=self.name + ".in",
46
46
  srcdir=self.srcdir,
47
- params=NullParams())
47
+ params=NullParams(),
48
+ consumes=ConsumesE.No,
49
+ passthrough=PassthroughE.All)
48
50
  self.input.task = null_run
49
51
  self.tasks.append(self.input)
50
52
 
@@ -55,7 +57,7 @@ class TaskNodeCompound(TaskNode):
55
57
  return self.input
56
58
 
57
59
  async def do_run(self,
58
- runner : TaskRunner,
60
+ ctxt : TaskRunner,
59
61
  rundir,
60
62
  memento : Any=None) -> TaskDataResult:
61
63
  self._log.debug("Compound task %s (%d)" % (self.name, len(self.needs)))
@@ -90,6 +92,9 @@ class TaskNodeCompound(TaskNode):
90
92
  changed=changed,
91
93
  output=output,
92
94
  dep_m={})
95
+
96
+ # if self.save_exec_data:
97
+ # self._save_exec_data(rundir, ctxt, self.input.input)
93
98
 
94
99
  return 0
95
100
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.0.0.14420805951a1
3
+ Version: 1.0.0.14458222178a1
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
@@ -275,3 +275,161 @@ package:
275
275
  assert output.output[0].src == 'foo.entry.glob_txt'
276
276
  assert output.output[0].type == 'std.FileSet'
277
277
  assert len(output.output[0].files) == 1
278
+
279
+ def test_compound_input_auto_bind(tmpdir):
280
+ flow_dv = """
281
+ package:
282
+ name: foo
283
+
284
+ tasks:
285
+ - name: TopLevelTask
286
+ uses: std.CreateFile
287
+ with:
288
+ filename: TopLevelTask.txt
289
+ content: "TopLevelTask.txt"
290
+
291
+ - name: entry
292
+ needs: [TopLevelTask]
293
+ body:
294
+ - name: mytask
295
+ passthrough: all
296
+ """
297
+
298
+ rundir = os.path.join(tmpdir)
299
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
300
+ fp.write(flow_dv)
301
+
302
+ marker_collector = MarkerCollector()
303
+ pkg_def = PackageLoader(
304
+ marker_listeners=[marker_collector]).load(
305
+ os.path.join(rundir, "flow.dv"))
306
+ assert len(marker_collector.markers) == 0
307
+
308
+ builder = TaskGraphBuilder(
309
+ root_pkg=pkg_def,
310
+ rundir=os.path.join(rundir, "rundir"))
311
+ runner = TaskSetRunner(rundir=os.path.join(rundir, "rundir"))
312
+
313
+ t1 = builder.mkTaskNode("foo.entry")
314
+
315
+ TaskGraphDotWriter().write(
316
+ t1,
317
+ os.path.join(rundir, "graph.dot"))
318
+
319
+ output = asyncio.run(runner.run(t1))
320
+
321
+ assert runner.status == 0
322
+ assert len(output.output) == 1
323
+ assert output.output[0].src == 'foo.TopLevelTask'
324
+ assert output.output[0].type == 'std.FileSet'
325
+ assert len(output.output[0].files) == 1
326
+
327
+ def test_compound_input_auto_bind_consumes_all(tmpdir):
328
+ flow_dv = """
329
+ package:
330
+ name: foo
331
+
332
+ tasks:
333
+ - name: TopLevelTask
334
+ uses: std.CreateFile
335
+ with:
336
+ filename: TopLevelTask.txt
337
+ content: "TopLevelTask.txt"
338
+
339
+ - name: entry
340
+ needs: [TopLevelTask]
341
+ body:
342
+ - name: mytask
343
+ shell: pytask
344
+ run: |
345
+ with open(os.path.join(input.rundir, "mytask.txt"), "w") as fp:
346
+ fp.write("inputs: %d" % len(input.inputs))
347
+ """
348
+
349
+ rundir = os.path.join(tmpdir)
350
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
351
+ fp.write(flow_dv)
352
+
353
+ marker_collector = MarkerCollector()
354
+ pkg_def = PackageLoader(
355
+ marker_listeners=[marker_collector]).load(
356
+ os.path.join(rundir, "flow.dv"))
357
+ assert len(marker_collector.markers) == 0
358
+
359
+ builder = TaskGraphBuilder(
360
+ root_pkg=pkg_def,
361
+ rundir=os.path.join(rundir, "rundir"))
362
+ runner = TaskSetRunner(rundir=os.path.join(rundir, "rundir"))
363
+
364
+ t1 = builder.mkTaskNode("foo.entry")
365
+
366
+ TaskGraphDotWriter().write(
367
+ t1,
368
+ os.path.join(rundir, "graph.dot"))
369
+
370
+ output = asyncio.run(runner.run(t1))
371
+
372
+ assert runner.status == 0
373
+ # No output, since the inputting task consumes all
374
+ assert len(output.output) == 0
375
+
376
+ assert os.path.isfile(os.path.join(rundir, "rundir/foo.entry/foo.entry.mytask/mytask.txt"))
377
+ content = open(os.path.join(rundir, "rundir/foo.entry/foo.entry.mytask/mytask.txt"), "r").read().strip()
378
+ assert content == "inputs: 1"
379
+
380
+ def test_compound_input_auto_bind_chain(tmpdir):
381
+ flow_dv = """
382
+ package:
383
+ name: foo
384
+
385
+ tasks:
386
+ - name: TopLevelTask
387
+ uses: std.CreateFile
388
+ with:
389
+ filename: TopLevelTask.txt
390
+ content: "TopLevelTask.txt"
391
+
392
+ - name: entry
393
+ needs: [TopLevelTask]
394
+ body:
395
+ - name: mytask1
396
+ passthrough: all
397
+ - name: mytask2
398
+ passthrough: all
399
+ needs: [mytask1]
400
+ - name: mytask3
401
+ passthrough: all
402
+ needs: [mytask2]
403
+ - name: mytask4
404
+ passthrough: all
405
+ needs: [mytask3]
406
+ """
407
+
408
+ rundir = os.path.join(tmpdir)
409
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
410
+ fp.write(flow_dv)
411
+
412
+ marker_collector = MarkerCollector()
413
+ pkg_def = PackageLoader(
414
+ marker_listeners=[marker_collector]).load(
415
+ os.path.join(rundir, "flow.dv"))
416
+ assert len(marker_collector.markers) == 0
417
+
418
+ builder = TaskGraphBuilder(
419
+ root_pkg=pkg_def,
420
+ rundir=os.path.join(rundir, "rundir"))
421
+ runner = TaskSetRunner(rundir=os.path.join(rundir, "rundir"))
422
+
423
+ t1 = builder.mkTaskNode("foo.entry")
424
+
425
+ TaskGraphDotWriter().write(
426
+ t1,
427
+ os.path.join(rundir, "graph.dot"))
428
+
429
+ output = asyncio.run(runner.run(t1))
430
+
431
+ assert runner.status == 0
432
+ assert len(output.output) == 1
433
+ assert output.output[0].src == 'foo.TopLevelTask'
434
+ assert output.output[0].type == 'std.FileSet'
435
+ assert len(output.output[0].files) == 1