dv-flow-mgr 1.0.0.14483154884a1__tar.gz → 1.0.0.14504336776a1__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.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/pyproject.toml +1 -1
  3. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package.py +2 -0
  4. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package_loader.py +29 -17
  5. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  6. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_load_package.py +138 -0
  7. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/.env +0 -0
  8. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/.github/workflows/ci.yml +0 -0
  9. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/.gitignore +0 -0
  10. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/.vscode/settings.json +0 -0
  11. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/LICENSE +0 -0
  12. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/README.md +0 -0
  13. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/ChangeLog.md +0 -0
  14. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/KeyArchitecture.md +0 -0
  15. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Makefile +0 -0
  16. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Notes.md +0 -0
  17. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Roadmap.md +0 -0
  18. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/RundirLayout.md +0 -0
  19. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Stages.md +0 -0
  20. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Steps.md +0 -0
  21. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Tasks.md +0 -0
  22. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/TypesAndDefs.md +0 -0
  23. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Usecases.md +0 -0
  24. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/cmdref.rst +0 -0
  25. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/conf.py +0 -0
  26. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/index.rst +0 -0
  27. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/pytask_api.rst +0 -0
  28. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/quickstart.rst +0 -0
  29. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/fwperiph_dma.pss +0 -0
  30. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/ivpm.yaml +0 -0
  31. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/setup.cfg +0 -0
  32. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/__init__.py +0 -0
  33. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/__main__.py +0 -0
  34. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cmds/cmd_graph.py +0 -0
  35. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  36. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cmds/cmd_show.py +0 -0
  37. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cond_def.py +0 -0
  38. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/config.py +0 -0
  39. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/config_def.py +0 -0
  40. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  41. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/exec_callable.py +0 -0
  42. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  43. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/expr_parser.py +0 -0
  44. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/ext_rgy.py +0 -0
  45. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/extend_def.py +0 -0
  46. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/fileset.py +0 -0
  47. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  48. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/listener_list.py +0 -0
  49. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/need_def.py +0 -0
  50. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/null_callable.py +0 -0
  51. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/out +0 -0
  52. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package_def.py +0 -0
  53. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  54. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/param.py +0 -0
  55. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/param_def.py +0 -0
  56. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  57. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/parser.out +0 -0
  58. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/parsetab.py +0 -0
  59. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/pytask_callable.py +0 -0
  60. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/root_package.py +0 -0
  61. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/share/flow.json +0 -0
  62. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/shell_callable.py +0 -0
  63. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/srcinfo.py +0 -0
  64. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/create_file.py +0 -0
  65. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/exec.py +0 -0
  66. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/fileset.py +0 -0
  67. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  68. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/message.py +0 -0
  69. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  70. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task.py +0 -0
  71. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_data.py +0 -0
  72. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_def.py +0 -0
  73. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_graph_builder.py +0 -0
  74. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_graph_dot_writer.py +0 -0
  75. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  76. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node.py +0 -0
  77. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_compound.py +0 -0
  78. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor.py +0 -0
  79. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor_compound.py +0 -0
  80. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor_compound_proxy.py +0 -0
  81. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor_def_base.py +0 -0
  82. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor_proxy.py +0 -0
  83. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor_task.py +0 -0
  84. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor_wrapper.py +0 -0
  85. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_leaf.py +0 -0
  86. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_output.py +0 -0
  87. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  88. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_run_ctxt.py +0 -0
  89. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_runner.py +0 -0
  90. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/type.py +0 -0
  91. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/type_def.py +0 -0
  92. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/__init__.py +0 -0
  93. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/__main__.py +0 -0
  94. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/cmds/__init__.py +0 -0
  95. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/cmds/cmd_schema.py +0 -0
  96. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/util.py +0 -0
  97. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/yaml_srcinfo_loader.py +0 -0
  98. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +0 -0
  99. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/dependency_links.txt +0 -0
  100. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/entry_points.txt +0 -0
  101. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  102. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/top_level.txt +0 -0
  103. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/examples/example1/example1.flow +0 -0
  104. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/system/test_depends.py +0 -0
  105. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/system/test_pkg_discovery.py +0 -0
  106. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/system/test_stdlib.py +0 -0
  107. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/__init__.py +0 -0
  108. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1/files1/file1_1.sv +0 -0
  109. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1/files1/file1_2.sv +0 -0
  110. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1/files2/file2_1.sv +0 -0
  111. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1/files2/file2_2.sv +0 -0
  112. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  113. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1 copy/files1/file1_1.sv +0 -0
  114. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1 copy/files1/file1_2.sv +0 -0
  115. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1 copy/files2/file2_1.sv +0 -0
  116. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1 copy/files2/file2_2.sv +0 -0
  117. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  118. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  119. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  120. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  121. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/marker_collector.py +0 -0
  122. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/task_listener_test.py +0 -0
  123. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_compound_task.py +0 -0
  124. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_data_merge.py +0 -0
  125. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_dataflow.py +0 -0
  126. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_deps.py +0 -0
  127. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_expr_eval.py +0 -0
  128. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_expr_parser.py +0 -0
  129. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_fileset.py +0 -0
  130. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_graph.py +0 -0
  131. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_imports.py +0 -0
  132. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_markers.py +0 -0
  133. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_parse.py +0 -0
  134. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_pyclass.py +0 -0
  135. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_pyexec.py +0 -0
  136. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_pytask_smoke.py +0 -0
  137. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_smoke copy.sav +0 -0
  138. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_smoke.py +0 -0
  139. {dv_flow_mgr-1.0.0.14483154884a1 → dv_flow_mgr-1.0.0.14504336776a1}/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: 1.0.0.14483154884a1
