python-semantic-release 10.0.2__tar.gz → 10.2.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 (216) hide show
  1. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/PKG-INFO +3 -3
  2. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/api/commands.rst +63 -14
  3. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/configuration/automatic-releases/github-actions.rst +15 -15
  4. python_semantic_release-10.2.0/docs/configuration/configuration-guides/index.rst +14 -0
  5. python_semantic_release-10.2.0/docs/configuration/configuration-guides/uv_integration.rst +332 -0
  6. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/configuration/configuration.rst +1 -0
  7. python_semantic_release-10.2.0/docs/configuration/index.rst +24 -0
  8. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/upgrading/10-upgrade.rst +40 -7
  9. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/pyproject.toml +5 -3
  10. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/python_semantic_release.egg-info/SOURCES.txt +4 -0
  11. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/changelog_writer.py +1 -1
  12. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/commands/version.py +7 -11
  13. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/config.py +5 -5
  14. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/_base.py +1 -1
  15. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/angular.py +0 -11
  16. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/scipy.py +2 -2
  17. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/token.py +1 -1
  18. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/util.py +1 -1
  19. python_semantic_release-10.2.0/src/semantic_release/data/templates/conventional/md/.components/macros.md.j2 +199 -0
  20. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/macros.rst.j2 +99 -136
  21. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/const.py +1 -0
  22. python_semantic_release-10.2.0/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel_branch_update_merge.py +174 -0
  23. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_build.py +7 -0
  24. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_stamp.py +5 -6
  25. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/git_repo.py +10 -3
  26. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/github_flow/__init__.py +1 -0
  27. python_semantic_release-10.2.0/tests/fixtures/repos/github_flow/repo_w_default_release_w_branch_update_merge.py +471 -0
  28. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/commit_parser/test_conventional.py +6 -8
  29. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/commit_parser/test_emoji.py +6 -8
  30. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/commit_parser/test_scipy.py +6 -8
  31. python_semantic_release-10.0.2/docs/configuration/index.rst +0 -18
  32. python_semantic_release-10.0.2/src/semantic_release/data/templates/conventional/md/.components/macros.md.j2 +0 -230
  33. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/LICENSE +0 -0
  34. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/MANIFEST.in +0 -0
  35. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/README.rst +0 -0
  36. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/Makefile +0 -0
  37. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/changelog_templates.rst +0 -0
  38. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/commit_parsing.rst +0 -0
  39. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/getting_started.rst +0 -0
  40. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/index.rst +0 -0
  41. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/installation.rst +0 -0
  42. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/multibranch_releases.rst +0 -0
  43. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/concepts/strict_mode.rst +0 -0
  44. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/conf.py +0 -0
  45. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/configuration/automatic-releases/cronjobs.rst +0 -0
  46. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/configuration/automatic-releases/index.rst +0 -0
  47. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/configuration/automatic-releases/travis.rst +0 -0
  48. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/contributing/contributing_guide.rst +0 -0
  49. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/contributing/index.rst +0 -0
  50. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/index.rst +0 -0
  51. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/make.bat +0 -0
  52. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/misc/psr_changelog.rst +0 -0
  53. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/misc/troubleshooting.rst +0 -0
  54. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/upgrading/08-upgrade.rst +0 -0
  55. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/upgrading/09-upgrade.rst +0 -0
  56. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/docs/upgrading/index.rst +0 -0
  57. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/setup.cfg +0 -0
  58. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/__init__.py +0 -0
  59. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/__main__.py +0 -0
  60. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/changelog/__init__.py +0 -0
  61. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/changelog/context.py +0 -0
  62. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/changelog/release_history.py +0 -0
  63. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/changelog/template.py +0 -0
  64. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/__init__.py +0 -0
  65. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/cli_context.py +0 -0
  66. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/commands/__init__.py +0 -0
  67. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/commands/changelog.py +0 -0
  68. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/commands/generate_config.py +0 -0
  69. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/commands/main.py +0 -0
  70. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/commands/publish.py +0 -0
  71. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/const.py +0 -0
  72. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/github_actions_output.py +0 -0
  73. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/masking_filter.py +0 -0
  74. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/cli/util.py +0 -0
  75. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/__init__.py +0 -0
  76. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/conventional.py +0 -0
  77. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/emoji.py +0 -0
  78. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/commit_parser/tag.py +0 -0
  79. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/const.py +0 -0
  80. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/changelog_header.md.j2 +0 -0
  81. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/changelog_init.md.j2 +0 -0
  82. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/changelog_update.md.j2 +0 -0
  83. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/changes.md.j2 +0 -0
  84. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/first_release.md.j2 +0 -0
  85. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/unreleased_changes.md.j2 +0 -0
  86. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.components/versioned_changes.md.j2 +0 -0
  87. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/.release_notes.md.j2 +0 -0
  88. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/md/CHANGELOG.md.j2 +0 -0
  89. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/changelog_header.rst.j2 +0 -0
  90. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/changelog_init.rst.j2 +0 -0
  91. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/changelog_update.rst.j2 +0 -0
  92. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/changes.rst.j2 +0 -0
  93. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/first_release.rst.j2 +0 -0
  94. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/unreleased_changes.rst.j2 +0 -0
  95. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/.components/versioned_changes.rst.j2 +0 -0
  96. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/data/templates/conventional/rst/CHANGELOG.rst.j2 +0 -0
  97. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/enums.py +0 -0
  98. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/errors.py +0 -0
  99. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/gitproject.py +0 -0
  100. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/globals.py +0 -0
  101. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/helpers.py +0 -0
  102. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/__init__.py +0 -0
  103. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/_base.py +0 -0
  104. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/bitbucket.py +0 -0
  105. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/gitea.py +0 -0
  106. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/github.py +0 -0
  107. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/gitlab.py +0 -0
  108. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
  109. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/token_auth.py +0 -0
  110. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/hvcs/util.py +0 -0
  111. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/py.typed +0 -0
  112. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/__init__.py +0 -0
  113. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/algorithm.py +0 -0
  114. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/declaration.py +0 -0
  115. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/declarations/__init__.py +0 -0
  116. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/declarations/enum.py +0 -0
  117. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/declarations/i_version_replacer.py +0 -0
  118. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/declarations/pattern.py +0 -0
  119. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/declarations/toml.py +0 -0
  120. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/translator.py +0 -0
  121. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/src/semantic_release/version/version.py +0 -0
  122. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/__init__.py +0 -0
  123. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/conftest.py +0 -0
  124. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/__init__.py +0 -0
  125. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_changelog/__init__.py +0 -0
  126. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
  127. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
  128. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
  129. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
  130. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_config/__init__.py +0 -0
  131. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_config/test_generate_config.py +0 -0
  132. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_publish/__init__.py +0 -0
  133. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_publish/test_publish.py +0 -0
  134. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/__init__.py +0 -0
  135. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
  136. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
  137. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
  138. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +0 -0
  139. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +0 -0
  140. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +0 -0
  141. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +0 -0
  142. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
  143. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +0 -0
  144. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +0 -0
  145. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
  146. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +0 -0
  147. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +0 -0
  148. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +0 -0
  149. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +0 -0
  150. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version.py +0 -0
  151. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_bump.py +0 -0
  152. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
  153. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
  154. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
  155. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_print.py +0 -0
  156. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
  157. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/cmd_version/test_version_strict.py +0 -0
  158. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/conftest.py +0 -0
  159. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/test_help.py +0 -0
  160. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/e2e/test_main.py +0 -0
  161. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/__init__.py +0 -0
  162. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/commit_parsers.py +0 -0
  163. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/example_project.py +0 -0
  164. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/__init__.py +0 -0
  165. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/git_flow/__init__.py +0 -0
  166. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
  167. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
  168. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
  169. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
  170. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
  171. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
  172. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/repo_initial_commit.py +0 -0
  173. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
  174. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
  175. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
  176. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
  177. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
  178. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
  179. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/fixtures/scipy.py +0 -0
  180. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/__init__.py +0 -0
  181. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/conftest.py +0 -0
  182. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/__init__.py +0 -0
  183. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/__init__.py +0 -0
  184. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/conftest.py +0 -0
  185. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
  186. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
  187. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
  188. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
  189. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/test_template.py +0 -0
  190. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
  191. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/cli/__init__.py +0 -0
  192. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/cli/test_config.py +0 -0
  193. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
  194. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
  195. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/cli/test_util.py +0 -0
  196. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/cli/test_version.py +0 -0
  197. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
  198. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
  199. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
  200. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
  201. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
  202. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
  203. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
  204. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
  205. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
  206. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
  207. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
  208. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/test_helpers.py +0 -0
  209. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/__init__.py +0 -0
  210. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
  211. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +0 -0
  212. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
  213. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
  214. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/test_translator.py +0 -0
  215. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/unit/semantic_release/version/test_version.py +0 -0
  216. {python_semantic_release-10.0.2 → python_semantic_release-10.2.0}/tests/util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-semantic-release
