python-semantic-release 9.16.0__tar.gz → 9.20.0__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 (224) hide show
  1. {python_semantic_release-9.16.0/src/python_semantic_release.egg-info → python_semantic_release-9.20.0}/PKG-INFO +4 -2
  2. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/algorithm.rst +1 -1
  3. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/automatic-releases/github-actions.rst +7 -7
  4. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/automatic-releases/index.rst +2 -0
  5. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/changelog_templates.rst +139 -22
  6. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/commands.rst +5 -4
  7. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/commit_parsing.rst +219 -34
  8. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/configuration.rst +186 -85
  9. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/index.rst +6 -4
  10. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/migrating_from_v7.rst +15 -15
  11. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/multibranch_releases.rst +3 -3
  12. python_semantic_release-9.20.0/docs/psr_changelog.rst +1 -0
  13. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/strict_mode.rst +1 -1
  14. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/troubleshooting.rst +2 -3
  15. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/pyproject.toml +19 -5
  16. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0/src/python_semantic_release.egg-info}/PKG-INFO +4 -2
  17. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/SOURCES.txt +14 -3
  18. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/requires.txt +3 -1
  19. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/__init__.py +1 -1
  20. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/__main__.py +7 -3
  21. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/context.py +20 -1
  22. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/release_history.py +100 -56
  23. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/template.py +0 -1
  24. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/changelog_writer.py +10 -1
  25. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/changelog.py +45 -1
  26. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/main.py +3 -6
  27. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/version.py +51 -18
  28. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/config.py +102 -53
  29. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/masking_filter.py +1 -1
  30. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/util.py +1 -1
  31. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/__init__.py +4 -0
  32. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/_base.py +1 -1
  33. python_semantic_release-9.20.0/src/semantic_release/commit_parser/angular.py +504 -0
  34. python_semantic_release-9.20.0/src/semantic_release/commit_parser/conventional.py +31 -0
  35. python_semantic_release-9.20.0/src/semantic_release/commit_parser/emoji.py +474 -0
  36. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/scipy.py +7 -7
  37. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/tag.py +3 -1
  38. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/token.py +19 -6
  39. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/util.py +60 -8
  40. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/const.py +2 -0
  41. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changes.md.j2 +61 -16
  42. python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +18 -0
  43. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 +66 -0
  44. python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +20 -0
  45. python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +62 -0
  46. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changes.rst.j2 +70 -25
  47. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 +2 -0
  48. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 +66 -0
  49. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/versioned_changes.rst.j2 +2 -0
  50. python_semantic_release-9.20.0/src/semantic_release/globals.py +8 -0
  51. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/helpers.py +100 -4
  52. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/_base.py +1 -1
  53. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/bitbucket.py +15 -0
  54. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/gitea.py +21 -0
  55. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/github.py +21 -0
  56. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/gitlab.py +20 -0
  57. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/version/algorithm.py +48 -13
  58. python_semantic_release-9.20.0/src/semantic_release/version/declaration.py +107 -0
  59. python_semantic_release-9.20.0/src/semantic_release/version/declarations/enum.py +12 -0
  60. python_semantic_release-9.20.0/src/semantic_release/version/declarations/i_version_replacer.py +67 -0
  61. python_semantic_release-9.20.0/src/semantic_release/version/declarations/pattern.py +241 -0
  62. python_semantic_release-9.20.0/src/semantic_release/version/declarations/toml.py +148 -0
  63. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/conftest.py +14 -2
  64. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/const.py +12 -8
  65. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_changelog/test_changelog.py +48 -45
  66. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +6 -6
  67. python_semantic_release-9.20.0/tests/e2e/cmd_changelog/test_changelog_parsing.py +138 -0
  68. python_semantic_release-9.20.0/tests/e2e/cmd_changelog/test_changelog_release_notes.py +332 -0
  69. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_config/test_generate_config.py +4 -4
  70. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_publish/test_publish.py +4 -4
  71. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +7 -9
  72. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +7 -9
  73. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +9 -11
  74. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +7 -9
  75. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +7 -9
  76. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +7 -9
  77. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +2 -2
  78. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +7 -9
  79. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +7 -9
  80. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +7 -9
  81. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version.py +7 -7
  82. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_build.py +5 -5
  83. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_bump.py +702 -750
  84. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_changelog.py +31 -31
  85. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +4 -4
  86. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_github_actions.py +6 -2
  87. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_print.py +35 -35
  88. python_semantic_release-9.20.0/tests/e2e/cmd_version/test_version_release_notes.py +179 -0
  89. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_stamp.py +204 -12
  90. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_strict.py +3 -3
  91. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/test_help.py +4 -4
  92. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/test_main.py +8 -11
  93. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/commit_parsers.py +20 -20
  94. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/example_project.py +12 -8
  95. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/git_repo.py +440 -28
  96. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +16 -16
  97. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +17 -17
  98. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +19 -19
  99. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +15 -13
  100. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/repo_w_default_release.py +13 -10
  101. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +11 -9
  102. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/repo_initial_commit.py +2 -2
  103. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +7 -7
  104. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +9 -9
  105. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +8 -8
  106. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +7 -7
  107. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +7 -7
  108. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/conftest.py +178 -0
  109. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_changelog_context.py +253 -0
  110. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_default_changelog.py +449 -2
  111. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_release_history.py +38 -38
  112. python_semantic_release-9.20.0/tests/unit/semantic_release/changelog/test_release_notes.py +1048 -0
  113. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_config.py +59 -9
  114. python_semantic_release-9.20.0/tests/unit/semantic_release/commit_parser/test_conventional.py +1248 -0
  115. python_semantic_release-9.20.0/tests/unit/semantic_release/commit_parser/test_emoji.py +1103 -0
  116. python_semantic_release-9.20.0/tests/unit/semantic_release/commit_parser/test_scipy.py +1141 -0
  117. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test__base.py +2 -5
  118. python_semantic_release-9.20.0/tests/unit/semantic_release/test_helpers.py +297 -0
  119. python_semantic_release-9.20.0/tests/unit/semantic_release/version/__init__.py +0 -0
  120. python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
  121. python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +472 -0
  122. python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +350 -0
  123. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/util.py +2 -2
  124. python_semantic_release-9.16.0/src/semantic_release/commit_parser/angular.py +0 -285
  125. python_semantic_release-9.16.0/src/semantic_release/commit_parser/emoji.py +0 -264
  126. python_semantic_release-9.16.0/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +0 -11
  127. python_semantic_release-9.16.0/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +0 -14
  128. python_semantic_release-9.16.0/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +0 -58
  129. python_semantic_release-9.16.0/src/semantic_release/globals.py +0 -6
  130. python_semantic_release-9.16.0/src/semantic_release/version/declaration.py +0 -201
  131. python_semantic_release-9.16.0/tests/e2e/cmd_version/test_version_release_notes.py +0 -78
  132. python_semantic_release-9.16.0/tests/unit/semantic_release/changelog/test_release_notes.py +0 -452
  133. python_semantic_release-9.16.0/tests/unit/semantic_release/commit_parser/test_angular.py +0 -528
  134. python_semantic_release-9.16.0/tests/unit/semantic_release/commit_parser/test_emoji.py +0 -420
  135. python_semantic_release-9.16.0/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -470
  136. python_semantic_release-9.16.0/tests/unit/semantic_release/test_helpers.py +0 -133
  137. python_semantic_release-9.16.0/tests/unit/semantic_release/version/test_declaration.py +0 -138
  138. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/AUTHORS.rst +0 -0
  139. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/LICENSE +0 -0
  140. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/MANIFEST.in +0 -0
  141. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/README.rst +0 -0
  142. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/Makefile +0 -0
  143. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/automatic-releases/cronjobs.rst +0 -0
  144. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/automatic-releases/travis.rst +0 -0
  145. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/conf.py +0 -0
  146. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/contributing.rst +0 -0
  147. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/contributors.rst +0 -0
  148. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/docs/make.bat +0 -0
  149. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/setup.cfg +0 -0
  150. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/dependency_links.txt +0 -0
  151. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/entry_points.txt +0 -0
  152. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/top_level.txt +0 -0
  153. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/__init__.py +0 -0
  154. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/__init__.py +0 -0
  155. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/cli_context.py +0 -0
  156. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/__init__.py +0 -0
  157. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/generate_config.py +0 -0
  158. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/publish.py +0 -0
  159. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/const.py +0 -0
  160. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/github_actions_output.py +0 -0
  161. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changelog_header.md.j2 +0 -0
  162. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changelog_init.md.j2 +0 -0
  163. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changelog_update.md.j2 +0 -0
  164. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/unreleased_changes.md.j2 +0 -0
  165. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/CHANGELOG.md.j2 +0 -0
  166. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changelog_header.rst.j2 +0 -0
  167. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changelog_init.rst.j2 +0 -0
  168. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 +0 -0
  169. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 +0 -0
  170. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/CHANGELOG.rst.j2 +0 -0
  171. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/enums.py +0 -0
  172. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/errors.py +0 -0
  173. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/gitproject.py +0 -0
  174. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/__init__.py +0 -0
  175. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
  176. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/token_auth.py +0 -0
  177. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/util.py +0 -0
  178. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/py.typed +0 -0
  179. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/version/__init__.py +0 -0
  180. {python_semantic_release-9.16.0/tests → python_semantic_release-9.20.0/src/semantic_release/version/declarations}/__init__.py +0 -0
  181. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/version/translator.py +0 -0
  182. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/src/semantic_release/version/version.py +0 -0
  183. {python_semantic_release-9.16.0/tests/e2e → python_semantic_release-9.20.0/tests}/__init__.py +0 -0
  184. {python_semantic_release-9.16.0/tests/e2e/cmd_changelog → python_semantic_release-9.20.0/tests/e2e}/__init__.py +0 -0
  185. {python_semantic_release-9.16.0/tests/e2e/cmd_config → python_semantic_release-9.20.0/tests/e2e/cmd_changelog}/__init__.py +0 -0
  186. {python_semantic_release-9.16.0/tests/e2e/cmd_publish → python_semantic_release-9.20.0/tests/e2e/cmd_config}/__init__.py +0 -0
  187. {python_semantic_release-9.16.0/tests/e2e/cmd_version → python_semantic_release-9.20.0/tests/e2e/cmd_publish}/__init__.py +0 -0
  188. {python_semantic_release-9.16.0/tests/e2e/cmd_version/bump_version → python_semantic_release-9.20.0/tests/e2e/cmd_version}/__init__.py +0 -0
  189. {python_semantic_release-9.16.0/tests/e2e/cmd_version/bump_version/git_flow → python_semantic_release-9.20.0/tests/e2e/cmd_version/bump_version}/__init__.py +0 -0
  190. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
  191. {python_semantic_release-9.16.0/tests/e2e/cmd_version/bump_version/github_flow → python_semantic_release-9.20.0/tests/e2e/cmd_version/bump_version/git_flow}/__init__.py +0 -0
  192. {python_semantic_release-9.16.0/tests/e2e/cmd_version/bump_version/trunk_based_dev → python_semantic_release-9.20.0/tests/e2e/cmd_version/bump_version/github_flow}/__init__.py +0 -0
  193. {python_semantic_release-9.16.0/tests/unit → python_semantic_release-9.20.0/tests/e2e/cmd_version/bump_version/trunk_based_dev}/__init__.py +0 -0
  194. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/e2e/conftest.py +0 -0
  195. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/__init__.py +0 -0
  196. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/__init__.py +0 -0
  197. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/__init__.py +0 -0
  198. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/__init__.py +0 -0
  199. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
  200. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/fixtures/scipy.py +0 -0
  201. {python_semantic_release-9.16.0/tests/unit/semantic_release → python_semantic_release-9.20.0/tests/unit}/__init__.py +0 -0
  202. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/conftest.py +0 -0
  203. {python_semantic_release-9.16.0/tests/unit/semantic_release/changelog → python_semantic_release-9.20.0/tests/unit/semantic_release}/__init__.py +0 -0
  204. {python_semantic_release-9.16.0/tests/unit/semantic_release/cli → python_semantic_release-9.20.0/tests/unit/semantic_release/changelog}/__init__.py +0 -0
  205. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_template.py +0 -0
  206. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
  207. {python_semantic_release-9.16.0/tests/unit/semantic_release/commit_parser → python_semantic_release-9.20.0/tests/unit/semantic_release/cli}/__init__.py +0 -0
  208. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
  209. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
  210. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_util.py +0 -0
  211. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_version.py +0 -0
  212. {python_semantic_release-9.16.0/tests/unit/semantic_release/hvcs → python_semantic_release-9.20.0/tests/unit/semantic_release/commit_parser}/__init__.py +0 -0
  213. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
  214. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
  215. {python_semantic_release-9.16.0/tests/unit/semantic_release/version → python_semantic_release-9.20.0/tests/unit/semantic_release/hvcs}/__init__.py +0 -0
  216. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
  217. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
  218. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
  219. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
  220. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
  221. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
  222. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
  223. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_translator.py +0 -0
  224. {python_semantic_release-9.16.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-semantic-release
3
- Version: 9.16.0
3
+ Version: 9.20.0
4
4
  Summary: Automatic Semantic Versioning for Python projects
5
5
  Author-email: Rolf Erik Lekang <me@rolflekang.com>
6
6
  License: MIT
@@ -33,6 +33,7 @@ Requires-Dist: importlib-resources~=6.0
33
33
  Requires-Dist: pydantic~=2.0
34
34
  Requires-Dist: rich~=13.0
35
35
  Requires-Dist: shellingham~=1.5
36
+ Requires-Dist: Deprecated~=1.2
36
37
  Provides-Extra: build
37
38
  Requires-Dist: build~=1.2; extra == "build"
38
39
  Provides-Extra: docs
@@ -62,7 +63,8 @@ Requires-Dist: pre-commit~=3.5; extra == "dev"
62
63
  Requires-Dist: tox~=4.11; extra == "dev"
63
64
  Requires-Dist: ruff==0.6.1; extra == "dev"
64
65
  Provides-Extra: mypy
65
- Requires-Dist: mypy==1.14.1; extra == "mypy"
66
+ Requires-Dist: mypy==1.15.0; extra == "mypy"
67
+ Requires-Dist: types-Deprecated~=1.2; extra == "mypy"
66
68
  Requires-Dist: types-requests~=2.32.0; extra == "mypy"
67
69
  Requires-Dist: types-pyyaml~=6.0; extra == "mypy"
68
70
 
@@ -35,7 +35,7 @@ Implementation
35
35
 
36
36
  1. Parse all the Git tags of the repository into semantic versions, and **sort**
37
37
  in descending (most recent first) order according to `semver precedence`_.
38
- Ignore any tags which do not correspond to valid semantic vesrions according
38
+ Ignore any tags which do not correspond to valid semantic versions according
39
39
  to ``tag_format``.
40
40
 
41
41
 
@@ -337,7 +337,7 @@ before the :ref:`version <cmd-version>` subcommand.
337
337
 
338
338
  .. code:: yaml
339
339
 
340
- - uses: python-semantic-release/python-semantic-release@v9.16.0
340
+ - uses: python-semantic-release/python-semantic-release@v9.19.1
341
341
  with:
342
342
  root_options: "-vv --noop"
343
343
 
@@ -576,7 +576,7 @@ before the :ref:`publish <cmd-publish>` subcommand.
576
576
 
577
577
  .. code:: yaml
578
578
 
579
- - uses: python-semantic-release/publish-action@v9.8.9
579
+ - uses: python-semantic-release/publish-action@v9.19.1
580
580
  with:
581
581
  root_options: "-vv --noop"
582
582
 
@@ -684,7 +684,7 @@ to the GitHub Release Assets as well.
684
684
  - name: Action | Semantic Version Release
685
685
  id: release
686
686
  # Adjust tag with desired version if applicable.
687
- uses: python-semantic-release/python-semantic-release@v9.16.0
687
+ uses: python-semantic-release/python-semantic-release@v9.19.1
688
688
  with:
689
689
  github_token: ${{ secrets.GITHUB_TOKEN }}
690
690
  git_committer_name: "github-actions"
@@ -695,7 +695,7 @@ to the GitHub Release Assets as well.
695
695
  if: steps.release.outputs.released == 'true'
696
696
 
697
697
  - name: Publish | Upload to GitHub Release Assets
698
- uses: python-semantic-release/publish-action@v9.8.9
698
+ uses: python-semantic-release/publish-action@v9.19.1
699
699
  if: steps.release.outputs.released == 'true'
700
700
  with:
701
701
  github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -744,7 +744,7 @@ The equivalent GitHub Action configuration would be:
744
744
 
745
745
  - name: Action | Semantic Version Release
746
746
  # Adjust tag with desired version if applicable.
747
- uses: python-semantic-release/python-semantic-release@v9.16.0
747
+ uses: python-semantic-release/python-semantic-release@v9.19.1
748
748
  with:
749
749
  github_token: ${{ secrets.GITHUB_TOKEN }}
750
750
  force: patch
@@ -772,13 +772,13 @@ Publish Action.
772
772
  .. code:: yaml
773
773
 
774
774
  - name: Release Project 1
775
- uses: python-semantic-release/python-semantic-release@v9.16.0
775
+ uses: python-semantic-release/python-semantic-release@v9.19.1
776
776
  with:
777
777
  directory: ./project1
778
778
  github_token: ${{ secrets.GITHUB_TOKEN }}
779
779
 
780
780
  - name: Release Project 2
781
- uses: python-semantic-release/python-semantic-release@v9.16.0
781
+ uses: python-semantic-release/python-semantic-release@v9.19.1
782
782
  with:
783
783
  directory: ./project2
784
784
  github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -13,6 +13,8 @@ Guides
13
13
  ^^^^^^
14
14
 
15
15
  .. toctree::
16
+ :maxdepth: 2
17
+
16
18
  travis
17
19
  github-actions
18
20
  cronjobs
@@ -49,7 +49,7 @@ PSR provides two default changelog output formats:
49
49
  Both formats are kept in sync with one another to display the equivalent information
50
50
  in the respective format. The default changelog template is located in the
51
51
  ``data/templates/`` directory within the PSR package. The templates are written in
52
- modular style (ie. multiple files) and during the render proccess are ultimately
52
+ modular style (ie. multiple files) and during the render process are ultimately
53
53
  combined together to render the final changelog output. The rendering start point
54
54
  is the ``CHANGELOG.{FORMAT_EXT}.j2`` underneath the respective format directory.
55
55
 
@@ -71,8 +71,8 @@ A common and *highly-recommended* configuration option is the
71
71
  :ref:`changelog.exclude_commit_patterns <config-changelog-exclude_commit_patterns>`
72
72
  setting which allows the user to define regular expressions that will exclude commits
73
73
  from the changelog output. This is useful to filter out change messages that are not
74
- relevant to your external consumers (ex. ``ci`` and ``test`` in the angular commit
75
- convention) and only include the important changes that impact the consumer of your
74
+ relevant to your external consumers (ex. ``ci`` and ``test`` in the conventional commit
75
+ standard) and only include the important changes that impact the consumer of your
76
76
  software.
77
77
 
78
78
  Another important configuration option is the :ref:`changelog.mode <config-changelog-mode>`
@@ -144,7 +144,7 @@ newly created changelog file.
144
144
 
145
145
  .. tip::
146
146
  We have accomplished changelog updating through the use of the `Jinja`_ templating
147
- and addtional context filters and context variables. This is notable because
147
+ and additional context filters and context variables. This is notable because
148
148
  in the case that you want to customize your changelog template, you now can use the
149
149
  same logic to enable changelog updates of your custom template!
150
150
 
@@ -228,7 +228,7 @@ Configuration Examples
228
228
  }
