proj-flow 0.20.1__tar.gz → 0.20.3__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 (173) hide show
  1. {proj_flow-0.20.1 → proj_flow-0.20.3}/CHANGELOG.rst +16 -0
  2. {proj_flow-0.20.1 → proj_flow-0.20.3}/PKG-INFO +1 -1
  3. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/__init__.py +1 -1
  4. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/env.py +4 -0
  5. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/matrix.py +23 -0
  6. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/github/cli.py +5 -0
  7. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/model/builders.py +4 -1
  8. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/flow/configs.py +16 -1
  9. {proj_flow-0.20.1 → proj_flow-0.20.3}/.flow/config.yaml +0 -0
  10. {proj_flow-0.20.1 → proj_flow-0.20.3}/.gitignore +0 -0
  11. {proj_flow-0.20.1 → proj_flow-0.20.3}/.readthedocs.yaml +0 -0
  12. {proj_flow-0.20.1 → proj_flow-0.20.3}/LICENSE +0 -0
  13. {proj_flow-0.20.1 → proj_flow-0.20.3}/README.md +0 -0
  14. {proj_flow-0.20.1 → proj_flow-0.20.3}/ROADMAP.md +0 -0
  15. {proj_flow-0.20.1 → proj_flow-0.20.3}/actions/bootstrap/action.yml +0 -0
  16. {proj_flow-0.20.1 → proj_flow-0.20.3}/actions/bootstrap/version.py +0 -0
  17. {proj_flow-0.20.1 → proj_flow-0.20.3}/pyproject.toml +0 -0
  18. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/__main__.py +0 -0
  19. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/__init__.py +0 -0
  20. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/arg.py +0 -0
  21. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/completers.py +0 -0
  22. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/ctx.py +0 -0
  23. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/init.py +0 -0
  24. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/makefile.py +0 -0
  25. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/release.py +0 -0
  26. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/api/step.py +0 -0
  27. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/__cmake_version__.py +0 -0
  28. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/__init__.py +0 -0
  29. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/cmd.py +0 -0
  30. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/inspect.py +0 -0
  31. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/name_list.py +0 -0
  32. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/plugins.py +0 -0
  33. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/registry.py +0 -0
  34. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/base/uname.py +0 -0
  35. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/cli/__init__.py +0 -0
  36. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/cli/argument.py +0 -0
  37. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/cli/finder.py +0 -0
  38. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/dependency.py +0 -0
  39. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/__init__.py +0 -0
  40. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/__init__.py +0 -0
  41. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/cmake/__init__.py +0 -0
  42. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/cmake/parser.py +0 -0
  43. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/cmake/presets.py +0 -0
  44. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/cmake/project.py +0 -0
  45. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/cmake/steps.py +0 -0
  46. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/conan/__init__.py +0 -0
  47. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/cplusplus/conan/_conan.py +0 -0
  48. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/github/__init__.py +0 -0
  49. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/github/hosting.py +0 -0
  50. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/github/publishing.py +0 -0
  51. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/github/switches.py +0 -0
  52. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/markdown_changelog.py +0 -0
  53. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/python/__init__.py +0 -0
  54. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/python/rtdocs.py +0 -0
  55. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/python/steps.py +0 -0
  56. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/python/version.py +0 -0
  57. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/re_structured_changelog.py +0 -0
  58. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/sign/__init__.py +0 -0
  59. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/sign/api.py +0 -0
  60. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/sign/win32.py +0 -0
  61. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/store.py +0 -0
  62. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/tools/__init__.py +0 -0
  63. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/tools/pragma_once.py +0 -0
  64. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/tools/run_linter.py +0 -0
  65. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/__init__.py +0 -0
  66. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/base/__init__.py +0 -0
  67. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/base/config.py +0 -0
  68. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/__init__.py +0 -0
  69. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/cmake.py +0 -0
  70. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/depfile.py +0 -0
  71. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/gen.py +0 -0
  72. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/init.py +0 -0
  73. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/root.py +0 -0
  74. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/cli/updater.py +0 -0
  75. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/init/flow_webidl.cmake +0 -0
  76. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/cmake.mustache +0 -0
  77. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/depfile.mustache +0 -0
  78. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/partials/cxx/attribute-decl.mustache +0 -0
  79. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/partials/cxx/in-out.mustache +0 -0
  80. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/partials/cxx/includes.mustache +0 -0
  81. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/partials/cxx/operation-decl.mustache +0 -0
  82. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/templates/partials/cxx/type.mustache +0 -0
  83. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/data/types/cxx.json +0 -0
  84. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/model/__init__.py +0 -0
  85. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/model/ast.py +0 -0
  86. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/ext/webidl/registry.py +0 -0
  87. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/flow/__init__.py +0 -0
  88. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/flow/layer.py +0 -0
  89. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/flow/steps.py +0 -0
  90. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/__init__.py +0 -0
  91. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/commit.py +0 -0
  92. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/error.py +0 -0
  93. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/fmt.py +0 -0
  94. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/format.py +0 -0
  95. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/hosting/__init__.py +0 -0
  96. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/hosting/github.py +0 -0
  97. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/msg.py +0 -0
  98. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/release.py +0 -0
  99. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/rich_text/__init__.py +0 -0
  100. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/rich_text/api.py +0 -0
  101. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/rich_text/markdown.py +0 -0
  102. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/log/rich_text/re_structured_text.py +0 -0
  103. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/__init__.py +0 -0
  104. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/base.py +0 -0
  105. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/bootstrap.py +0 -0
  106. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/ext/bug_report.py +0 -0
  107. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/init.py +0 -0
  108. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/list.py +0 -0
  109. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/run.py +0 -0
  110. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/minimal/system.py +0 -0
  111. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/__init__.py +0 -0
  112. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/api.py +0 -0
  113. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/cplusplus/__init__.py +0 -0
  114. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/cplusplus/cmake_context.py +0 -0
  115. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/cplusplus/conan_context.py +0 -0
  116. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/cplusplus/project.py +0 -0
  117. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/data.py +0 -0
  118. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/project/interact.py +0 -0
  119. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/.clang-format +0 -0
  120. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/.flow/config.yml +0 -0
  121. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/.flow/flow.py.mustache +0 -0
  122. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/.flow/matrix.yml +0 -0
  123. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/.flow/official.yml +0 -0
  124. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/.gitignore +0 -0
  125. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/README.md.mustache +0 -0
  126. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/flow +0 -0
  127. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base/flow.cmd +0 -0
  128. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/base.json +0 -0
  129. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/cmake/common.cmake.mustache +0 -0
  130. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/extensions/wall/__init__.py.mustache +0 -0
  131. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/extensions/wall/icons/__init__.py.mustache +0 -0
  132. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/extensions/wall/icons/magick.py.mustache +0 -0
  133. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/packages/base.cmake.mustache +0 -0
  134. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/packages/config.cmake +0 -0
  135. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/packages/cpack.cmake +0 -0
  136. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/packages/wix/cpack.cmake.mustache +0 -0
  137. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/packages/wix/patches.in.wix +0 -0
  138. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/.flow/packages/wix.cmake.mustache +0 -0
  139. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/CMakeGraphVizOptions.cmake +0 -0
  140. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/CMakeLists.txt.mustache +0 -0
  141. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/CMakePresets.json +0 -0
  142. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/assets/appicon.ico +0 -0
  143. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/assets/appicon.png +0 -0
  144. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/assets/wix_banner.bmp +0 -0
  145. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/assets/wix_dialog.bmp +0 -0
  146. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/icons/.gitignore +0 -0
  147. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/icons/appicon-mask.svg +0 -0
  148. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/data/icons/appicon.svg +0 -0
  149. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/src/main.cc.mustache +0 -0
  150. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/src/version.hpp.in.mustache +0 -0
  151. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake/tests/test.cc.mustache +0 -0
  152. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/cmake.json +0 -0
  153. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/conan/.flow/cmake/libcxx_toolchain.cmake +0 -0
  154. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/conan/.flow/cmake/output_dirs_setup.cmake +0 -0
  155. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/conan/conanfile.txt +0 -0
  156. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/conan.json +0 -0
  157. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions/.github/linters/.isort.cfg +0 -0
  158. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions/.github/linters/.mypy.ini +0 -0
  159. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions/.github/workflows/build.yml.auto-release +0 -0
  160. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions/.github/workflows/build.yml.basic +0 -0
  161. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions/.github/workflows/linter.yml +0 -0
  162. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions/CPPLINT.cfg +0 -0
  163. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_actions.json +0 -0
  164. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_social/.github/ISSUE_TEMPLATE/bug_report.md.mustache +0 -0
  165. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_social/.github/ISSUE_TEMPLATE/feature_request.md.mustache +0 -0
  166. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_social/CODE_OF_CONDUCT.md.mustache +0 -0
  167. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_social/CONTRIBUTING.md +0 -0
  168. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/layers/github_social.json +0 -0
  169. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/licenses/0BSD.mustache +0 -0
  170. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/licenses/MIT.mustache +0 -0
  171. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/licenses/Unlicense.mustache +0 -0
  172. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/licenses/WTFPL.mustache +0 -0
  173. {proj_flow-0.20.1 → proj_flow-0.20.3}/src/proj_flow/template/licenses/Zlib.mustache +0 -0
