proj-flow 0.8.1__tar.gz → 0.9.1__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.
- proj_flow-0.9.1/.flow/config.yaml +11 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1}/CHANGELOG.rst +47 -20
- {proj_flow-0.8.1 → proj_flow-0.9.1}/PKG-INFO +6 -5
- {proj_flow-0.8.1 → proj_flow-0.9.1}/README.md +4 -4
- {proj_flow-0.8.1 → proj_flow-0.9.1}/pyproject.toml +4 -3
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/__init__.py +1 -1
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/__main__.py +2 -2
- proj_flow-0.9.1/src/proj_flow/api/__init__.py +19 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/arg.py +14 -6
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/env.py +15 -35
- proj_flow-0.9.1/src/proj_flow/api/release.py +99 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/step.py +12 -2
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/base/__init__.py +2 -2
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/base/inspect.py +15 -44
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/base/plugins.py +41 -2
- proj_flow-0.9.1/src/proj_flow/base/registry.py +105 -0
- proj_flow-0.9.1/src/proj_flow/cli/__init__.py +55 -0
- proj_flow-0.9.1/src/proj_flow/cli/argument.py +450 -0
- {proj_flow-0.8.1/proj_flow/flow → proj_flow-0.9.1/src/proj_flow}/cli/finder.py +1 -1
- proj_flow-0.9.1/src/proj_flow/ext/__init__.py +6 -0
- proj_flow-0.9.1/src/proj_flow/ext/github/__init__.py +11 -0
- proj_flow-0.9.1/src/proj_flow/ext/github/cli.py +125 -0
- proj_flow-0.9.1/src/proj_flow/ext/github/hosting.py +19 -0
- proj_flow-0.9.1/src/proj_flow/ext/markdown_changelist.py +14 -0
- proj_flow-0.9.1/src/proj_flow/ext/python/__init__.py +10 -0
- proj_flow-0.9.1/src/proj_flow/ext/python/rtdocs.py +238 -0
- proj_flow-0.9.1/src/proj_flow/ext/python/steps.py +71 -0
- proj_flow-0.9.1/src/proj_flow/ext/python/version.py +98 -0
- proj_flow-0.9.1/src/proj_flow/ext/re_structured_changelist.py +14 -0
- proj_flow-0.9.1/src/proj_flow/flow/__init__.py +11 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/flow/configs.py +21 -5
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/flow/dependency.py +8 -6
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/flow/steps.py +6 -9
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/__init__.py +10 -2
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/commit.py +19 -4
- proj_flow-0.9.1/src/proj_flow/log/error.py +31 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/hosting/github.py +10 -6
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/msg.py +23 -0
- proj_flow-0.9.1/src/proj_flow/log/release.py +125 -0
- proj_flow-0.9.1/src/proj_flow/log/rich_text/__init__.py +10 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/rich_text/api.py +10 -4
- proj_flow-0.9.1/src/proj_flow/minimal/__init__.py +11 -0
- {proj_flow-0.8.1/proj_flow/plugins/commands → proj_flow-0.9.1/src/proj_flow/minimal}/bootstrap.py +2 -2
- {proj_flow-0.8.1/proj_flow/plugins/commands → proj_flow-0.9.1/src/proj_flow/minimal}/list.py +12 -10
- {proj_flow-0.8.1/proj_flow/plugins/commands → proj_flow-0.9.1/src/proj_flow/minimal}/run.py +20 -11
- {proj_flow-0.8.1/proj_flow/plugins/commands → proj_flow-0.9.1/src/proj_flow/minimal}/system.py +2 -2
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/__init__.py +1 -1
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/.flow/matrix.yml +1 -1
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/CMakeLists.txt.mustache +1 -1
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_actions/.github/workflows/build.yml +1 -1
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_social/.github/ISSUE_TEMPLATE/feature_request.md.mustache +1 -1
- proj_flow-0.8.1/proj_flow/api/__init__.py +0 -10
- proj_flow-0.8.1/proj_flow/flow/__init__.py +0 -11
- proj_flow-0.8.1/proj_flow/flow/cli/__init__.py +0 -66
- proj_flow-0.8.1/proj_flow/flow/cli/cmds.py +0 -385
- proj_flow-0.8.1/proj_flow/log/release.py +0 -34
- proj_flow-0.8.1/proj_flow/log/rich_text/__init__.py +0 -22
- {proj_flow-0.8.1 → proj_flow-0.9.1}/.gitignore +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1}/.readthedocs.yaml +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1}/LICENSE +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/completers.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/ctx.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/init.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/api/makefile.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/base/cmd.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/base/matrix.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/base/uname.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/flow/init.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/flow/interact.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/flow/layer.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/fmt.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/format.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/hosting/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/rich_text/markdown.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/log/rich_text/re_structured_text.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/base.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/__version__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/build.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/config.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/context.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/pack.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/parser.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/cmake/test.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/commands/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/commands/ci/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/commands/ci/changelog.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/commands/ci/matrix.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/commands/ci/release.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/commands/init.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/conan/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/conan/_conan.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/github.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/sign/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/sign/win32.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/store/__init__.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/store/store_both.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/store/store_packages.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/plugins/store/store_tests.py +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/.clang-format +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/.flow/config.yml +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/.flow/flow.py.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/.flow/official.yml +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/.gitignore +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/README.md.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/flow +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base/flow.cmd +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/base.json +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/cmake/common.cmake.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/extensions/wall/__init__.py.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/extensions/wall/icons/__init__.py.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/extensions/wall/icons/magick.py.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/packages/base.cmake.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/packages/config.cmake +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/packages/cpack.cmake +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/packages/wix/cpack.cmake.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/packages/wix/patches.in.wix +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/.flow/packages/wix.cmake.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/CMakeGraphVizOptions.cmake +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/CMakePresets.json +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/assets/appicon.ico +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/assets/appicon.png +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/assets/wix_banner.bmp +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/assets/wix_dialog.bmp +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/icons/.gitignore +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/icons/appicon-mask.svg +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/data/icons/appicon.svg +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/src/main.cc.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/src/version.hpp.in.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake/tests/test.cc.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/cmake.json +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/conan/.flow/cmake/libcxx_toolchain.cmake +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/conan/.flow/cmake/output_dirs_setup.cmake +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/conan/conanfile.txt +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/conan.json +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_actions/.github/linters/.isort.cfg +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_actions/.github/linters/.mypy.ini +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_actions/.github/workflows/linter.yml +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_actions/CPPLINT.cfg +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_actions.json +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_social/.github/ISSUE_TEMPLATE/bug_report.md.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_social/CODE_OF_CONDUCT.md.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_social/CONTRIBUTING.md +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/layers/github_social.json +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/licenses/0BSD.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/licenses/MIT.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/licenses/Unlicense.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/licenses/WTFPL.mustache +0 -0
- {proj_flow-0.8.1 → proj_flow-0.9.1/src}/proj_flow/template/licenses/Zlib.mustache +0 -0
|
@@ -4,16 +4,43 @@ Changelog
|
|
|
4
4
|
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
|
6
6
|
|
|
7
|
-
`0.
|
|
8
|
-
|
|
7
|
+
`0.9.1 <https://github.com/mzdun/proj-flow/compare/v0.9.0...v0.9.1>`_ (2025-02-07)
|
|
8
|
+
==================================================================================
|
|
9
9
|
|
|
10
10
|
Bug Fixes
|
|
11
11
|
---------
|
|
12
12
|
|
|
13
|
-
-
|
|
13
|
+
- turn auto-release on (`1a79267 <https://github.com/mzdun/proj-flow/commit/1a792677e66c882266b3e2b61f5adde885653814>`_)
|
|
14
|
+
- prepare for autorelease (`9bbc4c5 <https://github.com/mzdun/proj-flow/commit/9bbc4c5abba3a945908f1ad796fed0e3d5bf390e>`_)
|
|
15
|
+
|
|
16
|
+
`0.9.0 <https://github.com/mzdun/proj-flow/compare/v0.8.1...v0.9.0>`_ (2025-02-07)
|
|
17
|
+
==================================================================================
|
|
18
|
+
|
|
19
|
+
New Features
|
|
20
|
+
------------
|
|
21
|
+
|
|
22
|
+
- add python steps and version bumper (`1bca0cb <https://github.com/mzdun/proj-flow/commit/1bca0cb11e53ee137b0179d951c3d9767475fb8d>`_)
|
|
23
|
+
- add ``github matrix`` and ``github release`` (`56d3ada <https://github.com/mzdun/proj-flow/commit/56d3ada74b2f38f1c1fb0dd8d63cdcb1e3e6ac98>`_)
|
|
24
|
+
- allow making software releases (`7ae1552 <https://github.com/mzdun/proj-flow/commit/7ae1552011c62fb92aefa8dafcef8cf499c2165d>`_)
|
|
25
|
+
- create hosting extension point (`f1464c2 <https://github.com/mzdun/proj-flow/commit/f1464c2da6dfea8aa42ce59d0d039505e6b37ae6>`_)
|
|
26
|
+
- add simple decorator for extension points (`1483dba <https://github.com/mzdun/proj-flow/commit/1483dba8794e75ad8444e831af9a38fc7dc2d430>`_)
|
|
27
|
+
- introduce new plugin system (`eb62ce3 <https://github.com/mzdun/proj-flow/commit/eb62ce3b5b9649affc9c925ce454940cbd2d52c3>`_)
|
|
28
|
+
|
|
29
|
+
Bug Fixes
|
|
30
|
+
---------
|
|
31
|
+
|
|
32
|
+
- add some verbosity to plugin system (`830f6b8 <https://github.com/mzdun/proj-flow/commit/830f6b8227ba62286ec039d0445c1b5dc81cd65a>`_)
|
|
33
|
+
|
|
34
|
+
`0.8.1 <https://github.com/mzdun/proj-flow/compare/v0.8.0...v0.8.1>`_ (2025-02-05)
|
|
35
|
+
==================================================================================
|
|
36
|
+
|
|
37
|
+
Bug Fixes
|
|
38
|
+
---------
|
|
39
|
+
|
|
40
|
+
- rename the package (`a994760 <https://github.com/mzdun/proj-flow/commit/a994760c82630aee5c962d8910d4183408b10def>`_)
|
|
14
41
|
|
|
15
42
|
`0.8.0 <https://github.com/mzdun/proj-flow/compare/v0.7.1...v0.8.0>`_ (2025-02-05)
|
|
16
|
-
|
|
43
|
+
==================================================================================
|
|
17
44
|
|
|
18
45
|
New Features
|
|
19
46
|
------------
|
|
@@ -27,13 +54,13 @@ Bug Fixes
|
|
|
27
54
|
- extract the code common to docstr and argparse (`ce09b2f <https://github.com/mzdun/proj-flow/commit/ce09b2f131e8bd2df7563b600ac5d1ff50928957>`_)
|
|
28
55
|
|
|
29
56
|
`0.7.1 <https://github.com/mzdun/proj-flow/compare/v0.7.0...v0.7.1>`_ (2025-02-02)
|
|
30
|
-
|
|
57
|
+
==================================================================================
|
|
31
58
|
|
|
32
59
|
*Nothing to report.*
|
|
33
60
|
|
|
34
61
|
|
|
35
62
|
`0.7.0 <https://github.com/mzdun/proj-flow/compare/v0.6.0...v0.7.0>`_ (2025-02-02)
|
|
36
|
-
|
|
63
|
+
==================================================================================
|
|
37
64
|
|
|
38
65
|
New Features
|
|
39
66
|
------------
|
|
@@ -52,7 +79,7 @@ Bug Fixes
|
|
|
52
79
|
|
|
53
80
|
|
|
54
81
|
`0.6.0 <https://github.com/mzdun/proj-flow/compare/v0.5.0...v0.6.0>`_ (2025-01-31)
|
|
55
|
-
|
|
82
|
+
==================================================================================
|
|
56
83
|
|
|
57
84
|
New Features
|
|
58
85
|
------------
|
|
@@ -67,7 +94,7 @@ Bug Fixes
|
|
|
67
94
|
|
|
68
95
|
|
|
69
96
|
`0.5.0 <https://github.com/mzdun/proj-flow/compare/v0.4.3...v0.5.0>`_ (2025-01-27)
|
|
70
|
-
|
|
97
|
+
==================================================================================
|
|
71
98
|
|
|
72
99
|
New Features
|
|
73
100
|
------------
|
|
@@ -76,7 +103,7 @@ New Features
|
|
|
76
103
|
|
|
77
104
|
|
|
78
105
|
`0.4.3 <https://github.com/mzdun/proj-flow/compare/v0.4.2...v0.4.3>`_ (2025-01-27)
|
|
79
|
-
|
|
106
|
+
==================================================================================
|
|
80
107
|
|
|
81
108
|
Bug Fixes
|
|
82
109
|
---------
|
|
@@ -85,7 +112,7 @@ Bug Fixes
|
|
|
85
112
|
|
|
86
113
|
|
|
87
114
|
`0.4.2 <https://github.com/mzdun/proj-flow/compare/v0.4.1...v0.4.2>`_ (2025-01-27)
|
|
88
|
-
|
|
115
|
+
==================================================================================
|
|
89
116
|
|
|
90
117
|
Bug Fixes
|
|
91
118
|
---------
|
|
@@ -94,7 +121,7 @@ Bug Fixes
|
|
|
94
121
|
|
|
95
122
|
|
|
96
123
|
`0.4.1 <https://github.com/mzdun/proj-flow/compare/v0.3.7...v0.4.1>`_ (2025-01-27)
|
|
97
|
-
|
|
124
|
+
==================================================================================
|
|
98
125
|
|
|
99
126
|
Bug Fixes
|
|
100
127
|
---------
|
|
@@ -105,7 +132,7 @@ Bug Fixes
|
|
|
105
132
|
|
|
106
133
|
|
|
107
134
|
`0.3.7 <https://github.com/mzdun/proj-flow/compare/v0.3.6...v0.3.7>`_ (2025-01-27)
|
|
108
|
-
|
|
135
|
+
==================================================================================
|
|
109
136
|
|
|
110
137
|
Bug Fixes
|
|
111
138
|
---------
|
|
@@ -114,7 +141,7 @@ Bug Fixes
|
|
|
114
141
|
|
|
115
142
|
|
|
116
143
|
`0.3.6 <https://github.com/mzdun/proj-flow/compare/v0.3.5...v0.3.6>`_ (2025-01-27)
|
|
117
|
-
|
|
144
|
+
==================================================================================
|
|
118
145
|
|
|
119
146
|
Bug Fixes
|
|
120
147
|
---------
|
|
@@ -123,7 +150,7 @@ Bug Fixes
|
|
|
123
150
|
|
|
124
151
|
|
|
125
152
|
`0.3.5 <https://github.com/mzdun/proj-flow/compare/v0.3.4...v0.3.5>`_ (2025-01-26)
|
|
126
|
-
|
|
153
|
+
==================================================================================
|
|
127
154
|
|
|
128
155
|
Bug Fixes
|
|
129
156
|
---------
|
|
@@ -132,7 +159,7 @@ Bug Fixes
|
|
|
132
159
|
|
|
133
160
|
|
|
134
161
|
`0.3.4 <https://github.com/mzdun/proj-flow/compare/v0.3.3...v0.3.4>`_ (2025-01-26)
|
|
135
|
-
|
|
162
|
+
==================================================================================
|
|
136
163
|
|
|
137
164
|
Bug Fixes
|
|
138
165
|
---------
|
|
@@ -141,7 +168,7 @@ Bug Fixes
|
|
|
141
168
|
|
|
142
169
|
|
|
143
170
|
`0.3.3 <https://github.com/mzdun/proj-flow/compare/v0.3.2...v0.3.3>`_ (2025-01-26)
|
|
144
|
-
|
|
171
|
+
==================================================================================
|
|
145
172
|
|
|
146
173
|
Bug Fixes
|
|
147
174
|
---------
|
|
@@ -150,7 +177,7 @@ Bug Fixes
|
|
|
150
177
|
|
|
151
178
|
|
|
152
179
|
`0.3.2 <https://github.com/mzdun/proj-flow/compare/v0.3.1...v0.3.2>`_ (2025-01-26)
|
|
153
|
-
|
|
180
|
+
==================================================================================
|
|
154
181
|
|
|
155
182
|
Bug Fixes
|
|
156
183
|
---------
|
|
@@ -159,7 +186,7 @@ Bug Fixes
|
|
|
159
186
|
|
|
160
187
|
|
|
161
188
|
`0.3.1 <https://github.com/mzdun/proj-flow/compare/v0.3.0...v0.3.1>`_ (2025-01-26)
|
|
162
|
-
|
|
189
|
+
==================================================================================
|
|
163
190
|
|
|
164
191
|
Bug Fixes
|
|
165
192
|
---------
|
|
@@ -168,7 +195,7 @@ Bug Fixes
|
|
|
168
195
|
|
|
169
196
|
|
|
170
197
|
`0.3.0 <https://github.com/mzdun/proj-flow/compare/v0.2.0...v0.3.0>`_ (2025-01-26)
|
|
171
|
-
|
|
198
|
+
==================================================================================
|
|
172
199
|
|
|
173
200
|
New Features
|
|
174
201
|
------------
|
|
@@ -188,7 +215,7 @@ Bug Fixes
|
|
|
188
215
|
|
|
189
216
|
|
|
190
217
|
`0.2.0 <https://github.com/mzdun/proj-flow/commits/v0.2.0>`_ (2025-01-22)
|
|
191
|
-
|
|
218
|
+
=========================================================================
|
|
192
219
|
|
|
193
220
|
New Features
|
|
194
221
|
------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proj-flow
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.1
|
|
4
4
|
Summary: C++ project maintenance, automated
|
|
5
5
|
Project-URL: Documentation, https://proj-flow.readthedocs.io/en/latest/
|
|
6
6
|
Project-URL: Homepage, https://pypi.org/project/proj-flow/
|
|
@@ -20,15 +20,16 @@ Requires-Dist: argcomplete
|
|
|
20
20
|
Requires-Dist: chevron2021
|
|
21
21
|
Requires-Dist: prompt-toolkit
|
|
22
22
|
Requires-Dist: pyyaml
|
|
23
|
+
Requires-Dist: toml
|
|
23
24
|
Description-Content-Type: text/markdown
|
|
24
25
|
|
|
25
|
-
#
|
|
26
|
+
# Project Flow
|
|
26
27
|
|
|
27
28
|
[](https://github.com/mzdun/proj-flow/actions)
|
|
28
29
|
[](https://pypi.python.org/pypi/proj-flow)
|
|
29
30
|
[](https://pypi.python.org/pypi/proj-flow)
|
|
30
31
|
|
|
31
|
-
**
|
|
32
|
+
**Project Flow** aims at being a one-stop tool for C++ projects, from creating new
|
|
32
33
|
project, though building and verifying, all the way to publishing releases to
|
|
33
34
|
the repository. It will run a set of known steps and will happily consult your
|
|
34
35
|
project what do you want to call any subset of those steps.
|
|
@@ -38,13 +39,13 @@ for config and build and GitHub CLI for releases.
|
|
|
38
39
|
|
|
39
40
|
## Installation
|
|
40
41
|
|
|
41
|
-
To create a new project with
|
|
42
|
+
To create a new project with _Project Flow_, first install it using pip:
|
|
42
43
|
|
|
43
44
|
```sh
|
|
44
45
|
(.venv) $ pip install proj-flow
|
|
45
46
|
```
|
|
46
47
|
|
|
47
|
-
Every project created with
|
|
48
|
+
Every project created with _Project Flow_ has a self-bootstrapping helper script,
|
|
48
49
|
which will install `proj-flow` if it is needed, using either current virtual
|
|
49
50
|
environment or switching to a private virtual environment (created inside
|
|
50
51
|
`.flow/.venv` directory). This is used by the GitHub workflow in the generated
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Project Flow
|
|
2
2
|
|
|
3
3
|
[](https://github.com/mzdun/proj-flow/actions)
|
|
4
4
|
[](https://pypi.python.org/pypi/proj-flow)
|
|
5
5
|
[](https://pypi.python.org/pypi/proj-flow)
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Project Flow** aims at being a one-stop tool for C++ projects, from creating new
|
|
8
8
|
project, though building and verifying, all the way to publishing releases to
|
|
9
9
|
the repository. It will run a set of known steps and will happily consult your
|
|
10
10
|
project what do you want to call any subset of those steps.
|
|
@@ -14,13 +14,13 @@ for config and build and GitHub CLI for releases.
|
|
|
14
14
|
|
|
15
15
|
## Installation
|
|
16
16
|
|
|
17
|
-
To create a new project with
|
|
17
|
+
To create a new project with _Project Flow_, first install it using pip:
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
20
|
(.venv) $ pip install proj-flow
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Every project created with
|
|
23
|
+
Every project created with _Project Flow_ has a self-bootstrapping helper script,
|
|
24
24
|
which will install `proj-flow` if it is needed, using either current virtual
|
|
25
25
|
environment or switching to a private virtual environment (created inside
|
|
26
26
|
`.flow/.venv` directory). This is used by the GitHub workflow in the generated
|
|
@@ -3,13 +3,13 @@ build-backend = "hatchling.build"
|
|
|
3
3
|
requires = ["hatchling"]
|
|
4
4
|
|
|
5
5
|
[tool.hatch.version]
|
|
6
|
-
path = "proj_flow/__init__.py"
|
|
6
|
+
path = "src/proj_flow/__init__.py"
|
|
7
7
|
|
|
8
8
|
[tool.hatch.build.targets.sdist]
|
|
9
9
|
exclude = ["/.github", "/docs"]
|
|
10
10
|
|
|
11
11
|
[tool.hatch.build.targets.wheel]
|
|
12
|
-
packages = ["proj_flow"]
|
|
12
|
+
packages = ["src/proj_flow"]
|
|
13
13
|
|
|
14
14
|
[project]
|
|
15
15
|
authors = [{name = "Marcin Zdun", email = "marcin.zdun@gmail.com"}]
|
|
@@ -27,6 +27,7 @@ dependencies = [
|
|
|
27
27
|
"chevron2021",
|
|
28
28
|
"prompt_toolkit",
|
|
29
29
|
"PyYAML",
|
|
30
|
+
"toml",
|
|
30
31
|
]
|
|
31
32
|
description = "C++ project maintenance, automated"
|
|
32
33
|
dynamic = ["version"]
|
|
@@ -41,4 +42,4 @@ Homepage = "https://pypi.org/project/proj-flow/"
|
|
|
41
42
|
"Source Code" = "https://github.com/mzdun/proj-flow"
|
|
42
43
|
|
|
43
44
|
[project.scripts]
|
|
44
|
-
proj-flow = "proj_flow.
|
|
45
|
+
proj-flow = "proj_flow.cli:main"
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
|
-
The **proj_flow.__main__** allows *
|
|
5
|
+
The **proj_flow.__main__** allows *Project Flow* to be called as Python component.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from .
|
|
8
|
+
from proj_flow.cli import main
|
|
9
9
|
|
|
10
10
|
main()
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
+
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
The **proj_flow.api** contains public APIs, usable in third-party plugins.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from . import arg, completers, ctx, env, init, makefile, release, step
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"arg",
|
|
12
|
+
"completers",
|
|
13
|
+
"ctx",
|
|
14
|
+
"env",
|
|
15
|
+
"init",
|
|
16
|
+
"makefile",
|
|
17
|
+
"release",
|
|
18
|
+
"step",
|
|
19
|
+
]
|
|
@@ -24,7 +24,7 @@ class Argument:
|
|
|
24
24
|
action: typing.Union[str, argparse.Action, None] = None
|
|
25
25
|
default: typing.Optional[typing.Any] = None
|
|
26
26
|
choices: typing.Optional[typing.List[str]] = None
|
|
27
|
-
completer: typing.Optional[
|
|
27
|
+
completer: typing.Optional[_inspect.Function] = None
|
|
28
28
|
|
|
29
29
|
def visit(self, parser: argparse.ArgumentParser, name: str):
|
|
30
30
|
kwargs = {}
|
|
@@ -68,11 +68,16 @@ class FlagArgument(Argument):
|
|
|
68
68
|
@dataclass
|
|
69
69
|
class _Command:
|
|
70
70
|
name: str
|
|
71
|
-
entry: typing.Optional[
|
|
71
|
+
entry: typing.Optional[_inspect.Function]
|
|
72
72
|
doc: typing.Optional[str]
|
|
73
73
|
subs: typing.Dict[str, "_Command"]
|
|
74
74
|
|
|
75
|
-
def add(
|
|
75
|
+
def add(
|
|
76
|
+
self,
|
|
77
|
+
names: typing.List[str],
|
|
78
|
+
entry: _inspect.Function,
|
|
79
|
+
doc: typing.Optional[str],
|
|
80
|
+
):
|
|
76
81
|
name = names[0]
|
|
77
82
|
rest = names[1:]
|
|
78
83
|
if len(rest):
|
|
@@ -97,15 +102,18 @@ _known_commands = _Command("", None, None, {})
|
|
|
97
102
|
_autodoc = {
|
|
98
103
|
"proj_flow.flow.configs.Configs": "Current configuration list.",
|
|
99
104
|
"proj_flow.api.env.Runtime": "Tools and print messages, while respecting ``--dry-run``, ``--silent`` and ``--verbose``.",
|
|
105
|
+
"proj_flow.cli.argument.Command": "The Command object attached to this @command function.",
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
|
|
103
109
|
def command(*name: str):
|
|
104
|
-
def wrap(
|
|
110
|
+
def wrap(function: object):
|
|
111
|
+
entry = typing.cast(_inspect.Function, function)
|
|
105
112
|
global _known_commands
|
|
106
|
-
|
|
113
|
+
orig_doc = inspect.getdoc(entry)
|
|
114
|
+
_known_commands.add(list(name), entry, orig_doc)
|
|
107
115
|
|
|
108
|
-
doc =
|
|
116
|
+
doc = orig_doc or ""
|
|
109
117
|
if doc:
|
|
110
118
|
doc += "\n\n"
|
|
111
119
|
|
|
@@ -23,9 +23,7 @@ from dataclasses import dataclass
|
|
|
23
23
|
from enum import Enum
|
|
24
24
|
from typing import Any, Callable, Dict, List, Optional, Union, cast
|
|
25
25
|
|
|
26
|
-
import
|
|
27
|
-
|
|
28
|
-
from proj_flow.base import uname
|
|
26
|
+
from proj_flow.base import plugins, uname
|
|
29
27
|
from proj_flow.base.plugins import load_module_plugins
|
|
30
28
|
|
|
31
29
|
platform = uname.uname()[0]
|
|
@@ -132,47 +130,29 @@ class FlowConfig:
|
|
|
132
130
|
self.root = cfg.root
|
|
133
131
|
else:
|
|
134
132
|
self.root = os.path.abspath(root)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
encoding="UTF-8",
|
|
139
|
-
) as f:
|
|
140
|
-
self._cfg = yaml.load(f, Loader=yaml.Loader)
|
|
141
|
-
except FileNotFoundError:
|
|
142
|
-
self._cfg = {}
|
|
133
|
+
self._cfg = plugins.load_data(
|
|
134
|
+
os.path.join(self.root, ".flow", "config.json")
|
|
135
|
+
)
|
|
143
136
|
|
|
144
137
|
self._propagate_compilers()
|
|
145
|
-
self.
|
|
138
|
+
self._load_extensions()
|
|
146
139
|
|
|
147
140
|
def _propagate_compilers(self):
|
|
148
141
|
global _flow_config_default_compiler
|
|
149
142
|
_flow_config_default_compiler = self.compiler_os_default
|
|
150
143
|
|
|
151
|
-
def
|
|
152
|
-
|
|
153
|
-
|
|
144
|
+
def _load_extensions(self):
|
|
145
|
+
extensions = cast(List[str], self._cfg.get("extensions", []))
|
|
146
|
+
extensions.insert(0, "proj_flow.minimal")
|
|
154
147
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
plugins = importlib.import_module(local_plugins)
|
|
161
|
-
load_module_plugins(plugins, can_fail=True)
|
|
162
|
-
return
|
|
163
|
-
|
|
164
|
-
sys.path.insert(0, local_plugins)
|
|
165
|
-
|
|
166
|
-
for root, dirnames, _ in os.walk(local_plugins):
|
|
167
|
-
for dirname in dirnames:
|
|
168
|
-
init = os.path.join(root, dirname, "__init__.py")
|
|
169
|
-
if not os.path.isfile(init):
|
|
170
|
-
continue
|
|
171
|
-
plugins = importlib.import_module(dirname)
|
|
172
|
-
load_module_plugins(plugins, can_fail=True)
|
|
173
|
-
dirnames[:] = []
|
|
148
|
+
local_extensions = os.path.abspath(
|
|
149
|
+
os.path.join(self.root, ".flow", "extensions")
|
|
150
|
+
)
|
|
151
|
+
if os.path.isdir(local_extensions):
|
|
152
|
+
sys.path.insert(0, local_extensions)
|
|
174
153
|
|
|
175
|
-
|
|
154
|
+
for extension in extensions:
|
|
155
|
+
importlib.import_module(extension)
|
|
176
156
|
|
|
177
157
|
@property
|
|
178
158
|
def entry(self) -> Dict[str, dict]:
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
+
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
The **proj_flow.api.release** provides :class:`ProjectSuite` extension point.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import re
|
|
10
|
+
from abc import ABC, abstractmethod
|
|
11
|
+
from dataclasses import dataclass
|
|
12
|
+
from typing import NamedTuple, Optional, Union
|
|
13
|
+
|
|
14
|
+
from proj_flow.api import env
|
|
15
|
+
from proj_flow.base import registry
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Arg(NamedTuple):
|
|
19
|
+
value: str
|
|
20
|
+
offset: int
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
NO_ARG = Arg("", -1)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Decl(NamedTuple):
|
|
27
|
+
name: str
|
|
28
|
+
value: str
|
|
29
|
+
offset: int
|
|
30
|
+
|
|
31
|
+
def __str__(self):
|
|
32
|
+
return self.value
|
|
33
|
+
|
|
34
|
+
def asArg(self):
|
|
35
|
+
return Arg(self.value, self.offset)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class Version(NamedTuple):
|
|
39
|
+
core: Arg
|
|
40
|
+
stability: Arg
|
|
41
|
+
|
|
42
|
+
def __str__(self):
|
|
43
|
+
return f"{self.core.value}{self.stability.value}"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclass
|
|
47
|
+
class Project:
|
|
48
|
+
package_root: str
|
|
49
|
+
version: Version
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def archive_name(self):
|
|
53
|
+
return f"{self.package_root}-{self.version}"
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def tag_name(self):
|
|
57
|
+
return f"v{self.version}"
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class ProjectSuite(ABC):
|
|
61
|
+
@abstractmethod
|
|
62
|
+
def get_project(self, rt: env.Runtime) -> Optional[Project]: ...
|
|
63
|
+
|
|
64
|
+
def set_version(self, rt: env.Runtime, version: str):
|
|
65
|
+
core = re.split(r"([0-9]+\.[0-9]+\.[0-9]+)", version, maxsplit=1)[1]
|
|
66
|
+
stability = version[len(core) :]
|
|
67
|
+
|
|
68
|
+
project = self.get_project(rt)
|
|
69
|
+
if project:
|
|
70
|
+
self.patch_project(rt, project.version.core, core)
|
|
71
|
+
|
|
72
|
+
project = self.get_project(rt)
|
|
73
|
+
if project:
|
|
74
|
+
version_pos = project.version
|
|
75
|
+
|
|
76
|
+
if len(stability):
|
|
77
|
+
self.patch_project(rt, version_pos.stability, stability)
|
|
78
|
+
elif len(version_pos.stability.value):
|
|
79
|
+
self.patch_project(rt, version_pos.stability, "")
|
|
80
|
+
|
|
81
|
+
@abstractmethod
|
|
82
|
+
def get_version_file_path(self, rt: env.Runtime) -> Optional[str]: ...
|
|
83
|
+
|
|
84
|
+
def patch_project(self, rt: env.Runtime, pos: Arg, newValue: str):
|
|
85
|
+
path = self.get_version_file_path(rt)
|
|
86
|
+
|
|
87
|
+
if not path or not os.path.isfile(path):
|
|
88
|
+
return
|
|
89
|
+
|
|
90
|
+
with open(path, "r", encoding="UTF-8") as input:
|
|
91
|
+
text = input.read()
|
|
92
|
+
|
|
93
|
+
patched = text[: pos.offset] + newValue + text[pos.offset + len(pos.value) :]
|
|
94
|
+
|
|
95
|
+
with open(path, "w", encoding="UTF-8") as input:
|
|
96
|
+
input.write(patched)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
project_suites = registry.Registry[ProjectSuite]("ProjectSuite")
|
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
The **proj_flow.api.step** exposes APIs used by run extensions.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
import os
|
|
8
9
|
from abc import ABC, abstractmethod
|
|
9
10
|
from typing import List, cast
|
|
10
11
|
|
|
11
12
|
from proj_flow.api.env import Config, Runtime
|
|
13
|
+
from proj_flow.base import inspect as _inspect
|
|
12
14
|
from proj_flow.base import matrix
|
|
13
15
|
|
|
14
16
|
|
|
@@ -77,7 +79,8 @@ def _register_step(step: Step):
|
|
|
77
79
|
|
|
78
80
|
name = step.name
|
|
79
81
|
if name in [step.name for step in __steps]:
|
|
80
|
-
|
|
82
|
+
if "READTHEDOCS" not in os.environ:
|
|
83
|
+
raise NameError(f"Step {name} already registered")
|
|
81
84
|
|
|
82
85
|
__steps.append(step)
|
|
83
86
|
|
|
@@ -115,7 +118,7 @@ def _name_list(label: str, names: List[str], template="`{}`") -> str:
|
|
|
115
118
|
return f"\n:{label}: {prefix}{em[-1]}"
|
|
116
119
|
|
|
117
120
|
|
|
118
|
-
def _make_private(f:
|
|
121
|
+
def _make_private(f: _inspect.Function):
|
|
119
122
|
if f.__doc__:
|
|
120
123
|
f.__doc__ += "\n\n:meta private:\n"
|
|
121
124
|
else:
|
|
@@ -171,3 +174,10 @@ def register(cls=None):
|
|
|
171
174
|
return impl
|
|
172
175
|
|
|
173
176
|
return impl(cls)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def verbose_info():
|
|
180
|
+
for step in __steps:
|
|
181
|
+
print(
|
|
182
|
+
f'-- Step: adding "{step.name}" from `{step.__module__}.{step.__class__.__name__}`'
|
|
183
|
+
)
|
|
@@ -6,6 +6,6 @@ The **proj_flow.base** contains low-level tools for higher-level parts of the
|
|
|
6
6
|
library.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from . import cmd, matrix, plugins, uname
|
|
9
|
+
from . import cmd, matrix, plugins, registry, uname
|
|
10
10
|
|
|
11
|
-
__all__ = ["cmd", "matrix", "plugins", "uname"]
|
|
11
|
+
__all__ = ["cmd", "matrix", "plugins", "registry", "uname"]
|