229
229
  }
230
230
 
231
- 3. Goal: Configure an initializing reStructuredText changelog with filtered angular
231
+ 3. Goal: Configure an initializing reStructuredText changelog with filtered conventional
232
232
  commits patterns and merge commits within a custom config file ``releaserc.toml``.
233
233
 
234
234
  .. code:: toml
@@ -246,6 +246,11 @@ Configuration Examples
246
246
  '''Merged? .*''',
247
247
  ]
248
248
 
249
+ If identified or supported by the parser, the default changelog templates will include
250
+ a separate section of breaking changes and additional release information. Refer to the
251
+ :ref:`commit parsing <commit-parsing>` section to see how to write commit messages that
252
+ will be properly parsed and displayed in these sections.
253
+
249
254
 
250
255
  .. _changelog-templates-default_release_notes:
251
256
 
@@ -260,16 +265,37 @@ default built-in template out-of-the-box for generating release notes.
260
265
 
261
266
  The difference between the changelog and release notes is that the release notes
262
267
  only contain the changes for the current release. Due to the modularity of the
263
- PSR templates, the format is identical to an individual version of the default
264
- changelog.
268
+ PSR templates, the format is similar to an individual version of the default
269
+ changelog but may include other version specific information.
265
270
 
266
271
  At this time, the default template for version release notes is only available
267
272
  in Markdown format for all VCS types.
268
273
 
274
+ If you want to review what the default release notes look like you can use the
275
+ following command to print the release notes to the console (remove any configuration
276
+ for defining a custom template directory):
277
+
278
+ .. code:: console
279
+
280
+ # Create a current tag
281
+ git tag v1.0.0
282
+ semantic-release --noop changelog --post-to-release-tag v1.0.0
283
+
284
+ The default template provided by PSR will respect the
285
+ :ref:`config-changelog-default_templates-mask_initial_release` setting and
286
+ will also add a comparison link to the previous release if one exists without
287
+ customization.
288
+
289
+ As of ``v9.18.0``, the default release notes will also include a statement to
290
+ declare which license the project was released under. PSR determines which license
291
+ to declare based on the value of ``project.license-expression`` in the ``pyproject.toml``
292
+ file as defined in the `PEP 639`_ specification.
293
+
269
294
  .. seealso::
270
295
  - To personalize your release notes, see the
271
296
  :ref:`changelog-templates-custom_release_notes` section.
272
297
 
298
+ .. _PEP 639: https://peps.python.org/pep-0639/
273
299
 
274
300
  .. _changelog-templates-template-rendering:
275
301
 
@@ -658,6 +684,45 @@ The filters provided vary based on the VCS configured and available features:
658
684
  )
659
685
  }}
660
686
 
687
+ * ``create_pypi_url(package_name: str, version: str = "")``: given a package name and an optional
688
+ version, return a URL to the PyPI page for the package. If a version is provided, the URL will
689
+ point to the specific version page. If no version is provided, the URL will point to the package
690
+ page.
691
+
692
+ *Introduced in v9.18.0.*
693
+
694
+ **Example Usage:**
695
+
696
+ .. code:: jinja
697
+
698
+ {{ "example-package" | create_pypi_url }}
699
+ {{ "example-package" | create_pypi_url("1.0.0") }}
700
+
701
+ **Markdown Output:**
702
+
703
+ .. code:: markdown
704
+
705
+ https://pypi.org/project/example-package
706
+ https://pypi.org/project/example-package/1.0.0
707
+
708
+ * ``create_release_url (Callable[[TagStr], UrlStr])``: given a tag, return a URL to the release
709
+ page on the remote vcs. This filter is useful when you want to link to the release page on the
710
+ remote vcs.
711
+
712
+ *Introduced in v9.18.0.*
713
+
714
+ **Example Usage:**
715
+
716
+ .. code:: jinja
717
+
718
+ {{ "v1.0.0" | create_release_url }}
719
+
720
+ **Markdown Output:**
721
+
722
+ .. code:: markdown
723
+
724
+ https://example.com/example/repo/releases/tag/v1.0.0
725
+
661
726
  * ``create_server_url (Callable[[PathStr, AuthStr | None, QueryStr | None, FragmentStr | None], UrlStr])``:
662
727
  when given a path, prepend the configured vcs server host and url scheme. Optionally you
663
728
  can provide, a auth string, a query string or a url fragment to be normalized into the
@@ -817,6 +882,29 @@ The filters provided vary based on the VCS configured and available features:
817
882
 
818
883
  [#29](https://example.com/example/repo/pull/29)
819
884
 
885
+ * ``format_w_official_vcs_name (Callable[[str], str])``: given a format string, insert
886
+ the official VCS type name into the string and return. This filter is useful when you want to
887
+ display the proper name of the VCS type in a changelog or release notes. The filter supports
888
+ three different replace formats: ``%s``, ``{}``, and ``{vcs_name}``.
889
+
890
+ *Introduced in v9.18.0.*
891
+
892
+ **Example Usage:**
893
+
894
+ .. code:: jinja
895
+
896
+ {{ "%s Releases" | format_w_official_vcs_name }}
897
+ {{ "{} Releases" | format_w_official_vcs_name }}
898
+ {{ "{vcs_name} Releases" | format_w_official_vcs_name }}
899
+
900
+ **Markdown Output:**
901
+
902
+ .. code:: markdown
903
+
904
+ GitHub Releases
905
+ GitHub Releases
906
+ GitHub Releases
907
+
820
908
  * ``read_file (Callable[[str], str])``: given a file path, read the file and
821
909
  return the contents as a string. This function was added specifically to
822
910
  enable the changelog update feature where it would load the existing changelog
@@ -831,22 +919,51 @@ The filters provided vary based on the VCS configured and available features:
831
919
  {% set prev_changelog_contents = prev_changelog_file | read_file | safe %}
832
920
 
833
921
 
922
+ * ``sort_numerically (Callable[[Iterable[str], bool], list[str]])``: given a
923
+ sequence of strings with possibly some non-number characters as a prefix or suffix,
924
+ sort the strings as if they were just numbers from lowest to highest. This filter
925
+ is useful when you want to sort issue numbers or other strings that have a numeric
926
+ component in them but cannot be cast to a number directly to sort them. If you want
927
+ to sort the strings in reverse order, you can pass a boolean value of ``True`` as the
928
+ second argument.
929
+
930
+ *Introduced in v9.16.0.*
931
+
932
+ **Example Usage:**
933
+
934
+ .. code:: jinja
935
+
936
+ {{ ["#222", "#1023", "#444"] | sort_numerically }}
937
+ {{ ["#222", "#1023", "#444"] | sort_numerically(True) }}
938
+
939
+ **Markdown Output:**
940
+
941
+ .. code:: markdown
942
+
943
+ ['#222', '#444', '#1023']
944
+ ['#1023', '#444', '#222']
945
+
946
+
834
947
  Availability of the documented filters can be found in the table below:
835
948
 
836
- ====================== ========= ===== ====== ======
837
- **filter - hvcs_type** bitbucket gitea github gitlab
838
- ====================== ========= ===== ====== ======
839
- autofit_text_width ✅ ✅ ✅ ✅
840
- convert_md_to_rst ✅ ✅ ✅ ✅
841
- create_server_url ✅ ✅ ✅ ✅
842
- create_repo_url ✅ ✅ ✅ ✅
843
- commit_hash_url ✅ ✅ ✅ ✅
844
- compare_url ✅ ✅
845
- issue_url ❌ ✅ ✅ ✅
846
- merge_request_url ❌
847
- pull_request_url ✅ ✅ ✅ ✅
848
- read_file ✅ ✅ ✅ ✅
849
- ====================== ========= ===== ====== ======
949
+ ========================== ========= ===== ====== ======
950
+ **filter - hvcs_type** bitbucket gitea github gitlab
951
+ ========================== ========= ===== ====== ======
952
+ autofit_text_width ✅ ✅ ✅ ✅
953
+ convert_md_to_rst ✅ ✅ ✅ ✅
954
+ create_pypi_url ✅ ✅ ✅ ✅
955
+ create_server_url ✅ ✅ ✅ ✅
956
+ create_release_url ❌ ✅ ✅ ✅
957
+ create_repo_url ✅ ✅
958
+ commit_hash_url ✅ ✅ ✅ ✅
959
+ compare_url ✅
960
+ format_w_official_vcs_name ✅ ✅ ✅ ✅
961
+ issue_url ❌ ✅ ✅ ✅
962
+ merge_request_url ❌ ❌ ❌ ✅
963
+ pull_request_url ✅ ✅ ✅ ✅
964
+ read_file ✅ ✅ ✅ ✅
965
+ sort_numerically ✅ ✅ ✅ ✅
966
+ ========================== ========= ===== ====== ======
850
967
 
851
968
  .. seealso::
852
969
  * `Filters <https://jinja.palletsprojects.com/en/3.1.x/templates/#filters>`_
@@ -1103,7 +1220,7 @@ __ https://github.com/python-semantic-release/python-semantic-release/tree/maste
1103
1220
  maintain any content that should be included before the new release information.
1104
1221
  See ``data/templates/*/md/.components/changelog_update.md.j2`` for reference.
1105
1222
 
1106
- 5. **Print your insertion flag.** This is impartive to ensure that the resulting
1223
+ 5. **Print your insertion flag.** This is imperative to ensure that the resulting
1107
1224
  changelog can be updated in the future. See
1108
1225
  ``data/templates/*/md/.components/changelog_update.md.j2`` for reference.
1109
1226
 
@@ -272,8 +272,8 @@ the flag.
272
272
  This can be useful when making a single prerelease on a branch that would typically release
273
273
  normal versions.
274
274
 
275
- If not specified in :ref:`cmd-version-option-prerelease-token`, the prerelease token is idenitified using the
276
- :ref:`Multibranch Release Configuration <multibranch-releases-configuring>`
275
+ If not specified in :ref:`cmd-version-option-prerelease-token`, the prerelease token is identified
276
+ using the :ref:`Multibranch Release Configuration <multibranch-releases-configuring>`
277
277
 
278
278
  See the examples alongside :ref:`cmd-version-option-force-level` for how to use this flag.
279
279
 
@@ -282,8 +282,9 @@ See the examples alongside :ref:`cmd-version-option-force-level` for how to use
282
282
  ``--prerelease-token [VALUE]``
283
283
  ******************************
284
284
 
285
- Force the next version to use the value as the prerelease token. This overrides the configured value if one is
286
- present. If not used during a release producing a prerelease version, this option has no effect.
285
+ Force the next version to use the value as the prerelease token. This overrides the configured
286
+ value if one is present. If not used during a release producing a prerelease version, this
287
+ option has no effect.
287
288
 
288
289
  .. _cmd-version-option-build-metadata:
289
290