3
- Version: 10.0.2
3
+ Version: 10.2.0
4
4
  Summary: Automatic Semantic Versioning for Python projects
5
5
  Author-email: Rolf Erik Lekang <me@rolflekang.com>
6
6
  License: MIT
@@ -25,7 +25,7 @@ Requires-Dist: click-option-group~=0.5
25
25
  Requires-Dist: gitpython~=3.0
26
26
  Requires-Dist: requests~=2.25
27
27
  Requires-Dist: jinja2~=3.1
28
- Requires-Dist: python-gitlab<6.0.0,>=4.0.0
28
+ Requires-Dist: python-gitlab<7.0.0,>=4.0.0
29
29
  Requires-Dist: tomlkit~=0.11
30
30
  Requires-Dist: dotty-dict~=1.3
31
31
  Requires-Dist: importlib-resources~=6.0
@@ -62,7 +62,7 @@ Requires-Dist: pre-commit~=3.5; extra == "dev"
62
62
  Requires-Dist: tox~=4.11; extra == "dev"
63
63
  Requires-Dist: ruff==0.6.1; extra == "dev"
64
64
  Provides-Extra: mypy
65
- Requires-Dist: mypy==1.15.0; extra == "mypy"
65
+ Requires-Dist: mypy==1.16.1; extra == "mypy"
66
66
  Requires-Dist: types-Deprecated~=1.2; extra == "mypy"