@@ -4,6 +4,22 @@ Changelog
4
4
 
5
5
  All notable changes to this project will be documented in this file.
6
6
 
7
+ `0.20.3 <https://github.com/mzdun/proj-flow/compare/v0.20.2...v0.20.3>`_ (2026-01-30)
8
+ =====================================================================================
9
+
10
+ Bug Fixes
11
+ ---------
12
+
13
+ - allow postproc includes (`07ecd17 <https://github.com/mzdun/proj-flow/commit/07ecd1770170ffb90150d1bcf622e625c39d3f50>`_)
14
+
15
+ `0.20.2 <https://github.com/mzdun/proj-flow/compare/v0.20.1...v0.20.2>`_ (2026-01-21)
16
+ =====================================================================================
17
+
18
+ Bug Fixes
19
+ ---------
20
+
21
+ - unescape string ext attributes (`27cbd9c <https://github.com/mzdun/proj-flow/commit/27cbd9cba6aad60749648e7ceaead903d9edb4e5>`_)
22
+
7
23
  `0.20.1 <https://github.com/mzdun/proj-flow/compare/v0.20.0...v0.20.1>`_ (2026-01-19)
8
24
  =====================================================================================
9
25
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proj-flow
3
- Version: 0.20.1
3
+ Version: 0.20.3
4
4
  Summary: C++ project maintenance, automated
5
5
  Project-URL: Changelog, https://github.com/mzdun/proj-flow/blob/main/CHANGELOG.rst
6
6
  Project-URL: Documentation, https://proj-flow.readthedocs.io/en/latest/
@@ -6,4 +6,4 @@ The **proj_flow** contains only ``__version__`` to be updated, nothing more.
6
6
  This is in an attempt to make this module easy to load initially.
7
7
  """
8
8
 
9
- __version__ = "0.20.1"
9
+ __version__ = "0.20.3"
@@ -253,6 +253,10 @@ class FlowConfig:
253
253
  def postproc_exclude(self) -> List[dict]:
254
254
  return self.postproc.get("exclude", [])
255
255
 
256
+ @property
257
+ def postproc_include(self) -> List[dict]:
258
+ return self.postproc.get("include", [])
259
+
256
260
  @property
257
261
  def shortcuts(self) -> Dict[str, dict]:
258
262
  return self._cfg.get("shortcuts", {})
@@ -86,6 +86,29 @@ def matches(tested: dict, test: dict) -> bool:
86
86
  return True
87
87
 
88
88
 
89
+ def partially_matches(tested: dict, test: dict) -> bool:
90
+ """
91
+ Checks, if the tested dictionary contains some of the values from test
92
+ dictionary, with non-zero intersection between both dictionaries.
93
+
94
+ :param tested: Dictionary to check
95
+ :param test: Dictionary to check against
96
+
97
+ :returns: `True`, if all keys from `test` are in `tested` and have the same
98
+ values, `False` otherwise.
99
+ """
100
+
101
+ intersection_size = 0
102
+ for key, value in test.items():
103
+ if key not in tested:
104
+ continue
105
+ val = tested.get(key)
106
+ if val != value:
107
+ return False
108
+ intersection_size += 1
109
+ return intersection_size > 0
110
+
111
+
89
112
  def matches_any(tested: dict, tests: List[dict]):
90
113
  """
91
114
  Checks, if the tested dictionary contains all the values from at least one
@@ -32,6 +32,9 @@ def github():
32
32
 
33
33
  @arg.command("github", "matrix")
34
34
  def matrix(
35
+ pretty: typing.Annotated[
36
+ bool, arg.FlagArgument(help="Indent JSON document")
37
+ ],
35
38
  official: typing.Annotated[
36
39
  bool, arg.FlagArgument(help="Cut matrix to release builds only")
37
40
  ],
@@ -60,6 +63,8 @@ def matrix(
60
63
  print(f"matrix={var}", file=github_output)
61
64
  else:
62
65
  print(f"matrix={var}")
66
+ elif pretty:
67
+ json.dump(usable, sys.stdout, indent=2)
63
68
  else:
64
69
  json.dump(usable, sys.stdout)
65
70
 
@@ -68,7 +68,10 @@ def visit_string_extended_attribute(
68
68
  return
69
69
 
70
70
  if attr.rhs:
71
- bag[name] = cast(str, attr.rhs.value)
71
+ value = cast(str, attr.rhs.value)
72
+ if value.startswith('"') and value.endswith('"') and len(value) > 1:
73
+ value = value[1:-1]
74
+ bag[name] = value
72
75
 
73
76
 
74
77
  def flag_extended_attribute(name: str):
@@ -9,6 +9,7 @@ using ``-D`` switches.
9
9
 
10
10
 
11
11
  import argparse
12
+ import copy
12
13
  import datetime
13
14
  import os
14
15
  import sys
@@ -152,6 +153,19 @@ def _load_flow_data(rt: env.Runtime):
152
153
  return configs, keys
153
154
 
154
155
 
156
+ def _apply_postproc_includes(config: dict, postproc_include: List[dict]):
157
+ clone = copy.deepcopy(config)
158
+ for ext in postproc_include:
159
+ if not matrix.partially_matches(config, ext):
160
+ continue
161
+
162
+ for key, value in ext.items():
163
+ if key in config:
164
+ continue
165
+ clone[key] = value
166
+ return clone
167
+
168
+
155
169
  class Configs:
156
170
  usable: List[env.Config] = []
157
171
 
@@ -186,8 +200,9 @@ class Configs:
186
200
  )
187
201
 
188
202
  postproc_exclude = rt.postproc_exclude
203
+ postproc_include = rt.postproc_include
189
204
  usable = [
190
- config
205
+ _apply_postproc_includes(config, postproc_include)
191
206
  for config in turned
192
207
  if len(postproc_exclude) == 0
193
208
  or not matrix.matches_any(config, postproc_exclude)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes