python-semantic-release 10.5.1__tar.gz → 10.5.2__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.5.1 → python_semantic_release-10.5.2}/PKG-INFO +1 -1
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/automatic-releases/github-actions.rst +7 -7
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/pyproject.toml +1 -1
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/commands/version.py +1 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/conftest.py +9 -1
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_print.py +2 -25
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_upstream_check.py +159 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/util.py +14 -19
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/LICENSE +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/MANIFEST.in +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/README.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/Makefile +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/api/commands.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/changelog_templates.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/commit_parsing.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/getting_started.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/installation.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/multibranch_releases.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/strict_mode.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/conf.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/automatic-releases/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/automatic-releases/travis.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/configuration-guides/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/configuration-guides/monorepos-ex-easy-before-release.png +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/configuration-guides/monorepos-ex-easy-post-release.png +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/configuration-guides/monorepos.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/configuration-guides/uv_integration.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/configuration.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/contributing/contributing_guide.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/contributing/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/make.bat +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/misc/psr_changelog.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/misc/troubleshooting.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/08-upgrade.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/09-upgrade.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/10-upgrade.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/index.rst +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/setup.cfg +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/python_semantic_release.egg-info/SOURCES.txt +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/__main__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/changelog/context.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/changelog/release_history.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/changelog/template.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/changelog_writer.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/commands/changelog.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/commands/generate_config.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/commands/main.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/commands/publish.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/config.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/masking_filter.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/util.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/angular.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/conventional/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/conventional/options.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/conventional/options_monorepo.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/conventional/parser.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/conventional/parser_monorepo.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/emoji.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/tag.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/token.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/commit_parser/util.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/const.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/changelog_header.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/changelog_init.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/changelog_update.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/changes.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/first_release.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/macros.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/unreleased_changes.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.components/versioned_changes.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/.release_notes.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/md/CHANGELOG.md.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/changelog_header.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/changelog_init.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/changelog_update.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/changes.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/first_release.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/macros.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/unreleased_changes.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/.components/versioned_changes.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/data/templates/conventional/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/enums.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/errors.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/gitproject.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/globals.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/helpers.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/bitbucket.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/gitea.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/github.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/gitlab.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/algorithm.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/declaration.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/declarations/enum.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/declarations/i_version_replacer.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/declarations/pattern.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/declarations/toml.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/translator.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/version/version.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/const.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_changelog/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_config/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_config/test_generate_config.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_publish/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_publish/test_publish.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel_branch_update_merge.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_1_channel.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_2_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/test_monorepo_trunk.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_build.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_bump.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_partial_tag.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_shallow.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_stamp.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/cmd_version/test_version_strict.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/conftest.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/test_help.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/e2e/test_main.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/commit_parsers.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/example_project.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/git_repo.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/example_monorepo.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/git_monorepo.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/github_flow/monorepo_w_default_release.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/github_flow/monorepo_w_release_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/monorepos/trunk_based_dev/monorepo_w_tags.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/github_flow/repo_w_default_release_w_branch_update_merge.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/repo_initial_commit.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/conftest.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/conftest.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/cli/test_config.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/commit_parser/test_conventional.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/commit_parser/test_emoji.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/test_gitproject.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/test_helpers.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/tests/unit/semantic_release/version/test_version.py +0 -0
|
@@ -893,14 +893,14 @@ to the GitHub Release Assets as well.
|
|
|
893
893
|
- name: Action | Semantic Version Release
|
|
894
894
|
id: release
|
|
895
895
|
# Adjust tag with desired version if applicable.
|
|
896
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
896
|
+
uses: python-semantic-release/python-semantic-release@v10.5.2
|
|
897
897
|
with:
|
|
898
898
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
899
899
|
git_committer_name: "github-actions"
|
|
900
900
|
git_committer_email: "actions@users.noreply.github.com"
|
|
901
901
|
|
|
902
902
|
- name: Publish | Upload to GitHub Release Assets
|
|
903
|
-
uses: python-semantic-release/publish-action@v10.5.
|
|
903
|
+
uses: python-semantic-release/publish-action@v10.5.2
|
|
904
904
|
if: steps.release.outputs.released == 'true'
|
|
905
905
|
with:
|
|
906
906
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1005,7 +1005,7 @@ The equivalent GitHub Action configuration would be:
|
|
|
1005
1005
|
|
|
1006
1006
|
- name: Action | Semantic Version Release
|
|
1007
1007
|
# Adjust tag with desired version if applicable.
|
|
1008
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
1008
|
+
uses: python-semantic-release/python-semantic-release@v10.5.2
|
|
1009
1009
|
with:
|
|
1010
1010
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
1011
1011
|
force: patch
|
|
@@ -1064,14 +1064,14 @@ Publish Action.
|
|
|
1064
1064
|
|
|
1065
1065
|
- name: Release submodule 1
|
|
1066
1066
|
id: release-submod-1
|
|
1067
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
1067
|
+
uses: python-semantic-release/python-semantic-release@v10.5.2
|
|
1068
1068
|
with:
|
|
1069
1069
|
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
1070
1070
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
1071
1071
|
|
|
1072
1072
|
- name: Release submodule 2
|
|
1073
1073
|
id: release-submod-2
|
|
1074
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
1074
|
+
uses: python-semantic-release/python-semantic-release@v10.5.2
|
|
1075
1075
|
with:
|
|
1076
1076
|
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
1077
1077
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1083,7 +1083,7 @@ Publish Action.
|
|
|
1083
1083
|
# ------------------------------------------------------------------- #
|
|
1084
1084
|
|
|
1085
1085
|
- name: Publish | Upload package 1 to GitHub Release Assets
|
|
1086
|
-
uses: python-semantic-release/publish-action@v10.5.
|
|
1086
|
+
uses: python-semantic-release/publish-action@v10.5.2
|
|
1087
1087
|
if: steps.release-submod-1.outputs.released == 'true'
|
|
1088
1088
|
with:
|
|
1089
1089
|
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
@@ -1091,7 +1091,7 @@ Publish Action.
|
|
|
1091
1091
|
tag: ${{ steps.release-submod-1.outputs.tag }}
|
|
1092
1092
|
|
|
1093
1093
|
- name: Publish | Upload package 2 to GitHub Release Assets
|
|
1094
|
-
uses: python-semantic-release/publish-action@v10.5.
|
|
1094
|
+
uses: python-semantic-release/publish-action@v10.5.2
|
|
1095
1095
|
if: steps.release-submod-2.outputs.released == 'true'
|
|
1096
1096
|
with:
|
|
1097
1097
|
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
@@ -722,6 +722,7 @@ def version( # noqa: C901
|
|
|
722
722
|
)
|
|
723
723
|
except GitCommitEmptyIndexError:
|
|
724
724
|
logger.info("No local changes to add to any commit, skipping")
|
|
725
|
+
commit_changes = False
|
|
725
726
|
|
|
726
727
|
# Tag the version after potentially creating a new HEAD commit.
|
|
727
728
|
# This way if no source code is modified, i.e. all metadata updates
|
|
@@ -206,6 +206,10 @@ def run_cli(clean_os_environment: dict[str, str]) -> RunCliFn:
|
|
|
206
206
|
invoke_kwargs: dict[str, Any] | None = None,
|
|
207
207
|
) -> Result:
|
|
208
208
|
from semantic_release.cli.commands.main import main
|
|
209
|
+
from semantic_release.globals import logger
|
|
210
|
+
|
|
211
|
+
# Prevent logs from being propagated to the root logger (pytest)
|
|
212
|
+
logger.propagate = False
|
|
209
213
|
|
|
210
214
|
cli_runner = CliRunner(mix_stderr=False)
|
|
211
215
|
env_vars = {**clean_os_environment, **(env or {})}
|
|
@@ -213,7 +217,11 @@ def run_cli(clean_os_environment: dict[str, str]) -> RunCliFn:
|
|
|
213
217
|
|
|
214
218
|
with mock.patch.dict(os.environ, env_vars, clear=True):
|
|
215
219
|
# run the CLI with the provided arguments
|
|
216
|
-
|
|
220
|
+
result = cli_runner.invoke(main, args=args, **(invoke_kwargs or {}))
|
|
221
|
+
# Force the output to be printed to stdout which will be captured by pytest
|
|
222
|
+
sys.stdout.write(result.stdout)
|
|
223
|
+
sys.stderr.write(result.stderr)
|
|
224
|
+
return result
|
|
217
225
|
|
|
218
226
|
return _run_cli
|
|
219
227
|
|
|
@@ -105,7 +105,6 @@ def test_version_print_next_version(
|
|
|
105
105
|
next_release_version: str,
|
|
106
106
|
file_in_repo: str,
|
|
107
107
|
run_cli: RunCliFn,
|
|
108
|
-
mocked_git_fetch: MagicMock,
|
|
109
108
|
mocked_git_push: MagicMock,
|
|
110
109
|
post_mocker: Mocker,
|
|
111
110
|
):
|
|
@@ -270,7 +269,6 @@ def test_version_print_tag_prints_next_tag(
|
|
|
270
269
|
get_cfg_value_from_def: GetCfgValueFromDefFn,
|
|
271
270
|
file_in_repo: str,
|
|
272
271
|
run_cli: RunCliFn,
|
|
273
|
-
mocked_git_fetch: MagicMock,
|
|
274
272
|
mocked_git_push: MagicMock,
|
|
275
273
|
post_mocker: Mocker,
|
|
276
274
|
):
|
|
@@ -386,7 +384,6 @@ def test_version_print_tag_prints_next_tag_no_zero_versions(
|
|
|
386
384
|
get_cfg_value_from_def: GetCfgValueFromDefFn,
|
|
387
385
|
file_in_repo: str,
|
|
388
386
|
run_cli: RunCliFn,
|
|
389
|
-
mocked_git_fetch: MagicMock,
|
|
390
387
|
mocked_git_push: MagicMock,
|
|
391
388
|
post_mocker: Mocker,
|
|
392
389
|
):
|
|
@@ -450,7 +447,6 @@ def test_version_print_last_released_prints_version(
|
|
|
450
447
|
repo_result: BuiltRepoResult,
|
|
451
448
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
452
449
|
run_cli: RunCliFn,
|
|
453
|
-
mocked_git_fetch: MagicMock,
|
|
454
450
|
mocked_git_push: MagicMock,
|
|
455
451
|
post_mocker: Mocker,
|
|
456
452
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -502,7 +498,6 @@ def test_version_print_last_released_prints_released_if_commits(
|
|
|
502
498
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
503
499
|
commits: list[str],
|
|
504
500
|
run_cli: RunCliFn,
|
|
505
|
-
mocked_git_fetch: MagicMock,
|
|
506
501
|
mocked_git_push: MagicMock,
|
|
507
502
|
post_mocker: Mocker,
|
|
508
503
|
file_in_repo: str,
|
|
@@ -552,10 +547,8 @@ def test_version_print_last_released_prints_released_if_commits(
|
|
|
552
547
|
def test_version_print_last_released_prints_nothing_if_no_tags(
|
|
553
548
|
repo_result: BuiltRepoResult,
|
|
554
549
|
run_cli: RunCliFn,
|
|
555
|
-
mocked_git_fetch: MagicMock,
|
|
556
550
|
mocked_git_push: MagicMock,
|
|
557
551
|
post_mocker: Mocker,
|
|
558
|
-
caplog: pytest.LogCaptureFixture,
|
|
559
552
|
):
|
|
560
553
|
repo = repo_result["repo"]
|
|
561
554
|
|
|
@@ -577,10 +570,7 @@ def test_version_print_last_released_prints_nothing_if_no_tags(
|
|
|
577
570
|
# Evaluate (no release actions should have occurred on print)
|
|
578
571
|
assert_successful_exit_code(result, cli_cmd)
|
|
579
572
|
assert result.stdout == ""
|
|
580
|
-
|
|
581
|
-
# must use capture log to see this, because we use the logger to print this message
|
|
582
|
-
# not click's output
|
|
583
|
-
assert "No release tags found." in caplog.text
|
|
573
|
+
assert "No release tags found." in result.stderr
|
|
584
574
|
|
|
585
575
|
# assert nothing else happened (no code changes, no commit, no tag, no push, no vcs release)
|
|
586
576
|
assert repo_status_before == repo_status_after
|
|
@@ -598,7 +588,6 @@ def test_version_print_last_released_on_detached_head(
|
|
|
598
588
|
repo_result: BuiltRepoResult,
|
|
599
589
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
600
590
|
run_cli: RunCliFn,
|
|
601
|
-
mocked_git_fetch: MagicMock,
|
|
602
591
|
mocked_git_push: MagicMock,
|
|
603
592
|
post_mocker: Mocker,
|
|
604
593
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -647,7 +636,6 @@ def test_version_print_last_released_on_nonrelease_branch(
|
|
|
647
636
|
repo_result: BuiltRepoResult,
|
|
648
637
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
649
638
|
run_cli: RunCliFn,
|
|
650
|
-
mocked_git_fetch: MagicMock,
|
|
651
639
|
mocked_git_push: MagicMock,
|
|
652
640
|
post_mocker: Mocker,
|
|
653
641
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -705,7 +693,6 @@ def test_version_print_last_released_tag_prints_correct_tag(
|
|
|
705
693
|
get_cfg_value_from_def: GetCfgValueFromDefFn,
|
|
706
694
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
707
695
|
run_cli: RunCliFn,
|
|
708
|
-
mocked_git_fetch: MagicMock,
|
|
709
696
|
mocked_git_push: MagicMock,
|
|
710
697
|
post_mocker: Mocker,
|
|
711
698
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -766,7 +753,6 @@ def test_version_print_last_released_tag_prints_released_if_commits(
|
|
|
766
753
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
767
754
|
commits: list[str],
|
|
768
755
|
run_cli: RunCliFn,
|
|
769
|
-
mocked_git_fetch: MagicMock,
|
|
770
756
|
mocked_git_push: MagicMock,
|
|
771
757
|
post_mocker: Mocker,
|
|
772
758
|
file_in_repo: str,
|
|
@@ -817,10 +803,8 @@ def test_version_print_last_released_tag_prints_released_if_commits(
|
|
|
817
803
|
def test_version_print_last_released_tag_prints_nothing_if_no_tags(
|
|
818
804
|
repo_result: BuiltRepoResult,
|
|
819
805
|
run_cli: RunCliFn,
|
|
820
|
-
mocked_git_fetch: MagicMock,
|
|
821
806
|
mocked_git_push: MagicMock,
|
|
822
807
|
post_mocker: Mocker,
|
|
823
|
-
caplog: pytest.LogCaptureFixture,
|
|
824
808
|
):
|
|
825
809
|
repo = repo_result["repo"]
|
|
826
810
|
|
|
@@ -842,10 +826,7 @@ def test_version_print_last_released_tag_prints_nothing_if_no_tags(
|
|
|
842
826
|
# Evaluate (no release actions should have occurred on print)
|
|
843
827
|
assert_successful_exit_code(result, cli_cmd)
|
|
844
828
|
assert result.stdout == ""
|
|
845
|
-
|
|
846
|
-
# must use capture log to see this, because we use the logger to print this message
|
|
847
|
-
# not click's output
|
|
848
|
-
assert "No release tags found." in caplog.text
|
|
829
|
+
assert "No release tags found." in result.stderr
|
|
849
830
|
|
|
850
831
|
# assert nothing else happened (no code changes, no commit, no tag, no push, no vcs release)
|
|
851
832
|
assert repo_status_before == repo_status_after
|
|
@@ -872,7 +853,6 @@ def test_version_print_last_released_tag_on_detached_head(
|
|
|
872
853
|
get_cfg_value_from_def: GetCfgValueFromDefFn,
|
|
873
854
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
874
855
|
run_cli: RunCliFn,
|
|
875
|
-
mocked_git_fetch: MagicMock,
|
|
876
856
|
mocked_git_push: MagicMock,
|
|
877
857
|
post_mocker: Mocker,
|
|
878
858
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -931,7 +911,6 @@ def test_version_print_last_released_tag_on_nonrelease_branch(
|
|
|
931
911
|
get_cfg_value_from_def: GetCfgValueFromDefFn,
|
|
932
912
|
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
933
913
|
run_cli: RunCliFn,
|
|
934
|
-
mocked_git_fetch: MagicMock,
|
|
935
914
|
mocked_git_push: MagicMock,
|
|
936
915
|
post_mocker: Mocker,
|
|
937
916
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -989,7 +968,6 @@ def test_version_print_next_version_fails_on_detached_head(
|
|
|
989
968
|
simulate_change_commits_n_rtn_changelog_entry: SimulateChangeCommitsNReturnChangelogEntryFn,
|
|
990
969
|
get_commit_def_fn: GetCommitDefFn[CommitParser[ParseResult, ParserOptions]],
|
|
991
970
|
default_parser: CommitParser[ParseResult, ParserOptions],
|
|
992
|
-
mocked_git_fetch: MagicMock,
|
|
993
971
|
mocked_git_push: MagicMock,
|
|
994
972
|
post_mocker: Mocker,
|
|
995
973
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -1052,7 +1030,6 @@ def test_version_print_next_tag_fails_on_detached_head(
|
|
|
1052
1030
|
simulate_change_commits_n_rtn_changelog_entry: SimulateChangeCommitsNReturnChangelogEntryFn,
|
|
1053
1031
|
get_commit_def_fn: GetCommitDefFn[CommitParser[ParseResult, ParserOptions]],
|
|
1054
1032
|
default_parser: CommitParser[ParseResult, ParserOptions],
|
|
1055
|
-
mocked_git_fetch: MagicMock,
|
|
1056
1033
|
mocked_git_push: MagicMock,
|
|
1057
1034
|
post_mocker: Mocker,
|
|
1058
1035
|
strip_logging_messages: StripLoggingMessagesFn,
|
|
@@ -291,6 +291,165 @@ def test_version_upstream_check_success_no_changes_untracked_branch(
|
|
|
291
291
|
assert expected_vcs_url_post == post_mocker.call_count # one vcs release created
|
|
292
292
|
|
|
293
293
|
|
|
294
|
+
@pytest.mark.parametrize(
|
|
295
|
+
"repo_fixture_name, build_repo_fn",
|
|
296
|
+
[
|
|
297
|
+
(
|
|
298
|
+
repo_fixture_name,
|
|
299
|
+
lazy_fixture(build_repo_fn_name),
|
|
300
|
+
)
|
|
301
|
+
for repo_fixture_name, build_repo_fn_name in [
|
|
302
|
+
(
|
|
303
|
+
repo_w_trunk_only_conventional_commits.__name__,
|
|
304
|
+
build_trunk_only_repo_w_tags.__name__,
|
|
305
|
+
),
|
|
306
|
+
]
|
|
307
|
+
],
|
|
308
|
+
)
|
|
309
|
+
@pytest.mark.usefixtures(change_to_ex_proj_dir.__name__)
|
|
310
|
+
def test_version_no_upstream_check_on_no_version_commit(
|
|
311
|
+
repo_fixture_name: str,
|
|
312
|
+
run_cli: RunCliFn,
|
|
313
|
+
build_repo_fn: BuildSpecificRepoFn,
|
|
314
|
+
example_project_dir: ExProjectDir,
|
|
315
|
+
git_repo_for_directory: GetGitRepo4DirFn,
|
|
316
|
+
post_mocker: Mocker,
|
|
317
|
+
get_cfg_value_from_def: GetCfgValueFromDefFn,
|
|
318
|
+
get_versions_from_repo_build_def: GetVersionsFromRepoBuildDefFn,
|
|
319
|
+
pyproject_toml_file: Path,
|
|
320
|
+
update_pyproject_toml: UpdatePyprojectTomlFn,
|
|
321
|
+
):
|
|
322
|
+
"""
|
|
323
|
+
Test that PSR succeeds when no version commit is needed, so the upstream check is skipped.
|
|
324
|
+
|
|
325
|
+
This replicates the scenario that occurred on python-semantic-release/publish-action@v10.5.1
|
|
326
|
+
where the version command was run and no version commit was needed, but it failed because
|
|
327
|
+
it attempted to check the upstream branch anyway and we hard coded HEAD~1 because it expects
|
|
328
|
+
a version commit to be created. This is the only reason why you would check the upstream branch
|
|
329
|
+
because pushing a tag to the remote can happen even if the upstream branch has changed.
|
|
330
|
+
"""
|
|
331
|
+
remote_name = "origin"
|
|
332
|
+
# Create a bare remote (simulating origin)
|
|
333
|
+
local_origin = Repo.init(str(example_project_dir / "local_origin"), bare=True)
|
|
334
|
+
|
|
335
|
+
# build target repo into a temporary directory
|
|
336
|
+
target_repo_dir = example_project_dir / repo_fixture_name
|
|
337
|
+
commit_type: CommitConvention = (
|
|
338
|
+
repo_fixture_name.split("commits", 1)[0].split("_")[-2] # type: ignore[assignment]
|
|
339
|
+
)
|
|
340
|
+
target_repo_definition = build_repo_fn(
|
|
341
|
+
repo_name=repo_fixture_name,
|
|
342
|
+
commit_type=commit_type,
|
|
343
|
+
dest_dir=target_repo_dir,
|
|
344
|
+
)
|
|
345
|
+
target_git_repo = git_repo_for_directory(target_repo_dir)
|
|
346
|
+
|
|
347
|
+
# Configure the source repo to use the bare remote (removing any existing 'origin')
|
|
348
|
+
with contextlib.suppress(AttributeError):
|
|
349
|
+
target_git_repo.delete_remote(target_git_repo.remotes[remote_name])
|
|
350
|
+
|
|
351
|
+
target_git_repo.create_remote(remote_name, str(local_origin.working_dir))
|
|
352
|
+
|
|
353
|
+
# Remove last release before pushing to upstream
|
|
354
|
+
tag_format_str = cast(
|
|
355
|
+
"str", get_cfg_value_from_def(target_repo_definition, "tag_format_str")
|
|
356
|
+
)
|
|
357
|
+
latest_tag = tag_format_str.format(
|
|
358
|
+
version=get_versions_from_repo_build_def(target_repo_definition)[-1]
|
|
359
|
+
)
|
|
360
|
+
target_git_repo.git.tag("-d", latest_tag)
|
|
361
|
+
target_git_repo.git.reset("--hard", "HEAD~1")
|
|
362
|
+
|
|
363
|
+
# Remove any version variables to ensure no version commit is needed
|
|
364
|
+
update_pyproject_toml(
|
|
365
|
+
"tool.semantic_release.version_variables",
|
|
366
|
+
None,
|
|
367
|
+
target_repo_dir / pyproject_toml_file,
|
|
368
|
+
)
|
|
369
|
+
update_pyproject_toml(
|
|
370
|
+
"tool.semantic_release.version_toml",
|
|
371
|
+
None,
|
|
372
|
+
target_repo_dir / pyproject_toml_file,
|
|
373
|
+
)
|
|
374
|
+
# TODO: when available, switch this to use hvcs=none or similar config to avoid token use for push
|
|
375
|
+
update_pyproject_toml(
|
|
376
|
+
"tool.semantic_release.remote.ignore_token_for_push",
|
|
377
|
+
True,
|
|
378
|
+
target_repo_dir / pyproject_toml_file,
|
|
379
|
+
)
|
|
380
|
+
target_git_repo.git.commit(amend=True, no_edit=True, all=True)
|
|
381
|
+
|
|
382
|
+
# push the current state to establish the remote (cannot push tags and branches at the same time)
|
|
383
|
+
target_git_repo.git.push(remote_name, all=True) # all branches
|
|
384
|
+
target_git_repo.git.push(remote_name, tags=True) # all tags
|
|
385
|
+
|
|
386
|
+
# ensure bare remote HEAD points to the active branch so clones can checkout
|
|
387
|
+
local_origin.git.symbolic_ref(
|
|
388
|
+
"HEAD", f"refs/heads/{target_git_repo.active_branch.name}"
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
# Simulate CI environment after someone pushes to the repo
|
|
392
|
+
ci_commit_sha = target_git_repo.head.commit.hexsha
|
|
393
|
+
ci_branch = target_git_repo.active_branch.name
|
|
394
|
+
|
|
395
|
+
# current remote tags
|
|
396
|
+
remote_origin_tags_before = {tag.name for tag in local_origin.tags}
|
|
397
|
+
|
|
398
|
+
# Simulate a CI environment by fetching the repo to a new location
|
|
399
|
+
test_repo = Repo.init(str(example_project_dir / "ci_repo"))
|
|
400
|
+
with test_repo.config_writer("repository") as config:
|
|
401
|
+
config.set_value("core", "hookspath", "")
|
|
402
|
+
config.set_value("commit", "gpgsign", False)
|
|
403
|
+
config.set_value("tag", "gpgsign", False)
|
|
404
|
+
|
|
405
|
+
# Configure and retrieve the repository (see GitHub actions/checkout@v5)
|
|
406
|
+
test_repo.git.remote(
|
|
407
|
+
"add",
|
|
408
|
+
remote_name,
|
|
409
|
+
f"file:///{PureWindowsPath(local_origin.working_dir).as_posix()}",
|
|
410
|
+
)
|
|
411
|
+
test_repo.git.fetch("--depth=1", remote_name, ci_commit_sha)
|
|
412
|
+
|
|
413
|
+
# Simulate CI environment and recommended workflow (in docs)
|
|
414
|
+
# NOTE: this could be done in 1 step, but most CI pipelines are doing it in 2 steps
|
|
415
|
+
# 1. Checkout the commit sha (detached head)
|
|
416
|
+
test_repo.git.checkout(ci_commit_sha, force=True)
|
|
417
|
+
# 2. Forcefully set the branch to the current detached head
|
|
418
|
+
test_repo.git.checkout("-B", ci_branch)
|
|
419
|
+
|
|
420
|
+
# Act: run PSR on the cloned repo - it should verify upstream and succeed
|
|
421
|
+
with temporary_working_directory(str(test_repo.working_dir)):
|
|
422
|
+
# We don't use `--no-commit` here because we want to test that the upstream check is skipped
|
|
423
|
+
# when PSR determines that no version commit is needed. If we used `--no-commit`, it would skip the
|
|
424
|
+
# upstream check because it would think that a version commit was not needed.
|
|
425
|
+
cli_cmd = [
|
|
426
|
+
MAIN_PROG_NAME,
|
|
427
|
+
"--strict",
|
|
428
|
+
VERSION_SUBCMD,
|
|
429
|
+
"--no-changelog",
|
|
430
|
+
"--skip-build",
|
|
431
|
+
]
|
|
432
|
+
result = run_cli(cli_cmd[1:], env={Github.DEFAULT_ENV_TOKEN_NAME: "1234"})
|
|
433
|
+
|
|
434
|
+
remote_origin_tags_after = {tag.name for tag in local_origin.tags}
|
|
435
|
+
|
|
436
|
+
# Evaluate
|
|
437
|
+
assert_successful_exit_code(result, cli_cmd)
|
|
438
|
+
|
|
439
|
+
# Verify release occurred as expected
|
|
440
|
+
with test_repo:
|
|
441
|
+
assert latest_tag in test_repo.tags, "Expected release tag to be created"
|
|
442
|
+
assert (
|
|
443
|
+
ci_commit_sha == test_repo.head.commit.hexsha
|
|
444
|
+
), "Expected no new commit to be created on HEAD"
|
|
445
|
+
different_tags = remote_origin_tags_after.difference(remote_origin_tags_before)
|
|
446
|
+
assert latest_tag in different_tags, "Expected new tag to be pushed to remote"
|
|
447
|
+
|
|
448
|
+
# Verify VCS release was created
|
|
449
|
+
expected_vcs_url_post = 1
|
|
450
|
+
assert expected_vcs_url_post == post_mocker.call_count # one vcs release created
|
|
451
|
+
|
|
452
|
+
|
|
294
453
|
@pytest.mark.parametrize(
|
|
295
454
|
"repo_fixture_name, build_repo_fn",
|
|
296
455
|
[
|
|
@@ -58,26 +58,21 @@ def get_func_qual_name(func: Callable) -> str:
|
|
|
58
58
|
def assert_exit_code(
|
|
59
59
|
exit_code: int, result: ClickInvokeResult, cli_cmd: list[str]
|
|
60
60
|
) -> bool:
|
|
61
|
-
if result.exit_code
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
indent(result.stdout, " " * 2) if result.stdout.strip() else "",
|
|
75
|
-
"stderr:",
|
|
76
|
-
indent(result.stderr, " " * 2) if result.stderr.strip() else "",
|
|
77
|
-
],
|
|
78
|
-
)
|
|
61
|
+
if result.exit_code == exit_code:
|
|
62
|
+
return True
|
|
63
|
+
|
|
64
|
+
raise AssertionError(
|
|
65
|
+
str.join(
|
|
66
|
+
os.linesep,
|
|
67
|
+
[
|
|
68
|
+
f"{result.exit_code} != {exit_code} (actual != expected)",
|
|
69
|
+
"",
|
|
70
|
+
# Explain what command failed
|
|
71
|
+
"Unexpected exit code from command:",
|
|
72
|
+
indent(f"'{str.join(' ', cli_cmd)}'", " " * 2),
|
|
73
|
+
],
|
|
79
74
|
)
|
|
80
|
-
|
|
75
|
+
)
|
|
81
76
|
|
|
82
77
|
|
|
83
78
|
def assert_successful_exit_code(result: ClickInvokeResult, cli_cmd: list[str]) -> bool:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/commit_parsing.rst
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/getting_started.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/installation.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/concepts/strict_mode.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/configuration/index.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/contributing/index.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/misc/psr_changelog.rst
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/misc/troubleshooting.rst
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/08-upgrade.rst
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/09-upgrade.rst
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/docs/upgrading/10-upgrade.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/__init__.py
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/config.py
RENAMED
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/const.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/cli/util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_semantic_release-10.5.1 → python_semantic_release-10.5.2}/src/semantic_release/const.py
RENAMED
|
File without changes
|