python-semantic-release 10.5.3__tar.gz → 10.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/PKG-INFO +2 -2
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/api/commands.rst +26 -6
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/automatic-releases/github-actions.rst +9 -9
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/configuration-guides/uv_integration.rst +13 -13
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/configuration.rst +52 -3
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/upgrading/08-upgrade.rst +6 -6
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/pyproject.toml +4 -4
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/python_semantic_release.egg-info/SOURCES.txt +2 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/commands/generate_config.py +27 -8
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/commands/publish.py +11 -6
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/config.py +16 -5
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/util.py +1 -1
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/emoji.py +6 -1
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/helpers.py +12 -2
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/github.py +12 -1
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/declaration.py +3 -1
- python_semantic_release-10.6.0/src/semantic_release/version/declarations/file.py +145 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/declarations/i_version_replacer.py +6 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/const.py +2 -2
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_config/test_generate_config.py +78 -0
- python_semantic_release-10.6.0/tests/e2e/cmd_publish/test_publish.py +170 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_stamp.py +130 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/commit_parser/test_emoji.py +13 -5
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test_github.py +222 -1
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/test_helpers.py +25 -0
- python_semantic_release-10.6.0/tests/unit/semantic_release/version/declarations/test_file_declaration.py +279 -0
- python_semantic_release-10.5.3/tests/e2e/cmd_publish/test_publish.py +0 -89
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/LICENSE +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/MANIFEST.in +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/README.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/Makefile +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/changelog_templates.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/commit_parsing.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/getting_started.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/installation.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/multibranch_releases.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/concepts/strict_mode.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/conf.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/automatic-releases/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/automatic-releases/travis.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/configuration-guides/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/configuration-guides/monorepos-ex-easy-before-release.png +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/configuration-guides/monorepos-ex-easy-post-release.png +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/configuration-guides/monorepos.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/configuration/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/contributing/contributing_guide.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/contributing/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/make.bat +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/misc/psr_changelog.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/misc/troubleshooting.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/upgrading/09-upgrade.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/upgrading/10-upgrade.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/upgrading/index.rst +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/setup.cfg +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/__main__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/changelog/context.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/changelog/release_history.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/changelog/template.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/changelog_writer.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/commands/changelog.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/commands/main.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/commands/version.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/masking_filter.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/angular.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/conventional/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/conventional/options.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/conventional/options_monorepo.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/conventional/parser.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/conventional/parser_monorepo.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/tag.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/token.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/commit_parser/util.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/const.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/changelog_header.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/changelog_init.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/changelog_update.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/changes.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/first_release.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/macros.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/unreleased_changes.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.components/versioned_changes.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/.release_notes.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/md/CHANGELOG.md.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/changelog_header.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/changelog_init.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/changelog_update.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/changes.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/first_release.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/macros.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/unreleased_changes.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/.components/versioned_changes.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/data/templates/conventional/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/enums.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/errors.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/gitproject.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/globals.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/bitbucket.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/gitea.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/gitlab.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/algorithm.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/declarations/enum.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/declarations/pattern.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/declarations/toml.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/translator.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/version/version.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/conftest.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_changelog/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_config/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_publish/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel_branch_update_merge.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_1_channel.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_2_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/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.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/test_monorepo_trunk.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_build.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_bump.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_partial_tag.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_print.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_shallow.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_strict.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/cmd_version/test_version_upstream_check.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/conftest.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/test_help.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/e2e/test_main.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/commit_parsers.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/example_project.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/git_repo.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/example_monorepo.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/git_monorepo.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/github_flow/monorepo_w_default_release.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/github_flow/monorepo_w_release_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/monorepos/trunk_based_dev/monorepo_w_tags.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/github_flow/repo_w_default_release_w_branch_update_merge.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/repo_initial_commit.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/conftest.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/conftest.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/cli/test_config.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/commit_parser/test_conventional.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/test_gitproject.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/unit/semantic_release/version/test_version.py +0 -0
- {python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/tests/util.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-semantic-release
|
|
3
|
-
Version: 10.
|
|
3
|
+
Version: 10.6.0
|
|
4
4
|
Summary: Automatic Semantic Versioning for Python projects
|
|
5
5
|
Author-email: Rolf Erik Lekang <me@rolflekang.com>, codejedi365 <codejedi365@gmail.com>
|
|
6
6
|
License: MIT
|
|
7
|
-
Project-URL: changelog, https://
|
|
7
|
+
Project-URL: changelog, https://python-semantic-release.readthedocs.io/en/stable/misc/psr_changelog.html
|
|
8
8
|
Project-URL: documentation, https://python-semantic-release.readthedocs.io
|
|
9
9
|
Project-URL: homepage, https://python-semantic-release.readthedocs.io
|
|
10
10
|
Project-URL: issues, https://github.com/python-semantic-release/python-semantic-release/issues
|
|
@@ -473,16 +473,36 @@ Release corresponding to this version.
|
|
|
473
473
|
|
|
474
474
|
Generate default configuration for semantic-release, to help you get started
|
|
475
475
|
quickly. You can inspect the defaults, write to a file and then edit according to
|
|
476
|
-
your needs.
|
|
477
|
-
|
|
478
|
-
file, you can use the following command::
|
|
476
|
+
your needs. For example, to append the default configuration to your ``pyproject.toml``
|
|
477
|
+
file, you can use the following command (in POSIX-Compliant shells):
|
|
479
478
|
|
|
480
|
-
|
|
479
|
+
.. code-block:: bash
|
|
480
|
+
|
|
481
|
+
semantic-release generate-config --pyproject >> pyproject.toml
|
|
482
|
+
|
|
483
|
+
On Windows PowerShell, the redirection operators (`>`/`>>`) default to UTF-16LE,
|
|
484
|
+
which can introduce NUL characters. Prefer one of the following to keep UTF-8:
|
|
485
|
+
|
|
486
|
+
.. code-block:: console
|
|
487
|
+
|
|
488
|
+
# 2 File output Piping Options in PowerShell (Out-File or Set-Content)
|
|
489
|
+
|
|
490
|
+
# Example for writing to pyproject.toml using Out-File:
|
|
491
|
+
semantic-release generate-config --pyproject | Out-File -Encoding utf8 pyproject.toml
|
|
492
|
+
|
|
493
|
+
# Example for writing to a releaserc.toml file using Set-Content:
|
|
494
|
+
semantic-release generate-config -f toml | Set-Content -Encoding utf8 releaserc.toml
|
|
481
495
|
|
|
482
496
|
If your project doesn't already leverage TOML files for configuration, it might better
|
|
483
|
-
suit your project to use JSON instead
|
|
497
|
+
suit your project to use JSON instead:
|
|
498
|
+
|
|
499
|
+
.. code-block:: bash
|
|
500
|
+
|
|
501
|
+
# POSIX-Compliant shell example
|
|
502
|
+
semantic-release generate-config -f json | tee releaserc.json
|
|
484
503
|
|
|
485
|
-
|
|
504
|
+
# Windows PowerShell example
|
|
505
|
+
semantic-release generate-config -f json | Out-File -Encoding utf8 releaserc.json
|
|
486
506
|
|
|
487
507
|
If you would like to add JSON configuration to a shared file, e.g. ``package.json``, you
|
|
488
508
|
can then simply add the output from this command as a **top-level** key to the file.
|
|
@@ -882,7 +882,7 @@ to the GitHub Release Assets as well.
|
|
|
882
882
|
# while the workflow was running, which prevents accidentally releasing un-evaluated
|
|
883
883
|
# changes.
|
|
884
884
|
- name: Setup | Checkout Repository on Release Branch
|
|
885
|
-
uses: actions/checkout@
|
|
885
|
+
uses: actions/checkout@COMMIT_HASH # v6
|
|
886
886
|
with:
|
|
887
887
|
ref: ${{ github.ref_name }}
|
|
888
888
|
|
|
@@ -893,21 +893,21 @@ 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.
|
|
896
|
+
uses: python-semantic-release/python-semantic-release@COMMIT_HASH # v10.6.0
|
|
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.
|
|
903
|
+
uses: python-semantic-release/publish-action@COMMIT_HASH # v10.6.0
|
|
904
904
|
if: steps.release.outputs.released == 'true'
|
|
905
905
|
with:
|
|
906
906
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
907
907
|
tag: ${{ steps.release.outputs.tag }}
|
|
908
908
|
|
|
909
909
|
- name: Upload | Distribution Artifacts
|
|
910
|
-
uses: actions/upload-artifact@v4
|
|
910
|
+
uses: actions/upload-artifact@COMMIT_HASH # v4.X.X
|
|
911
911
|
with:
|
|
912
912
|
name: distribution-artifacts
|
|
913
913
|
path: dist
|
|
@@ -931,7 +931,7 @@ to the GitHub Release Assets as well.
|
|
|
931
931
|
|
|
932
932
|
steps:
|
|
933
933
|
- name: Setup | Download Build Artifacts
|
|
934
|
-
uses: actions/download-artifact@v4
|
|
934
|
+
uses: actions/download-artifact@COMMIT_HASH # v4.X.X
|
|
935
935
|
id: artifact-download
|
|
936
936
|
with:
|
|
937
937
|
name: distribution-artifacts
|
|
@@ -947,7 +947,7 @@ to the GitHub Release Assets as well.
|
|
|
947
947
|
|
|
948
948
|
# see https://docs.pypi.org/trusted-publishers/
|
|
949
949
|
- name: Publish package distributions to PyPI
|
|
950
|
-
uses: pypa/gh-action-pypi-publish
|
|
950
|
+
uses: pypa/gh-action-pypi-publish@COMMIT_HASH # vX.X.X
|
|
951
951
|
with:
|
|
952
952
|
packages-dir: dist
|
|
953
953
|
print-hash: true
|
|
@@ -971,7 +971,7 @@ to the GitHub Release Assets as well.
|
|
|
971
971
|
.. note::
|
|
972
972
|
As of v10.5.0, Python Semantic Release automatically detects and converts
|
|
973
973
|
shallow clones to full clones when needed. While you can still use ``fetch-depth: 0``
|
|
974
|
-
with ``actions/checkout
|
|
974
|
+
with ``actions/checkout`` to fetch the full history upfront, it is no longer
|
|
975
975
|
required. If you use the default shallow clone, Python Semantic Release will
|
|
976
976
|
automatically fetch the full history before evaluating commits. If you are using
|
|
977
977
|
an older version of PSR, you will need to unshallow the repository prior to use.
|
|
@@ -1107,13 +1107,13 @@ Publish Action.
|
|
|
1107
1107
|
# ------------------------------------------------------------------- #
|
|
1108
1108
|
|
|
1109
1109
|
- name: Publish | Upload package 1 to PyPI
|
|
1110
|
-
uses: pypa/gh-action-pypi-publish@
|
|
1110
|
+
uses: pypa/gh-action-pypi-publish@COMMIT_HASH # vX.X.X
|
|
1111
1111
|
if: steps.release-submod-1.outputs.released == 'true'
|
|
1112
1112
|
with:
|
|
1113
1113
|
packages-dir: ${{ format('{}/dist', env.SUBMODULE_1_DIR) }}
|
|
1114
1114
|
|
|
1115
1115
|
- name: Publish | Upload package 2 to PyPI
|
|
1116
|
-
uses: pypa/gh-action-pypi-publish@
|
|
1116
|
+
uses: pypa/gh-action-pypi-publish@COMMIT_HASH # vX.X.X
|
|
1117
1117
|
if: steps.release-submod-2.outputs.released == 'true'
|
|
1118
1118
|
with:
|
|
1119
1119
|
packages-dir: ${{ format('{}/dist', env.SUBMODULE_2_DIR) }}
|
|
@@ -158,7 +158,7 @@ look like this:
|
|
|
158
158
|
lock_file_artifact: uv.lock
|
|
159
159
|
steps:
|
|
160
160
|
- name: Setup | Checkout Repository at workflow sha
|
|
161
|
-
uses: actions/checkout@
|
|
161
|
+
uses: actions/checkout@COMMIT_HASH # vX.X.X
|
|
162
162
|
with:
|
|
163
163
|
ref: ${{ github.sha }}
|
|
164
164
|
|
|
@@ -166,7 +166,7 @@ look like this:
|
|
|
166
166
|
run: git checkout -B ${{ github.ref_name }}
|
|
167
167
|
|
|
168
168
|
- name: Setup | Install uv
|
|
169
|
-
uses: asdf-vm/actions/install@
|
|
169
|
+
uses: asdf-vm/actions/install@COMMIT_HASH # v4.X.X
|
|
170
170
|
|
|
171
171
|
- name: Setup | Install Python & Project dependencies
|
|
172
172
|
run: uv sync --extra build
|
|
@@ -179,7 +179,7 @@ look like this:
|
|
|
179
179
|
|
|
180
180
|
- name: Upload | Distribution Artifacts
|
|
181
181
|
if: ${{ steps.version.outputs.released == 'true' }}
|
|
182
|
-
uses: actions/upload-artifact@
|
|
182
|
+
uses: actions/upload-artifact@COMMIT_HASH # v4.X.X
|
|
183
183
|
with:
|
|
184
184
|
name: ${{ env.dist_artifacts_name }}
|
|
185
185
|
path: ${{ format('{0}/**', env.dist_artifacts_dir) }}
|
|
@@ -188,7 +188,7 @@ look like this:
|
|
|
188
188
|
|
|
189
189
|
- name: Upload | Lock File Artifact
|
|
190
190
|
if: ${{ steps.version.outputs.released == 'true' }}
|
|
191
|
-
uses: actions/upload-artifact@
|
|
191
|
+
uses: actions/upload-artifact@COMMIT_HASH # v4.X.X
|
|
192
192
|
with:
|
|
193
193
|
name: ${{ env.lock_file_artifact }}
|
|
194
194
|
path: ${{ env.lock_file_artifact }}
|
|
@@ -209,13 +209,13 @@ look like this:
|
|
|
209
209
|
runs-on: ubuntu-latest
|
|
210
210
|
steps:
|
|
211
211
|
- name: Setup | Checkout Repository
|
|
212
|
-
uses: actions/checkout@
|
|
212
|
+
uses: actions/checkout@COMMIT_HASH # vX.X.X
|
|
213
213
|
with:
|
|
214
214
|
ref: ${{ github.sha }}
|
|
215
215
|
fetch-depth: 1
|
|
216
216
|
|
|
217
217
|
- name: Setup | Download Distribution Artifacts
|
|
218
|
-
uses: actions/download-artifact@
|
|
218
|
+
uses: actions/download-artifact@COMMIT_HASH # v4.X.X
|
|
219
219
|
if: ${{ needs.build.outputs.new-release-detected == 'true' }}
|
|
220
220
|
id: artifact-download
|
|
221
221
|
with:
|
|
@@ -223,7 +223,7 @@ look like this:
|
|
|
223
223
|
path: ./dist
|
|
224
224
|
|
|
225
225
|
- name: Setup | Install uv
|
|
226
|
-
uses: asdf-vm/actions/install@
|
|
226
|
+
uses: asdf-vm/actions/install@COMMIT_HASH # v4.X.X
|
|
227
227
|
|
|
228
228
|
- name: Setup | Install Python & Project dependencies
|
|
229
229
|
run: uv sync --extra test
|
|
@@ -255,7 +255,7 @@ look like this:
|
|
|
255
255
|
|
|
256
256
|
steps:
|
|
257
257
|
- name: Setup | Checkout Repository on Release Branch
|
|
258
|
-
uses: actions/checkout@
|
|
258
|
+
uses: actions/checkout@COMMIT_HASH # vX.X.X
|
|
259
259
|
with:
|
|
260
260
|
ref: ${{ github.ref_name }}
|
|
261
261
|
|
|
@@ -263,20 +263,20 @@ look like this:
|
|
|
263
263
|
run: git reset --hard ${{ github.sha }}
|
|
264
264
|
|
|
265
265
|
- name: Setup | Install uv
|
|
266
|
-
uses: asdf-vm/actions/install@
|
|
266
|
+
uses: asdf-vm/actions/install@COMMIT_HASH # v4.X.X
|
|
267
267
|
|
|
268
268
|
- name: Setup | Install Python & Project dependencies
|
|
269
269
|
run: uv sync --extra build
|
|
270
270
|
|
|
271
271
|
- name: Setup | Download Build Artifacts
|
|
272
|
-
uses: actions/download-artifact@
|
|
272
|
+
uses: actions/download-artifact@COMMIT_HASH # v4.X.X
|
|
273
273
|
id: artifact-download
|
|
274
274
|
with:
|
|
275
275
|
name: ${{ needs.build.outputs.distribution-artifacts }}
|
|
276
276
|
path: dist
|
|
277
277
|
|
|
278
278
|
- name: Setup | Download Lock File Artifact
|
|
279
|
-
uses: actions/download-artifact@
|
|
279
|
+
uses: actions/download-artifact@COMMIT_HASH # v4.X.X
|
|
280
280
|
with:
|
|
281
281
|
name: ${{ needs.build.outputs.lock-file-artifact }}
|
|
282
282
|
|
|
@@ -315,14 +315,14 @@ look like this:
|
|
|
315
315
|
|
|
316
316
|
steps:
|
|
317
317
|
- name: Setup | Download Build Artifacts
|
|
318
|
-
uses: actions/download-artifact@
|
|
318
|
+
uses: actions/download-artifact@COMMIT_HASH # v4.X.X
|
|
319
319
|
id: artifact-download
|
|
320
320
|
with:
|
|
321
321
|
name: ${{ needs.build.outputs.distribution-artifacts }}
|
|
322
322
|
path: dist
|
|
323
323
|
|
|
324
324
|
- name: Publish package distributions to PyPI
|
|
325
|
-
uses: pypa/gh-action-pypi-publish@
|
|
325
|
+
uses: pypa/gh-action-pypi-publish@COMMIT_HASH # v1.X.X
|
|
326
326
|
with:
|
|
327
327
|
packages-dir: dist
|
|
328
328
|
print-hash: true
|
|
@@ -1326,6 +1326,10 @@ colon-separated definition with either 2 or 3 parts. The 2-part definition inclu
|
|
|
1326
1326
|
the file path and the variable name. Newly with v9.20.0, it also accepts
|
|
1327
1327
|
an optional 3rd part to allow configuration of the format type.
|
|
1328
1328
|
|
|
1329
|
+
As of ${NEW_RELEASE_TAG}, the ``version_variables`` option also supports entire file
|
|
1330
|
+
replacement by using an asterisk (``*``) as the pattern/variable name. This is useful
|
|
1331
|
+
for files that contain only a version number, such as ``VERSION`` files.
|
|
1332
|
+
|
|
1329
1333
|
**Available Format Types**
|
|
1330
1334
|
|
|
1331
1335
|
- ``nf``: Number format (ex. ``1.2.3``)
|
|
@@ -1348,6 +1352,9 @@ version numbers.
|
|
|
1348
1352
|
"src/semantic_release/__init__.py:__version__", # Implied Default: Number format
|
|
1349
1353
|
"docs/conf.py:version:nf", # Number format for sphinx docs
|
|
1350
1354
|
"kustomization.yml:newTag:tf", # Tag format
|
|
1355
|
+
# File replacement (entire file content is replaced with version)
|
|
1356
|
+
"VERSION:*:nf", # Replace entire file with number format
|
|
1357
|
+
"RELEASE:*:tf", # Replace entire file with tag format
|
|
1351
1358
|
]
|
|
1352
1359
|
|
|
1353
1360
|
First, the ``__version__`` variable in ``src/semantic_release/__init__.py`` will be updated
|
|
@@ -1370,7 +1377,7 @@ with the next version using the `SemVer`_ number format because of the explicit
|
|
|
1370
1377
|
- version = "0.1.0"
|
|
1371
1378
|
+ version = "0.2.0"
|
|
1372
1379
|
|
|
1373
|
-
|
|
1380
|
+
Then, the ``newTag`` variable in ``kustomization.yml`` will be updated with the next version
|
|
1374
1381
|
with the next version using the configured :ref:`config-tag_format` because the definition
|
|
1375
1382
|
included ``tf``.
|
|
1376
1383
|
|
|
@@ -1383,10 +1390,34 @@ included ``tf``.
|
|
|
1383
1390
|
- newTag: v0.1.0
|
|
1384
1391
|
+ newTag: v0.2.0
|
|
1385
1392
|
|
|
1393
|
+
Next, the entire content of the ``VERSION`` file will be replaced with the next version
|
|
1394
|
+
using the `SemVer`_ number format (because of the ``*`` pattern and ``nf`` format type).
|
|
1395
|
+
|
|
1396
|
+
.. code-block:: diff
|
|
1397
|
+
|
|
1398
|
+
diff a/VERSION b/VERSION
|
|
1399
|
+
|
|
1400
|
+
- 0.1.0
|
|
1401
|
+
+ 0.2.0
|
|
1402
|
+
|
|
1403
|
+
Finally, the entire content of the ``RELEASE`` file will be replaced with the next version
|
|
1404
|
+
using the configured :ref:`config-tag_format` (because of the ``*`` pattern and ``tf`` format type).
|
|
1405
|
+
|
|
1406
|
+
.. code-block:: diff
|
|
1407
|
+
|
|
1408
|
+
diff a/RELEASE b/RELEASE
|
|
1409
|
+
|
|
1410
|
+
- v0.1.0
|
|
1411
|
+
+ v0.2.0
|
|
1412
|
+
|
|
1386
1413
|
**How It works**
|
|
1387
1414
|
|
|
1388
|
-
Each version variable will be transformed into a Regular Expression
|
|
1389
|
-
|
|
1415
|
+
Each version variable will be transformed into either a Regular Expression (for pattern-based
|
|
1416
|
+
replacement) or a file replacement operation (when using the ``*`` pattern).
|
|
1417
|
+
|
|
1418
|
+
**Pattern-Based Replacement**
|
|
1419
|
+
|
|
1420
|
+
When a variable name is specified (not ``*``), the replacement algorithm is **ONLY** a
|
|
1390
1421
|
pattern match and replace. It will **NOT** evaluate the code nor will PSR understand
|
|
1391
1422
|
any internal object structures (ie. ``file:object.version`` will not work).
|
|
1392
1423
|
|
|
@@ -1420,6 +1451,24 @@ regardless of file extension because it looks for a matching pattern string.
|
|
|
1420
1451
|
TOML files as it actually will interpret the TOML file and replace the version
|
|
1421
1452
|
number before writing the file back to disk.
|
|
1422
1453
|
|
|
1454
|
+
**File Replacement**
|
|
1455
|
+
|
|
1456
|
+
When the pattern/variable name is specified as an asterisk (``*``), the entire file content
|
|
1457
|
+
will be replaced with the version string. This is useful for files that contain only a
|
|
1458
|
+
version number, such as ``VERSION`` files or similar single-line version storage files.
|
|
1459
|
+
|
|
1460
|
+
The file replacement operation:
|
|
1461
|
+
|
|
1462
|
+
1. Reads the current file content if it exists (any whitespace is stripped)
|
|
1463
|
+
2. Sets or replaces the entire file content with the new version string
|
|
1464
|
+
3. Writes the new version back to the file (with only a single trailing newline)
|
|
1465
|
+
|
|
1466
|
+
The format type (``nf`` or ``tf``) determines whether the version is written as a
|
|
1467
|
+
plain number (e.g., ``1.2.3``) or with the :ref:`config-tag_format` prefix/suffix
|
|
1468
|
+
(e.g., ``v1.2.3``).
|
|
1469
|
+
|
|
1470
|
+
**Examples of Pattern-Based Replacement**
|
|
1471
|
+
|
|
1423
1472
|
This is a comprehensive list (but not all variations) of examples where the following versions
|
|
1424
1473
|
will be matched and replaced by the new version:
|
|
1425
1474
|
|
{python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/docs/upgrading/08-upgrade.rst
RENAMED
|
@@ -50,13 +50,13 @@ This workflow is written to use Python Semantic Release v7.33.5:
|
|
|
50
50
|
concurrency: release
|
|
51
51
|
|
|
52
52
|
steps:
|
|
53
|
-
- uses: actions/checkout@v3
|
|
53
|
+
- uses: actions/checkout@COMMIT_HASH # v3.0.0
|
|
54
54
|
with:
|
|
55
55
|
fetch-depth: 0
|
|
56
56
|
|
|
57
57
|
# This action uses Python Semantic Release v7
|
|
58
58
|
- name: Python Semantic Release
|
|
59
|
-
uses: python-semantic-release/python-semantic-release@v7.33.5
|
|
59
|
+
uses: python-semantic-release/python-semantic-release@323ebf700ac0878aedfa899bcb0492f6d579986c # v7.33.5
|
|
60
60
|
with:
|
|
61
61
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
62
62
|
repository_username: __token__
|
|
@@ -84,25 +84,25 @@ GitHub Action:
|
|
|
84
84
|
id-token: write
|
|
85
85
|
|
|
86
86
|
steps:
|
|
87
|
-
- uses: actions/checkout@v3
|
|
87
|
+
- uses: actions/checkout@COMMIT_HASH # v3.0.0
|
|
88
88
|
with:
|
|
89
89
|
fetch-depth: 0
|
|
90
90
|
|
|
91
91
|
# This action uses Python Semantic Release v8
|
|
92
92
|
- name: Python Semantic Release
|
|
93
93
|
id: release
|
|
94
|
-
uses: python-semantic-release/python-semantic-release@v8.
|
|
94
|
+
uses: python-semantic-release/python-semantic-release@COMMIT_HASH # v8.0.0
|
|
95
95
|
with:
|
|
96
96
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
97
97
|
|
|
98
98
|
- name: Publish package distributions to PyPI
|
|
99
|
-
uses: pypa/gh-action-pypi-publish@v1
|
|
99
|
+
uses: pypa/gh-action-pypi-publish@COMMIT_HASH # v1.0.0
|
|
100
100
|
# NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true.
|
|
101
101
|
# See https://github.com/actions/runner/issues/1173
|
|
102
102
|
if: steps.release.outputs.released == 'true'
|
|
103
103
|
|
|
104
104
|
- name: Publish package distributions to GitHub Releases
|
|
105
|
-
uses: python-semantic-release/upload-to-gh-release@v8.
|
|
105
|
+
uses: python-semantic-release/upload-to-gh-release@COMMIT_HASH # v8.0.0
|
|
106
106
|
if: steps.release.outputs.released == 'true'
|
|
107
107
|
with:
|
|
108
108
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -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.6.0"
|
|
10
10
|
description = "Automatic Semantic Versioning for Python projects"
|
|
11
11
|
requires-python = "~= 3.8"
|
|
12
12
|
license = { text = "MIT" }
|
|
@@ -48,7 +48,7 @@ semantic-release = "semantic_release.__main__:main"
|
|
|
48
48
|
psr = "semantic_release.__main__:main"
|
|
49
49
|
|
|
50
50
|
[project.urls]
|
|
51
|
-
changelog = "https://
|
|
51
|
+
changelog = "https://python-semantic-release.readthedocs.io/en/stable/misc/psr_changelog.html"
|
|
52
52
|
documentation = "https://python-semantic-release.readthedocs.io"
|
|
53
53
|
homepage = "https://python-semantic-release.readthedocs.io"
|
|
54
54
|
issues = "https://github.com/python-semantic-release/python-semantic-release/issues"
|
|
@@ -425,8 +425,8 @@ build_command = """
|
|
|
425
425
|
major_on_zero = true
|
|
426
426
|
version_variables = [
|
|
427
427
|
"src/gh_action/requirements.txt:python-semantic-release:nf",
|
|
428
|
-
"docs/configuration/automatic-releases/github-actions.rst:python-semantic-release/python-semantic-release
|
|
429
|
-
"docs/configuration/automatic-releases/github-actions.rst:python-semantic-release/publish-action
|
|
428
|
+
"docs/configuration/automatic-releases/github-actions.rst:python-semantic-release/python-semantic-release@COMMIT_HASH #:tf",
|
|
429
|
+
"docs/configuration/automatic-releases/github-actions.rst:python-semantic-release/publish-action@COMMIT_HASH #:tf",
|
|
430
430
|
]
|
|
431
431
|
version_toml = ["pyproject.toml:project.version"]
|
|
432
432
|
|
|
@@ -108,6 +108,7 @@ src/semantic_release/version/translator.py
|
|
|
108
108
|
src/semantic_release/version/version.py
|
|
109
109
|
src/semantic_release/version/declarations/__init__.py
|
|
110
110
|
src/semantic_release/version/declarations/enum.py
|
|
111
|
+
src/semantic_release/version/declarations/file.py
|
|
111
112
|
src/semantic_release/version/declarations/i_version_replacer.py
|
|
112
113
|
src/semantic_release/version/declarations/pattern.py
|
|
113
114
|
src/semantic_release/version/declarations/toml.py
|
|
@@ -231,5 +232,6 @@ tests/unit/semantic_release/version/test_algorithm.py
|
|
|
231
232
|
tests/unit/semantic_release/version/test_translator.py
|
|
232
233
|
tests/unit/semantic_release/version/test_version.py
|
|
233
234
|
tests/unit/semantic_release/version/declarations/__init__.py
|
|
235
|
+
tests/unit/semantic_release/version/declarations/test_file_declaration.py
|
|
234
236
|
tests/unit/semantic_release/version/declarations/test_pattern_declaration.py
|
|
235
237
|
tests/unit/semantic_release/version/declarations/test_toml_declaration.py
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
+
import sys
|
|
5
|
+
from typing import Literal
|
|
4
6
|
|
|
5
7
|
import click
|
|
6
8
|
import tomlkit
|
|
@@ -31,7 +33,9 @@ from semantic_release.cli.config import RawConfig
|
|
|
31
33
|
"'semantic_release'"
|
|
32
34
|
),
|
|
33
35
|
)
|
|
34
|
-
def generate_config(
|
|
36
|
+
def generate_config(
|
|
37
|
+
fmt: Literal["toml", "json"], is_pyproject_toml: bool = False
|
|
38
|
+
) -> None:
|
|
35
39
|
"""
|
|
36
40
|
Generate default configuration for semantic-release, to help you get started
|
|
37
41
|
quickly. You can inspect the defaults, write to a file and then edit according to
|
|
@@ -42,14 +46,29 @@ def generate_config(fmt: str = "toml", is_pyproject_toml: bool = False) -> None:
|
|
|
42
46
|
"""
|
|
43
47
|
# due to possible IntEnum values (which are not supported by tomlkit.dumps, see sdispater/tomlkit#237),
|
|
44
48
|
# we must ensure the transformation of the model to a dict uses json serializable values
|
|
45
|
-
|
|
49
|
+
config_dct = {
|
|
50
|
+
"semantic_release": RawConfig().model_dump(mode="json", exclude_none=True)
|
|
51
|
+
}
|
|
46
52
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
config_dct = {"tool": config_dct}
|
|
53
|
+
if is_pyproject_toml:
|
|
54
|
+
output = tomlkit.dumps({"tool": config_dct})
|
|
50
55
|
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
elif fmt == "toml":
|
|
57
|
+
output = tomlkit.dumps(config_dct)
|
|
53
58
|
|
|
54
59
|
elif fmt == "json":
|
|
55
|
-
|
|
60
|
+
output = json.dumps(config_dct, indent=4)
|
|
61
|
+
|
|
62
|
+
else:
|
|
63
|
+
raise ValueError(f"Unsupported format: {fmt}")
|
|
64
|
+
|
|
65
|
+
# Write output directly to stdout buffer as UTF-8 bytes
|
|
66
|
+
# This ensures consistent UTF-8 output on all platforms, especially Windows where
|
|
67
|
+
# shell redirection (>, >>) defaults to the system encoding (e.g., UTF-16LE or cp1252)
|
|
68
|
+
# By writing to sys.stdout.buffer, we bypass the encoding layer and guarantee UTF-8.
|
|
69
|
+
try:
|
|
70
|
+
sys.stdout.buffer.write(f"{output.strip()}\n".encode("utf-8")) # noqa: UP012; allow explicit encoding declaration
|
|
71
|
+
sys.stdout.buffer.flush()
|
|
72
|
+
except (AttributeError, TypeError):
|
|
73
|
+
# Fallback for environments without buffer (shouldn't happen in standard Python)
|
|
74
|
+
click.echo(output)
|
|
@@ -6,6 +6,7 @@ import click
|
|
|
6
6
|
from git import Repo
|
|
7
7
|
|
|
8
8
|
from semantic_release.cli.util import noop_report
|
|
9
|
+
from semantic_release.errors import AssetUploadError
|
|
9
10
|
from semantic_release.globals import logger
|
|
10
11
|
from semantic_release.hvcs.remote_hvcs_base import RemoteHvcsBase
|
|
11
12
|
from semantic_release.version.algorithm import tags_and_versions
|
|
@@ -90,9 +91,13 @@ def publish(cli_ctx: CliContextObj, tag: str) -> None:
|
|
|
90
91
|
)
|
|
91
92
|
return
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
try:
|
|
95
|
+
publish_distributions(
|
|
96
|
+
tag=tag,
|
|
97
|
+
hvcs_client=hvcs_client,
|
|
98
|
+
dist_glob_patterns=dist_glob_patterns,
|
|
99
|
+
noop=runtime.global_cli_options.noop,
|
|
100
|
+
)
|
|
101
|
+
except AssetUploadError as err:
|
|
102
|
+
click.echo(err, err=True)
|
|
103
|
+
ctx.exit(1)
|
{python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/config.py
RENAMED
|
@@ -57,6 +57,7 @@ from semantic_release.errors import (
|
|
|
57
57
|
)
|
|
58
58
|
from semantic_release.globals import logger
|
|
59
59
|
from semantic_release.helpers import dynamic_import
|
|
60
|
+
from semantic_release.version.declarations.file import FileVersionDeclaration
|
|
60
61
|
from semantic_release.version.declarations.i_version_replacer import IVersionReplacer
|
|
61
62
|
from semantic_release.version.declarations.pattern import PatternVersionDeclaration
|
|
62
63
|
from semantic_release.version.declarations.toml import TomlVersionDeclaration
|
|
@@ -757,12 +758,22 @@ class RuntimeContext:
|
|
|
757
758
|
) from err
|
|
758
759
|
|
|
759
760
|
try:
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
761
|
+
for definition in iter(raw.version_variables or ()):
|
|
762
|
+
# Check if this is a file replacement definition (pattern is "*")
|
|
763
|
+
parts = definition.split(":", maxsplit=2)
|
|
764
|
+
if len(parts) >= 2 and parts[1] == "*":
|
|
765
|
+
# Use FileVersionDeclaration for entire file replacement
|
|
766
|
+
version_declarations.append(
|
|
767
|
+
FileVersionDeclaration.from_string_definition(definition)
|
|
768
|
+
)
|
|
769
|
+
continue
|
|
770
|
+
|
|
771
|
+
# Use PatternVersionDeclaration for pattern-based replacement
|
|
772
|
+
version_declarations.append(
|
|
773
|
+
PatternVersionDeclaration.from_string_definition(
|
|
774
|
+
definition, raw.tag_format
|
|
775
|
+
)
|
|
763
776
|
)
|
|
764
|
-
for definition in iter(raw.version_variables or ())
|
|
765
|
-
)
|
|
766
777
|
except ValueError as err:
|
|
767
778
|
raise InvalidConfiguration(
|
|
768
779
|
str.join(
|
{python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/cli/util.py
RENAMED
|
@@ -75,7 +75,7 @@ def load_raw_config_file(config_file: Path | str) -> dict[Any, Any]:
|
|
|
75
75
|
while trying to read the specified configuration file
|
|
76
76
|
"""
|
|
77
77
|
logger.info("Loading configuration from %s", config_file)
|
|
78
|
-
raw_text = (Path() / config_file).resolve().read_text(encoding="utf-8")
|
|
78
|
+
raw_text = (Path() / config_file).resolve().read_text(encoding="utf-8-sig")
|
|
79
79
|
try:
|
|
80
80
|
logger.debug("Trying to parse configuration %s in TOML format", config_file)
|
|
81
81
|
return parse_toml(raw_text)
|
|
@@ -65,7 +65,12 @@ class EmojiParserOptions(ParserOptions):
|
|
|
65
65
|
)
|
|
66
66
|
"""Commit-type prefixes that should result in a patch release bump."""
|
|
67
67
|
|
|
68
|
-
other_allowed_tags: Tuple[str, ...] = (
|
|
68
|
+
other_allowed_tags: Tuple[str, ...] = (
|
|
69
|
+
":checkmark:",
|
|
70
|
+
":construction_worker:",
|
|
71
|
+
":memo:",
|
|
72
|
+
":recycle:",
|
|
73
|
+
)
|
|
69
74
|
"""Commit-type prefixes that are allowed but do not result in a version bump."""
|
|
70
75
|
|
|
71
76
|
allowed_tags: Tuple[str, ...] = (
|
{python_semantic_release-10.5.3 → python_semantic_release-10.6.0}/src/semantic_release/helpers.py
RENAMED
|
@@ -9,7 +9,7 @@ from functools import lru_cache, reduce, wraps
|
|
|
9
9
|
from pathlib import Path, PurePosixPath
|
|
10
10
|
from re import IGNORECASE, compile as regexp
|
|
11
11
|
from typing import TYPE_CHECKING, Any, Callable, NamedTuple, Sequence, TypeVar
|
|
12
|
-
from urllib.parse import urlsplit
|
|
12
|
+
from urllib.parse import urlsplit, urlunsplit
|
|
13
13
|
|
|
14
14
|
from semantic_release.globals import logger
|
|
15
15
|
|
|
@@ -215,6 +215,16 @@ class ParsedGitUrl(NamedTuple):
|
|
|
215
215
|
repo_name: str
|
|
216
216
|
|
|
217
217
|
|
|
218
|
+
def _hide_credentials_in_url(url: str) -> str:
|
|
219
|
+
url_parts = urlsplit(url)
|
|
220
|
+
|
|
221
|
+
if not url_parts.scheme or "@" not in url_parts.netloc:
|
|
222
|
+
return url
|
|
223
|
+
|
|
224
|
+
_, _, host = url_parts.netloc.rpartition("@")
|
|
225
|
+
return urlunsplit(url_parts._replace(netloc=f"<credentials>@{host}"))
|
|
226
|
+
|
|
227
|
+
|
|
218
228
|
@lru_cache(maxsize=512)
|
|
219
229
|
def parse_git_url(url: str) -> ParsedGitUrl:
|
|
220
230
|
"""
|
|
@@ -242,7 +252,7 @@ def parse_git_url(url: str) -> ParsedGitUrl:
|
|
|
242
252
|
|
|
243
253
|
Raises ValueError if the url can't be parsed.
|
|
244
254
|
"""
|
|
245
|
-
logger.debug("Parsing git url %r", url)
|
|
255
|
+
logger.debug("Parsing git url %r", _hide_credentials_in_url(url))
|
|
246
256
|
|
|
247
257
|
# Normalizers are a list of tuples of (pattern, replacement)
|
|
248
258
|
normalizers = [
|
|
@@ -463,14 +463,25 @@ class Github(RemoteHvcsBase):
|
|
|
463
463
|
|
|
464
464
|
# Upload assets
|
|
465
465
|
n_succeeded = 0
|
|
466
|
+
errors = []
|
|
466
467
|
for file_path in (
|
|
467
468
|
f for f in glob.glob(dist_glob, recursive=True) if os.path.isfile(f)
|
|
468
469
|
):
|
|
469
470
|
try:
|
|
470
471
|
self.upload_release_asset(release_id, file_path)
|
|
471
472
|
n_succeeded += 1
|
|
472
|
-
except HTTPError: # noqa: PERF203
|
|
473
|
+
except HTTPError as err: # noqa: PERF203
|
|
473
474
|
logger.exception("error uploading asset %s", file_path)
|
|
475
|
+
status_code = (
|
|
476
|
+
err.response.status_code if err.response is not None else "unknown"
|
|
477
|
+
)
|
|
478
|
+
error_msg = f"Failed to upload asset '{file_path}' to release"
|
|
479
|
+
if status_code != "unknown":
|
|
480
|
+
error_msg += f" (HTTP {status_code})"
|
|
481
|
+
errors.append(error_msg)
|
|
482
|
+
|
|
483
|
+
if errors:
|
|
484
|
+
raise AssetUploadError("\n".join(errors))
|
|
474
485
|
|
|
475
486
|
return n_succeeded
|
|
476
487
|
|