kpmx 2.0.2__tar.gz → 2.0.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 (241) hide show
  1. {kpmx-2.0.2/src/kpmx.egg-info → kpmx-2.0.3}/PKG-INFO +1 -1
  2. {kpmx-2.0.2 → kpmx-2.0.3}/pyproject.toml +1 -1
  3. {kpmx-2.0.2 → kpmx-2.0.3/src/kpmx.egg-info}/PKG-INFO +1 -1
  4. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/changelog_lint.py +35 -1
  5. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/changelog_md.py +16 -10
  6. {kpmx-2.0.2 → kpmx-2.0.3}/LICENSE +0 -0
  7. {kpmx-2.0.2 → kpmx-2.0.3}/README.md +0 -0
  8. {kpmx-2.0.2 → kpmx-2.0.3}/setup.cfg +0 -0
  9. {kpmx-2.0.2 → kpmx-2.0.3}/src/kpmx.egg-info/SOURCES.txt +0 -0
  10. {kpmx-2.0.2 → kpmx-2.0.3}/src/kpmx.egg-info/dependency_links.txt +0 -0
  11. {kpmx-2.0.2 → kpmx-2.0.3}/src/kpmx.egg-info/entry_points.txt +0 -0
  12. {kpmx-2.0.2 → kpmx-2.0.3}/src/kpmx.egg-info/requires.txt +0 -0
  13. {kpmx-2.0.2 → kpmx-2.0.3}/src/kpmx.egg-info/top_level.txt +0 -0
  14. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/__init__.py +0 -0
  15. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/__main__.py +0 -0
  16. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/__init__.py +0 -0
  17. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/archive/__init__.py +0 -0
  18. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/archive/discovery.py +0 -0
  19. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/archive/inspect.py +0 -0
  20. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/archive/readme.py +0 -0
  21. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/archive/workflow.py +0 -0
  22. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/branch/__init__.py +0 -0
  23. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/branch/close_branch.py +0 -0
  24. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/branch/drop_branch.py +0 -0
  25. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/branch/open_branch.py +0 -0
  26. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/changelog/__init__.py +0 -0
  27. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/code_scanning/__init__.py +0 -0
  28. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/config/__init__.py +0 -0
  29. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/config/add.py +0 -0
  30. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/config/init.py +0 -0
  31. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/config/show.py +0 -0
  32. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/__init__.py +0 -0
  33. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/capabilities.py +0 -0
  34. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/context.py +0 -0
  35. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/__init__.py +0 -0
  36. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/base.py +0 -0
  37. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/makefile.py +0 -0
  38. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/__init__.py +0 -0
  39. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/conflicts.py +0 -0
  40. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/installer.py +0 -0
  41. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/__init__.py +0 -0
  42. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/inspector.py +0 -0
  43. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/matcher.py +0 -0
  44. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/models.py +0 -0
  45. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/normalizer.py +0 -0
  46. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/parser.py +0 -0
  47. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile/result.py +0 -0
  48. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/profile_list.py +0 -0
  49. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/retry.py +0 -0
  50. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/runner.py +0 -0
  51. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/textparse.py +0 -0
  52. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/nix/types.py +0 -0
  53. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/os_packages/__init__.py +0 -0
  54. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/os_packages/arch_pkgbuild.py +0 -0
  55. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/os_packages/debian_control.py +0 -0
  56. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/os_packages/rpm_spec.py +0 -0
  57. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/installers/python.py +0 -0
  58. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/layers.py +0 -0
  59. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/install/pipeline.py +0 -0
  60. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/__init__.py +0 -0
  61. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/context.py +0 -0
  62. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/diff_cmd.py +0 -0
  63. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/git_remote.py +0 -0
  64. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/io.py +0 -0
  65. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/list_cmd.py +0 -0
  66. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/merge_cmd.py +0 -0
  67. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/printing.py +0 -0
  68. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/remote_provision.py +0 -0
  69. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/setup_cmd.py +0 -0
  70. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/types.py +0 -0
  71. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/url_utils.py +0 -0
  72. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/mirror/visibility_cmd.py +0 -0
  73. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/proxy.py +0 -0
  74. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/publish/__init__.py +0 -0
  75. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/publish/git_tags.py +0 -0
  76. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/publish/pypi_url.py +0 -0
  77. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/publish/types.py +0 -0
  78. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/publish/workflow.py +0 -0
  79. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/__init__.py +0 -0
  80. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/__init__.py +0 -0
  81. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/debian.py +0 -0
  82. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/editor.py +0 -0
  83. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/flake.py +0 -0
  84. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/pkgbuild.py +0 -0
  85. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/pyproject.py +0 -0
  86. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/rpm_changelog.py +0 -0
  87. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/files/rpm_spec.py +0 -0
  88. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/git_ops.py +0 -0
  89. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/package_name.py +0 -0
  90. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/prompts.py +0 -0
  91. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/retry.py +0 -0
  92. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/versioning.py +0 -0
  93. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/release/workflow.py +0 -0
  94. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/__init__.py +0 -0
  95. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/_parallel.py +0 -0
  96. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/clone.py +0 -0
  97. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/__init__.py +0 -0
  98. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/config_writer.py +0 -0
  99. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/git_bootstrap.py +0 -0
  100. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/mirrors.py +0 -0
  101. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/model.py +0 -0
  102. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/parser.py +0 -0
  103. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/planner.py +0 -0
  104. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/service.py +0 -0
  105. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/create/templates.py +0 -0
  106. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/deinstall.py +0 -0
  107. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/delete.py +0 -0
  108. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/list.py +0 -0
  109. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/pull.py +0 -0
  110. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/push.py +0 -0
  111. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/repository/status.py +0 -0
  112. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/update/__init__.py +0 -0
  113. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/update/manager.py +0 -0
  114. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/update/os_release.py +0 -0
  115. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/actions/update/system_updater.py +0 -0
  116. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/__init__.py +0 -0
  117. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/__init__.py +0 -0
  118. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/archive.py +0 -0
  119. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/branch.py +0 -0
  120. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/changelog.py +0 -0
  121. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/code_scanning.py +0 -0
  122. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/config.py +0 -0
  123. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/make.py +0 -0
  124. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/mirror.py +0 -0
  125. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/publish.py +0 -0
  126. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/release.py +0 -0
  127. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/repos.py +0 -0
  128. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/tools.py +0 -0
  129. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/commands/version.py +0 -0
  130. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/context.py +0 -0
  131. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/dispatch.py +0 -0
  132. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/__init__.py +0 -0
  133. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/archive_cmd.py +0 -0
  134. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/branch_cmd.py +0 -0
  135. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/changelog_cmd.py +0 -0
  136. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/code_scanning_cmd.py +0 -0
  137. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/common.py +0 -0
  138. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/config_cmd.py +0 -0
  139. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/install_update.py +0 -0
  140. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/list_cmd.py +0 -0
  141. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/make_cmd.py +0 -0
  142. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/mirror_cmd.py +0 -0
  143. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/navigation_cmd.py +0 -0
  144. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/publish_cmd.py +0 -0
  145. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/release_cmd.py +0 -0
  146. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/parser/version_cmd.py +0 -0
  147. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/proxy.py +0 -0
  148. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/tools/__init__.py +0 -0
  149. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/tools/paths.py +0 -0
  150. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/cli/tools/vscode.py +0 -0
  151. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/config/__init__.py +0 -0
  152. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/config/defaults.yaml +0 -0
  153. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/command/__init__.py +0 -0
  154. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/command/alias.py +0 -0
  155. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/command/ink.py +0 -0
  156. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/command/layer.py +0 -0
  157. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/command/resolve.py +0 -0
  158. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/command/run.py +0 -0
  159. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/config/__init__.py +0 -0
  160. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/config/load.py +0 -0
  161. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/config/save.py +0 -0
  162. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/__init__.py +0 -0
  163. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/providers/__init__.py +0 -0
  164. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/providers/env.py +0 -0
  165. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/providers/gh.py +0 -0
  166. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/providers/keyring.py +0 -0
  167. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/providers/prompt.py +0 -0
  168. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/resolver.py +0 -0
  169. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/store_keys.py +0 -0
  170. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/types.py +0 -0
  171. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/credentials/validate.py +0 -0
  172. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/__init__.py +0 -0
  173. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/__init__.py +0 -0
  174. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/add.py +0 -0
  175. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/add_all.py +0 -0
  176. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/add_remote.py +0 -0
  177. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/add_remote_push_url.py +0 -0
  178. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/branch_move.py +0 -0
  179. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/checkout.py +0 -0
  180. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/clone.py +0 -0
  181. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/commit.py +0 -0
  182. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/create_branch.py +0 -0
  183. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/delete_local_branch.py +0 -0
  184. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/delete_remote_branch.py +0 -0
  185. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/fetch.py +0 -0
  186. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/init.py +0 -0
  187. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/merge_no_ff.py +0 -0
  188. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/pull.py +0 -0
  189. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/pull_args.py +0 -0
  190. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/pull_ff_only.py +0 -0
  191. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/push.py +0 -0
  192. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/push_args.py +0 -0
  193. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/push_upstream.py +0 -0
  194. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/set_remote_url.py +0 -0
  195. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/tag_annotated.py +0 -0
  196. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/commands/tag_force_annotated.py +0 -0
  197. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/errors.py +0 -0
  198. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/__init__.py +0 -0
  199. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_changelog.py +0 -0
  200. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_config_value.py +0 -0
  201. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_current_branch.py +0 -0
  202. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_head_commit.py +0 -0
  203. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_latest_commit.py +0 -0
  204. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_latest_signing_key.py +0 -0
  205. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_remote_head_commit.py +0 -0
  206. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_remote_push_urls.py +0 -0
  207. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_repo_root.py +0 -0
  208. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_tags.py +0 -0
  209. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_tags_at_ref.py +0 -0
  210. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/get_upstream_ref.py +0 -0
  211. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/list_remotes.py +0 -0
  212. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/list_tags.py +0 -0
  213. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/probe_remote_reachable.py +0 -0
  214. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/queries/resolve_base_branch.py +0 -0
  215. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/git/run.py +0 -0
  216. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/__init__.py +0 -0
  217. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/ensure.py +0 -0
  218. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/http/__init__.py +0 -0
  219. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/http/client.py +0 -0
  220. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/http/errors.py +0 -0
  221. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/providers/__init__.py +0 -0
  222. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/providers/base.py +0 -0
  223. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/providers/gitea.py +0 -0
  224. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/providers/github.py +0 -0
  225. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/registry.py +0 -0
  226. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/types.py +0 -0
  227. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/remote_provisioning/visibility.py +0 -0
  228. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/__init__.py +0 -0
  229. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/dir.py +0 -0
  230. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/identifier.py +0 -0
  231. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/ignored.py +0 -0
  232. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/paths.py +0 -0
  233. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/resolve.py +0 -0
  234. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/selected.py +0 -0
  235. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/repository/verify.py +0 -0
  236. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/version/__init__.py +0 -0
  237. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/version/installed.py +0 -0
  238. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/version/semver.py +0 -0
  239. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/core/version/source.py +0 -0
  240. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/github/__init__.py +0 -0
  241. {kpmx-2.0.2 → kpmx-2.0.3}/src/pkgmgr/github/check_hadolint_sarif.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kpmx
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Kevin's package-manager tool (pkgmgr)
5
5
  Author-email: Kevin Veen-Birkenbach <info@veen.world>
