python-semantic-release 10.4.1__tar.gz → 10.5.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-10.4.1 → python_semantic_release-10.5.1}/PKG-INFO +11 -9
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/api/commands.rst +12 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/automatic-releases/github-actions.rst +29 -63
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/configuration-guides/uv_integration.rst +0 -3
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/configuration.rst +60 -12
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/pyproject.toml +20 -10
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/python_semantic_release.egg-info/SOURCES.txt +4 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/changelog/context.py +1 -1
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/commands/version.py +76 -10
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/config.py +4 -1
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/masking_filter.py +1 -3
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/errors.py +16 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/gitproject.py +187 -20
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/declarations/pattern.py +2 -2
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/translator.py +23 -5
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/version.py +9 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel_branch_update_merge.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_1_channel.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_2_channels.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/test_monorepo_trunk.py +5 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version.py +11 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_build.py +10 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_bump.py +93 -0
- python_semantic_release-10.5.1/tests/e2e/cmd_version/test_version_partial_tag.py +346 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_print.py +15 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_release_notes.py +4 -0
- python_semantic_release-10.5.1/tests/e2e/cmd_version/test_version_shallow.py +306 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_stamp.py +1 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_strict.py +2 -0
- python_semantic_release-10.5.1/tests/e2e/cmd_version/test_version_upstream_check.py +415 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/conftest.py +21 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/git_repo.py +61 -1
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/git_monorepo.py +14 -1
- python_semantic_release-10.5.1/tests/unit/semantic_release/test_gitproject.py +312 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +53 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/test_algorithm.py +43 -50
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/LICENSE +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/MANIFEST.in +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/README.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/Makefile +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/changelog_templates.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/commit_parsing.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/getting_started.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/installation.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/multibranch_releases.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/concepts/strict_mode.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/conf.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/automatic-releases/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/automatic-releases/travis.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/configuration-guides/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/configuration-guides/monorepos-ex-easy-before-release.png +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/configuration-guides/monorepos-ex-easy-post-release.png +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/configuration-guides/monorepos.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/configuration/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/contributing/contributing_guide.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/contributing/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/make.bat +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/misc/psr_changelog.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/misc/troubleshooting.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/upgrading/08-upgrade.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/upgrading/09-upgrade.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/upgrading/10-upgrade.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/docs/upgrading/index.rst +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/setup.cfg +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/__main__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/changelog/release_history.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/changelog/template.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/changelog_writer.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/commands/changelog.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/commands/generate_config.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/commands/main.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/commands/publish.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/util.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/angular.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/conventional/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/conventional/options.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/conventional/options_monorepo.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/conventional/parser.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/conventional/parser_monorepo.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/emoji.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/tag.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/token.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/commit_parser/util.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/const.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/changelog_header.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/changelog_init.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/changelog_update.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/changes.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/first_release.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/macros.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/unreleased_changes.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.components/versioned_changes.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/.release_notes.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/md/CHANGELOG.md.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/changelog_header.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/changelog_init.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/changelog_update.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/changes.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/first_release.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/macros.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/unreleased_changes.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/.components/versioned_changes.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/data/templates/conventional/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/enums.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/globals.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/helpers.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/bitbucket.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/gitea.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/github.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/gitlab.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/algorithm.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/declaration.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/declarations/enum.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/declarations/i_version_replacer.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/version/declarations/toml.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/conftest.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/const.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_changelog/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_config/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_config/test_generate_config.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_publish/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_publish/test_publish.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/test_help.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/e2e/test_main.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/commit_parsers.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/example_project.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/example_monorepo.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/github_flow/monorepo_w_default_release.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/github_flow/monorepo_w_release_channels.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/monorepos/trunk_based_dev/monorepo_w_tags.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/github_flow/repo_w_default_release_w_branch_update_merge.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/repo_initial_commit.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/conftest.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/conftest.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/cli/test_config.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/commit_parser/test_conventional.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/commit_parser/test_emoji.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/test_helpers.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/unit/semantic_release/version/test_version.py +0 -0
- {python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/tests/util.py +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-semantic-release
|
|
3
|
-
Version: 10.
|
|
3
|
+
Version: 10.5.1
|
|
4
4
|
Summary: Automatic Semantic Versioning for Python projects
|
|
5
|
-
Author-email: Rolf Erik Lekang <me@rolflekang.com>
|
|
5
|
+
Author-email: Rolf Erik Lekang <me@rolflekang.com>, codejedi365 <codejedi365@gmail.com>
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: changelog, https://github.com/python-semantic-release/python-semantic-release/blob/master/CHANGELOG.md
|
|
8
8
|
Project-URL: documentation, https://python-semantic-release.readthedocs.io
|
|
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
21
|
Requires-Python: ~=3.8
|
|
21
22
|
Description-Content-Type: text/x-rst
|
|
22
23
|
License-File: LICENSE
|
|
@@ -26,7 +27,7 @@ Requires-Dist: gitpython~=3.0
|
|
|
26
27
|
Requires-Dist: requests~=2.25
|
|
27
28
|
Requires-Dist: jinja2~=3.1
|
|
28
29
|
Requires-Dist: python-gitlab<7.0.0,>=4.0.0
|
|
29
|
-
Requires-Dist: tomlkit~=0.
|
|
30
|
+
Requires-Dist: tomlkit~=0.13.0
|
|
30
31
|
Requires-Dist: dotty-dict~=1.3
|
|
31
32
|
Requires-Dist: importlib-resources~=6.0
|
|
32
33
|
Requires-Dist: pydantic~=2.0
|
|
@@ -35,11 +36,12 @@ Requires-Dist: shellingham~=1.5
|
|
|
35
36
|
Requires-Dist: Deprecated~=1.2
|
|
36
37
|
Provides-Extra: build
|
|
37
38
|
Requires-Dist: build~=1.2; extra == "build"
|
|
39
|
+
Requires-Dist: tomlkit~=0.13.0; extra == "build"
|
|
38
40
|
Provides-Extra: docs
|
|
39
|
-
Requires-Dist: Sphinx~=
|
|
40
|
-
Requires-Dist: sphinxcontrib-apidoc==0.
|
|
41
|
+
Requires-Dist: Sphinx~=7.4; extra == "docs"
|
|
42
|
+
Requires-Dist: sphinxcontrib-apidoc==0.6.0; extra == "docs"
|
|
41
43
|
Requires-Dist: sphinx-autobuild==2024.2.4; extra == "docs"
|
|
42
|
-
Requires-Dist: furo~=
|
|
44
|
+
Requires-Dist: furo~=2025.9; extra == "docs"
|
|
43
45
|
Provides-Extra: test
|
|
44
46
|
Requires-Dist: coverage[toml]~=7.0; extra == "test"
|
|
45
47
|
Requires-Dist: filelock~=3.15; extra == "test"
|
|
@@ -48,9 +50,9 @@ Requires-Dist: freezegun~=1.5; extra == "test"
|
|
|
48
50
|
Requires-Dist: pyyaml~=6.0; extra == "test"
|
|
49
51
|
Requires-Dist: pytest~=8.3; extra == "test"
|
|
50
52
|
Requires-Dist: pytest-clarity~=1.0; extra == "test"
|
|
51
|
-
Requires-Dist: pytest-cov<
|
|
53
|
+
Requires-Dist: pytest-cov<8.0.0,>=5.0.0; extra == "test"
|
|
52
54
|
Requires-Dist: pytest-env~=1.0; extra == "test"
|
|
53
|
-
Requires-Dist: pytest-lazy-fixtures~=1.
|
|
55
|
+
Requires-Dist: pytest-lazy-fixtures~=1.4; extra == "test"
|
|
54
56
|
Requires-Dist: pytest-mock~=3.0; extra == "test"
|
|
55
57
|
Requires-Dist: pytest-order~=1.3; extra == "test"
|
|
56
58
|
Requires-Dist: pytest-pretty~=1.2; extra == "test"
|
|
@@ -58,7 +60,7 @@ Requires-Dist: pytest-xdist~=3.0; extra == "test"
|
|
|
58
60
|
Requires-Dist: responses~=0.25.0; extra == "test"
|
|
59
61
|
Requires-Dist: requests-mock~=1.10; extra == "test"
|
|
60
62
|
Provides-Extra: dev
|
|
61
|
-
Requires-Dist: pre-commit~=3
|
|
63
|
+
Requires-Dist: pre-commit~=4.3; extra == "dev"
|
|
62
64
|
Requires-Dist: tox~=4.11; extra == "dev"
|
|
63
65
|
Requires-Dist: ruff==0.6.1; extra == "dev"
|
|
64
66
|
Provides-Extra: mypy
|
|
@@ -118,6 +118,18 @@ By default (in order):
|
|
|
118
118
|
|
|
119
119
|
#. Create a release in the remote VCS for this tag (if supported)
|
|
120
120
|
|
|
121
|
+
.. note::
|
|
122
|
+
|
|
123
|
+
Before pushing changes to the remote (step 6), Python Semantic Release automatically
|
|
124
|
+
verifies that the upstream branch has not changed since the commit that triggered
|
|
125
|
+
the release. This prevents push conflicts when another commit was made to the
|
|
126
|
+
upstream branch while the release was being prepared. If the upstream branch has
|
|
127
|
+
changed, the command will exit with an error, and you will need to pull the latest
|
|
128
|
+
changes and run the command again.
|
|
129
|
+
|
|
130
|
+
This verification only occurs when committing changes (``--commit``). If you are
|
|
131
|
+
running with ``--no-commit``, the verification will not be performed.
|
|
132
|
+
|
|
121
133
|
All of these steps can be toggled on or off using the command line options
|
|
122
134
|
described below. Some of the steps rely on others, so some options may implicitly
|
|
123
135
|
disable others.
|
|
@@ -875,72 +875,32 @@ to the GitHub Release Assets as well.
|
|
|
875
875
|
contents: write
|
|
876
876
|
|
|
877
877
|
steps:
|
|
878
|
-
# Note: We checkout the repository at the branch that triggered the workflow
|
|
879
|
-
#
|
|
880
|
-
#
|
|
881
|
-
#
|
|
882
|
-
#
|
|
883
|
-
#
|
|
878
|
+
# Note: We checkout the repository at the branch that triggered the workflow.
|
|
879
|
+
# Python Semantic Release will automatically convert shallow clones to full clones
|
|
880
|
+
# if needed to ensure proper history evaluation. However, we forcefully reset the
|
|
881
|
+
# branch to the workflow sha because it is possible that the branch was updated
|
|
882
|
+
# while the workflow was running, which prevents accidentally releasing un-evaluated
|
|
883
|
+
# changes.
|
|
884
884
|
- name: Setup | Checkout Repository on Release Branch
|
|
885
885
|
uses: actions/checkout@v4
|
|
886
886
|
with:
|
|
887
887
|
ref: ${{ github.ref_name }}
|
|
888
|
-
fetch-depth: 0
|
|
889
888
|
|
|
890
889
|
- name: Setup | Force release branch to be at workflow sha
|
|
891
890
|
run: |
|
|
892
891
|
git reset --hard ${{ github.sha }}
|
|
893
892
|
|
|
894
|
-
- name: Evaluate | Verify upstream has NOT changed
|
|
895
|
-
# Last chance to abort before causing an error as another PR/push was applied to
|
|
896
|
-
# the upstream branch while this workflow was running. This is important
|
|
897
|
-
# because we are committing a version change (--commit). You may omit this step
|
|
898
|
-
# if you have 'commit: false' in your configuration.
|
|
899
|
-
#
|
|
900
|
-
# You may consider moving this to a repo script and call it from this step instead
|
|
901
|
-
# of writing it in-line.
|
|
902
|
-
shell: bash
|
|
903
|
-
run: |
|
|
904
|
-
set +o pipefail
|
|
905
|
-
|
|
906
|
-
UPSTREAM_BRANCH_NAME="$(git status -sb | head -n 1 | awk -F '\\.\\.\\.' '{print $2}' | cut -d ' ' -f1)"
|
|
907
|
-
printf '%s\n' "Upstream branch name: $UPSTREAM_BRANCH_NAME"
|
|
908
|
-
|
|
909
|
-
set -o pipefail
|
|
910
|
-
|
|
911
|
-
if [ -z "$UPSTREAM_BRANCH_NAME" ]; then
|
|
912
|
-
printf >&2 '%s\n' "::error::Unable to determine upstream branch name!"
|
|
913
|
-
exit 1
|
|
914
|
-
fi
|
|
915
|
-
|
|
916
|
-
git fetch "${UPSTREAM_BRANCH_NAME%%/*}"
|
|
917
|
-
|
|
918
|
-
if ! UPSTREAM_SHA="$(git rev-parse "$UPSTREAM_BRANCH_NAME")"; then
|
|
919
|
-
printf >&2 '%s\n' "::error::Unable to determine upstream branch sha!"
|
|
920
|
-
exit 1
|
|
921
|
-
fi
|
|
922
|
-
|
|
923
|
-
HEAD_SHA="$(git rev-parse HEAD)"
|
|
924
|
-
|
|
925
|
-
if [ "$HEAD_SHA" != "$UPSTREAM_SHA" ]; then
|
|
926
|
-
printf >&2 '%s\n' "[HEAD SHA] $HEAD_SHA != $UPSTREAM_SHA [UPSTREAM SHA]"
|
|
927
|
-
printf >&2 '%s\n' "::error::Upstream has changed, aborting release..."
|
|
928
|
-
exit 1
|
|
929
|
-
fi
|
|
930
|
-
|
|
931
|
-
printf '%s\n' "Verified upstream branch has not changed, continuing with release..."
|
|
932
|
-
|
|
933
893
|
- name: Action | Semantic Version Release
|
|
934
894
|
id: release
|
|
935
895
|
# Adjust tag with desired version if applicable.
|
|
936
|
-
uses: python-semantic-release/python-semantic-release@v10.
|
|
896
|
+
uses: python-semantic-release/python-semantic-release@v10.5.1
|
|
937
897
|
with:
|
|
938
898
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
939
899
|
git_committer_name: "github-actions"
|
|
940
900
|
git_committer_email: "actions@users.noreply.github.com"
|
|
941
901
|
|
|
942
902
|
- name: Publish | Upload to GitHub Release Assets
|
|
943
|
-
uses: python-semantic-release/publish-action@v10.
|
|
903
|
+
uses: python-semantic-release/publish-action@v10.5.1
|
|
944
904
|
if: steps.release.outputs.released == 'true'
|
|
945
905
|
with:
|
|
946
906
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -953,6 +913,9 @@ to the GitHub Release Assets as well.
|
|
|
953
913
|
path: dist
|
|
954
914
|
if-no-files-found: error
|
|
955
915
|
|
|
916
|
+
outputs:
|
|
917
|
+
released: ${{ steps.release.outputs.released || 'false' }}
|
|
918
|
+
|
|
956
919
|
deploy:
|
|
957
920
|
# 1. Separate out the deploy step from the publish step to run each step at
|
|
958
921
|
# the least amount of token privilege
|
|
@@ -995,16 +958,6 @@ to the GitHub Release Assets as well.
|
|
|
995
958
|
one release job in the case if there are multiple pushes to ``main`` in a short period
|
|
996
959
|
of time.
|
|
997
960
|
|
|
998
|
-
Secondly the *Evaluate | Verify upstream has NOT changed* step is used to ensure that the
|
|
999
|
-
upstream branch has not changed while the workflow was running. This is important because
|
|
1000
|
-
we are committing a version change (``commit: true``) and there might be a push collision
|
|
1001
|
-
that would cause undesired behavior. Review Issue `#1201`_ for more detailed information.
|
|
1002
|
-
|
|
1003
|
-
.. warning::
|
|
1004
|
-
You must set ``fetch-depth`` to 0 when using ``actions/checkout@v4``, since
|
|
1005
|
-
Python Semantic Release needs access to the full history to build a changelog
|
|
1006
|
-
and at least the latest tags to determine the next version.
|
|
1007
|
-
|
|
1008
961
|
.. warning::
|
|
1009
962
|
The ``GITHUB_TOKEN`` secret is automatically configured by GitHub, with the
|
|
1010
963
|
same permissions role as the user who triggered the workflow run. This causes
|
|
@@ -1015,6 +968,19 @@ to the GitHub Release Assets as well.
|
|
|
1015
968
|
case, you will also need to pass the new token to ``actions/checkout`` (as
|
|
1016
969
|
the ``token`` input) in order to gain push access.
|
|
1017
970
|
|
|
971
|
+
.. note::
|
|
972
|
+
As of v10.5.0, Python Semantic Release automatically detects and converts
|
|
973
|
+
shallow clones to full clones when needed. While you can still use ``fetch-depth: 0``
|
|
974
|
+
with ``actions/checkout@v4`` to fetch the full history upfront, it is no longer
|
|
975
|
+
required. If you use the default shallow clone, Python Semantic Release will
|
|
976
|
+
automatically fetch the full history before evaluating commits. If you are using
|
|
977
|
+
an older version of PSR, you will need to unshallow the repository prior to use.
|
|
978
|
+
|
|
979
|
+
.. note::
|
|
980
|
+
As of v10.5.0, the verify upstream step is no longer required as it has been
|
|
981
|
+
integrated into PSR directly. If you are using an older version of PSR, you will need
|
|
982
|
+
to review the older documentation for that step. See Issue `#1201`_ for more details.
|
|
983
|
+
|
|
1018
984
|
.. _#1201: https://github.com/python-semantic-release/python-semantic-release/issues/1201
|
|
1019
985
|
.. _concurrency: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency
|
|
1020
986
|
|
|
@@ -1039,7 +1005,7 @@ The equivalent GitHub Action configuration would be:
|
|
|
1039
1005
|
|
|
1040
1006
|
- name: Action | Semantic Version Release
|
|
1041
1007
|
# Adjust tag with desired version if applicable.
|
|
1042
|
-
uses: python-semantic-release/python-semantic-release@v10.
|
|
1008
|
+
uses: python-semantic-release/python-semantic-release@v10.5.1
|
|
1043
1009
|
with:
|
|
1044
1010
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
1045
1011
|
force: patch
|
|
@@ -1098,14 +1064,14 @@ Publish Action.
|
|
|
1098
1064
|
|
|
1099
1065
|
- name: Release submodule 1
|
|
1100
1066
|
id: release-submod-1
|
|
1101
|
-
uses: python-semantic-release/python-semantic-release@v10.
|
|
1067
|
+
uses: python-semantic-release/python-semantic-release@v10.5.1
|
|
1102
1068
|
with:
|
|
1103
1069
|
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
1104
1070
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
1105
1071
|
|
|
1106
1072
|
- name: Release submodule 2
|
|
1107
1073
|
id: release-submod-2
|
|
1108
|
-
uses: python-semantic-release/python-semantic-release@v10.
|
|
1074
|
+
uses: python-semantic-release/python-semantic-release@v10.5.1
|
|
1109
1075
|
with:
|
|
1110
1076
|
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
1111
1077
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1117,7 +1083,7 @@ Publish Action.
|
|
|
1117
1083
|
# ------------------------------------------------------------------- #
|
|
1118
1084
|
|
|
1119
1085
|
- name: Publish | Upload package 1 to GitHub Release Assets
|
|
1120
|
-
uses: python-semantic-release/publish-action@v10.
|
|
1086
|
+
uses: python-semantic-release/publish-action@v10.5.1
|
|
1121
1087
|
if: steps.release-submod-1.outputs.released == 'true'
|
|
1122
1088
|
with:
|
|
1123
1089
|
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
@@ -1125,7 +1091,7 @@ Publish Action.
|
|
|
1125
1091
|
tag: ${{ steps.release-submod-1.outputs.tag }}
|
|
1126
1092
|
|
|
1127
1093
|
- name: Publish | Upload package 2 to GitHub Release Assets
|
|
1128
|
-
uses: python-semantic-release/publish-action@v10.
|
|
1094
|
+
uses: python-semantic-release/publish-action@v10.5.1
|
|
1129
1095
|
if: steps.release-submod-2.outputs.released == 'true'
|
|
1130
1096
|
with:
|
|
1131
1097
|
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
@@ -161,7 +161,6 @@ look like this:
|
|
|
161
161
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
162
162
|
with:
|
|
163
163
|
ref: ${{ github.sha }}
|
|
164
|
-
fetch-depth: 0
|
|
165
164
|
|
|
166
165
|
- name: Setup | Force correct release branch on workflow sha
|
|
167
166
|
run: git checkout -B ${{ github.ref_name }}
|
|
@@ -259,7 +258,6 @@ look like this:
|
|
|
259
258
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
260
259
|
with:
|
|
261
260
|
ref: ${{ github.ref_name }}
|
|
262
|
-
fetch-depth: 0
|
|
263
261
|
|
|
264
262
|
- name: Setup | Force release branch to be at workflow sha
|
|
265
263
|
run: git reset --hard ${{ github.sha }}
|
|
@@ -291,7 +289,6 @@ look like this:
|
|
|
291
289
|
env:
|
|
292
290
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
293
291
|
run: |
|
|
294
|
-
bash .github/workflows/verify_upstream.sh
|
|
295
292
|
uv run semantic-release -v --strict version --skip-build
|
|
296
293
|
uv run semantic-release publish
|
|
297
294
|
|
|
@@ -1162,6 +1162,52 @@ from the :ref:`remote.name <config-remote-name>` location of your git repository
|
|
|
1162
1162
|
|
|
1163
1163
|
----
|
|
1164
1164
|
|
|
1165
|
+
.. _config-add_partial_tags:
|
|
1166
|
+
|
|
1167
|
+
``add_partial_tags``
|
|
1168
|
+
""""""""""""""""""""
|
|
1169
|
+
|
|
1170
|
+
**Type:** ``bool``
|
|
1171
|
+
|
|
1172
|
+
Specify if partial version tags should be handled when creating a new version. If set to
|
|
1173
|
+
``true``, a ``major`` and a ``major.minor`` tag will be created or updated, using the format
|
|
1174
|
+
specified in :ref:`tag_format`. If version has build metadata, a ``major.minor.patch`` tag
|
|
1175
|
+
will also be created or updated.
|
|
1176
|
+
|
|
1177
|
+
Partial version tags are **disabled** for pre-release versions.
|
|
1178
|
+
|
|
1179
|
+
**Example**
|
|
1180
|
+
|
|
1181
|
+
.. code-block:: toml
|
|
1182
|
+
|
|
1183
|
+
[semantic_release]
|
|
1184
|
+
tag_format = "v{version}"
|
|
1185
|
+
add_partial_tags = true
|
|
1186
|
+
|
|
1187
|
+
This configuration with the next version of ``1.2.3`` will result in:
|
|
1188
|
+
|
|
1189
|
+
.. code-block:: bash
|
|
1190
|
+
|
|
1191
|
+
git log --decorate --oneline --graph --all
|
|
1192
|
+
# * 4d4cb0a (tag: v1.2.3, tag: v1.2, tag: v1, origin/main, main) 1.2.3
|
|
1193
|
+
# * 3a2b1c0 fix: some bug
|
|
1194
|
+
# * 2b1c0a9 (tag: v1.2.2) 1.2.2
|
|
1195
|
+
# ...
|
|
1196
|
+
|
|
1197
|
+
If build-metadata is used, the next version of ``1.2.3+20251109`` will result in:
|
|
1198
|
+
|
|
1199
|
+
.. code-block:: bash
|
|
1200
|
+
|
|
1201
|
+
git log --decorate --oneline --graph --all
|
|
1202
|
+
# * 4d4cb0a (tag: v1.2.3+20251109, tag: v1.2.3, tag: v1.2, tag: v1, origin/main, main) 1.2.3+20251109
|
|
1203
|
+
# * 3a2b1c0 chore: add partial tags to PSR configuration
|
|
1204
|
+
# * 2b1c0a9 (tag: v1.2.3+20251031) 1.2.3+20251031
|
|
1205
|
+
# ...
|
|
1206
|
+
|
|
1207
|
+
**Default:** ``false``
|
|
1208
|
+
|
|
1209
|
+
----
|
|
1210
|
+
|
|
1165
1211
|
.. _config-tag_format:
|
|
1166
1212
|
|
|
1167
1213
|
``tag_format``
|
|
@@ -1170,17 +1216,8 @@ from the :ref:`remote.name <config-remote-name>` location of your git repository
|
|
|
1170
1216
|
**Type:** ``str``
|
|
1171
1217
|
|
|
1172
1218
|
Specify the format to be used for the Git tag that will be added to the repo during
|
|
1173
|
-
a release invoked via :ref:`cmd-version`. The
|
|
1174
|
-
|
|
1175
|
-
It *may* include any of the optional format keys, in which case the contents
|
|
1176
|
-
described will be formatted into the specified location in the Git tag that is created.
|
|
1177
|
-
|
|
1178
|
-
For example, ``"(dev|stg|prod)-v{version}"`` is a valid ``tag_format`` matching tags such
|
|
1179
|
-
as:
|
|
1180
|
-
|
|
1181
|
-
- ``dev-v1.2.3``
|
|
1182
|
-
- ``stg-v0.1.0-rc.1``
|
|
1183
|
-
- ``prod-v2.0.0+20230701``
|
|
1219
|
+
a release invoked via :ref:`cmd-version`. The string is used as a template for the tag
|
|
1220
|
+
name, and must include the ``{version}`` format key.
|
|
1184
1221
|
|
|
1185
1222
|
This format will also be used for parsing tags already present in the repository into
|
|
1186
1223
|
semantic versions; therefore if the tag format changes at some point in the
|
|
@@ -1196,6 +1233,13 @@ Format Key Mandatory Contents
|
|
|
1196
1233
|
|
|
1197
1234
|
Tags which do not match this format will not be considered as versions of your project.
|
|
1198
1235
|
|
|
1236
|
+
This is critical for Monorepo projects where the tag format defines which package the
|
|
1237
|
+
version tag belongs to. Generally, the tag format for each package of the monorepo will
|
|
1238
|
+
include the package name as the prefix of the tag format. For example, if the package
|
|
1239
|
+
is named ``pkg1``, the tag format would be ``pkg1-v{version}`` and in the other package
|
|
1240
|
+
``pkg2``, the tag format would be ``pkg2-v{version}``. This allows PSR to determine
|
|
1241
|
+
which tags to use to determine the version for each package.
|
|
1242
|
+
|
|
1199
1243
|
**Default:** ``"v{version}"``
|
|
1200
1244
|
|
|
1201
1245
|
----
|
|
@@ -1354,7 +1398,8 @@ The regular expression generated from the ``version_variables`` definition will:
|
|
|
1354
1398
|
2. The variable name defined by ``variable`` and the version must be separated by
|
|
1355
1399
|
an operand symbol (``=``, ``:``, ``:=``, or ``@``). Whitespace is optional around
|
|
1356
1400
|
the symbol. As of v10.0.0, a double-equals (``==``) operator is also supported
|
|
1357
|
-
as a valid operand symbol.
|
|
1401
|
+
as a valid operand symbol. As of v10.5.0, PSR can omit all operands as long
|
|
1402
|
+
as there is at least one whitespace character between the variable name and the version.
|
|
1358
1403
|
|
|
1359
1404
|
3. The value of the variable must match a `SemVer`_ regular expression and can be
|
|
1360
1405
|
enclosed by single (``'``) or double (``"``) quotation marks but they must match. However,
|
|
@@ -1410,6 +1455,9 @@ will be matched and replaced by the new version:
|
|
|
1410
1455
|
# requirements.txt
|
|
1411
1456
|
my-package == 1.2.3
|
|
1412
1457
|
|
|
1458
|
+
# C-Macro style (no operand only whitespace required)
|
|
1459
|
+
#define VERSION "1.2.3"
|
|
1460
|
+
|
|
1413
1461
|
.. important::
|
|
1414
1462
|
The Regular Expression expects a version value to exist in the file to be replaced.
|
|
1415
1463
|
It cannot be an empty string or a non-semver compliant string. If this is the very
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "python-semantic-release"
|
|
9
|
-
version = "10.
|
|
9
|
+
version = "10.5.1"
|
|
10
10
|
description = "Automatic Semantic Versioning for Python projects"
|
|
11
11
|
requires-python = "~= 3.8"
|
|
12
12
|
license = { text = "MIT" }
|
|
@@ -19,9 +19,13 @@ classifiers = [
|
|
|
19
19
|
"Programming Language :: Python :: 3.11",
|
|
20
20
|
"Programming Language :: Python :: 3.12",
|
|
21
21
|
"Programming Language :: Python :: 3.13",
|
|
22
|
+
"Programming Language :: Python :: 3.14",
|
|
22
23
|
]
|
|
23
24
|
readme = "README.rst"
|
|
24
|
-
authors = [
|
|
25
|
+
authors = [
|
|
26
|
+
{ name = "Rolf Erik Lekang", email = "me@rolflekang.com" },
|
|
27
|
+
{ name = "codejedi365", email = "codejedi365@gmail.com" },
|
|
28
|
+
]
|
|
25
29
|
dependencies = [
|
|
26
30
|
"click ~= 8.1.0",
|
|
27
31
|
"click-option-group ~= 0.5",
|
|
@@ -29,7 +33,7 @@ dependencies = [
|
|
|
29
33
|
"requests ~= 2.25",
|
|
30
34
|
"jinja2 ~= 3.1",
|
|
31
35
|
"python-gitlab >= 4.0.0, < 7.0.0",
|
|
32
|
-
"tomlkit ~= 0.
|
|
36
|
+
"tomlkit ~= 0.13.0",
|
|
33
37
|
"dotty-dict ~= 1.3",
|
|
34
38
|
"importlib-resources ~= 6.0",
|
|
35
39
|
"pydantic ~= 2.0",
|
|
@@ -52,13 +56,14 @@ repository = "http://github.com/python-semantic-release/python-semantic-release.
|
|
|
52
56
|
|
|
53
57
|
[project.optional-dependencies]
|
|
54
58
|
build = [
|
|
55
|
-
"build ~= 1.2"
|
|
59
|
+
"build ~= 1.2",
|
|
60
|
+
"tomlkit ~= 0.13.0",
|
|
56
61
|
]
|
|
57
62
|
docs = [
|
|
58
|
-
"Sphinx ~=
|
|
59
|
-
"sphinxcontrib-apidoc == 0.
|
|
63
|
+
"Sphinx ~= 7.4",
|
|
64
|
+
"sphinxcontrib-apidoc == 0.6.0",
|
|
60
65
|
"sphinx-autobuild == 2024.2.4",
|
|
61
|
-
"furo ~=
|
|
66
|
+
"furo ~= 2025.9",
|
|
62
67
|
]
|
|
63
68
|
test = [
|
|
64
69
|
"coverage[toml] ~= 7.0",
|
|
@@ -68,9 +73,9 @@ test = [
|
|
|
68
73
|
"pyyaml ~= 6.0",
|
|
69
74
|
"pytest ~= 8.3",
|
|
70
75
|
"pytest-clarity ~= 1.0",
|
|
71
|
-
"pytest-cov >= 5.0.0, <
|
|
76
|
+
"pytest-cov >= 5.0.0, < 8.0.0",
|
|
72
77
|
"pytest-env ~= 1.0",
|
|
73
|
-
"pytest-lazy-fixtures ~= 1.
|
|
78
|
+
"pytest-lazy-fixtures ~= 1.4",
|
|
74
79
|
"pytest-mock ~= 3.0",
|
|
75
80
|
"pytest-order ~= 1.3",
|
|
76
81
|
"pytest-pretty ~= 1.2",
|
|
@@ -79,7 +84,7 @@ test = [
|
|
|
79
84
|
"requests-mock ~= 1.10",
|
|
80
85
|
]
|
|
81
86
|
dev = [
|
|
82
|
-
"pre-commit ~= 3
|
|
87
|
+
"pre-commit ~= 4.3",
|
|
83
88
|
"tox ~= 4.11",
|
|
84
89
|
"ruff == 0.6.1"
|
|
85
90
|
]
|
|
@@ -407,6 +412,11 @@ ignore_names = ["change_to_ex_proj_dir", "init_example_project"]
|
|
|
407
412
|
logging_use_named_masks = true
|
|
408
413
|
commit_parser = "conventional"
|
|
409
414
|
commit_parser_options = { parse_squash_commits = true, ignore_merge_commits = true }
|
|
415
|
+
commit_message = """\
|
|
416
|
+
chore: release v{version}
|
|
417
|
+
|
|
418
|
+
Automatically generated by python-semantic-release
|
|
419
|
+
"""
|
|
410
420
|
build_command = """
|
|
411
421
|
python -m pip install -e .[build]
|
|
412
422
|
python -m build .
|
|
@@ -135,10 +135,13 @@ tests/e2e/cmd_version/test_version_bump.py
|
|
|
135
135
|
tests/e2e/cmd_version/test_version_changelog.py
|
|
136
136
|
tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py
|
|
137
137
|
tests/e2e/cmd_version/test_version_github_actions.py
|
|
138
|
+
tests/e2e/cmd_version/test_version_partial_tag.py
|
|
138
139
|
tests/e2e/cmd_version/test_version_print.py
|
|
139
140
|
tests/e2e/cmd_version/test_version_release_notes.py
|
|
141
|
+
tests/e2e/cmd_version/test_version_shallow.py
|
|
140
142
|
tests/e2e/cmd_version/test_version_stamp.py
|
|
141
143
|
tests/e2e/cmd_version/test_version_strict.py
|
|
144
|
+
tests/e2e/cmd_version/test_version_upstream_check.py
|
|
142
145
|
tests/e2e/cmd_version/bump_version/__init__.py
|
|
143
146
|
tests/e2e/cmd_version/bump_version/conftest.py
|
|
144
147
|
tests/e2e/cmd_version/bump_version/git_flow/__init__.py
|
|
@@ -193,6 +196,7 @@ tests/fixtures/repos/trunk_based_dev/repo_w_tags.py
|
|
|
193
196
|
tests/unit/__init__.py
|
|
194
197
|
tests/unit/conftest.py
|
|
195
198
|
tests/unit/semantic_release/__init__.py
|
|
199
|
+
tests/unit/semantic_release/test_gitproject.py
|
|
196
200
|
tests/unit/semantic_release/test_helpers.py
|
|
197
201
|
tests/unit/semantic_release/changelog/__init__.py
|
|
198
202
|
tests/unit/semantic_release/changelog/conftest.py
|
|
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING
|
|
|
10
10
|
import click
|
|
11
11
|
import shellingham # type: ignore[import]
|
|
12
12
|
from click_option_group import MutuallyExclusiveOptionGroup, optgroup
|
|
13
|
-
from git import Repo
|
|
13
|
+
from git import GitCommandError, Repo
|
|
14
14
|
from requests import HTTPError
|
|
15
15
|
|
|
16
16
|
from semantic_release.changelog.release_history import ReleaseHistory
|
|
@@ -27,9 +27,14 @@ from semantic_release.const import DEFAULT_SHELL, DEFAULT_VERSION
|
|
|
27
27
|
from semantic_release.enums import LevelBump
|
|
28
28
|
from semantic_release.errors import (
|
|
29
29
|
BuildDistributionsError,
|
|
30
|
+
DetachedHeadGitError,
|
|
30
31
|
GitCommitEmptyIndexError,
|
|
32
|
+
GitFetchError,
|
|
31
33
|
InternalError,
|
|
34
|
+
LocalGitError,
|
|
32
35
|
UnexpectedResponse,
|
|
36
|
+
UnknownUpstreamBranchError,
|
|
37
|
+
UpstreamBranchChangedError,
|
|
33
38
|
)
|
|
34
39
|
from semantic_release.gitproject import GitProject
|
|
35
40
|
from semantic_release.globals import logger
|
|
@@ -75,10 +80,13 @@ def is_forced_prerelease(
|
|
|
75
80
|
)
|
|
76
81
|
|
|
77
82
|
|
|
78
|
-
def last_released(
|
|
83
|
+
def last_released(
|
|
84
|
+
repo_dir: Path, tag_format: str, add_partial_tags: bool = False
|
|
85
|
+
) -> tuple[Tag, Version] | None:
|
|
79
86
|
with Repo(str(repo_dir)) as git_repo:
|
|
80
87
|
ts_and_vs = tags_and_versions(
|
|
81
|
-
git_repo.tags,
|
|
88
|
+
git_repo.tags,
|
|
89
|
+
VersionTranslator(tag_format=tag_format, add_partial_tags=add_partial_tags),
|
|
82
90
|
)
|
|
83
91
|
|
|
84
92
|
return ts_and_vs[0] if ts_and_vs else None
|
|
@@ -449,7 +457,11 @@ def version( # noqa: C901
|
|
|
449
457
|
if print_last_released or print_last_released_tag:
|
|
450
458
|
# TODO: get tag format a better way
|
|
451
459
|
if not (
|
|
452
|
-
last_release := last_released(
|
|
460
|
+
last_release := last_released(
|
|
461
|
+
config.repo_dir,
|
|
462
|
+
tag_format=config.tag_format,
|
|
463
|
+
add_partial_tags=config.add_partial_tags,
|
|
464
|
+
)
|
|
453
465
|
):
|
|
454
466
|
logger.warning("No release tags found.")
|
|
455
467
|
return
|
|
@@ -470,6 +482,7 @@ def version( # noqa: C901
|
|
|
470
482
|
major_on_zero = runtime.major_on_zero
|
|
471
483
|
no_verify = runtime.no_git_verify
|
|
472
484
|
opts = runtime.global_cli_options
|
|
485
|
+
add_partial_tags = config.add_partial_tags
|
|
473
486
|
gha_output = VersionGitHubActionsOutput(
|
|
474
487
|
gh_client=hvcs_client if isinstance(hvcs_client, Github) else None,
|
|
475
488
|
mode=(
|
|
@@ -491,6 +504,17 @@ def version( # noqa: C901
|
|
|
491
504
|
logger.info("Forcing use of %s as the prerelease token", prerelease_token)
|
|
492
505
|
translator.prerelease_token = prerelease_token
|
|
493
506
|
|
|
507
|
+
# Check if the repository is shallow and unshallow it if necessary
|
|
508
|
+
# This ensures we have the full history for commit analysis
|
|
509
|
+
project = GitProject(
|
|
510
|
+
directory=runtime.repo_dir,
|
|
511
|
+
commit_author=runtime.commit_author,
|
|
512
|
+
credential_masker=runtime.masker,
|
|
513
|
+
)
|
|
514
|
+
if project.is_shallow_clone():
|
|
515
|
+
logger.info("Repository is a shallow clone, converting to full clone...")
|
|
516
|
+
project.git_unshallow(noop=opts.noop)
|
|
517
|
+
|
|
494
518
|
# Only push if we're committing changes
|
|
495
519
|
if push_changes and not commit_changes and not create_tag:
|
|
496
520
|
logger.info("changes will not be pushed because --no-commit disables pushing")
|
|
@@ -683,12 +707,6 @@ def version( # noqa: C901
|
|
|
683
707
|
license_name="" if not isinstance(license_cfg, str) else license_cfg,
|
|
684
708
|
)
|
|
685
709
|
|
|
686
|
-
project = GitProject(
|
|
687
|
-
directory=runtime.repo_dir,
|
|
688
|
-
commit_author=runtime.commit_author,
|
|
689
|
-
credential_masker=runtime.masker,
|
|
690
|
-
)
|
|
691
|
-
|
|
692
710
|
# Preparing for committing changes; we always stage files even if we're not committing them in order to support a two-stage commit
|
|
693
711
|
project.git_add(paths=all_paths_to_add, noop=opts.noop)
|
|
694
712
|
if commit_changes:
|
|
@@ -727,6 +745,33 @@ def version( # noqa: C901
|
|
|
727
745
|
)
|
|
728
746
|
|
|
729
747
|
if commit_changes:
|
|
748
|
+
# Verify that the upstream branch has not changed before pushing
|
|
749
|
+
# This prevents conflicts if another commit was pushed while we were preparing the release
|
|
750
|
+
# We check HEAD~1 because we just made a release commit
|
|
751
|
+
try:
|
|
752
|
+
project.verify_upstream_unchanged(
|
|
753
|
+
local_ref="HEAD~1",
|
|
754
|
+
upstream_ref=config.remote.name,
|
|
755
|
+
noop=opts.noop,
|
|
756
|
+
)
|
|
757
|
+
except UpstreamBranchChangedError as exc:
|
|
758
|
+
click.echo(str(exc), err=True)
|
|
759
|
+
click.echo(
|
|
760
|
+
"Upstream branch has changed. Please pull the latest changes and try again.",
|
|
761
|
+
err=True,
|
|
762
|
+
)
|
|
763
|
+
ctx.exit(1)
|
|
764
|
+
except (
|
|
765
|
+
DetachedHeadGitError,
|
|
766
|
+
GitCommandError,
|
|
767
|
+
UnknownUpstreamBranchError,
|
|
768
|
+
GitFetchError,
|
|
769
|
+
LocalGitError,
|
|
770
|
+
) as exc:
|
|
771
|
+
click.echo(str(exc), err=True)
|
|
772
|
+
click.echo("Unable to verify upstream due to error!", err=True)
|
|
773
|
+
ctx.exit(1)
|
|
774
|
+
|
|
730
775
|
# TODO: integrate into push branch
|
|
731
776
|
with Repo(str(runtime.repo_dir)) as git_repo:
|
|
732
777
|
active_branch = git_repo.active_branch.name
|
|
@@ -744,6 +789,27 @@ def version( # noqa: C901
|
|
|
744
789
|
tag=new_version.as_tag(),
|
|
745
790
|
noop=opts.noop,
|
|
746
791
|
)
|
|
792
|
+
# Create or update partial tags for releases
|
|
793
|
+
if add_partial_tags and not prerelease:
|
|
794
|
+
partial_tags = [new_version.as_major_tag(), new_version.as_minor_tag()]
|
|
795
|
+
# If build metadata is set, also retag the version without the metadata
|
|
796
|
+
if build_metadata:
|
|
797
|
+
partial_tags.append(new_version.as_patch_tag())
|
|
798
|
+
|
|
799
|
+
for partial_tag in partial_tags:
|
|
800
|
+
project.git_tag(
|
|
801
|
+
tag_name=partial_tag,
|
|
802
|
+
message=f"{partial_tag} => {new_version.as_tag()}",
|
|
803
|
+
isotimestamp=commit_date.isoformat(),
|
|
804
|
+
noop=opts.noop,
|
|
805
|
+
force=True,
|
|
806
|
+
)
|
|
807
|
+
project.git_push_tag(
|
|
808
|
+
remote_url=remote_url,
|
|
809
|
+
tag=partial_tag,
|
|
810
|
+
noop=opts.noop,
|
|
811
|
+
force=True,
|
|
812
|
+
)
|
|
747
813
|
|
|
748
814
|
# Update GitHub Actions output value now that release has occurred
|
|
749
815
|
gha_output.released = True
|
{python_semantic_release-10.4.1 → python_semantic_release-10.5.1}/src/semantic_release/cli/config.py
RENAMED
|
@@ -366,6 +366,7 @@ class RawConfig(BaseModel):
|
|
|
366
366
|
remote: RemoteConfig = RemoteConfig()
|
|
367
367
|
no_git_verify: bool = False
|
|
368
368
|
tag_format: str = "v{version}"
|
|
369
|
+
add_partial_tags: bool = False
|
|
369
370
|
publish: PublishConfig = PublishConfig()
|
|
370
371
|
version_toml: Optional[Tuple[str, ...]] = None
|
|
371
372
|
version_variables: Optional[Tuple[str, ...]] = None
|
|
@@ -827,7 +828,9 @@ class RuntimeContext:
|
|
|
827
828
|
|
|
828
829
|
# version_translator
|
|
829
830
|
version_translator = VersionTranslator(
|
|
830
|
-
tag_format=raw.tag_format,
|
|
831
|
+
tag_format=raw.tag_format,
|
|
832
|
+
prerelease_token=branch_config.prerelease_token,
|
|
833
|
+
add_partial_tags=raw.add_partial_tags,
|
|
831
834
|
)
|
|
832
835
|
|
|
833
836
|
build_cmd_env = {}
|