python-semantic-release 9.15.0__tar.gz → 9.15.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-9.15.0/src/python_semantic_release.egg-info → python_semantic_release-9.15.2}/PKG-INFO +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/automatic-releases/github-actions.rst +5 -5
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/pyproject.toml +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2/src/python_semantic_release.egg-info}/PKG-INFO +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/python_semantic_release.egg-info/SOURCES.txt +17 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/__init__.py +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/__main__.py +8 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/changelog/template.py +2 -2
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/commands/main.py +11 -2
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/commands/version.py +1 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/config.py +8 -4
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/angular.py +6 -2
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/emoji.py +2 -2
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/util.py +11 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/changes.md.j2 +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/enums.py +30 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/gitproject.py +50 -20
- python_semantic_release-9.15.2/src/semantic_release/version/algorithm.py +382 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_config/test_generate_config.py +161 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/conftest.py +135 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +179 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +179 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +181 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +179 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +179 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +179 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +179 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +185 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +205 -0
- python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +199 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/example_project.py +60 -10
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/git_repo.py +108 -21
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +1 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +2 -1
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/trunk_based_dev/__init__.py +2 -0
- python_semantic_release-9.15.2/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +460 -0
- python_semantic_release-9.15.2/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +545 -0
- python_semantic_release-9.15.2/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/commit_parser/test_angular.py +12 -2
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/commit_parser/test_emoji.py +12 -2
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/commit_parser/test_scipy.py +12 -2
- python_semantic_release-9.15.2/tests/unit/semantic_release/hvcs/__init__.py +0 -0
- python_semantic_release-9.15.2/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- python_semantic_release-9.15.2/tests/unit/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/version/test_algorithm.py +167 -186
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/util.py +8 -3
- python_semantic_release-9.15.0/src/semantic_release/version/algorithm.py +0 -457
- python_semantic_release-9.15.0/tests/e2e/cmd_config/test_generate_config.py +0 -76
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/AUTHORS.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/LICENSE +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/MANIFEST.in +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/README.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/Makefile +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/algorithm.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/automatic-releases/index.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/automatic-releases/travis.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/changelog_templates.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/commands.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/commit_parsing.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/conf.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/configuration.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/contributing.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/contributors.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/index.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/make.bat +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/migrating_from_v7.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/multibranch_releases.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/strict_mode.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/docs/troubleshooting.rst +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/setup.cfg +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/python_semantic_release.egg-info/dependency_links.txt +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/python_semantic_release.egg-info/entry_points.txt +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/python_semantic_release.egg-info/requires.txt +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/python_semantic_release.egg-info/top_level.txt +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/changelog/context.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/changelog/release_history.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/changelog_writer.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/commands/changelog.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/commands/generate_config.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/commands/publish.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/masking_filter.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/util.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/tag.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/commit_parser/token.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/const.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/changelog_header.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/changelog_init.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/changelog_update.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/unreleased_changes.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/md/CHANGELOG.md.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/changelog_header.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/changelog_init.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/changes.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/.components/versioned_changes.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/data/templates/angular/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/errors.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/globals.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/helpers.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/bitbucket.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/gitea.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/github.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/gitlab.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/version/declaration.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/version/translator.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/version/version.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/conftest.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/const.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_changelog/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_config/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_publish/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_publish/test_publish.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/__init__.py +0 -0
- {python_semantic_release-9.15.0/tests/unit → python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version}/__init__.py +0 -0
- {python_semantic_release-9.15.0/tests/unit/semantic_release → python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/git_flow}/__init__.py +0 -0
- {python_semantic_release-9.15.0/tests/unit/semantic_release/changelog → python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/github_flow}/__init__.py +0 -0
- {python_semantic_release-9.15.0/tests/unit/semantic_release/cli → python_semantic_release-9.15.2/tests/e2e/cmd_version/bump_version/trunk_based_dev}/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_build.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_bump.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_print.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_stamp.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/cmd_version/test_version_strict.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/conftest.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/test_help.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/e2e/test_main.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/commit_parsers.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/repo_initial_commit.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-9.15.0/tests/unit/semantic_release/commit_parser → python_semantic_release-9.15.2/tests/unit}/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/conftest.py +0 -0
- {python_semantic_release-9.15.0/tests/unit/semantic_release/hvcs → python_semantic_release-9.15.2/tests/unit/semantic_release}/__init__.py +0 -0
- {python_semantic_release-9.15.0/tests/unit/semantic_release/version → python_semantic_release-9.15.2/tests/unit/semantic_release/changelog}/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/conftest.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- /python_semantic_release-9.15.0/tests/unit/semantic_release/hvcs/test_util.py → /python_semantic_release-9.15.2/tests/unit/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/cli/test_config.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/test_helpers.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/version/test_declaration.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/tests/unit/semantic_release/version/test_version.py +0 -0
|
@@ -337,7 +337,7 @@ before the :ref:`version <cmd-version>` subcommand.
|
|
|
337
337
|
|
|
338
338
|
.. code:: yaml
|
|
339
339
|
|
|
340
|
-
- uses: python-semantic-release/python-semantic-release@v9.15.
|
|
340
|
+
- uses: python-semantic-release/python-semantic-release@v9.15.2
|
|
341
341
|
with:
|
|
342
342
|
root_options: "-vv --noop"
|
|
343
343
|
|
|
@@ -684,7 +684,7 @@ to the GitHub Release Assets as well.
|
|
|
684
684
|
- name: Action | Semantic Version Release
|
|
685
685
|
id: release
|
|
686
686
|
# Adjust tag with desired version if applicable.
|
|
687
|
-
uses: python-semantic-release/python-semantic-release@v9.15.
|
|
687
|
+
uses: python-semantic-release/python-semantic-release@v9.15.2
|
|
688
688
|
with:
|
|
689
689
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
690
690
|
git_committer_name: "github-actions"
|
|
@@ -744,7 +744,7 @@ The equivalent GitHub Action configuration would be:
|
|
|
744
744
|
|
|
745
745
|
- name: Action | Semantic Version Release
|
|
746
746
|
# Adjust tag with desired version if applicable.
|
|
747
|
-
uses: python-semantic-release/python-semantic-release@v9.15.
|
|
747
|
+
uses: python-semantic-release/python-semantic-release@v9.15.2
|
|
748
748
|
with:
|
|
749
749
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
750
750
|
force: patch
|
|
@@ -772,13 +772,13 @@ Publish Action.
|
|
|
772
772
|
.. code:: yaml
|
|
773
773
|
|
|
774
774
|
- name: Release Project 1
|
|
775
|
-
uses: python-semantic-release/python-semantic-release@v9.15.
|
|
775
|
+
uses: python-semantic-release/python-semantic-release@v9.15.2
|
|
776
776
|
with:
|
|
777
777
|
directory: ./project1
|
|
778
778
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
779
779
|
|
|
780
780
|
- name: Release Project 2
|
|
781
|
-
uses: python-semantic-release/python-semantic-release@v9.15.
|
|
781
|
+
uses: python-semantic-release/python-semantic-release@v9.15.2
|
|
782
782
|
with:
|
|
783
783
|
directory: ./project2
|
|
784
784
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -121,6 +121,21 @@ tests/e2e/cmd_version/test_version_print.py
|
|
|
121
121
|
tests/e2e/cmd_version/test_version_release_notes.py
|
|
122
122
|
tests/e2e/cmd_version/test_version_stamp.py
|
|
123
123
|
tests/e2e/cmd_version/test_version_strict.py
|
|
124
|
+
tests/e2e/cmd_version/bump_version/__init__.py
|
|
125
|
+
tests/e2e/cmd_version/bump_version/conftest.py
|
|
126
|
+
tests/e2e/cmd_version/bump_version/git_flow/__init__.py
|
|
127
|
+
tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py
|
|
128
|
+
tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py
|
|
129
|
+
tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py
|
|
130
|
+
tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py
|
|
131
|
+
tests/e2e/cmd_version/bump_version/github_flow/__init__.py
|
|
132
|
+
tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py
|
|
133
|
+
tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py
|
|
134
|
+
tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py
|
|
135
|
+
tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py
|
|
136
|
+
tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py
|
|
137
|
+
tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py
|
|
138
|
+
tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py
|
|
124
139
|
tests/fixtures/__init__.py
|
|
125
140
|
tests/fixtures/commit_parsers.py
|
|
126
141
|
tests/fixtures/example_project.py
|
|
@@ -137,6 +152,8 @@ tests/fixtures/repos/github_flow/__init__.py
|
|
|
137
152
|
tests/fixtures/repos/github_flow/repo_w_default_release.py
|
|
138
153
|
tests/fixtures/repos/github_flow/repo_w_release_channels.py
|
|
139
154
|
tests/fixtures/repos/trunk_based_dev/__init__.py
|
|
155
|
+
tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py
|
|
156
|
+
tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py
|
|
140
157
|
tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py
|
|
141
158
|
tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py
|
|
142
159
|
tests/fixtures/repos/trunk_based_dev/repo_w_tags.py
|
{python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/__main__.py
RENAMED
|
@@ -34,7 +34,15 @@ def main() -> None:
|
|
|
34
34
|
),
|
|
35
35
|
file=sys.stderr,
|
|
36
36
|
)
|
|
37
|
+
|
|
37
38
|
print(f"::ERROR:: {err}", file=sys.stderr)
|
|
39
|
+
|
|
40
|
+
if not globals.debug:
|
|
41
|
+
print(
|
|
42
|
+
"Run semantic-release in very verbose mode (-vv) to see the full traceback.",
|
|
43
|
+
file=sys.stderr,
|
|
44
|
+
)
|
|
45
|
+
|
|
38
46
|
sys.exit(1)
|
|
39
47
|
|
|
40
48
|
|
|
@@ -124,9 +124,9 @@ def recursive_render(
|
|
|
124
124
|
# is used for inserting into a current changelog. When using stream rendering
|
|
125
125
|
# of the same file, it always came back empty
|
|
126
126
|
log.debug("rendering %s to %s", src_file_path, output_file_path)
|
|
127
|
-
rendered_file = environment.get_template(src_file_path).render()
|
|
127
|
+
rendered_file = environment.get_template(src_file_path).render().rstrip()
|
|
128
128
|
with open(output_file_path, "w", encoding="utf-8") as output_file:
|
|
129
|
-
output_file.write(rendered_file)
|
|
129
|
+
output_file.write(f"{rendered_file}\n")
|
|
130
130
|
|
|
131
131
|
rendered_paths.append(output_file_path)
|
|
132
132
|
else:
|
|
@@ -15,6 +15,7 @@ from semantic_release.cli.cli_context import CliContextObj
|
|
|
15
15
|
from semantic_release.cli.config import GlobalCommandLineOptions
|
|
16
16
|
from semantic_release.cli.const import DEFAULT_CONFIG_FILE
|
|
17
17
|
from semantic_release.cli.util import rprint
|
|
18
|
+
from semantic_release.enums import SemanticReleaseLogLevels
|
|
18
19
|
|
|
19
20
|
# if TYPE_CHECKING:
|
|
20
21
|
# pass
|
|
@@ -108,7 +109,15 @@ def main(
|
|
|
108
109
|
"""
|
|
109
110
|
console = Console(stderr=True)
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
log_levels = [
|
|
113
|
+
SemanticReleaseLogLevels.WARNING,
|
|
114
|
+
SemanticReleaseLogLevels.INFO,
|
|
115
|
+
SemanticReleaseLogLevels.DEBUG,
|
|
116
|
+
SemanticReleaseLogLevels.SILLY,
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
log_level = log_levels[verbosity]
|
|
120
|
+
|
|
112
121
|
logging.basicConfig(
|
|
113
122
|
level=log_level,
|
|
114
123
|
format=FORMAT,
|
|
@@ -123,7 +132,7 @@ def main(
|
|
|
123
132
|
logger = logging.getLogger(__name__)
|
|
124
133
|
logger.debug("logging level set to: %s", logging.getLevelName(log_level))
|
|
125
134
|
|
|
126
|
-
if log_level
|
|
135
|
+
if log_level <= logging.DEBUG:
|
|
127
136
|
globals.debug = True
|
|
128
137
|
|
|
129
138
|
if noop:
|
{python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/cli/config.py
RENAMED
|
@@ -360,9 +360,12 @@ class RawConfig(BaseModel):
|
|
|
360
360
|
try:
|
|
361
361
|
# Check for repository & walk up parent directories
|
|
362
362
|
with Repo(str(dir_path), search_parent_directories=True) as git_repo:
|
|
363
|
-
found_path =
|
|
364
|
-
git_repo.working_tree_dir or git_repo.working_dir
|
|
365
|
-
|
|
363
|
+
found_path = (
|
|
364
|
+
Path(git_repo.working_tree_dir or git_repo.working_dir)
|
|
365
|
+
.expanduser()
|
|
366
|
+
.absolute()
|
|
367
|
+
)
|
|
368
|
+
|
|
366
369
|
except InvalidGitRepositoryError as err:
|
|
367
370
|
raise InvalidGitRepositoryError("No valid git repository found!") from err
|
|
368
371
|
|
|
@@ -370,7 +373,8 @@ class RawConfig(BaseModel):
|
|
|
370
373
|
logging.warning(
|
|
371
374
|
"Found .git/ in higher parent directory rather than provided in configuration."
|
|
372
375
|
)
|
|
373
|
-
|
|
376
|
+
|
|
377
|
+
return found_path.resolve()
|
|
374
378
|
|
|
375
379
|
@field_validator("commit_parser", mode="after")
|
|
376
380
|
@classmethod
|
|
@@ -21,7 +21,11 @@ from semantic_release.commit_parser.token import (
|
|
|
21
21
|
ParseError,
|
|
22
22
|
ParseResult,
|
|
23
23
|
)
|
|
24
|
-
from semantic_release.commit_parser.util import
|
|
24
|
+
from semantic_release.commit_parser.util import (
|
|
25
|
+
breaking_re,
|
|
26
|
+
parse_paragraphs,
|
|
27
|
+
sort_numerically,
|
|
28
|
+
)
|
|
25
29
|
from semantic_release.enums import LevelBump
|
|
26
30
|
from semantic_release.errors import InvalidParserOptions
|
|
27
31
|
|
|
@@ -195,7 +199,7 @@ class AngularCommitParser(CommitParser[ParseResult, AngularParserOptions]):
|
|
|
195
199
|
predicate.split(","),
|
|
196
200
|
)
|
|
197
201
|
)
|
|
198
|
-
accumulator["linked_issues"] =
|
|
202
|
+
accumulator["linked_issues"] = sort_numerically(
|
|
199
203
|
set(accumulator["linked_issues"]).union(new_issue_refs)
|
|
200
204
|
)
|
|
201
205
|
# TODO: breaking change v10, removes resolution footers from descriptions
|
|
@@ -18,7 +18,7 @@ from semantic_release.commit_parser.token import (
|
|
|
18
18
|
ParsedMessageResult,
|
|
19
19
|
ParseResult,
|
|
20
20
|
)
|
|
21
|
-
from semantic_release.commit_parser.util import parse_paragraphs
|
|
21
|
+
from semantic_release.commit_parser.util import parse_paragraphs, sort_numerically
|
|
22
22
|
from semantic_release.enums import LevelBump
|
|
23
23
|
from semantic_release.errors import InvalidParserOptions
|
|
24
24
|
|
|
@@ -186,7 +186,7 @@ class EmojiCommitParser(CommitParser[ParseResult, EmojiParserOptions]):
|
|
|
186
186
|
predicate.split(","),
|
|
187
187
|
)
|
|
188
188
|
)
|
|
189
|
-
accumulator["linked_issues"] =
|
|
189
|
+
accumulator["linked_issues"] = sort_numerically(
|
|
190
190
|
set(accumulator["linked_issues"]).union(new_issue_refs)
|
|
191
191
|
)
|
|
192
192
|
# TODO: breaking change v10, removes resolution footers from descriptions
|
|
@@ -6,28 +6,34 @@ from typing import TYPE_CHECKING
|
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING: # pragma: no cover
|
|
8
8
|
from re import Pattern
|
|
9
|
-
from typing import TypedDict
|
|
9
|
+
from typing import Sequence, TypedDict
|
|
10
10
|
|
|
11
11
|
class RegexReplaceDef(TypedDict):
|
|
12
12
|
pattern: Pattern
|
|
13
13
|
repl: str
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
number_pattern = regexp(r"(\d+)")
|
|
17
|
+
|
|
16
18
|
breaking_re = regexp(r"BREAKING[ -]CHANGE:\s?(.*)")
|
|
19
|
+
|
|
17
20
|
un_word_wrap: RegexReplaceDef = {
|
|
18
21
|
# Match a line ending where the next line is not indented, or a bullet
|
|
19
22
|
"pattern": regexp(r"((?<!-)\n(?![\s*-]))"),
|
|
20
23
|
"repl": r" ", # Replace with a space
|
|
21
24
|
}
|
|
25
|
+
|
|
22
26
|
un_word_wrap_hyphen: RegexReplaceDef = {
|
|
23
27
|
"pattern": regexp(r"((?<=\w)-\n(?=\w))"),
|
|
24
28
|
"repl": r"-", # Replace with single hyphen
|
|
25
29
|
}
|
|
30
|
+
|
|
26
31
|
trim_line_endings: RegexReplaceDef = {
|
|
27
32
|
# Match line endings with optional whitespace
|
|
28
33
|
"pattern": regexp(r"[\r\t\f\v ]*\r?\n"),
|
|
29
34
|
"repl": "\n", # remove the optional whitespace & remove windows newlines
|
|
30
35
|
}
|
|
36
|
+
|
|
31
37
|
spread_out_git_footers: RegexReplaceDef = {
|
|
32
38
|
# Match a git footer line, and add an extra newline after it
|
|
33
39
|
# only be flexible enough for a double space indent (otherwise its probably on purpose)
|
|
@@ -65,3 +71,7 @@ def parse_paragraphs(text: str) -> list[str]:
|
|
|
65
71
|
],
|
|
66
72
|
)
|
|
67
73
|
)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def sort_numerically(iterable: Sequence[str] | set[str]) -> list[str]:
|
|
77
|
+
return sorted(iterable, key=lambda x: int((number_pattern.search(x) or [-1])[0]))
|
|
@@ -69,7 +69,7 @@ EXAMPLE:
|
|
|
69
69
|
#}{% if breaking_commits | length > 0
|
|
70
70
|
%}{# PREPROCESS COMMITS
|
|
71
71
|
#}{% set brk_ns = namespace(commits=breaking_commits)
|
|
72
|
-
%}{{
|
|
72
|
+
%}{{ apply_alphabetical_ordering_by_brk_descriptions(brk_ns) | default("", true)
|
|
73
73
|
}}{#
|
|
74
74
|
#}{% set brking_descriptions = []
|
|
75
75
|
%}{#
|
{python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/enums.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import logging
|
|
3
4
|
from enum import IntEnum, unique
|
|
4
5
|
|
|
5
6
|
|
|
@@ -37,3 +38,32 @@ class LevelBump(IntEnum):
|
|
|
37
38
|
>>> LevelBump.from_string("minor") == LevelBump.MINOR
|
|
38
39
|
"""
|
|
39
40
|
return cls[val.upper().replace("-", "_")]
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class SemanticReleaseLogLevels(IntEnum):
|
|
44
|
+
"""IntEnum representing the log levels used by semantic-release."""
|
|
45
|
+
|
|
46
|
+
FATAL = logging.FATAL
|
|
47
|
+
CRITICAL = logging.CRITICAL
|
|
48
|
+
ERROR = logging.ERROR
|
|
49
|
+
WARNING = logging.WARNING
|
|
50
|
+
INFO = logging.INFO
|
|
51
|
+
DEBUG = logging.DEBUG
|
|
52
|
+
SILLY = 5
|
|
53
|
+
|
|
54
|
+
def __str__(self) -> str:
|
|
55
|
+
"""
|
|
56
|
+
Return the level name rather than 'SemanticReleaseLogLevels.<level>'
|
|
57
|
+
E.g.
|
|
58
|
+
>>> str(SemanticReleaseLogLevels.DEBUG)
|
|
59
|
+
'DEBUG'
|
|
60
|
+
>>> str(SemanticReleaseLogLevels.CRITICAL)
|
|
61
|
+
'CRITICAL'
|
|
62
|
+
"""
|
|
63
|
+
return self.name.upper()
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
logging.addLevelName(
|
|
67
|
+
SemanticReleaseLogLevels.SILLY,
|
|
68
|
+
str(SemanticReleaseLogLevels.SILLY),
|
|
69
|
+
)
|
{python_semantic_release-9.15.0 → python_semantic_release-9.15.2}/src/semantic_release/gitproject.py
RENAMED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from contextlib import nullcontext
|
|
6
|
+
from datetime import datetime
|
|
6
7
|
from logging import getLogger
|
|
7
8
|
from pathlib import Path
|
|
8
9
|
from typing import TYPE_CHECKING
|
|
@@ -48,7 +49,9 @@ class GitProject:
|
|
|
48
49
|
return self._logger
|
|
49
50
|
|
|
50
51
|
def _get_custom_environment(
|
|
51
|
-
self,
|
|
52
|
+
self,
|
|
53
|
+
repo: Repo,
|
|
54
|
+
custom_vars: dict[str, str] | None = None,
|
|
52
55
|
) -> nullcontext[None] | _GeneratorContextManager[None]:
|
|
53
56
|
"""
|
|
54
57
|
git.custom_environment is a context manager but
|
|
@@ -56,15 +59,26 @@ class GitProject:
|
|
|
56
59
|
we need to throw it away and re-create it in
|
|
57
60
|
order to use it again
|
|
58
61
|
"""
|
|
62
|
+
author_vars = (
|
|
63
|
+
{
|
|
64
|
+
"GIT_AUTHOR_NAME": self._commit_author.name,
|
|
65
|
+
"GIT_AUTHOR_EMAIL": self._commit_author.email,
|
|
66
|
+
"GIT_COMMITTER_NAME": self._commit_author.name,
|
|
67
|
+
"GIT_COMMITTER_EMAIL": self._commit_author.email,
|
|
68
|
+
}
|
|
69
|
+
if self._commit_author
|
|
70
|
+
else {}
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
custom_env_vars = {
|
|
74
|
+
**author_vars,
|
|
75
|
+
**(custom_vars or {}),
|
|
76
|
+
}
|
|
77
|
+
|
|
59
78
|
return (
|
|
60
79
|
nullcontext()
|
|
61
|
-
if not
|
|
62
|
-
else repo.git.custom_environment(
|
|
63
|
-
GIT_AUTHOR_NAME=self._commit_author.name,
|
|
64
|
-
GIT_AUTHOR_EMAIL=self._commit_author.email,
|
|
65
|
-
GIT_COMMITTER_NAME=self._commit_author.name,
|
|
66
|
-
GIT_COMMITTER_EMAIL=self._commit_author.email,
|
|
67
|
-
)
|
|
80
|
+
if not custom_env_vars
|
|
81
|
+
else repo.git.custom_environment(**custom_env_vars)
|
|
68
82
|
)
|
|
69
83
|
|
|
70
84
|
def is_dirty(self) -> bool:
|
|
@@ -182,19 +196,32 @@ class GitProject:
|
|
|
182
196
|
self.logger.exception(str(err))
|
|
183
197
|
raise GitCommitError("Failed to commit changes") from err
|
|
184
198
|
|
|
185
|
-
def git_tag(
|
|
199
|
+
def git_tag(
|
|
200
|
+
self, tag_name: str, message: str, isotimestamp: str, noop: bool = False
|
|
201
|
+
) -> None:
|
|
202
|
+
try:
|
|
203
|
+
datetime.fromisoformat(isotimestamp)
|
|
204
|
+
except ValueError as err:
|
|
205
|
+
raise ValueError("Invalid timestamp format") from err
|
|
206
|
+
|
|
186
207
|
if noop:
|
|
187
|
-
command = (
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
208
|
+
command = str.join(
|
|
209
|
+
" ",
|
|
210
|
+
[
|
|
211
|
+
f"GIT_COMMITTER_DATE={isotimestamp}",
|
|
212
|
+
*(
|
|
213
|
+
[
|
|
214
|
+
f"GIT_AUTHOR_NAME={self._commit_author.name}",
|
|
215
|
+
f"GIT_AUTHOR_EMAIL={self._commit_author.email}",
|
|
216
|
+
f"GIT_COMMITTER_NAME={self._commit_author.name}",
|
|
217
|
+
f"GIT_COMMITTER_EMAIL={self._commit_author.email}",
|
|
218
|
+
]
|
|
219
|
+
if self._commit_author
|
|
220
|
+
else [""]
|
|
221
|
+
),
|
|
222
|
+
f"git tag -a {tag_name} -m '{message}'",
|
|
223
|
+
],
|
|
196
224
|
)
|
|
197
|
-
command += f"git tag -a {tag_name} -m '{message}'"
|
|
198
225
|
|
|
199
226
|
noop_report(
|
|
200
227
|
indented(
|
|
@@ -206,7 +233,10 @@ class GitProject:
|
|
|
206
233
|
)
|
|
207
234
|
return
|
|
208
235
|
|
|
209
|
-
with Repo(str(self.project_root)) as repo, self._get_custom_environment(
|
|
236
|
+
with Repo(str(self.project_root)) as repo, self._get_custom_environment(
|
|
237
|
+
repo,
|
|
238
|
+
{"GIT_COMMITTER_DATE": isotimestamp},
|
|
239
|
+
):
|
|
210
240
|
try:
|
|
211
241
|
repo.git.tag("-a", tag_name, m=message)
|
|
212
242
|
except GitCommandError as err:
|