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.
- {python_semantic_release-9.17.0/src/python_semantic_release.egg-info → python_semantic_release-9.20.0}/PKG-INFO +4 -2
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/algorithm.rst +1 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/github-actions.rst +7 -7
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/index.rst +2 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/changelog_templates.rst +114 -23
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/commands.rst +5 -4
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/commit_parsing.rst +137 -19
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/configuration.rst +181 -28
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/index.rst +6 -4
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/migrating_from_v7.rst +15 -15
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/multibranch_releases.rst +3 -3
- python_semantic_release-9.20.0/docs/psr_changelog.rst +1 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/strict_mode.rst +1 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/troubleshooting.rst +2 -3
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/pyproject.toml +19 -3
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0/src/python_semantic_release.egg-info}/PKG-INFO +4 -2
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/SOURCES.txt +14 -3
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/requires.txt +3 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/__init__.py +1 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/__main__.py +7 -3
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/context.py +17 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/release_history.py +39 -5
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/changelog_writer.py +4 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/changelog.py +45 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/main.py +3 -6
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/version.py +50 -17
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/config.py +96 -52
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/util.py +1 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/__init__.py +4 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/angular.py +33 -13
- python_semantic_release-9.20.0/src/semantic_release/commit_parser/conventional.py +31 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/emoji.py +34 -12
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/token.py +19 -6
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/util.py +11 -3
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/const.py +2 -0
- {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
- python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +18 -0
- {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
- python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +20 -0
- python_semantic_release-9.20.0/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +62 -0
- {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
- {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
- {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
- {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
- python_semantic_release-9.20.0/src/semantic_release/globals.py +8 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/helpers.py +14 -1
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/bitbucket.py +15 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/gitea.py +21 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/github.py +21 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/gitlab.py +20 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/algorithm.py +48 -27
- python_semantic_release-9.20.0/src/semantic_release/version/declaration.py +107 -0
- python_semantic_release-9.20.0/src/semantic_release/version/declarations/enum.py +12 -0
- python_semantic_release-9.20.0/src/semantic_release/version/declarations/i_version_replacer.py +67 -0
- python_semantic_release-9.20.0/src/semantic_release/version/declarations/pattern.py +241 -0
- python_semantic_release-9.20.0/src/semantic_release/version/declarations/toml.py +148 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/const.py +12 -8
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_changelog/test_changelog.py +44 -44
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +6 -6
- python_semantic_release-9.20.0/tests/e2e/cmd_changelog/test_changelog_parsing.py +138 -0
- python_semantic_release-9.20.0/tests/e2e/cmd_changelog/test_changelog_release_notes.py +332 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_config/test_generate_config.py +4 -4
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_publish/test_publish.py +4 -4
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version.py +7 -7
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_build.py +5 -5
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_bump.py +702 -750
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_changelog.py +31 -31
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_github_actions.py +6 -2
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_print.py +35 -35
- python_semantic_release-9.20.0/tests/e2e/cmd_version/test_version_release_notes.py +179 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_stamp.py +204 -12
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/test_version_strict.py +3 -3
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/test_help.py +4 -4
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/test_main.py +8 -11
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/commit_parsers.py +20 -20
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/example_project.py +12 -8
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/git_repo.py +290 -31
- {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
- {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
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/repo_w_default_release.py +11 -9
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +11 -9
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/repo_initial_commit.py +2 -2
- {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
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +7 -7
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +7 -7
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/conftest.py +178 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_changelog_context.py +165 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_default_changelog.py +449 -2
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_release_history.py +38 -38
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_release_notes.py +504 -5
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_config.py +7 -7
- 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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_emoji.py +110 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_scipy.py +110 -0
- python_semantic_release-9.20.0/tests/unit/semantic_release/version/__init__.py +0 -0
- python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
- python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +472 -0
- python_semantic_release-9.20.0/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +350 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/util.py +2 -2
- python_semantic_release-9.17.0/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +0 -11
- python_semantic_release-9.17.0/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +0 -14
- python_semantic_release-9.17.0/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +0 -58
- python_semantic_release-9.17.0/src/semantic_release/globals.py +0 -6
- python_semantic_release-9.17.0/src/semantic_release/version/declaration.py +0 -201
- python_semantic_release-9.17.0/tests/e2e/cmd_version/test_version_release_notes.py +0 -78
- python_semantic_release-9.17.0/tests/unit/semantic_release/version/test_declaration.py +0 -138
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/AUTHORS.rst +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/LICENSE +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/MANIFEST.in +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/README.rst +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/Makefile +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/automatic-releases/travis.rst +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/conf.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/contributing.rst +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/contributors.rst +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/make.bat +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/setup.cfg +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/dependency_links.txt +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/entry_points.txt +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/python_semantic_release.egg-info/top_level.txt +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/changelog/template.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/generate_config.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/commands/publish.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/cli/masking_filter.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/commit_parser/tag.py +0 -0
- {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
- {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
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/md/CHANGELOG.md.j2 +0 -0
- {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
- {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
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/data/templates/angular/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/enums.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/errors.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/gitproject.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-9.17.0/tests → python_semantic_release-9.20.0/src/semantic_release/version/declarations}/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/translator.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/src/semantic_release/version/version.py +0 -0
- {python_semantic_release-9.17.0/tests/e2e → python_semantic_release-9.20.0/tests}/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/conftest.py +0 -0
- {python_semantic_release-9.17.0/tests/e2e/cmd_changelog → python_semantic_release-9.20.0/tests/e2e}/__init__.py +0 -0
- {python_semantic_release-9.17.0/tests/e2e/cmd_config → python_semantic_release-9.20.0/tests/e2e/cmd_changelog}/__init__.py +0 -0
- {python_semantic_release-9.17.0/tests/e2e/cmd_publish → python_semantic_release-9.20.0/tests/e2e/cmd_config}/__init__.py +0 -0
- {python_semantic_release-9.17.0/tests/e2e/cmd_version → python_semantic_release-9.20.0/tests/e2e/cmd_publish}/__init__.py +0 -0
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
- {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
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/e2e/conftest.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-9.17.0/tests/unit/semantic_release → python_semantic_release-9.20.0/tests/unit}/__init__.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/conftest.py +0 -0
- {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
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {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
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/test_helpers.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
- {python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 }}
|
{python_semantic_release-9.17.0 → python_semantic_release-9.20.0}/docs/changelog_templates.rst
RENAMED
|
@@ -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
|
|
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
|
|
75
|
-
|
|
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
|
|
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
|
|
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
|
|
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**
|
|
863
|
-
|
|
864
|
-
autofit_text_width
|
|
865
|
-
convert_md_to_rst
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
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
|
|
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
|
|
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
|
|
286
|
-
present. If not used during a release producing a prerelease version, this
|
|
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
|
|
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:`
|
|
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
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
347
|
-
bump will be determined by the highest level bump of the three commits (in
|
|
348
|
-
minor bump because of the feature commit) and the release notes would look
|
|
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
|
|
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
|