67
67
  Requires-Dist: types-requests~=2.32.0; extra == "mypy"
68
68
  Requires-Dist: types-pyyaml~=6.0; extra == "mypy"
@@ -96,25 +96,73 @@ pipeline, while omitting this flag would allow the pipeline to continue to run.
96
96
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97
97
 
98
98
  Detect the semantically correct next version that should be applied to your
99
- project.
99
+ project and release it.
100
100
 
101
- By default:
101
+ By default (in order):
102
102
 
103
- * Write this new version to the project metadata locations
104
- specified in the configuration file
105
- * Build the project using :ref:`config-build_command`, if specified
106
- * Create a new commit with these locations and any other assets configured
107
- to be included in a release
108
- * Tag this commit according the configured format, with a tag that uniquely
109
- identifies the version being released
110
- * Push the new tag and commit to the remote for the repository
111
- * Create a release (if supported) in the remote VCS for this tag
103
+ #. Write this new version to the project metadata locations
104
+ specified in the configuration file
105
+
106
+ #. Update the changelog file with the new version and any changes
107
+ introduced since the last release, using the configured changelog template
108
+
109
+ #. Build the project using :ref:`config-build_command`, if specified
110
+
111
+ #. Create a new commit with these locations and any other assets configured
112
+ to be included in a release
113
+
114
+ #. Tag this commit according the configured format, with a tag that uniquely
115
+ identifies the version being released
116
+
117
+ #. Push the new tag and commit to the remote for the repository
118
+
119
+ #. Create a release in the remote VCS for this tag (if supported)
120
+
121
+ All of these steps can be toggled on or off using the command line options
122
+ described below. Some of the steps rely on others, so some options may implicitly
123
+ disable others.
112
124
 
113
125
  Changelog generation is done identically to the way it is done in :ref:`cmd-changelog`,
114
126
  but this command additionally ensures the updated changelog is included in the release
115
127
  commit that is made.
116
128
 
129
+ **Common Variations**
130
+
131
+ .. code-block:: bash
132
+
133
+ # Print the next version that will be applied
134
+ semantic-release version --print
135
+
136
+ # Print the next version that will be applied, including the tag prefix
137
+ semantic-release version --print-tag
138
+
139
+ # Print the last released version
140
+ semantic-release version --print-last-released
141
+
142
+ # Print the last released version, including the tag prefix
143
+ semantic-release version --print-last-released-tag
144
+
145
+ # Only stamp the next version in the project metadata locations
146
+ semantic-release version --no-changelog --skip-build --no-commit --no-tag
147
+
148
+ # Stamp the version, update the changelog, and run the build command, then stop
149
+ semantic-release version --no-commit --no-tag
150
+
151
+ # Make all local changes but do not publish them to the remote (changelog, build, commit & tag)
152
+ semantic-release version --no-push
153
+
154
+ # Don't ever create a changelog (but do everything else)
155
+ semantic-release version --no-changelog
156
+
157
+ # Don't create a release in the remote VCS (but do publish the commit and tag)
158
+ semantic-release version --no-vcs-release
159
+
160
+ # Do everything
161
+ semantic-release version
162
+
163
+
117
164
  .. seealso::
165
+ - :ref:`Ultraviolet (uv) integration <config-guides-uv_integration>`
118
166
  - :ref:`cmd-changelog`
119
167
  - :ref:`changelog-templates`
120
168
  - :ref:`config-tag_format`
@@ -122,6 +170,7 @@ commit that is made.
122
170
  - :ref:`config-version_toml`
123
171
  - :ref:`config-version_variables`
124
172
 
173
+
125
174
  .. _cmd-version-options:
126
175
 
127
176
  Options:
@@ -362,9 +411,9 @@ Whether or not to push new commits and/or tags to the remote repository.
362
411
  ``--vcs-release/--no-vcs-release``