3
+ Version: 1.0.0.14504336776a1
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.14483154884a1"
8
+ version = "1.0.0.14504336776a1"
9
9
  dependencies = [
10
10
  'jq',
11
11
  'pydantic',
@@ -24,6 +24,7 @@ import logging
24
24
  from typing import Any, ClassVar, Dict, List
25
25
  from .fragment_def import FragmentDef
26
26
  from .package_def import PackageDef
27
+ from .srcinfo import SrcInfo
27
28
  from .task import Task
28
29
 
29
30
  @dc.dataclass
@@ -37,6 +38,7 @@ class Package(object):
37
38
  types : Dict[str,Any] = dc.field(default_factory=dict)
38
39
  fragment_def_l : List[FragmentDef] = dc.field(default_factory=list)
39
40
  pkg_m : Dict[str, 'Package'] = dc.field(default_factory=dict)
41
+ srcinfo : SrcInfo = None
40
42
  _log : ClassVar = logging.getLogger("Package")
41
43
 
42
44
  @property
@@ -11,6 +11,7 @@ from .fragment_def import FragmentDef
11
11
  from .package_def import PackageDef
12
12
  from .package import Package
13
13
  from .ext_rgy import ExtRgy
14
+ from .srcinfo import SrcInfo
14
15
  from .task import Task
15
16
  from .task_def import TaskDef, PassthroughE, ConsumesE, RundirE
16
17
  from .task_data import TaskMarker, TaskMarkerLoc, SeverityE
@@ -50,6 +51,7 @@ class LoaderScope(SymbolScope):
50
51
 
51
52
  def findType(self, name) -> Task:
52
53
  last_dot = name.rfind('.')
54
+ pkg = None
53
55
  if last_dot != -1:
54
56
  pkg_name = name[:last_dot]
55
57
  task_name = name[last_dot+1:]
@@ -59,6 +61,7 @@ class LoaderScope(SymbolScope):
59
61
  else:
60
62
  path = self.loader.pkg_rgy.findPackagePath(pkg_name)
61
63
  if path is not None:
64
+ path = os.path.normpath(path)
62
65
  pkg = self.loader._loadPackage(path)
63
66
  self.loader._pkg_m[pkg_name] = pkg
64
67
  if pkg is not None and name in pkg.task_m.keys():
@@ -168,6 +171,7 @@ class PackageLoader(object):
168
171
 
169
172
  def load(self, root) -> Package:
170
173
  self._log.debug("--> load %s" % root)
174
+ root = os.path.normpath(root)
171
175
  ret = self._loadPackage(root, None)
172
176
  self._log.debug("<-- load %s" % root)
173
177
  return ret
@@ -182,6 +186,7 @@ class PackageLoader(object):
182
186
  pp = self.pkg_rgy.findPackagePath(nn)
183
187
  if pp is None:
184
188
  raise Exception("Package %s not found" % nn)
189
+ root = os.path.normpath(pp)
185
190
  pp_n = self._loadPackage(pp)
186
191
  pkg.pkg_m[pp_n.name] = pp_n
187
192
  self._log.debug("<-- load_rgy %s" % name)
@@ -264,28 +269,34 @@ class PackageLoader(object):
264
269
 
265
270
  def _mkPackage(self, pkg_def : PackageDef, root : str) -> Package:
266
271
  self._log.debug("--> _mkPackage %s" % pkg_def.name)
267
- pkg = Package(pkg_def, os.path.dirname(root))
268
-
269
- pkg_scope = self.package_scope()
270
- if pkg_scope is not None:
271
- self._log.debug("Add self (%s) as a subpkg of %s" % (pkg.name, pkg_scope.pkg.name))
272
- pkg_scope.pkg.pkg_m[pkg.name] = pkg
272
+ pkg = Package(
273
+ pkg_def,
274
+ os.path.dirname(root),
275
+ srcinfo=SrcInfo(file=root))
273
276
 
274
277
  if pkg.name in self._pkg_m.keys():
275
- raise Exception("Duplicate package %s" % pkg.name)
278
+ epkg = self._pkg_m[pkg.name]
279
+ if epkg.srcinfo.file != pkg.srcinfo.file:
280
+ self.error("Package %s already loaded from %s. Duplicate defined in %s" % (
281
+ pkg.name, epkg.srcinfo.file, pkg.srcinfo.file))
282
+ else:
283
+ pkg_scope = self.package_scope()
284
+ if pkg_scope is not None:
285
+ self._log.debug("Add self (%s) as a subpkg of %s" % (pkg.name, pkg_scope.pkg.name))
286
+ pkg_scope.pkg.pkg_m[pkg.name] = pkg
276
287
 
277
- self._pkg_m[pkg.name] = pkg
278
- self._pkg_s.append(PackageScope(name=pkg.name, pkg=pkg, loader=self._loader_scope))
279
- # Imports are loaded first
280
- self._loadPackageImports(pkg, pkg_def.imports, pkg.basedir)
288
+ self._pkg_m[pkg.name] = pkg
289
+ self._pkg_s.append(PackageScope(name=pkg.name, pkg=pkg, loader=self._loader_scope))
290
+ # Imports are loaded first
291
+ self._loadPackageImports(pkg, pkg_def.imports, pkg.basedir)
281
292
 
282
- taskdefs = pkg_def.tasks.copy()
293
+ taskdefs = pkg_def.tasks.copy()
283
294
 
284
- self._loadFragments(pkg, pkg_def.fragments, pkg.basedir, taskdefs)
295
+ self._loadFragments(pkg, pkg_def.fragments, pkg.basedir, taskdefs)
285
296
 
286
- self._loadTasks(pkg, taskdefs, pkg.basedir)
297
+ self._loadTasks(pkg, taskdefs, pkg.basedir)
287
298
 
288
- self._pkg_s.pop()
299
+ self._pkg_s.pop()
289
300
 
290
301
  self._log.debug("<-- _mkPackage %s (%s)" % (pkg_def.name, pkg.name))
291
302
  return pkg
@@ -342,6 +353,7 @@ class PackageLoader(object):
342
353
  sub_pkg = self._pkg_path_m[imp_path]
343
354
  else:
344
355
  self._log.info("Loading imported file %s" % imp_path)
356
+ imp_path = os.path.normpath(imp_path)
345
357
  sub_pkg = self._loadPackage(imp_path)
346
358
  self._log.info("Loaded imported package %s" % sub_pkg.name)
347
359
 
@@ -700,10 +712,10 @@ class PackageLoader(object):
700
712
 
701
713
  def error(self, msg, loc=None):
702
714
  if loc is not None:
703
- marker = TaskMarker(msg=msg, severity=TaskMarker.SeverityE.Error,
715
+ marker = TaskMarker(msg=msg, severity=SeverityE.Error,
704
716
  loc=loc)
705
717
  else:
706
- marker = TaskMarker(msg=msg, severity=TaskMarker.SeverityE.Error)
718
+ marker = TaskMarker(msg=msg, severity=SeverityE.Error)
707
719
  self.marker(marker)
708
720
 
709
721
  def marker(self, marker):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.0.0.14483154884a1
3
+ Version: 1.0.0.14504336776a1
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
@@ -330,3 +330,141 @@ fragment:
330
330
  assert len(t2.subtasks[0].needs) == 1
331
331
  assert t2.subtasks[0].needs[0] is not None
332
332
  assert t2.subtasks[0].needs[0].name == "foo.t1.t3"
333
+
334
+ def test_dup_import(tmpdir):
335
+ flow_dv = """
336
+ package:
337
+ name: foo
338
+ imports:
339
+ - foo2/flow.dv
340
+ - foo2/flow.dv
341
+
342
+ tasks:
343
+ - name: t1
344
+ body:
345
+ - name: t2
346
+ - name: t3
347
+ - name: t2
348
+ uses: t1
349
+ body:
350
+ - name: t4
351
+ needs: [t3]
352
+ - name: t4
353
+ need: [foo2.t5]
354
+
355
+ """
356
+
357
+ foo_dv = """
358
+ package:
359
+ name: foo2
360
+ tasks:
361
+ - name: t5
362
+ """
363
+
364
+ rundir = os.path.join(tmpdir)
365
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
366
+ fp.write(flow_dv)
367
+ os.makedirs(os.path.join(rundir, "foo2"))
368
+ with open(os.path.join(rundir, "foo2/flow.dv"), "w") as fp:
369
+ fp.write(foo_dv)
370
+
371
+ def marker_collector(m):
372
+ print("Marker: %s" % str(m))
373
+ raise Exception("Marker not expected: %s" % m)
374
+
375
+ pkg = PackageLoader(
376
+ marker_listeners=[marker_collector]).load(os.path.join(tmpdir, "flow.dv"))
377
+
378
+ assert pkg is not None
379
+ assert pkg.pkg_def is not None
380
+ assert pkg.name == "foo"
381
+ assert pkg.basedir == rundir
382
+ assert len(pkg.task_m) == 3
383
+ assert "foo.t1" in pkg.task_m.keys()
384
+ # assert "foo.t2" in pkg.task_m.keys()
385
+ # assert "foo.t5" in pkg.task_m.keys()
386
+
387
+ t1 = pkg.task_m["foo.t1"]
388
+ assert t1.name == "foo.t1"
389
+ assert len(t1.subtasks) == 2
390
+
391
+ def test_dup_import_subpkg(tmpdir):
392
+ flow_dv = """
393
+ package:
394
+ name: foo
395
+ imports:
396
+ - foo3/flow.dv
397
+ - foo4/flow.dv
398
+
399
+ tasks:
400
+ - name: t1
401
+ body:
402
+ - name: t2
403
+ - name: t3
404
+ - name: t2
405
+ uses: t1
406
+ body:
407
+ - name: t4
408
+ needs: [t3]
409
+ - name: t4
410
+ need: [foo2.t5]
411
+
412
+ """
413
+
414
+ foo2_dv = """
415
+ package:
416
+ name: foo2
417
+ tasks:
418
+ - name: t5
419
+ """
420
+
421
+ foo3_dv = """
422
+ package:
423
+ name: foo3
424
+ imports:
425
+ - ../foo2/flow.dv
426
+ tasks:
427
+ - name: t5
428
+ """
429
+
430
+ foo4_dv = """
431
+ package:
432
+ name: foo4
433
+ imports:
434
+ - ../foo2/flow.dv
435
+ tasks:
436
+ - name: t5
437
+ """
438
+
439
+ rundir = os.path.join(tmpdir)
440
+ with open(os.path.join(rundir, "flow.dv"), "w") as fp:
441
+ fp.write(flow_dv)
442
+ os.makedirs(os.path.join(rundir, "foo2"))
443
+ with open(os.path.join(rundir, "foo2/flow.dv"), "w") as fp:
444
+ fp.write(foo2_dv)
445
+ os.makedirs(os.path.join(rundir, "foo3"))
446
+ with open(os.path.join(rundir, "foo3/flow.dv"), "w") as fp:
447
+ fp.write(foo3_dv)
448
+ os.makedirs(os.path.join(rundir, "foo4"))
449
+ with open(os.path.join(rundir, "foo4/flow.dv"), "w") as fp:
450
+ fp.write(foo4_dv)
451
+
452
+ def marker_collector(m):
453
+ print("Marker: %s" % str(m))
454
+ raise Exception("Marker not expected: %s" % m)
455
+
456
+ pkg = PackageLoader(
457
+ marker_listeners=[marker_collector]).load(os.path.join(tmpdir, "flow.dv"))
458
+
459
+ assert pkg is not None
460
+ assert pkg.pkg_def is not None
461
+ assert pkg.name == "foo"
462
+ assert pkg.basedir == rundir
463
+ assert len(pkg.task_m) == 3
464
+ assert "foo.t1" in pkg.task_m.keys()
465
+ # assert "foo.t2" in pkg.task_m.keys()
466
+ # assert "foo.t5" in pkg.task_m.keys()
467
+
468
+ t1 = pkg.task_m["foo.t1"]
469
+ assert t1.name == "foo.t1"
470
+ assert len(t1.subtasks) == 2