6
6
  License: MIT
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "kpmx"
10
- version = "2.0.2"
10
+ version = "2.0.3"
11
11
  description = "Kevin's package-manager tool (pkgmgr)"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.9"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kpmx
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Kevin's package-manager tool (pkgmgr)
5
5
  Author-email: Kevin Veen-Birkenbach <info@veen.world>
6
6
  License: MIT
@@ -6,10 +6,13 @@ import re
6
6
  import shutil
7
7
  import subprocess
8
8
  import tempfile
9
+ from collections import Counter
9
10
 
10
11
  _HEADING = re.compile(r"^\s*(#{1,6})\s+(.*?)\s*#*\s*$")
11
12
  _INLINE_CODE = re.compile(r"`([^`\n]+)`")
12
13
  _FINDING = re.compile(r"\bMD\d{3}\b")
14
+ _LOCATION = re.compile(r"^.*?:\d+(?::\d+)?\s+")
15
+ _NON_DASH_ITEM = re.compile(r"^\s*[*+]\s")
13
16
  _MULTI_BLANK = re.compile(r"\n{3,}")
14
17
  _ENTRY_LEVEL = 3
15
18
 
@@ -59,6 +62,35 @@ def lint_changelog_entry(reference_path: str, entry: str) -> list[str]:
59
62
  return _builtin_lint(document)
