python-semantic-release 9.20.0__tar.gz → 9.21.1__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.20.0/src/python_semantic_release.egg-info → python_semantic_release-9.21.1}/PKG-INFO +6 -5
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/automatic-releases/github-actions.rst +144 -29
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/configuration.rst +5 -5
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/pyproject.toml +6 -6
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1/src/python_semantic_release.egg-info}/PKG-INFO +6 -5
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/python_semantic_release.egg-info/entry_points.txt +1 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/python_semantic_release.egg-info/requires.txt +3 -3
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/__init__.py +3 -1
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/remote_hvcs_base.py +14 -4
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/test_main.py +26 -1
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test_bitbucket.py +23 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test_gitea.py +23 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test_github.py +23 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test_gitlab.py +23 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/AUTHORS.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/LICENSE +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/MANIFEST.in +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/README.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/Makefile +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/algorithm.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/automatic-releases/index.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/automatic-releases/travis.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/changelog_templates.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/commands.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/commit_parsing.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/conf.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/contributing.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/contributors.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/index.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/make.bat +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/migrating_from_v7.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/multibranch_releases.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/psr_changelog.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/strict_mode.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/docs/troubleshooting.rst +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/setup.cfg +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/python_semantic_release.egg-info/SOURCES.txt +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/python_semantic_release.egg-info/dependency_links.txt +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/python_semantic_release.egg-info/top_level.txt +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/__main__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/changelog/context.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/changelog/release_history.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/changelog/template.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/changelog_writer.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/commands/changelog.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/commands/generate_config.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/commands/main.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/commands/publish.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/commands/version.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/config.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/masking_filter.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/cli/util.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/angular.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/conventional.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/emoji.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/tag.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/token.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/commit_parser/util.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/const.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/changelog_header.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/changelog_init.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/changelog_update.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/changes.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/unreleased_changes.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/md/CHANGELOG.md.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/changelog_header.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/changelog_init.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/changes.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/.components/versioned_changes.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/data/templates/angular/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/enums.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/errors.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/gitproject.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/globals.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/helpers.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/bitbucket.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/gitea.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/github.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/gitlab.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/algorithm.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/declaration.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/declarations/enum.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/declarations/i_version_replacer.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/declarations/pattern.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/declarations/toml.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/translator.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/version/version.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/conftest.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/const.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_changelog/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_config/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_config/test_generate_config.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_publish/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_publish/test_publish.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_build.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_bump.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_print.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_stamp.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/cmd_version/test_version_strict.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/conftest.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/e2e/test_help.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/commit_parsers.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/example_project.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/git_repo.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/repo_initial_commit.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/conftest.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/conftest.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/cli/test_config.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/commit_parser/test_conventional.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/commit_parser/test_emoji.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/test_helpers.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/unit/semantic_release/version/test_version.py +0 -0
- {python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/tests/util.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: python-semantic-release
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.21.1
|
|
4
4
|
Summary: Automatic Semantic Versioning for Python projects
|
|
5
5
|
Author-email: Rolf Erik Lekang <me@rolflekang.com>
|
|
6
6
|
License: MIT
|
|
@@ -26,12 +26,12 @@ Requires-Dist: click-option-group~=0.5
|
|
|
26
26
|
Requires-Dist: gitpython~=3.0
|
|
27
27
|
Requires-Dist: requests~=2.25
|
|
28
28
|
Requires-Dist: jinja2~=3.1
|
|
29
|
-
Requires-Dist: python-gitlab
|
|
29
|
+
Requires-Dist: python-gitlab<6.0.0,>=4.0.0
|
|
30
30
|
Requires-Dist: tomlkit~=0.11
|
|
31
31
|
Requires-Dist: dotty-dict~=1.3
|
|
32
32
|
Requires-Dist: importlib-resources~=6.0
|
|
33
33
|
Requires-Dist: pydantic~=2.0
|
|
34
|
-
Requires-Dist: rich~=
|
|
34
|
+
Requires-Dist: rich~=14.0
|
|
35
35
|
Requires-Dist: shellingham~=1.5
|
|
36
36
|
Requires-Dist: Deprecated~=1.2
|
|
37
37
|
Provides-Extra: build
|
|
@@ -49,7 +49,7 @@ Requires-Dist: freezegun~=1.5; extra == "test"
|
|
|
49
49
|
Requires-Dist: pyyaml~=6.0; extra == "test"
|
|
50
50
|
Requires-Dist: pytest~=8.3; extra == "test"
|
|
51
51
|
Requires-Dist: pytest-clarity~=1.0; extra == "test"
|
|
52
|
-
Requires-Dist: pytest-cov
|
|
52
|
+
Requires-Dist: pytest-cov<7.0.0,>=5.0.0; extra == "test"
|
|
53
53
|
Requires-Dist: pytest-env~=1.0; extra == "test"
|
|
54
54
|
Requires-Dist: pytest-lazy-fixtures~=1.1.1; extra == "test"
|
|
55
55
|
Requires-Dist: pytest-mock~=3.0; extra == "test"
|
|
@@ -67,6 +67,7 @@ Requires-Dist: mypy==1.15.0; extra == "mypy"
|
|
|
67
67
|
Requires-Dist: types-Deprecated~=1.2; extra == "mypy"
|
|
68
68
|
Requires-Dist: types-requests~=2.32.0; extra == "mypy"
|
|
69
69
|
Requires-Dist: types-pyyaml~=6.0; extra == "mypy"
|
|
70
|
+
Dynamic: license-file
|
|
70
71
|
|
|
71
72
|
Python Semantic Release
|
|
72
73
|
***********************
|
|
@@ -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.21.0
|
|
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.21.0
|
|
580
580
|
with:
|
|
581
581
|
root_options: "-vv --noop"
|
|
582
582
|
|
|
@@ -643,7 +643,7 @@ Examples
|
|
|
643
643
|
Common Workflow Example
|
|
644
644
|
-----------------------
|
|
645
645
|
|
|
646
|
-
The following is a common workflow example that uses both the Python Semantic Release Action
|
|
646
|
+
The following is a simple common workflow example that uses both the Python Semantic Release Action
|
|
647
647
|
and the Python Semantic Release Publish Action. This workflow will run on every push to the
|
|
648
648
|
``main`` branch and will create a new release upon a successful version determination. If a
|
|
649
649
|
version is released, the workflow will then publish the package to PyPI and upload the package
|
|
@@ -661,51 +661,100 @@ to the GitHub Release Assets as well.
|
|
|
661
661
|
jobs:
|
|
662
662
|
release:
|
|
663
663
|
runs-on: ubuntu-latest
|
|
664
|
-
concurrency:
|
|
664
|
+
concurrency:
|
|
665
|
+
group: ${{ github.workflow }}-release-${{ github.ref_name }}
|
|
666
|
+
cancel-in-progress: false
|
|
665
667
|
|
|
666
668
|
permissions:
|
|
667
669
|
id-token: write
|
|
668
670
|
contents: write
|
|
669
671
|
|
|
670
672
|
steps:
|
|
671
|
-
# Note:
|
|
672
|
-
# the
|
|
673
|
-
#
|
|
674
|
-
|
|
673
|
+
# Note: We checkout the repository at the branch that triggered the workflow
|
|
674
|
+
# with the entire history to ensure to match PSR's release branch detection
|
|
675
|
+
# and history evaluation.
|
|
676
|
+
# However, we forcefully reset the branch to the workflow sha because it is
|
|
677
|
+
# possible that the branch was updated while the workflow was running. This
|
|
678
|
+
# prevents accidentally releasing un-evaluated changes.
|
|
679
|
+
- name: Setup | Checkout Repository on Release Branch
|
|
675
680
|
uses: actions/checkout@v4
|
|
676
681
|
with:
|
|
682
|
+
ref: ${{ github.ref_name }}
|
|
677
683
|
fetch-depth: 0
|
|
678
|
-
ref: ${{ github.sha }}
|
|
679
684
|
|
|
680
|
-
- name: Setup | Force
|
|
685
|
+
- name: Setup | Force release branch to be at workflow sha
|
|
681
686
|
run: |
|
|
682
|
-
git
|
|
687
|
+
git reset --hard ${{ github.sha }}
|
|
688
|
+
|
|
689
|
+
- name: Evaluate | Verify upstream has NOT changed
|
|
690
|
+
# Last chance to abort before causing an error as another PR/push was applied to
|
|
691
|
+
# the upstream branch while this workflow was running. This is important
|
|
692
|
+
# because we are committing a version change (--commit). You may omit this step
|
|
693
|
+
# if you have 'commit: false' in your configuration.
|
|
694
|
+
#
|
|
695
|
+
# You may consider moving this to a repo script and call it from this step instead
|
|
696
|
+
# of writing it in-line.
|
|
697
|
+
shell: bash
|
|
698
|
+
run: |
|
|
699
|
+
set +o pipefail
|
|
700
|
+
|
|
701
|
+
UPSTREAM_BRANCH_NAME="$(git status -sb | head -n 1 | cut -d' ' -f2 | grep -E '\.{3}' | cut -d'.' -f4)"
|
|
702
|
+
printf '%s\n' "Upstream branch name: $UPSTREAM_BRANCH_NAME"
|
|
703
|
+
|
|
704
|
+
set -o pipefail
|
|
705
|
+
|
|
706
|
+
if [ -z "$UPSTREAM_BRANCH_NAME" ]; then
|
|
707
|
+
printf >&2 '%s\n' "::error::Unable to determine upstream branch name!"
|
|
708
|
+
exit 1
|
|
709
|
+
fi
|
|
710
|
+
|
|
711
|
+
git fetch "${UPSTREAM_BRANCH_NAME%%/*}"
|
|
712
|
+
|
|
713
|
+
if ! UPSTREAM_SHA="$(git rev-parse "$UPSTREAM_BRANCH_NAME")"; then
|
|
714
|
+
printf >&2 '%s\n' "::error::Unable to determine upstream branch sha!"
|
|
715
|
+
exit 1
|
|
716
|
+
fi
|
|
717
|
+
|
|
718
|
+
HEAD_SHA="$(git rev-parse HEAD)"
|
|
719
|
+
|
|
720
|
+
if [ "$HEAD_SHA" != "$UPSTREAM_SHA" ]; then
|
|
721
|
+
printf >&2 '%s\n' "[HEAD SHA] $HEAD_SHA != $UPSTREAM_SHA [UPSTREAM SHA]"
|
|
722
|
+
printf >&2 '%s\n' "::error::Upstream has changed, aborting release..."
|
|
723
|
+
exit 1
|
|
724
|
+
fi
|
|
725
|
+
|
|
726
|
+
printf '%s\n' "Verified upstream branch has not changed, continuing with release..."
|
|
683
727
|
|
|
684
728
|
- name: Action | Semantic Version Release
|
|
685
729
|
id: release
|
|
686
730
|
# Adjust tag with desired version if applicable.
|
|
687
|
-
uses: python-semantic-release/python-semantic-release@v9.
|
|
731
|
+
uses: python-semantic-release/python-semantic-release@v9.21.0
|
|
688
732
|
with:
|
|
689
733
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
690
734
|
git_committer_name: "github-actions"
|
|
691
735
|
git_committer_email: "actions@users.noreply.github.com"
|
|
692
736
|
|
|
693
|
-
- name: Publish | Upload package to PyPI
|
|
694
|
-
uses: pypa/gh-action-pypi-publish@v1
|
|
695
|
-
if: steps.release.outputs.released == 'true'
|
|
696
|
-
|
|
697
737
|
- name: Publish | Upload to GitHub Release Assets
|
|
698
|
-
uses: python-semantic-release/publish-action@v9.
|
|
738
|
+
uses: python-semantic-release/publish-action@v9.21.0
|
|
699
739
|
if: steps.release.outputs.released == 'true'
|
|
700
740
|
with:
|
|
701
741
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
702
742
|
tag: ${{ steps.release.outputs.tag }}
|
|
703
743
|
|
|
744
|
+
- name: Publish | Upload package to PyPI
|
|
745
|
+
uses: pypa/gh-action-pypi-publish@SHA1_HASH # vX.X.X
|
|
746
|
+
if: steps.release.outputs.released == 'true'
|
|
747
|
+
|
|
704
748
|
.. important::
|
|
705
749
|
The `concurrency`_ directive is used on the job to prevent race conditions of more than
|
|
706
750
|
one release job in the case if there are multiple pushes to ``main`` in a short period
|
|
707
751
|
of time.
|
|
708
752
|
|
|
753
|
+
Secondly the *Evaluate | Verify upstream has NOT changed* step is used to ensure that the
|
|
754
|
+
upstream branch has not changed while the workflow was running. This is important because
|
|
755
|
+
we are committing a version change (``commit: true``) and there might be a push collision
|
|
756
|
+
that would cause undesired behavior. Review Issue `#1201`_ for more detailed information.
|
|
757
|
+
|
|
709
758
|
.. warning::
|
|
710
759
|
You must set ``fetch-depth`` to 0 when using ``actions/checkout@v4``, since
|
|
711
760
|
Python Semantic Release needs access to the full history to build a changelog
|
|
@@ -721,6 +770,7 @@ to the GitHub Release Assets as well.
|
|
|
721
770
|
case, you will also need to pass the new token to ``actions/checkout`` (as
|
|
722
771
|
the ``token`` input) in order to gain push access.
|
|
723
772
|
|
|
773
|
+
.. _#1201: https://github.com/python-semantic-release/python-semantic-release/issues/1201
|
|
724
774
|
.. _concurrency: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency
|
|
725
775
|
|
|
726
776
|
Version Overrides Example
|
|
@@ -744,7 +794,7 @@ The equivalent GitHub Action configuration would be:
|
|
|
744
794
|
|
|
745
795
|
- name: Action | Semantic Version Release
|
|
746
796
|
# Adjust tag with desired version if applicable.
|
|
747
|
-
uses: python-semantic-release/python-semantic-release@v9.
|
|
797
|
+
uses: python-semantic-release/python-semantic-release@v9.21.0
|
|
748
798
|
with:
|
|
749
799
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
750
800
|
force: patch
|
|
@@ -766,19 +816,84 @@ For multiple packages, you would need to run the action multiple times, to relea
|
|
|
766
816
|
each project. The following example demonstrates how to release two projects in
|
|
767
817
|
a monorepo.
|
|
768
818
|
|
|
819
|
+
Remember that for each release of each submodule you will then need to handle publishing
|
|
820
|
+
each package separately as well. This is dependent on the result of your build commands.
|
|
821
|
+
In the example below, we assume a simple ``build`` module command to build a ``sdist``
|
|
822
|
+
and wheel artifacts into the submodule's ``dist`` directory.
|
|
823
|
+
|
|
769
824
|
The ``directory`` input directive is also available for the Python Semantic Release
|
|
770
825
|
Publish Action.
|
|
771
826
|
|
|
772
827
|
.. code:: yaml
|
|
773
828
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
829
|
+
jobs:
|
|
830
|
+
|
|
831
|
+
release:
|
|
832
|
+
|
|
833
|
+
env:
|
|
834
|
+
SUBMODULE_1_DIR: project1
|
|
835
|
+
SUBMODULE_2_DIR: project2
|
|
836
|
+
|
|
837
|
+
steps:
|
|
838
|
+
|
|
839
|
+
# ------------------------------------------------------------------- #
|
|
840
|
+
# Note the use of different IDs to distinguish which submodule was #
|
|
841
|
+
# identified to be released. The subsequent actions then reference #
|
|
842
|
+
# their specific release ID to determine if a release occurred. #
|
|
843
|
+
# ------------------------------------------------------------------- #
|
|
844
|
+
|
|
845
|
+
- name: Release submodule 1
|
|
846
|
+
id: release-submod-1
|
|
847
|
+
uses: python-semantic-release/python-semantic-release@v9.21.0
|
|
848
|
+
with:
|
|
849
|
+
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
850
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
851
|
+
|
|
852
|
+
- name: Release submodule 2
|
|
853
|
+
id: release-submod-2
|
|
854
|
+
uses: python-semantic-release/python-semantic-release@v9.21.0
|
|
855
|
+
with:
|
|
856
|
+
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
857
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
858
|
+
|
|
859
|
+
# ------------------------------------------------------------------- #
|
|
860
|
+
# For each submodule, you will have to publish the package separately #
|
|
861
|
+
# and only attempt to publish if the release for that submodule was #
|
|
862
|
+
# deemed a release (and the release was successful). #
|
|
863
|
+
# ------------------------------------------------------------------- #
|
|
864
|
+
|
|
865
|
+
- name: Publish | Upload package 1 to GitHub Release Assets
|
|
866
|
+
uses: python-semantic-release/publish-action@v9.21.0
|
|
867
|
+
if: steps.release-submod-1.outputs.released == 'true'
|
|
868
|
+
with:
|
|
869
|
+
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
870
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
871
|
+
tag: ${{ steps.release-submod-1.outputs.tag }}
|
|
872
|
+
|
|
873
|
+
- name: Publish | Upload package 2 to GitHub Release Assets
|
|
874
|
+
uses: python-semantic-release/publish-action@v9.21.0
|
|
875
|
+
if: steps.release-submod-2.outputs.released == 'true'
|
|
876
|
+
with:
|
|
877
|
+
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
878
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
879
|
+
tag: ${{ steps.release-submod-2.outputs.tag }}
|
|
880
|
+
|
|
881
|
+
# ------------------------------------------------------------------- #
|
|
882
|
+
# Python Semantic Release is not responsible for publishing your #
|
|
883
|
+
# python artifacts to PyPI. Use the official PyPA publish action #
|
|
884
|
+
# instead. The following steps are an example but is not guaranteed #
|
|
885
|
+
# to work as the action is not maintained by the #
|
|
886
|
+
# python-semantic-release team. #
|
|
887
|
+
# ------------------------------------------------------------------- #
|
|
888
|
+
|
|
889
|
+
- name: Publish | Upload package 1 to PyPI
|
|
890
|
+
uses: pypa/gh-action-pypi-publish@SHA1_HASH # vX.X.X
|
|
891
|
+
if: steps.release-submod-1.outputs.released == 'true'
|
|
892
|
+
with:
|
|
893
|
+
packages-dir: ${{ format('{}/dist', env.SUBMODULE_1_DIR) }}
|
|
894
|
+
|
|
895
|
+
- name: Publish | Upload package 2 to PyPI
|
|
896
|
+
uses: pypa/gh-action-pypi-publish@SHA1_HASH # vX.X.X
|
|
897
|
+
if: steps.release-submod-2.outputs.released == 'true'
|
|
898
|
+
with:
|
|
899
|
+
packages-dir: ${{ format('{}/dist', env.SUBMODULE_2_DIR) }}
|
|
@@ -1209,9 +1209,9 @@ within the TOML file, which is more accurate than a pattern replace.
|
|
|
1209
1209
|
The ``version_toml`` option is commonly used to update the version number in the project
|
|
1210
1210
|
definition file: ``pyproject.toml`` as seen in the example below.
|
|
1211
1211
|
|
|
1212
|
-
As of
|
|
1212
|
+
As of v9.20.0, the ``version_toml`` option accepts a colon-separated definition
|
|
1213
1213
|
with either 2 or 3 parts. The 2-part definition includes the file path and the version
|
|
1214
|
-
parameter (in dot-notation). Newly with
|
|
1214
|
+
parameter (in dot-notation). Newly with v9.20.0, it also accepts an optional
|
|
1215
1215
|
3rd part to allow configuration of the format type.
|
|
1216
1216
|
|
|
1217
1217
|
**Available Format Types**
|
|
@@ -1271,9 +1271,9 @@ The ``version_variables`` configuration option is a list of string definitions
|
|
|
1271
1271
|
that defines where the version number should be updated in the repository, when
|
|
1272
1272
|
a new version is released.
|
|
1273
1273
|
|
|
1274
|
-
As of
|
|
1274
|
+
As of v9.20.0, the ``version_variables`` option accepts a
|
|
1275
1275
|
colon-separated definition with either 2 or 3 parts. The 2-part definition includes
|
|
1276
|
-
the file path and the variable name. Newly with
|
|
1276
|
+
the file path and the variable name. Newly with v9.20.0, it also accepts
|
|
1277
1277
|
an optional 3rd part to allow configuration of the format type.
|
|
1278
1278
|
|
|
1279
1279
|
**Available Format Types**
|
|
@@ -1283,7 +1283,7 @@ an optional 3rd part to allow configuration of the format type.
|
|
|
1283
1283
|
|
|
1284
1284
|
If the format type is not specified, it will default to the number format.
|
|
1285
1285
|
|
|
1286
|
-
Prior to
|
|
1286
|
+
Prior to v9.20.0, PSR only supports entries with the first 2-parts
|
|
1287
1287
|
as the tag format type was not available and would only replace numeric
|
|
1288
1288
|
version numbers.
|
|
1289
1289
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Ref: https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
|
|
2
2
|
# and https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
|
|
3
3
|
[build-system]
|
|
4
|
-
requires = ["setuptools
|
|
4
|
+
requires = ["setuptools >= 75.3.0, < 81.0.0", "wheel ~= 0.42"]
|
|
5
5
|
build-backend = "setuptools.build_meta"
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "python-semantic-release"
|
|
9
|
-
version = "9.
|
|
9
|
+
version = "9.21.1"
|
|
10
10
|
description = "Automatic Semantic Versioning for Python projects"
|
|
11
11
|
requires-python = ">=3.8"
|
|
12
12
|
license = { text = "MIT" }
|
|
@@ -28,17 +28,18 @@ dependencies = [
|
|
|
28
28
|
"gitpython ~= 3.0",
|
|
29
29
|
"requests ~= 2.25",
|
|
30
30
|
"jinja2 ~= 3.1",
|
|
31
|
-
"python-gitlab
|
|
31
|
+
"python-gitlab >= 4.0.0, < 6.0.0",
|
|
32
32
|
"tomlkit ~= 0.11",
|
|
33
33
|
"dotty-dict ~= 1.3",
|
|
34
34
|
"importlib-resources ~= 6.0",
|
|
35
35
|
"pydantic ~= 2.0",
|
|
36
|
-
"rich ~=
|
|
36
|
+
"rich ~= 14.0",
|
|
37
37
|
"shellingham ~= 1.5",
|
|
38
38
|
"Deprecated ~= 1.2", # Backport of deprecated decorator for python 3.8
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
[project.scripts]
|
|
42
|
+
python-semantic-release = "semantic_release.__main__:main"
|
|
42
43
|
semantic-release = "semantic_release.__main__:main"
|
|
43
44
|
psr = "semantic_release.__main__:main"
|
|
44
45
|
|
|
@@ -67,7 +68,7 @@ test = [
|
|
|
67
68
|
"pyyaml ~= 6.0",
|
|
68
69
|
"pytest ~= 8.3",
|
|
69
70
|
"pytest-clarity ~= 1.0",
|
|
70
|
-
"pytest-cov
|
|
71
|
+
"pytest-cov >= 5.0.0, < 7.0.0",
|
|
71
72
|
"pytest-env ~= 1.0",
|
|
72
73
|
"pytest-lazy-fixtures ~= 1.1.1",
|
|
73
74
|
"pytest-mock ~= 3.0",
|
|
@@ -411,7 +412,6 @@ build_command = """
|
|
|
411
412
|
python -m build .
|
|
412
413
|
"""
|
|
413
414
|
major_on_zero = true
|
|
414
|
-
version_variables = ["src/semantic_release/__init__.py:__version__"]
|
|
415
415
|
version_toml = ["pyproject.toml:project.version"]
|
|
416
416
|
|
|
417
417
|
[tool.semantic_release.changelog]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: python-semantic-release
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.21.1
|
|
4
4
|
Summary: Automatic Semantic Versioning for Python projects
|
|
5
5
|
Author-email: Rolf Erik Lekang <me@rolflekang.com>
|
|
6
6
|
License: MIT
|
|
@@ -26,12 +26,12 @@ Requires-Dist: click-option-group~=0.5
|
|
|
26
26
|
Requires-Dist: gitpython~=3.0
|
|
27
27
|
Requires-Dist: requests~=2.25
|
|
28
28
|
Requires-Dist: jinja2~=3.1
|
|
29
|
-
Requires-Dist: python-gitlab
|
|
29
|
+
Requires-Dist: python-gitlab<6.0.0,>=4.0.0
|
|
30
30
|
Requires-Dist: tomlkit~=0.11
|
|
31
31
|
Requires-Dist: dotty-dict~=1.3
|
|
32
32
|
Requires-Dist: importlib-resources~=6.0
|
|
33
33
|
Requires-Dist: pydantic~=2.0
|
|
34
|
-
Requires-Dist: rich~=
|
|
34
|
+
Requires-Dist: rich~=14.0
|
|
35
35
|
Requires-Dist: shellingham~=1.5
|
|
36
36
|
Requires-Dist: Deprecated~=1.2
|
|
37
37
|
Provides-Extra: build
|
|
@@ -49,7 +49,7 @@ Requires-Dist: freezegun~=1.5; extra == "test"
|
|
|
49
49
|
Requires-Dist: pyyaml~=6.0; extra == "test"
|
|
50
50
|
Requires-Dist: pytest~=8.3; extra == "test"
|
|
51
51
|
Requires-Dist: pytest-clarity~=1.0; extra == "test"
|
|
52
|
-
Requires-Dist: pytest-cov
|
|
52
|
+
Requires-Dist: pytest-cov<7.0.0,>=5.0.0; extra == "test"
|
|
53
53
|
Requires-Dist: pytest-env~=1.0; extra == "test"
|
|
54
54
|
Requires-Dist: pytest-lazy-fixtures~=1.1.1; extra == "test"
|
|
55
55
|
Requires-Dist: pytest-mock~=3.0; extra == "test"
|
|
@@ -67,6 +67,7 @@ Requires-Dist: mypy==1.15.0; extra == "mypy"
|
|
|
67
67
|
Requires-Dist: types-Deprecated~=1.2; extra == "mypy"
|
|
68
68
|
Requires-Dist: types-requests~=2.32.0; extra == "mypy"
|
|
69
69
|
Requires-Dist: types-pyyaml~=6.0; extra == "mypy"
|
|
70
|
+
Dynamic: license-file
|
|
70
71
|
|
|
71
72
|
Python Semantic Release
|
|
72
73
|
***********************
|
|
@@ -3,12 +3,12 @@ click-option-group~=0.5
|
|
|
3
3
|
gitpython~=3.0
|
|
4
4
|
requests~=2.25
|
|
5
5
|
jinja2~=3.1
|
|
6
|
-
python-gitlab
|
|
6
|
+
python-gitlab<6.0.0,>=4.0.0
|
|
7
7
|
tomlkit~=0.11
|
|
8
8
|
dotty-dict~=1.3
|
|
9
9
|
importlib-resources~=6.0
|
|
10
10
|
pydantic~=2.0
|
|
11
|
-
rich~=
|
|
11
|
+
rich~=14.0
|
|
12
12
|
shellingham~=1.5
|
|
13
13
|
Deprecated~=1.2
|
|
14
14
|
|
|
@@ -40,7 +40,7 @@ freezegun~=1.5
|
|
|
40
40
|
pyyaml~=6.0
|
|
41
41
|
pytest~=8.3
|
|
42
42
|
pytest-clarity~=1.0
|
|
43
|
-
pytest-cov
|
|
43
|
+
pytest-cov<7.0.0,>=5.0.0
|
|
44
44
|
pytest-env~=1.0
|
|
45
45
|
pytest-lazy-fixtures~=1.1.1
|
|
46
46
|
pytest-mock~=3.0
|
{python_semantic_release-9.20.0 → python_semantic_release-9.21.1}/src/semantic_release/__init__.py
RENAMED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import importlib.metadata
|
|
6
|
+
|
|
5
7
|
from semantic_release.commit_parser import (
|
|
6
8
|
CommitParser,
|
|
7
9
|
ParsedCommit,
|
|
@@ -24,7 +26,7 @@ from semantic_release.version import (
|
|
|
24
26
|
tags_and_versions,
|
|
25
27
|
)
|
|
26
28
|
|
|
27
|
-
__version__ =
|
|
29
|
+
__version__ = importlib.metadata.version(f"python_{__package__}".replace("_", "-"))
|
|
28
30
|
|
|
29
31
|
__all__ = [
|
|
30
32
|
"CommitParser",
|
|
@@ -95,10 +95,15 @@ class RemoteHvcsBase(HvcsBase, metaclass=ABCMeta):
|
|
|
95
95
|
query: str | None = None,
|
|
96
96
|
fragment: str | None = None,
|
|
97
97
|
) -> str:
|
|
98
|
-
# Ensure any path prefix is
|
|
98
|
+
# Ensure any path prefix is transferred but not doubled up on the derived url
|
|
99
|
+
normalized_path = (
|
|
100
|
+
f"{self.hvcs_domain.path}/{path}"
|
|
101
|
+
if self.hvcs_domain.path and not path.startswith(self.hvcs_domain.path)
|
|
102
|
+
else path
|
|
103
|
+
)
|
|
99
104
|
return self._derive_url(
|
|
100
105
|
self.hvcs_domain,
|
|
101
|
-
path=
|
|
106
|
+
path=normalized_path,
|
|
102
107
|
auth=auth,
|
|
103
108
|
query=query,
|
|
104
109
|
fragment=fragment,
|
|
@@ -123,10 +128,15 @@ class RemoteHvcsBase(HvcsBase, metaclass=ABCMeta):
|
|
|
123
128
|
query: str | None = None,
|
|
124
129
|
fragment: str | None = None,
|
|
125
130
|
) -> str:
|
|
126
|
-
# Ensure any api path prefix is
|
|
131
|
+
# Ensure any api path prefix is transferred but not doubled up on the derived api url
|
|
132
|
+
normalized_endpoint = (
|
|
133
|
+
f"{self.api_url.path}/{endpoint}"
|
|
134
|
+
if self.api_url.path and not endpoint.startswith(self.api_url.path)
|
|
135
|
+
else endpoint
|
|
136
|
+
)
|
|
127
137
|
return self._derive_url(
|
|
128
138
|
self.api_url,
|
|
129
|
-
path=
|
|
139
|
+
path=normalized_endpoint,
|
|
130
140
|
auth=auth,
|
|
131
141
|
query=query,
|
|
132
142
|
fragment=fragment,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
+
import subprocess
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from textwrap import dedent
|
|
6
7
|
from typing import TYPE_CHECKING
|
|
@@ -12,7 +13,7 @@ from pytest_lazy_fixtures.lazy_fixture import lf as lazy_fixture
|
|
|
12
13
|
from semantic_release import __version__
|
|
13
14
|
from semantic_release.cli.commands.main import main
|
|
14
15
|
|
|
15
|
-
from tests.const import MAIN_PROG_NAME, VERSION_SUBCMD
|
|
16
|
+
from tests.const import MAIN_PROG_NAME, SUCCESS_EXIT_CODE, VERSION_SUBCMD
|
|
16
17
|
from tests.fixtures.repos import repo_w_no_tags_conventional_commits
|
|
17
18
|
from tests.util import assert_exit_code, assert_successful_exit_code
|
|
18
19
|
|
|
@@ -25,6 +26,30 @@ if TYPE_CHECKING:
|
|
|
25
26
|
from tests.fixtures.git_repo import BuiltRepoResult
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
@pytest.mark.parametrize(
|
|
30
|
+
"project_script_name",
|
|
31
|
+
[
|
|
32
|
+
"python-semantic-release",
|
|
33
|
+
"semantic-release",
|
|
34
|
+
"psr",
|
|
35
|
+
],
|
|
36
|
+
)
|
|
37
|
+
def test_entrypoint_scripts(project_script_name: str):
|
|
38
|
+
# Setup
|
|
39
|
+
command = str.join(" ", [project_script_name, "--version"])
|
|
40
|
+
expected_output = f"semantic-release, version {__version__}\n"
|
|
41
|
+
|
|
42
|
+
# Act
|
|
43
|
+
proc = subprocess.run( # noqa: S602, PLW1510
|
|
44
|
+
command, shell=True, text=True, capture_output=True
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Evaluate
|
|
48
|
+
assert SUCCESS_EXIT_CODE == proc.returncode # noqa: SIM300
|
|
49
|
+
assert expected_output == proc.stdout
|
|
50
|
+
assert not proc.stderr
|
|
51
|
+
|
|
52
|
+
|
|
28
53
|
def test_main_prints_version_and_exits(cli_runner: CliRunner):
|
|
29
54
|
cli_cmd = [MAIN_PROG_NAME, "--version"]
|
|
30
55
|
|
|
@@ -301,6 +301,29 @@ def test_commit_hash_url(default_bitbucket_client: Bitbucket):
|
|
|
301
301
|
assert expected_url == default_bitbucket_client.commit_hash_url(sha)
|
|
302
302
|
|
|
303
303
|
|
|
304
|
+
def test_commit_hash_url_w_custom_server():
|
|
305
|
+
"""
|
|
306
|
+
Test the commit hash URL generation for a self-hosted Bitbucket server with prefix.
|
|
307
|
+
|
|
308
|
+
ref: https://github.com/python-semantic-release/python-semantic-release/issues/1204
|
|
309
|
+
"""
|
|
310
|
+
sha = "244f7e11bcb1e1ce097db61594056bc2a32189a0"
|
|
311
|
+
expected_url = "{server}/{owner}/{repo}/commits/{sha}".format(
|
|
312
|
+
server=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo",
|
|
313
|
+
owner="foo",
|
|
314
|
+
repo=EXAMPLE_REPO_NAME,
|
|
315
|
+
sha=sha,
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
with mock.patch.dict(os.environ, {}, clear=True):
|
|
319
|
+
actual_url = Bitbucket(
|
|
320
|
+
remote_url=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo/foo/{EXAMPLE_REPO_NAME}.git",
|
|
321
|
+
hvcs_domain=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo",
|
|
322
|
+
).commit_hash_url(sha)
|
|
323
|
+
|
|
324
|
+
assert expected_url == actual_url
|
|
325
|
+
|
|
326
|
+
|
|
304
327
|
@pytest.mark.parametrize("pr_number", (666, "666", "#666"))
|
|
305
328
|
def test_pull_request_url(default_bitbucket_client: Bitbucket, pr_number: int | str):
|
|
306
329
|
expected_url = "{server}/{owner}/{repo}/pull-requests/{pr_number}".format(
|
|
@@ -203,6 +203,29 @@ def test_commit_hash_url(default_gitea_client: Gitea):
|
|
|
203
203
|
assert expected_url == default_gitea_client.commit_hash_url(sha)
|
|
204
204
|
|
|
205
205
|
|
|
206
|
+
def test_commit_hash_url_w_custom_server():
|
|
207
|
+
"""
|
|
208
|
+
Test the commit hash URL generation for a self-hosted Bitbucket server with prefix.
|
|
209
|
+
|
|
210
|
+
ref: https://github.com/python-semantic-release/python-semantic-release/issues/1204
|
|
211
|
+
"""
|
|
212
|
+
sha = "244f7e11bcb1e1ce097db61594056bc2a32189a0"
|
|
213
|
+
expected_url = "{server}/{owner}/{repo}/commit/{sha}".format(
|
|
214
|
+
server=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo",
|
|
215
|
+
owner="foo",
|
|
216
|
+
repo=EXAMPLE_REPO_NAME,
|
|
217
|
+
sha=sha,
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
with mock.patch.dict(os.environ, {}, clear=True):
|
|
221
|
+
actual_url = Gitea(
|
|
222
|
+
remote_url=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo/foo/{EXAMPLE_REPO_NAME}.git",
|
|
223
|
+
hvcs_domain=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo",
|
|
224
|
+
).commit_hash_url(sha)
|
|
225
|
+
|
|
226
|
+
assert expected_url == actual_url
|
|
227
|
+
|
|
228
|
+
|
|
206
229
|
@pytest.mark.parametrize("issue_number", (666, "666", "#666"))
|
|
207
230
|
def test_issue_url(default_gitea_client: Gitea, issue_number: int | str):
|
|
208
231
|
expected_url = "{server}/{owner}/{repo}/issues/{issue_number}".format(
|
|
@@ -375,6 +375,29 @@ def test_commit_hash_url(default_gh_client: Github):
|
|
|
375
375
|
assert expected_url == default_gh_client.commit_hash_url(sha)
|
|
376
376
|
|
|
377
377
|
|
|
378
|
+
def test_commit_hash_url_w_custom_server():
|
|
379
|
+
"""
|
|
380
|
+
Test the commit hash URL generation for a self-hosted Bitbucket server with prefix.
|
|
381
|
+
|
|
382
|
+
ref: https://github.com/python-semantic-release/python-semantic-release/issues/1204
|
|
383
|
+
"""
|
|
384
|
+
sha = "244f7e11bcb1e1ce097db61594056bc2a32189a0"
|
|
385
|
+
expected_url = "{server}/{owner}/{repo}/commit/{sha}".format(
|
|
386
|
+
server=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo",
|
|
387
|
+
owner="foo",
|
|
388
|
+
repo=EXAMPLE_REPO_NAME,
|
|
389
|
+
sha=sha,
|
|
390
|
+
)
|
|
391
|
+
|
|
392
|
+
with mock.patch.dict(os.environ, {}, clear=True):
|
|
393
|
+
actual_url = Github(
|
|
394
|
+
remote_url=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo/foo/{EXAMPLE_REPO_NAME}.git",
|
|
395
|
+
hvcs_domain=f"https://{EXAMPLE_HVCS_DOMAIN}/projects/demo-foo",
|
|
396
|
+
).commit_hash_url(sha)
|
|
397
|
+
|
|
398
|
+
assert expected_url == actual_url
|
|
399
|
+
|
|
400
|
+
|
|
378
401
|
@pytest.mark.parametrize("issue_number", (666, "666", "#666"))
|
|
379
402
|
def test_issue_url(default_gh_client: Github, issue_number: str | int):
|
|
380
403
|
expected_url = "{server}/{owner}/{repo}/issues/{issue_num}".format(
|