363
412
  **********************************
364
413
 
365
- Whether or not to create a "release" in the remote VCS service, if supported. Currently
366
- releases in GitHub and Gitea remotes are supported. If releases aren't supported in a
367
- remote VCS, this option will not cause a command failure, but will produce a warning.
414
+ Whether or not to create a "release" in the remote VCS service, if supported. If
415
+ releases aren't supported in a remote VCS, this option will not cause a command
416
+ failure, but will produce a warning.
368
417
 
369
418
  **Default:** ``--no-vcs-release`` if ``--no-push`` is supplied (including where this is
370
419
  implied by supplying only ``--no-commit``), otherwise ``--vcs-release``
@@ -371,9 +371,9 @@ to the remote repository. This option is equivalent to adding either ``--push``
371
371
  """"""""""""""""
372
372
 
373
373
  .. important::
374
- This option has been removed in v10.0.0 and newer because of a
375
- command injection vulnerability. Please update as to v10.0.0 as soon
376
- as possible.
374
+ This option has been removed in v10.0.0 and newer because of a command injection
375
+ vulnerability. Please update as to v10.0.0 as soon as possible. See
376
+ :ref:`Upgrading to v10 <upgrade_v10-root_options>` for more information.
377
377
 
378
378
  Additional options for the main ``semantic-release`` command, which will come
379
379
  before the :ref:`version <cmd-version>` subcommand.
@@ -382,7 +382,7 @@ before the :ref:`version <cmd-version>` subcommand.
382
382
 
383
383
  .. code:: yaml
384
384
 
385
- - uses: python-semantic-release/python-semantic-release@v10.0.1
385
+ - uses: python-semantic-release/python-semantic-release@v9
386
386
  with:
387
387
  root_options: "-vv --noop"
388
388
 
@@ -688,9 +688,9 @@ This is useful for testing the action without actually publishing anything.
688
688
  """"""""""""""""
689
689
 
690
690
  .. important::
691
- This option has been removed in v10.0.0 and newer because of a
692
- command injection vulnerability. Please update as to v10.0.0 as soon
693
- as possible.
691
+ This option has been removed in v10.0.0 and newer because of a command injection
692
+ vulnerability. Please update as to v10.0.0 as soon as possible. See
693
+ :ref:`Upgrading to v10 <upgrade_v10-root_options>` for more information.
694
694
 
695
695
  Additional options for the main ``semantic-release`` command, which will come
696
696
  before the :ref:`publish <cmd-publish>` subcommand.
@@ -699,7 +699,7 @@ before the :ref:`publish <cmd-publish>` subcommand.
699
699
 
700
700
  .. code:: yaml
701
701
 
702
- - uses: python-semantic-release/publish-action@v10.0.1
702
+ - uses: python-semantic-release/publish-action@v9
703
703
  with:
704
704
  root_options: "-vv --noop"
705
705
 
@@ -873,14 +873,14 @@ to the GitHub Release Assets as well.
873
873
  - name: Action | Semantic Version Release
874
874
  id: release
875
875
  # Adjust tag with desired version if applicable.
876
- uses: python-semantic-release/python-semantic-release@v10.0.1
876
+ uses: python-semantic-release/python-semantic-release@v10.2.0
877
877
  with:
878
878
  github_token: ${{ secrets.GITHUB_TOKEN }}
879
879
  git_committer_name: "github-actions"
880
880
  git_committer_email: "actions@users.noreply.github.com"
881
881
 
882
882
  - name: Publish | Upload to GitHub Release Assets
883
- uses: python-semantic-release/publish-action@v10.0.1
883
+ uses: python-semantic-release/publish-action@v10.2.0
884
884
  if: steps.release.outputs.released == 'true'
885
885
  with:
886
886
  github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -979,7 +979,7 @@ The equivalent GitHub Action configuration would be:
979
979
 
980
980
  - name: Action | Semantic Version Release
981
981
  # Adjust tag with desired version if applicable.
982
- uses: python-semantic-release/python-semantic-release@v10.0.1
982
+ uses: python-semantic-release/python-semantic-release@v10.2.0
983
983
  with:
984
984
  github_token: ${{ secrets.GITHUB_TOKEN }}
985
985
  force: patch
@@ -1038,14 +1038,14 @@ Publish Action.
1038
1038
 
1039
1039
  - name: Release submodule 1
1040
1040
  id: release-submod-1
1041
- uses: python-semantic-release/python-semantic-release@v10.0.1
1041
+ uses: python-semantic-release/python-semantic-release@v10.2.0
1042
1042
  with:
1043
1043
  directory: ${{ env.SUBMODULE_1_DIR }}
1044
1044
  github_token: ${{ secrets.GITHUB_TOKEN }}
1045
1045
 
1046
1046
  - name: Release submodule 2
1047
1047
  id: release-submod-2
1048
- uses: python-semantic-release/python-semantic-release@v10.0.1
1048
+ uses: python-semantic-release/python-semantic-release@v10.2.0
1049
1049
  with:
1050
1050
  directory: ${{ env.SUBMODULE_2_DIR }}
1051
1051
  github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -1057,7 +1057,7 @@ Publish Action.
1057
1057
  # ------------------------------------------------------------------- #
1058
1058
 
1059
1059
  - name: Publish | Upload package 1 to GitHub Release Assets
1060
- uses: python-semantic-release/publish-action@v10.0.1
1060
+ uses: python-semantic-release/publish-action@v10.2.0
1061
1061
  if: steps.release-submod-1.outputs.released == 'true'
1062
1062
  with:
1063
1063
  directory: ${{ env.SUBMODULE_1_DIR }}
@@ -1065,7 +1065,7 @@ Publish Action.
1065
1065
  tag: ${{ steps.release-submod-1.outputs.tag }}
1066
1066
 
1067
1067
  - name: Publish | Upload package 2 to GitHub Release Assets
1068
- uses: python-semantic-release/publish-action@v10.0.1
1068
+ uses: python-semantic-release/publish-action@v10.2.0
1069
1069
  if: steps.release-submod-2.outputs.released == 'true'
1070
1070
  with:
1071
1071
  directory: ${{ env.SUBMODULE_2_DIR }}
@@ -0,0 +1,14 @@
1
+ .. _config-guides:
2
+
3
+ Configuration Guides
4
+ ====================
5
+
6
+ This section provides detailed guides on how to configure PSR for various use cases and
7
+ integrations. It is recommended to complete the
8
+ :ref:`Getting Started Guide <getting-started-guide>` first before diving into these
9
+ more specific configurations.
10
+
11
+ .. toctree::
12
+ :maxdepth: 1
13
+
14
+ UV Project Setup <uv_integration>
@@ -0,0 +1,332 @@
1
+ .. _config-guides-uv_integration:
2
+
3
+ Ultraviolet (``uv``) Integration
4
+ ================================
5
+
6
+ .. _uv: https://docs.astral.sh/uv/
7
+
8
+ `uv`_ is an extremely fast Python package and project manager that
9
+ provides a modern alternative to `pip <https://pip.pypa.io/en/stable/>`_
10
+ and `venv <https://docs.python.org/3/library/venv.html>`_. It provides a lot
11
+ of features that solve the common problems of Python package management but
12
+ it also introduces a few quirks that need to be taken into account when using
13
+ Python Semantic Release.
14
+
15
+ .. important::
16
+
17
+ **Prerequisite:** Make sure you have run through the
18
+ :ref:`Getting Started Guide <getting-started-guide>` before proceeding with
19
+ this guide.
20
+
21
+
22
+ Updating the ``uv.lock``
23
+ ------------------------
24
+
25
+ One of the best features of ``uv`` is that it automatically generates a lock file
26
+ (``uv.lock``) that contains the exact versions of all the dependencies used in
27
+ your project. The lock file is generated when you run the ``uv install`` command,
28
+ and it is used to ensure that CI workflows are repeatable and development environments
29
+ are consistent.
30
+
31
+ When creating a new release using Python Semantic Release, PSR will update the version
32
+ in the project's definition file (e.g., ``pyproject.toml``) to indicate the new version.
33
+ Unfortunately, this action will cause ``uv`` to fail on the next execution because the
34
+ lock file will be out of sync with the project's definition file. There are two ways to
35
+ resolve this issue depending on your preference:
36
+
37
+ #. **Add a step to your build command**: Modify your
38
+ :ref:`semantic_release.build_command <config-build_command>` to include the command
39
+ to update the lock file and stage it for commit. This is commonly used with the
40
+ :ref:`GitHub Action <gh_actions-psr>` and other CI/CD tools when you are building
41
+ the artifact at the time of release.
42
+
43
+ .. code-block:: toml
44
+
45
+ [tool.semantic_release]
46
+ build_command = """
47
+ uv lock --upgrade-package "$PACKAGE_NAME"
48
+ git add uv.lock
49
+ uv build
50
+ """
51
+
52
+ The intent of the lock upgrade-package call is **ONLY** to update
53
+ the version of your project within the lock file after PSR has updated the version
54
+ in your project's definition file (e.g., ``pyproject.toml``). When you are running
55
+ PSR, you have already tested the project as is and you don't want to actually
56
+ update the dependencies if a new one just became available.
57
+
58
+ For ease of use, PSR provides the ``$PACKAGE_NAME`` environment variable that
59
+ contains the name of your package from the project's definition file
60
+ (``pyproject.toml:project.name``).
61
+
62
+ If you are using the :ref:`PSR GitHub Action <gh_actions-psr>`, you will need to add an
63
+ installation command for ``uv`` to the :ref:`build_command <config-build_command>`
64
+ because the action runs in a Docker environment does not include ``uv`` by default.
65
+ The best way to ensure that the correct version of ``uv`` is installed is to define
66
+ the version of ``uv`` in an optional dependency list (e.g. ``build``). This will
67
+ also help with other automated tools like Dependabot or Renovate to keep the version
68
+ of ``uv`` up to date.
69
+
70
+ .. code-block:: toml
71
+
72
+ [project.optional-dependencies]
73
+ build = ["uv ~= 0.7.12"]
74
+
75
+ [tool.semantic_release]
76
+ build_command = """
77
+ python -m pip install -e '.[build]'
78
+ uv lock --upgrade-package "$PACKAGE_NAME"
79
+ git add uv.lock
80
+ uv build
81
+ """
82
+
83
+ #. **Stamp the code first & then separately run release**: If you prefer to not modify the
84
+ build command, then you will need to run the ``uv lock --upgrade-package <your-package-name>``
85
+ command prior to actually creating the release. Essentially, you will run PSR twice:
86
+ (1) once to update the version in the project's definition file, and (2) a second time
87
+ to generate the release.
88
+
89
+ The intent of the ``uv lock --upgrade-package <your-package-name>`` command is **ONLY**
90
+ to update the version of your project within the lock file after PSR has updated the
91
+ version in your project's definition file (e.g., ``pyproject.toml``). When you are
92
+ running PSR, you have already tested the project as is and you don't want to actually
93
+ update the dependencies if a new one just became available.
94
+
95
+ .. code-block:: bash
96
+
97
+ # 1. PSR stamps version into files (nothing else)
98
+ # don't build the changelog (especially in update mode)
99
+ semantic-release -v version --skip-build --no-commit --no-tag --no-changelog
100
+
101
+ # 2. run UV lock as pyproject.toml is updated with the next version
102
+ uv lock --upgrade-package <your-package-name>
103
+
104
+ # 3. stage the lock file to ensure it is included in the PSR commit
105
+ git add uv.lock
106
+
107
+ # 4. run PSR fully to create release
108
+ semantic-release -v version
109
+
110
+ **Advanced Example**
111
+
112
+ Of course, you can mix and match these 2 approaches as needed. If PSR's pipeline was using
113
+ ``uv``, we would have a mixture of the 2 approaches because we run the build in a separate
114
+ job from the release. In our case, PSR would also need to carry the lock file as a workflow
115
+ artifact along the pipeline for the release job to commit it. This advanced workflow would
116
+ look like this:
117
+
118
+ .. code-block:: text
119
+
120
+ # File: .tool-versions
121
+ uv 0.7.12
122
+
123
+ .. code-block:: text
124
+
125
+ # File: .python-version
126
+ 3.11.11
127
+
128
+ .. code-block:: toml
129
+
130
+ # File: pyproject.toml
131
+ [project.optional-dependencies]
132
+ build = ["python-semantic-release ~= 10.0"]
133
+ test = ["pytest ~= 8.0"]
134
+
135
+ [tool.semantic_release]
136
+ build_command = """
137
+ uv lock --upgrade-package "$PACKAGE_NAME"
138
+ uv build
139
+ """
140
+
141
+ .. code-block:: yaml
142
+
143
+ # File: .github/workflows/release.yml
144
+ on:
145
+ push:
146
+ branches:
147
+ - main
148
+
149
+ jobs:
150
+
151
+ build:
152
+ runs-on: ubuntu-latest
153
+ permissions:
154
+ contents: read
155
+ env:
156
+ dist_artifacts_name: dist
157
+ dist_artifacts_dir: dist
158
+ lock_file_artifact: uv.lock
159
+ steps:
160
+ - name: Setup | Checkout Repository at workflow sha
161
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
162
+ with:
163
+ ref: ${{ github.sha }}
164
+ fetch-depth: 0
165
+
166
+ - name: Setup | Force correct release branch on workflow sha
167
+ run: git checkout -B ${{ github.ref_name }}
168
+
169
+ - name: Setup | Install uv
170
+ uses: asdf-vm/actions/install@1902764435ca0dd2f3388eea723a4f92a4eb8302 # v4.0.2
171
+
172
+ - name: Setup | Install Python & Project dependencies
173
+ run: uv sync --extra build
174
+
175
+ - name: Build | Build next version artifacts
176
+ id: version
177
+ env:
178
+ GH_TOKEN: "none"
179
+ run: uv run semantic-release -v version --no-commit --no-tag
180
+
181
+ - name: Upload | Distribution Artifacts
182
+ if: ${{ steps.version.outputs.released == 'true' }}
183
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
184
+ with:
185
+ name: ${{ env.dist_artifacts_name }}
186
+ path: ${{ format('{0}/**', env.dist_artifacts_dir) }}
187
+ if-no-files-found: error
188
+ retention-days: 2
189
+
190
+ - name: Upload | Lock File Artifact
191
+ if: ${{ steps.version.outputs.released == 'true' }}
192
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
193
+ with:
194
+ name: ${{ env.lock_file_artifact }}
195
+ path: ${{ env.lock_file_artifact }}
196
+ if-no-files-found: error
197
+ retention-days: 2
198
+
199
+ outputs:
200
+ new-release-detected: ${{ steps.version.outputs.released }}
201
+ new-release-version: ${{ steps.version.outputs.version }}
202
+ new-release-tag: ${{ steps.version.outputs.tag }}
203
+ new-release-is-prerelease: ${{ steps.version.outputs.is_prerelease }}
204
+ distribution-artifacts: ${{ env.dist_artifacts_name }}
205
+ lock-file-artifact: ${{ env.lock_file_artifact }}
206
+
207
+
208
+ test-e2e:
209
+ needs: build
210
+ runs-on: ubuntu-latest
211
+ steps:
212
+ - name: Setup | Checkout Repository
213
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
214
+ with:
215
+ ref: ${{ github.sha }}
216
+ fetch-depth: 1
217
+
218
+ - name: Setup | Download Distribution Artifacts
219
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
220
+ if: ${{ needs.build.outputs.new-release-detected == 'true' }}
221
+ id: artifact-download
222
+ with:
223
+ name: ${{ needs.build.outputs.distribution-artifacts }}
224
+ path: ./dist
225
+
226
+ - name: Setup | Install uv
227
+ uses: asdf-vm/actions/install@1902764435ca0dd2f3388eea723a4f92a4eb8302 # v4.0.2
228
+
229
+ - name: Setup | Install Python & Project dependencies
230
+ run: uv sync --extra test
231
+
232
+ - name: Setup | Install distribution artifact
233
+ if: ${{ steps.artifact-download.outcome == 'success' }}
234
+ run: |
235
+ uv pip uninstall my-package
236
+ uv pip install dist/python_semantic_release-*.whl
237
+
238
+ - name: Test | Run pytest
239
+ run: uv run pytest -vv tests/e2e
240
+
241
+
242
+ release:
243
+ runs-on: ubuntu-latest
244
+ needs:
245
+ - build
246
+ - test-e2e
247
+
248
+ if: ${{ needs.build.outputs.new-release-detected == 'true' }}
249
+
250
+ concurrency:
251
+ group: ${{ github.workflow }}-release-${{ github.ref_name }}
252
+ cancel-in-progress: false
253
+
254
+ permissions:
255
+ contents: write
256
+
257
+ steps:
258
+ - name: Setup | Checkout Repository on Release Branch
259
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
260
+ with:
261
+ ref: ${{ github.ref_name }}
262
+ fetch-depth: 0
263
+
264
+ - name: Setup | Force release branch to be at workflow sha
265
+ run: git reset --hard ${{ github.sha }}
266
+
267
+ - name: Setup | Install uv
268
+ uses: asdf-vm/actions/install@1902764435ca0dd2f3388eea723a4f92a4eb8302 # v4.0.2
269
+
270
+ - name: Setup | Install Python & Project dependencies
271
+ run: uv sync --extra build
272
+
273
+ - name: Setup | Download Build Artifacts
274
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
275
+ id: artifact-download
276
+ with:
277
+ name: ${{ needs.build.outputs.distribution-artifacts }}
278
+ path: dist
279
+
280
+ - name: Setup | Download Lock File Artifact
281
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
282
+ with:
283
+ name: ${{ needs.build.outputs.lock-file-artifact }}
284
+
285
+ - name: Setup | Stage Lock File for Version Commit
286
+ run: git add uv.lock
287
+
288
+ - name: Release | Create Release
289
+ id: release
290
+ shell: bash
291
+ env:
292
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
293
+ run: |
294
+ bash .github/workflows/verify_upstream.sh
295
+ uv run semantic-release -v --strict version --skip-build
296
+ uv run semantic-release publish
297
+
298
+ outputs:
299
+ released: ${{ steps.release.outputs.released }}
300
+ new-release-version: ${{ steps.release.outputs.version }}
301
+ new-release-tag: ${{ steps.release.outputs.tag }}
302
+
303
+
304
+ deploy:
305
+ name: Deploy
306
+ runs-on: ubuntu-latest
307
+ if: ${{ needs.release.outputs.released == 'true' && github.repository == 'python-semantic-release/my-package' }}
308
+ needs:
309
+ - build
310
+ - release
311
+
312
+ environment:
313
+ name: pypi
314
+ url: https://pypi.org/project/my-package/
315
+
316
+ permissions:
317
+ id-token: write
318
+
319
+ steps:
320
+ - name: Setup | Download Build Artifacts
321
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
322
+ id: artifact-download
323
+ with:
324
+ name: ${{ needs.build.outputs.distribution-artifacts }}
325
+ path: dist
326
+
327
+ - name: Publish package distributions to PyPI
328
+ uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
329
+ with:
330
+ packages-dir: dist
331
+ print-hash: true
332
+ verbose: true
@@ -210,6 +210,7 @@ GITLAB_CI Pass-through ``true`` if exists in process env, unset
210
210
  HOME Pass-through ``HOME`` of parent process