60
63
 
61
64
 
65
+ def lint_changelog_context(reference_path: str, existing: str, merged: str) -> list[str]:
66
+ """Return the findings *merged* has beyond those *existing* already has.
67
+
68
+ Args:
69
+ reference_path: path of the target CHANGELOG.md; its directory supplies
70
+ the markdownlint config.
71
+ existing: the target file before the entry is inserted.
72
+ merged: the target file with the entry inserted.
73
+
74
+ Returns:
75
+ Findings of *merged* that *existing* does not produce. Empty when
76
+ ``markdownlint-cli2`` is unavailable.
77
+ """
78
+ if not shutil.which("markdownlint-cli2"):
79
+ return []
80
+ known = Counter(
81
+ _LOCATION.sub("", finding)
82
+ for finding in (_markdownlint(reference_path, existing) if existing.strip() else [])
83
+ )
84
+ new: list[str] = []
85
+ for finding in _markdownlint(reference_path, merged):
86
+ key = _LOCATION.sub("", finding)
87
+ if known[key]:
88
+ known[key] -= 1
89
+ else:
90
+ new.append(finding)
91
+ return new
92
+
93
+
62
94
  def _markdownlint(reference_path: str, document: str) -> list[str]:
63
95
  directory = os.path.dirname(os.path.abspath(reference_path)) or "."
64
96
  fd, tmp_path = tempfile.mkstemp(
@@ -69,7 +101,7 @@ def _markdownlint(reference_path: str, document: str) -> list[str]:
69
101
  with os.fdopen(fd, "w", encoding="utf-8") as handle:
70
102
  handle.write(document)
71
103
  proc = subprocess.run(
72
- ["markdownlint-cli2", name],
104
+ ["markdownlint-cli2", "--no-globs", name],
73
105
  cwd=directory,
74
106
  capture_output=True,
75
107
  text=True,
@@ -96,6 +128,8 @@ def _builtin_lint(document: str) -> list[str]:
96
128
  errors.append(f"line {number}: trailing whitespace (MD009)")
97
129
  if "`" in line:
98
130
  errors.append(f"line {number}: backtick is not allowed (use *italic*)")
131
+ if _NON_DASH_ITEM.match(line):
132
+ errors.append(f"line {number}: list items use '-' (MD004)")
99
133
  if "\n\n\n" in document:
100
134
  errors.append("multiple consecutive blank lines (MD012)")
101
135
  return errors
@@ -7,6 +7,7 @@ from datetime import date
7
7
 
8
8
  from .changelog_lint import (
9
9
  ChangelogLintError,
10
+ lint_changelog_context,
10
11
  lint_changelog_entry,
11
12
  transform_changelog_message,
12
13
  )
@@ -86,9 +87,22 @@ def update_changelog(
86
87
  except EOFError:
87
88
  print("[INFO] Re-opening the editor so you can fix the entry...")
88
89
 
90
+ changelog = ""
91
+ if os.path.exists(changelog_path):
92
+ try:
93
+ with open(changelog_path, encoding="utf-8") as f:
94
+ changelog = f.read()
95
+ except (OSError, UnicodeDecodeError) as exc:
96
+ print(f"[WARN] Could not read existing CHANGELOG.md: {exc}")
97
+
98
+ def _findings_for(entry: str) -> list[str]:
99
+ return lint_changelog_entry(changelog_path, entry) or lint_changelog_context(
100
+ changelog_path, changelog, _insert_after_h1(changelog, entry)
101
+ )
102
+
89
103
  if message is not None:
90
104
  body, entry = _entry_for(message)
91
- findings = lint_changelog_entry(changelog_path, entry)
105
+ findings = _findings_for(entry)
92
106
  if findings:
93
107
  _print_findings(findings)
94
108
  raise ChangelogLintError(
@@ -106,7 +120,7 @@ def update_changelog(
106
120
  )
107
121
  raw = _open_editor_for_changelog(attempt, rejected)
108
122
  body, entry = _entry_for(raw or f"Release {new_version}")
109
- findings = lint_changelog_entry(changelog_path, entry)
123
+ findings = _findings_for(entry)
110
124
  if not findings:
111
125
  break
112
126
  _print_findings(findings)
@@ -114,14 +128,6 @@ def update_changelog(
114
128
  rejected = findings
115
129
  _wait_for_reader()
116
130
 
117
- changelog = ""
118
- if os.path.exists(changelog_path):
119
- try:
120
- with open(changelog_path, encoding="utf-8") as f:
121
- changelog = f.read()
122
- except (OSError, UnicodeDecodeError) as exc:
123
- print(f"[WARN] Could not read existing CHANGELOG.md: {exc}")
124
-
125
131
  new_changelog = _insert_after_h1(changelog, entry)
126
132
 
127
133
  print("\n================ CHANGELOG ENTRY ================")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes