python-semantic-release 9.17.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 (217) hide show
  1. {python_semantic_release-9.17.0/src/python_semantic_release.egg-info → python_semantic_release-9.20.0}/PKG-INFO +4 -2
  2. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/algorithm.rst +1 -1
  3. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/github-actions.rst +7 -7
  4. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/index.rst +2 -0
  5. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/changelog_templates.rst +114 -23
  6. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/commands.rst +5 -4
  7. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/commit_parsing.rst +137 -19
  8. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/configuration.rst +181 -28
  9. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/index.rst +6 -4
  10. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/migrating_from_v7.rst +15 -15
  11. {python_semantic_release-9.17.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.17.0 → python_semantic_release-9.20.0}/docs/strict_mode.rst +1 -1
  14. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/troubleshooting.rst +2 -3
  15. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/pyproject.toml +19 -3
  16. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0/src/python_semantic_release.egg-info}/PKG-INFO +4 -2
  17. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/SOURCES.txt +14 -3
  18. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/requires.txt +3 -1
  19. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/__init__.py +1 -1
  20. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/__main__.py +7 -3
  21. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/context.py +17 -1
  22. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/release_history.py +39 -5
  23. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/changelog_writer.py +4 -0
  24. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/changelog.py +45 -1
  25. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/main.py +3 -6
  26. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/version.py +50 -17
  27. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/config.py +96 -52
  28. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/util.py +1 -1
  29. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/__init__.py +4 -0
  30. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/angular.py +33 -13
  31. python_semantic_release-9.20.0/src/semantic_release/commit_parser/conventional.py +31 -0
  32. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/emoji.py +34 -12
  33. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/token.py +19 -6
  34. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/util.py +11 -3
  35. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/const.py +2 -0
  36. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changes.md.j2 +61 -16
  37. python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +18 -0
  38. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 +66 -0
  39. python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +20 -0
  40. python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +62 -0
  41. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changes.rst.j2 +70 -25
  42. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 +2 -0
  43. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 +66 -0
  44. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/versioned_changes.rst.j2 +2 -0
  45. python_semantic_release-9.20.0/src/semantic_release/globals.py +8 -0
  46. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/helpers.py +14 -1
  47. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/bitbucket.py +15 -0
  48. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/gitea.py +21 -0
  49. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/github.py +21 -0
  50. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/gitlab.py +20 -0
  51. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/algorithm.py +48 -27
  52. python_semantic_release-9.20.0/src/semantic_release/version/declaration.py +107 -0
  53. python_semantic_release-9.20.0/src/semantic_release/version/declarations/enum.py +12 -0
  54. python_semantic_release-9.20.0/src/semantic_release/version/declarations/i_version_replacer.py +67 -0
  55. python_semantic_release-9.20.0/src/semantic_release/version/declarations/pattern.py +241 -0
  56. python_semantic_release-9.20.0/src/semantic_release/version/declarations/toml.py +148 -0
  57. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/const.py +12 -8
  58. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_changelog/test_changelog.py +44 -44
  59. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +6 -6
  60. python_semantic_release-9.20.0/tests/e2e/cmd_changelog/test_changelog_parsing.py +138 -0
  61. python_semantic_release-9.20.0/tests/e2e/cmd_changelog/test_changelog_release_notes.py +332 -0
  62. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_config/test_generate_config.py +4 -4
  63. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_publish/test_publish.py +4 -4
  64. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +7 -9
  65. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +7 -9
  66. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +9 -11
  67. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +7 -9
  68. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +7 -9
  69. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +7 -9
  70. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +2 -2
  71. {python_semantic_release-9.17.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
  72. {python_semantic_release-9.17.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
  73. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +7 -9
  74. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version.py +7 -7
  75. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_build.py +5 -5
  76. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_bump.py +702 -750
  77. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_changelog.py +31 -31
  78. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +4 -4
  79. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_github_actions.py +6 -2
  80. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_print.py +35 -35
  81. python_semantic_release-9.20.0/tests/e2e/cmd_version/test_version_release_notes.py +179 -0
  82. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_stamp.py +204 -12
  83. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_strict.py +3 -3
  84. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/test_help.py +4 -4
  85. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/test_main.py +8 -11
  86. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/commit_parsers.py +20 -20
  87. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/example_project.py +12 -8
  88. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/git_repo.py +290 -31
  89. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +16 -16
  90. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +17 -17
  91. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +19 -19
  92. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +15 -13
  93. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/repo_w_default_release.py +11 -9
  94. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +11 -9
  95. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/repo_initial_commit.py +2 -2
  96. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +7 -7
  97. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +9 -9
  98. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +8 -8
  99. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +7 -7
  100. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +7 -7
  101. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/conftest.py +178 -0
  102. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_changelog_context.py +165 -0
  103. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_default_changelog.py +449 -2
  104. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_release_history.py +38 -38
  105. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_release_notes.py +504 -5
  106. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_config.py +7 -7
  107. python_semantic_release-9.17.0/tests/unit/semantic_release/commit_parser/test_angular.py → python_semantic_release-9.20.0/tests/unit/semantic_release/commit_parser/test_conventional.py +179 -62
  108. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_emoji.py +110 -0
  109. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_scipy.py +110 -0
  110. python_semantic_release-9.20.0/tests/unit/semantic_release/version/__init__.py +0 -0
  111. python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
  112. python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +472 -0
  113. python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +350 -0
  114. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/util.py +2 -2
  115. python_semantic_release-9.17.0/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +0 -11
  116. python_semantic_release-9.17.0/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +0 -14
  117. python_semantic_release-9.17.0/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +0 -58
  118. python_semantic_release-9.17.0/src/semantic_release/globals.py +0 -6
  119. python_semantic_release-9.17.0/src/semantic_release/version/declaration.py +0 -201
  120. python_semantic_release-9.17.0/tests/e2e/cmd_version/test_version_release_notes.py +0 -78
  121. python_semantic_release-9.17.0/tests/unit/semantic_release/version/test_declaration.py +0 -138
  122. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/AUTHORS.rst +0 -0
  123. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/LICENSE +0 -0
  124. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/MANIFEST.in +0 -0
  125. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/README.rst +0 -0
  126. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/Makefile +0 -0
  127. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/cronjobs.rst +0 -0
  128. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/travis.rst +0 -0
  129. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/conf.py +0 -0
  130. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/contributing.rst +0 -0
  131. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/contributors.rst +0 -0
  132. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/make.bat +0 -0
  133. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/setup.cfg +0 -0
  134. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/dependency_links.txt +0 -0
  135. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/entry_points.txt +0 -0
  136. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/top_level.txt +0 -0
  137. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/__init__.py +0 -0
  138. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/template.py +0 -0
  139. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/__init__.py +0 -0
  140. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/cli_context.py +0 -0
  141. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/__init__.py +0 -0
  142. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/generate_config.py +0 -0
  143. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/publish.py +0 -0
  144. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/const.py +0 -0
  145. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/github_actions_output.py +0 -0
  146. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/masking_filter.py +0 -0
  147. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/_base.py +0 -0
  148. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/scipy.py +0 -0
  149. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/tag.py +0 -0
  150. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changelog_header.md.j2 +0 -0
  151. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changelog_init.md.j2 +0 -0
  152. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/changelog_update.md.j2 +0 -0
  153. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/.components/unreleased_changes.md.j2 +0 -0
  154. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/CHANGELOG.md.j2 +0 -0
  155. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changelog_header.rst.j2 +0 -0
  156. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changelog_init.rst.j2 +0 -0
  157. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 +0 -0
  158. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 +0 -0
  159. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/CHANGELOG.rst.j2 +0 -0
  160. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/enums.py +0 -0
  161. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/errors.py +0 -0
  162. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/gitproject.py +0 -0
  163. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/__init__.py +0 -0
  164. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/_base.py +0 -0
  165. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
  166. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/token_auth.py +0 -0
  167. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/util.py +0 -0
  168. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/py.typed +0 -0
  169. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/__init__.py +0 -0
  170. {python_semantic_release-9.17.0/tests → python_semantic_release-9.20.0/src/semantic_release/version/declarations}/__init__.py +0 -0
  171. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/translator.py +0 -0
  172. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/version.py +0 -0
  173. {python_semantic_release-9.17.0/tests/e2e → python_semantic_release-9.20.0/tests}/__init__.py +0 -0
  174. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/conftest.py +0 -0
  175. {python_semantic_release-9.17.0/tests/e2e/cmd_changelog → python_semantic_release-9.20.0/tests/e2e}/__init__.py +0 -0
  176. {python_semantic_release-9.17.0/tests/e2e/cmd_config → python_semantic_release-9.20.0/tests/e2e/cmd_changelog}/__init__.py +0 -0
  177. {python_semantic_release-9.17.0/tests/e2e/cmd_publish → python_semantic_release-9.20.0/tests/e2e/cmd_config}/__init__.py +0 -0
  178. {python_semantic_release-9.17.0/tests/e2e/cmd_version → python_semantic_release-9.20.0/tests/e2e/cmd_publish}/__init__.py +0 -0
  179. {python_semantic_release-9.17.0/tests/e2e/cmd_version/bump_version → python_semantic_release-9.20.0/tests/e2e/cmd_version}/__init__.py +0 -0
  180. {python_semantic_release-9.17.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
  181. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
  182. {python_semantic_release-9.17.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
  183. {python_semantic_release-9.17.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
  184. {python_semantic_release-9.17.0/tests/unit → python_semantic_release-9.20.0/tests/e2e/cmd_version/bump_version/trunk_based_dev}/__init__.py +0 -0
  185. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/conftest.py +0 -0
  186. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/__init__.py +0 -0
  187. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/__init__.py +0 -0
  188. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/__init__.py +0 -0
  189. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/__init__.py +0 -0
  190. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
  191. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/scipy.py +0 -0
  192. {python_semantic_release-9.17.0/tests/unit/semantic_release → python_semantic_release-9.20.0/tests/unit}/__init__.py +0 -0
  193. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/conftest.py +0 -0
  194. {python_semantic_release-9.17.0/tests/unit/semantic_release/changelog → python_semantic_release-9.20.0/tests/unit/semantic_release}/__init__.py +0 -0
  195. {python_semantic_release-9.17.0/tests/unit/semantic_release/cli → python_semantic_release-9.20.0/tests/unit/semantic_release/changelog}/__init__.py +0 -0
  196. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_template.py +0 -0
  197. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
  198. {python_semantic_release-9.17.0/tests/unit/semantic_release/commit_parser → python_semantic_release-9.20.0/tests/unit/semantic_release/cli}/__init__.py +0 -0
  199. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
  200. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
  201. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_util.py +0 -0
  202. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_version.py +0 -0
  203. {python_semantic_release-9.17.0/tests/unit/semantic_release/hvcs → python_semantic_release-9.20.0/tests/unit/semantic_release/commit_parser}/__init__.py +0 -0
  204. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
  205. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
  206. {python_semantic_release-9.17.0/tests/unit/semantic_release/version → python_semantic_release-9.20.0/tests/unit/semantic_release/hvcs}/__init__.py +0 -0
  207. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
  208. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
  209. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
  210. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
  211. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
  212. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
  213. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
  214. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/test_helpers.py +0 -0
  215. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
  216. {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_translator.py +0 -0
  217. {python_semantic_release-9.17.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.17.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.1
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.16.1
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.1
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.16.1
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.1
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.1
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.1
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
@@ -858,21 +946,24 @@ The filters provided vary based on the VCS configured and available features:
858
946
 
859
947
  Availability of the documented filters can be found in the table below:
860
948
 
861
- ====================== ========= ===== ====== ======
862
- **filter - hvcs_type** bitbucket gitea github gitlab
863
- ====================== ========= ===== ====== ======
864
- autofit_text_width ✅ ✅ ✅ ✅
865
- convert_md_to_rst ✅ ✅ ✅ ✅
866
- create_server_url ✅ ✅ ✅ ✅
867
- create_repo_url ✅ ✅ ✅ ✅
868
- commit_hash_url ✅ ✅ ✅ ✅
869
- compare_url ✅ ✅
870
- issue_url ❌ ✅ ✅ ✅
871
- merge_request_url ❌
872
- pull_request_url ✅ ✅ ✅ ✅
873
- read_file ✅ ✅ ✅ ✅
874
- sort_numerically ✅
875
- ====================== ========= ===== ====== ======
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
+ ========================== ========= ===== ====== ======
876
967
 
877
968
  .. seealso::
878
969
  * `Filters <https://jinja.palletsprojects.com/en/3.1.x/templates/#filters>`_
@@ -1129,7 +1220,7 @@ __ https://github.com/python-semantic-release/python-semantic-release/tree/maste
1129
1220
  maintain any content that should be included before the new release information.
1130
1221
  See ``data/templates/*/md/.components/changelog_update.md.j2`` for reference.
1131
1222
 
1132
- 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
1133
1224
  changelog can be updated in the future. See
1134
1225
  ``data/templates/*/md/.components/changelog_update.md.j2`` for reference.
1135
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
 
@@ -33,7 +33,7 @@ to handle your specific commit message style.
33
33
  features are added beyond the scope of the original commit message style guidelines.
34
34
 
35
35
  Other tools may not follow the same conventions as PSR's guideline extensions, so
36
- if you plan to use any similar programs in tadem with PSR, you should be aware of the
36
+ if you plan to use any similar programs in tandem with PSR, you should be aware of the
37
37
  differences in feature support and fall back to the official format guidelines if
38
38
  necessary.
39
39
 
@@ -48,27 +48,110 @@ Built-in Commit Parsers
48
48
 
49
49
  The following parsers are built in to Python Semantic Release:
50
50
 
51
- - :ref:`AngularCommitParser <commit_parser-builtin-angular>`
51
+ - :ref:`ConventionalCommitParser <commit_parser-builtin-conventional>`
52
+ - :ref:`AngularCommitParser <commit_parser-builtin-angular>` *(deprecated in v9.19.0)*
52
53
  - :ref:`EmojiCommitParser <commit_parser-builtin-emoji>`
53
54
  - :ref:`ScipyCommitParser <commit_parser-builtin-scipy>`
54
55
  - :ref:`TagCommitParser <commit_parser-builtin-tag>` *(deprecated in v9.12.0)*
55
56
 
56
57
  ----
57
58
 
59
+ .. _commit_parser-builtin-conventional:
60
+
61
+ Conventional Commits Parser
62
+ """""""""""""""""""""""""""
63
+
64
+ *Introduced in v9.19.0*
65
+
66
+ A parser that is designed to parse commits formatted according to the
67
+ `Conventional Commits Specification`_. The parser is implemented with the following
68
+ logic in relation to how PSR's core features:
69
+
70
+ - **Version Bump Determination**: This parser extracts the commit type from the subject
71
+ line of the commit (the first line of a commit message). This type is matched against
72
+ the configuration mapping to determine the level bump for the specific commit. If the
73
+ commit type is not found in the configuration mapping, the commit is considered a
74
+ non-parsable commit and will return it as a ParseError object and ultimately a commit
75
+ of type ``"unknown"``. The configuration mapping contains lists of commit types that
76
+ correspond to the level bump for each commit type. Some commit types are still valid
77
+ do not trigger a level bump, such as ``"chore"`` or ``"docs"``. You can also configure
78
+ the default level bump
79
+ :ref:`commit_parser_options.default_level_bump <config-commit_parser_options>` if desired.
80
+ To trigger a major release, the commit message body must contain a paragraph that begins
81
+ with ``BREAKING CHANGE:``. This will override the level bump determined by the commit type.
82
+
83
+ - **Changelog Generation**: PSR will group commits in the changelog by the commit type used
84
+ in the commit message. The commit type shorthand is converted to a more human-friendly
85
+ section heading and then used as the version section title of the changelog and release
86
+ notes. Under the section title, the parsed commit descriptions are listed out in full. If
87
+ the commit includes an optional scope, then the scope is prefixed on to the first line of
88
+ the commit description. If a commit has any breaking change prefixed paragraphs in the
89
+ commit message body, those paragraphs are separated out into a "Breaking Changes" section
90
+ in the changelog (Breaking Changes section is available from the default changelog in
91
+ v9.15.0). Each breaking change paragraph is listed in a bulleted list format across the
92
+ entire version. A single commit is allowed to have more than one breaking change
93
+ prefixed paragraph (as opposed to the `Conventional Commits Specification`_). Commits
94
+ with an optional scope and a breaking change will have the scope prefixed on to the
95
+ breaking change paragraph. Parsing errors will return a ParseError object and ultimately
96
+ a commit of type ``"unknown"``. Unknown commits are consolidated into an "Unknown" section
97
+ in the changelog by the default template. To remove unwanted commits from the changelog
98
+ that normally are placed in the "unknown" section, consider the use of the configuration
99
+ option :ref:`changelog.exclude_commit_patterns <config-changelog-exclude_commit_patterns>`
100
+ to ignore those commit styles.
101
+
102
+ - **Pull/Merge Request Identifier Detection**: This parser implements PSR's
103
+ :ref:`commit_parser-builtin-linked_merge_request_detection` to identify and extract
104
+ pull/merge request numbers. The parser will return a string value if a pull/merge
105
+ request number is found in the commit message. If no pull/merge request number is
106
+ found, the parser will return an empty string.
107
+
108
+ - **Linked Issue Identifier Detection**: This parser implements PSR's
109
+ :ref:`commit_parser-builtin-issue_number_detection` to identify and extract issue numbers.
110
+ The parser will return a tuple of issue numbers as strings if any are found in the commit
111
+ message. If no issue numbers are found, the parser will return an empty tuple.
112
+
113
+ - **Squash Commit Evaluation**: This parser implements PSR's
114
+ :ref:`commit_parser-builtin-squash_commit_evaluation` to identify and extract each commit
115
+ message as a separate commit message within a single squashed commit. You can toggle this
116
+ feature on/off via the :ref:`config-commit_parser_options` setting.
117
+
118
+ - **Release Notice Footer Detection**: This parser implements PSR's
119
+ :ref:`commit_parser-builtin-release_notice_footer_detection`, which is a custom extension
120
+ to traditional `Conventional Commits Specification`_ to use the ``NOTICE`` keyword as a git
121
+ footer to document additional release information that is not considered a breaking change.
122
+
123
+ **Limitations**:
124
+
125
+ - Commits with the ``revert`` type are not currently supported. Track the implementation
126
+ of this feature in the issue `#402`_.
127
+
128
+ If no commit parser options are provided via the configuration, the parser will use PSR's
129
+ built-in
130
+ :py:class:`defaults <semantic_release.commit_parser.conventional.ConventionalCommitParserOptions>`.
131
+
132
+ .. _#402: https://github.com/python-semantic-release/python-semantic-release/issues/402
133
+ .. _Conventional Commits Specification: https://www.conventionalcommits.org/en/v1.0.0
134
+
135
+ ----
136
+
58
137
  .. _commit_parser-builtin-angular:
59
138
 
60
139
  Angular Commit Parser
61
140
  """""""""""""""""""""
62
141
 
142
+ .. warning::
143
+ This parser was deprecated in ``v9.19.0``. It will be removed in a future release.
144
+ This parser is being replaced by the :ref:`commit_parser-builtin-conventional`.
145
+
63
146
  A parser that is designed to parse commits formatted according to the
64
147
  `Angular Commit Style Guidelines`_. The parser is implemented with the following
65
148
  logic in relation to how PSR's core features:
66
149
 
67
150
  - **Version Bump Determination**: This parser extracts the commit type from the subject
68
- line of the commit (the first line of a commit messsage). This type is matched against
151
+ line of the commit (the first line of a commit message). This type is matched against
69
152
  the configuration mapping to determine the level bump for the specific commit. If the
70
153
  commit type is not found in the configuration mapping, the commit is considered a
71
- non-conformative commit and will return it as a ParseError object and ultimately a commit
154
+ non-parsable commit and will return it as a ParseError object and ultimately a commit
72
155
  of type ``"unknown"``. The configuration mapping contains lists of commit types that
73
156
  correspond to the level bump for each commit type. Some commit types are still valid
74
157
  do not trigger a level bump, such as ``"chore"`` or ``"docs"``. You can also configure
@@ -114,6 +197,12 @@ logic in relation to how PSR's core features:
114
197
  feature on/off via the :ref:`config-commit_parser_options` setting. *Feature available in
115
198
  v9.17.0+.*
116
199
 
200
+ - **Release Notice Footer Detection**: This parser implements PSR's
201
+ :ref:`commit_parser-builtin-release_notice_footer_detection`, which is a custom extension
202
+ to traditional `Angular Commit Style Guidelines`_ to use the ``NOTICE`` keyword as a git
203
+ footer to document additional release information that is not considered a breaking change.
204
+ *Feature available in v9.18.0+.*
205
+
117
206
  **Limitations**:
118
207
 
119
208
  - Commits with the ``revert`` type are not currently supported. Track the implementation
@@ -123,10 +212,7 @@ If no commit parser options are provided via the configuration, the parser will
123
212
  built-in :py:class:`defaults <semantic_release.commit_parser.angular.AngularParserOptions>`.
124
213
 
125
214
  .. _#402: https://github.com/python-semantic-release/python-semantic-release/issues/402
126
- .. _#733: https://github.com/python-semantic-release/python-semantic-release/issues/733
127
- .. _#1085: https://github.com/python-semantic-release/python-semantic-release/issues/1085
128
215
  .. _Angular Commit Style Guidelines: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits
129
- .. _PR#1112: https://github.com/python-semantic-release/python-semantic-release/pull/1112
130
216
 
131
217
  ----
132
218
 
@@ -145,7 +231,7 @@ commit messages. The parser is implemented with the following logic in relation
145
231
  how PSR's core features:
146
232
 
147
233
  - **Version Bump Determination**: This parser only looks for emojis in the subject
148
- line of the commit (the first line of a commit messsage). If more than one emoji is
234
+ line of the commit (the first line of a commit message). If more than one emoji is
149
235
  found, the emoji configured with the highest priority is selected for the change impact
150
236
  for the specific commit. The emoji with the highest priority is the one configured in the
151
237
  ``major`` configuration option, followed by the ``minor``, and ``patch`` in descending
@@ -185,6 +271,11 @@ how PSR's core features:
185
271
  feature on/off via the :ref:`config-commit_parser_options` setting. *Feature available in
186
272
  v9.17.0+.*
187
273
 
274
+ - **Release Notice Footer Detection**: This parser implements PSR's
275
+ :ref:`commit_parser-builtin-release_notice_footer_detection`, which is a custom extension
276
+ that uses the ``NOTICE`` keyword as a git footer to document additional release information
277
+ that is not considered a breaking change. *Feature available in v9.18.0+.*
278
+
188
279
  If no commit parser options are provided via the configuration, the parser will use PSR's
189
280
  built-in :py:class:`defaults <semantic_release.commit_parser.emoji.EmojiParserOptions>`.
190
281
 
@@ -198,7 +289,7 @@ Scipy Commit Parser
198
289
  """""""""""""""""""
199
290
 
200
291
  A parser that is designed to parse commits formatted according to the
201
- `Scipy Commit Style Guidlines`_. This is essentially a variation of the `Angular Commit Style
292
+ `Scipy Commit Style Guidelines`_. This is essentially a variation of the `Angular Commit Style
202
293
  Guidelines`_ with all different commit types. Because of this small variance, this parser
203
294
  only extends our :ref:`commit_parser-builtin-angular` parser with pre-defined scipy commit types
204
295
  in the default Scipy Parser Options and all other features are inherited.
@@ -206,7 +297,7 @@ in the default Scipy Parser Options and all other features are inherited.
206
297
  If no commit parser options are provided via the configuration, the parser will use PSR's
207
298
  built-in :py:class:`defaults <semantic_release.commit_parser.scipy.ScipyParserOptions>`.
208
299
 
209
- .. _Scipy Commit Style Guidlines: https://scipy.github.io/devdocs/dev/contributor/development_workflow.html#writing-the-commit-message
300
+ .. _Scipy Commit Style Guidelines: https://scipy.github.io/devdocs/dev/contributor/development_workflow.html#writing-the-commit-message
210
301
 
211
302
  ----
212
303
 
@@ -235,7 +326,7 @@ Common Linked Merge Request Detection
235
326
 
236
327
  All of the PSR built-in parsers implement common pull/merge request identifier detection
237
328
  logic to extract pull/merge request numbers from the commit message regardless of the
238
- VCS platform. The parsers evaluate the subject line for a paranthesis-enclosed number
329
+ VCS platform. The parsers evaluate the subject line for a parenthesis-enclosed number
239
330
  at the end of the line. PSR's parsers will return a string value if a pull/merge request
240
331
  number is found in the commit message. If no pull/merge request number is found, the
241
332
  parsers will return an empty string.
@@ -280,7 +371,7 @@ for your VCS. PSR supports the following case-insensitive prefixes and their con
280
371
  - implement (implements, implementing, implemented)
281
372
 
282
373
  PSR also allows for a more flexible approach to identifying more than one issue number without
283
- the need of extra git trailors (although PSR does support multiple git trailors). PSR support
374
+ the need of extra git trailers (although PSR does support multiple git trailers). PSR support
284
375
  various list formats which can be used to identify more than one issue in a list. This format
285
376
  will not necessarily work on your VCS. PSR currently support the following list formats:
286
377
 
@@ -310,6 +401,33 @@ return an empty tuple.
310
401
 
311
402
  ----
312
403
 
404
+ .. _commit_parser-builtin-release_notice_footer_detection:
405
+
406
+ Common Release Notice Footer Detection
407
+ """"""""""""""""""""""""""""""""""""""
408
+
409
+ *Introduced in v9.18.0**
410
+
411
+ All of the PSR built-in parsers implement common release notice footer detection logic
412
+ to identify and extract a ``NOTICE`` git trailer that documents any additional release
413
+ information the developer wants to provide to the software consumer. The idea extends
414
+ from the concept of the ``BREAKING CHANGE:`` git trailer to document any breaking change
415
+ descriptions but the ``NOTICE`` trailer is intended to document any information that is
416
+ below the threshold of a breaking change while still important for the software consumer
417
+ to be aware of. Common uses would be to provide deprecation warnings or more detailed
418
+ change usage information for that release. Parsers will collapse single newlines after
419
+ the ``NOTICE`` trailer into a single line paragraph. Commits may have more than one
420
+ ``NOTICE`` trailer in a single commit message. Each
421
+ :py:class:`ParsedCommit <semantic_release.commit_parser.token.ParsedCommit>` will have
422
+ a ``release_notices`` attribute that is a tuple of string paragraphs to identify each
423
+ release notice.
424
+
425
+ In the default changelog and release notes template, these release notices will be
426
+ formatted into their own section called **Additional Release Information**. Each will
427
+ include any commit scope defined and each release notice in alphabetical order.
428
+
429
+ ----
430
+
313
431
  .. _commit_parser-builtin-squash_commit_evaluation:
314
432
 
315
433
  Common Squash Commit Evaluation
@@ -326,7 +444,7 @@ will be evaluated individually for both the level bump and changelog generation.
326
444
  squash commits are found, a list with the single commit object will be returned.
327
445
 
328
446
  Currently, PSR has been tested against GitHub, BitBucket, and official ``git`` squash
329
- merge commmit messages. GitLab does not have a default template for squash commit messages
447
+ merge commit messages. GitLab does not have a default template for squash commit messages
330
448
  but can be customized per project or server. If you are using GitLab, you will need to
331
449
  ensure that the squash commit message format is similar to the example below.
332
450
 
@@ -343,10 +461,10 @@ formatted squash commit message of conventional commit style:*
343
461
 
344
462
  * docs(configuration): defined new config option for the project
345
463
 
346
- When parsed with the default angular parser with squash commits toggled on, the version
347
- bump will be determined by the highest level bump of the three commits (in this case, a
348
- minor bump because of the feature commit) and the release notes would look similar to
349
- the following:
464
+ When parsed with the default conventional-commit parser with squash commits toggled on,
465
+ the version bump will be determined by the highest level bump of the three commits (in
466
+ this case, a minor bump because of the feature commit) and the release notes would look
467
+ similar to the following:
350
468
 
351
469
  .. code-block:: markdown
352
470
 
@@ -544,7 +662,8 @@ A subclass must implement the following:
544
662
  :py:class:`ParseResult <semantic_release.commit_parser.token.ParseResult>`, or a
545
663
  subclass of this.
546
664
 
547
- By default, the constructor for :py:class:`CommitParser <semantic_release.commit_parser._base.CommitParser>`
665
+ By default, the constructor for
666
+ :py:class:`CommitParser <semantic_release.commit_parser._base.CommitParser>`
548
667
  will set the ``options`` parameter on the ``options`` attribute of the parser, so there
549
668
  is no need to override this in order to access ``self.options`` during the ``parse``
550
669
  method. However, if you have any parsing logic that needs to be done only once, it may
@@ -572,5 +691,4 @@ Therefore, a custom commit parser could be implemented via:
572
691
  def parse(self, commit: git.objects.commit.Commit) -> semantic_release.ParseResult:
573
692
  ...
574
693
 
575
- .. _angular commit guidelines: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits
576
694
  .. _gitpython-commit-object: https://gitpython.readthedocs.io/en/stable/reference.html#module-git.objects.commit