dv-flow-mgr 1.0.0.14502079593a1__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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/PKG-INFO +1 -1
  2. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/pyproject.toml +1 -1
  3. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package.py +2 -0
  4. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package_loader.py +28 -17
  5. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/PKG-INFO +1 -1
  6. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_load_package.py +138 -0
  7. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/.env +0 -0
  8. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/.github/workflows/ci.yml +0 -0
  9. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/.gitignore +0 -0
  10. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/.vscode/settings.json +0 -0
  11. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/LICENSE +0 -0
  12. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/README.md +0 -0
  13. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/ChangeLog.md +0 -0
  14. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/KeyArchitecture.md +0 -0
  15. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Makefile +0 -0
  16. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Notes.md +0 -0
  17. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Roadmap.md +0 -0
  18. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/RundirLayout.md +0 -0
  19. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Stages.md +0 -0
  20. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Steps.md +0 -0
  21. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Tasks.md +0 -0
  22. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/TypesAndDefs.md +0 -0
  23. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/Usecases.md +0 -0
  24. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/cmdref.rst +0 -0
  25. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/conf.py +0 -0
  26. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/index.rst +0 -0
  27. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/pytask_api.rst +0 -0
  28. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/docs/quickstart.rst +0 -0
  29. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/fwperiph_dma.pss +0 -0
  30. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/ivpm.yaml +0 -0
  31. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/setup.cfg +0 -0
  32. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/__init__.py +0 -0
  33. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/__main__.py +0 -0
  34. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cmds/cmd_graph.py +0 -0
  35. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cmds/cmd_run.py +0 -0
  36. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cmds/cmd_show.py +0 -0
  37. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/cond_def.py +0 -0
  38. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/config.py +0 -0
  39. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/config_def.py +0 -0
  40. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/eval_jq.py +0 -0
  41. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/exec_callable.py +0 -0
  42. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/expr_eval.py +0 -0
  43. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/expr_parser.py +0 -0
  44. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/ext_rgy.py +0 -0
  45. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/extend_def.py +0 -0
  46. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/fileset.py +0 -0
  47. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/fragment_def.py +0 -0
  48. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/listener_list.py +0 -0
  49. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/need_def.py +0 -0
  50. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/null_callable.py +0 -0
  51. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/out +0 -0
  52. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package_def.py +0 -0
  53. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/package_import_spec.py +0 -0
  54. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/param.py +0 -0
  55. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/param_def.py +0 -0
  56. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/param_ref_eval.py +0 -0
  57. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/parser.out +0 -0
  58. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/parsetab.py +0 -0
  59. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/pytask_callable.py +0 -0
  60. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/root_package.py +0 -0
  61. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/share/flow.json +0 -0
  62. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/shell_callable.py +0 -0
  63. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/srcinfo.py +0 -0
  64. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/create_file.py +0 -0
  65. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/exec.py +0 -0
  66. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/fileset.py +0 -0
  67. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/flow.dv +0 -0
  68. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/message.py +0 -0
  69. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/std/task_null.py +0 -0
  70. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task.py +0 -0
  71. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_data.py +0 -0
  72. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_def.py +0 -0
  73. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_graph_builder.py +0 -0
  74. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_listener_log.py +0 -0
  76. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node.py +0 -0
  77. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_compound.py +0 -0
  78. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_ctor.py +0 -0
  79. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_node_leaf.py +0 -0
  86. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_output.py +0 -0
  87. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_params_ctor.py +0 -0
  88. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_run_ctxt.py +0 -0
  89. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/task_runner.py +0 -0
  90. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/type.py +0 -0
  91. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/type_def.py +0 -0
  92. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/__init__.py +0 -0
  93. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/__main__.py +0 -0
  94. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/cmds/__init__.py +0 -0
  95. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/util/util.py +0 -0
  97. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow/mgr/yaml_srcinfo_loader.py +0 -0
  98. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/SOURCES.txt +0 -0
  99. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/src/dv_flow_mgr.egg-info/requires.txt +0 -0
  102. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/examples/example1/example1.flow +0 -0
  104. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/system/test_depends.py +0 -0
  105. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/system/test_pkg_discovery.py +0 -0
  106. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/system/test_stdlib.py +0 -0
  107. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/__init__.py +0 -0
  108. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1/flow.dv +0 -0
  113. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → 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.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/fileset/test1 copy/test1.dfs +0 -0
  118. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/proj1/proj1.dfs +0 -0
  119. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/proj2/proj2.dfs +0 -0
  120. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/data/proj3/proj3.dfs +0 -0
  121. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/marker_collector.py +0 -0
  122. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/task_listener_test.py +0 -0
  123. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_compound_task.py +0 -0
  124. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_data_merge.py +0 -0
  125. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_dataflow.py +0 -0
  126. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_deps.py +0 -0
  127. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_expr_eval.py +0 -0
  128. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_expr_parser.py +0 -0
  129. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_fileset.py +0 -0
  130. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_graph.py +0 -0
  131. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_imports.py +0 -0
  132. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_markers.py +0 -0
  133. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_parse.py +0 -0
  134. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_pyclass.py +0 -0
  135. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_pyexec.py +0 -0
  136. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_pytask_smoke.py +0 -0
  137. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_smoke copy.sav +0 -0
  138. {dv_flow_mgr-1.0.0.14502079593a1 → dv_flow_mgr-1.0.0.14504336776a1}/tests/unit/test_smoke.py +0 -0
  139. {dv_flow_mgr-1.0.0.14502079593a1 → 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.14502079593a1
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.14502079593a1"
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
@@ -60,6 +61,7 @@ class LoaderScope(SymbolScope):
60
61
  else:
61
62
  path = self.loader.pkg_rgy.findPackagePath(pkg_name)
62
63
  if path is not None:
64
+ path = os.path.normpath(path)
63
65
  pkg = self.loader._loadPackage(path)
64
66
  self.loader._pkg_m[pkg_name] = pkg
65
67
  if pkg is not None and name in pkg.task_m.keys():
@@ -169,6 +171,7 @@ class PackageLoader(object):
169
171
 
170
172
  def load(self, root) -> Package:
171
173
  self._log.debug("--> load %s" % root)
174
+ root = os.path.normpath(root)
172
175
  ret = self._loadPackage(root, None)
173
176
  self._log.debug("<-- load %s" % root)
174
177
  return ret
@@ -183,6 +186,7 @@ class PackageLoader(object):
183
186
  pp = self.pkg_rgy.findPackagePath(nn)
184
187
  if pp is None:
185
188
  raise Exception("Package %s not found" % nn)
189
+ root = os.path.normpath(pp)
186
190
  pp_n = self._loadPackage(pp)
187
191
  pkg.pkg_m[pp_n.name] = pp_n
188
192
  self._log.debug("<-- load_rgy %s" % name)
@@ -265,28 +269,34 @@ class PackageLoader(object):
265
269
 
266
270
  def _mkPackage(self, pkg_def : PackageDef, root : str) -> Package:
267
271
  self._log.debug("--> _mkPackage %s" % pkg_def.name)
268
- pkg = Package(pkg_def, os.path.dirname(root))
269
-
270
- pkg_scope = self.package_scope()
271
- if pkg_scope is not None:
272
- self._log.debug("Add self (%s) as a subpkg of %s" % (pkg.name, pkg_scope.pkg.name))
273
- pkg_scope.pkg.pkg_m[pkg.name] = pkg
272
+ pkg = Package(
273
+ pkg_def,
274
+ os.path.dirname(root),
275
+ srcinfo=SrcInfo(file=root))
274
276
 
275
277
  if pkg.name in self._pkg_m.keys():
276
- 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
277
287
 
278
- self._pkg_m[pkg.name] = pkg
279
- self._pkg_s.append(PackageScope(name=pkg.name, pkg=pkg, loader=self._loader_scope))
280
- # Imports are loaded first
281
- 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)
282
292
 
283
- taskdefs = pkg_def.tasks.copy()
293
+ taskdefs = pkg_def.tasks.copy()
284
294
 
285
- self._loadFragments(pkg, pkg_def.fragments, pkg.basedir, taskdefs)
295
+ self._loadFragments(pkg, pkg_def.fragments, pkg.basedir, taskdefs)
286
296
 
287
- self._loadTasks(pkg, taskdefs, pkg.basedir)
297
+ self._loadTasks(pkg, taskdefs, pkg.basedir)
288
298
 
289
- self._pkg_s.pop()
299
+ self._pkg_s.pop()
290
300
 
291
301
  self._log.debug("<-- _mkPackage %s (%s)" % (pkg_def.name, pkg.name))
292
302
  return pkg
@@ -343,6 +353,7 @@ class PackageLoader(object):
343
353
  sub_pkg = self._pkg_path_m[imp_path]
344
354
  else:
345
355
  self._log.info("Loading imported file %s" % imp_path)
356
+ imp_path = os.path.normpath(imp_path)
346
357
  sub_pkg = self._loadPackage(imp_path)
347
358
  self._log.info("Loaded imported package %s" % sub_pkg.name)
348
359
 
@@ -701,10 +712,10 @@ class PackageLoader(object):
701
712
 
702
713
  def error(self, msg, loc=None):
703
714
  if loc is not None:
704
- marker = TaskMarker(msg=msg, severity=TaskMarker.SeverityE.Error,
715
+ marker = TaskMarker(msg=msg, severity=SeverityE.Error,
705
716
  loc=loc)
706
717
  else:
707
- marker = TaskMarker(msg=msg, severity=TaskMarker.SeverityE.Error)
718
+ marker = TaskMarker(msg=msg, severity=SeverityE.Error)
708
719
  self.marker(marker)
709
720
 
710
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.14502079593a1
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