211
211
  NEW_VERSION Semantically determined next version (ex. ``1.2.3``)
212
212
  PATH Pass-through ``PATH`` of parent process
213
+ PACKAGE_NAME Project name as defined in ``pyproject.toml:project.name``
213
214
  PSR_DOCKER_GITHUB_ACTION Pass-through ``true`` if exists in process env, unset otherwise
214
215
  VIRTUAL_ENV Pass-through ``VIRTUAL_ENV`` if exists in process env, unset otherwise
215
216
  ======================== ======================================================================
@@ -0,0 +1,24 @@
1
+ .. _configuration:
2
+
3
+ Configuration
4
+ =============
5
+
6
+ Python Semantic Release is highly configurable, allowing you to tailor it to your
7
+ project's needs. It supports various runtime environments and can be integrated with
8
+ different CI/CD services.
9
+
10
+ #. Check out our set of :ref:`configuration guides <config-guides>` to help walk
11
+ you through the set up of common project customizations.
12
+
13
+ #. Dive in deep and explore the full set of possible :ref:`customization options <config>`.
14
+
15
+ #. Go Automatic and Configure your :ref:`CI/CD services <automatic>` to use Python
16
+ Semantic Release.
17
+
18
+ .. toctree::
19
+ :maxdepth: 1
20
+ :hidden:
21
+
22
+ Guides <configuration-guides/index>
23
+ Options <configuration>
24
+ automatic-releases/index
@@ -42,18 +42,51 @@ This vulnerability existed in both the
42
42
 
43
43
  For the main :ref:`python-semantic-release/python-semantic-release <gh_actions-psr>` action,
44
44
  the following inputs are now available (in place of the old ``root_options`` parameter):
45
+ :ref:`gh_actions-psr-inputs-config_file`, :ref:`gh_actions-psr-inputs-noop`,
46
+ :ref:`gh_actions-psr-inputs-strict`, and :ref:`gh_actions-psr-inputs-verbosity`.
45
47
 
46
- - :ref:`gh_actions-psr-inputs-config_file`
47
- - :ref:`gh_actions-psr-inputs-noop`
48
- - :ref:`gh_actions-psr-inputs-strict`
49
- - :ref:`gh_actions-psr-inputs-verbosity`
48
+ **Example migration**
49
+
50
+ If you previously had the following in your GitHub Actions workflow file:
51
+
52
+ .. code:: yaml
53
+
54
+ - uses: python-semantic-release/python-semantic-release@v9
55
+ with:
56
+ root_options: "-vv --strict"
57
+
58
+ It would be updated to:
59
+
60
+ .. code:: yaml
61
+
62
+ - uses: python-semantic-release/python-semantic-release@v10
63
+ with:
64
+ strict: true
65
+ verbosity: 2
50
66
 
51
67
  For the :ref:`python-semantic-release/publish-action <gh_actions-publish>` action,
52
68
  the following inputs are now available (in place of the old ``root_options`` parameter):
69
+ :ref:`gh_actions-publish-inputs-config_file`, :ref:`gh_actions-publish-inputs-noop`,
70
+ and :ref:`gh_actions-publish-inputs-verbosity`.
71
+
72
+ **Example migration**
73
+
74
+ If you previously had the following in your GitHub Actions workflow file:
75
+
76
+ .. code:: yaml
77
+
78
+ - uses: python-semantic-release/publish-action@v9
79
+ with:
80
+ root_options: "-v -c /path/to/releaserc.yaml"
81
+
82
+ It would be updated to:
83
+
84
+ .. code:: yaml
53
85
 
54
- - :ref:`gh_actions-publish-inputs-config_file`
55
- - :ref:`gh_actions-publish-inputs-noop`
56
- - :ref:`gh_actions-publish-inputs-verbosity`
86
+ - uses: python-semantic-release/publish-action@v10
87
+ with:
88
+ config_file: /path/to/releaserc.yaml
89
+ verbosity: 1
57
90
 
58
91
 
59
92
  .. _upgrade_v10-changelog_format-1_line_commit_subjects: