python-semantic-release 10.5.2__tar.gz → 10.5.3__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.2 → python_semantic_release-10.5.3}/PKG-INFO +1 -1
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/automatic-releases/github-actions.rst +7 -7
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/pyproject.toml +2 -1
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/commands/version.py +1 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/conventional/options_monorepo.py +26 -17
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/gitproject.py +46 -2
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/git_repo.py +16 -36
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/example_monorepo.py +42 -2
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/github_flow/monorepo_w_default_release.py +21 -8
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/github_flow/monorepo_w_release_channels.py +15 -10
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/trunk_based_dev/monorepo_w_tags.py +23 -7
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/test_gitproject.py +20 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/LICENSE +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/MANIFEST.in +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/README.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/Makefile +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/api/commands.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/changelog_templates.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/commit_parsing.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/getting_started.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/installation.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/multibranch_releases.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/concepts/strict_mode.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/conf.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/automatic-releases/cronjobs.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/automatic-releases/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/automatic-releases/travis.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/configuration-guides/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/configuration-guides/monorepos-ex-easy-before-release.png +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/configuration-guides/monorepos-ex-easy-post-release.png +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/configuration-guides/monorepos.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/configuration-guides/uv_integration.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/configuration.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/configuration/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/contributing/contributing_guide.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/contributing/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/make.bat +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/misc/psr_changelog.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/misc/troubleshooting.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/upgrading/08-upgrade.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/upgrading/09-upgrade.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/upgrading/10-upgrade.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/docs/upgrading/index.rst +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/setup.cfg +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/python_semantic_release.egg-info/SOURCES.txt +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/__main__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/changelog/context.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/changelog/release_history.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/changelog/template.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/changelog_writer.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/cli_context.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/commands/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/commands/changelog.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/commands/generate_config.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/commands/main.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/commands/publish.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/config.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/const.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/github_actions_output.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/masking_filter.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/cli/util.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/_base.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/angular.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/conventional/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/conventional/options.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/conventional/parser.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/conventional/parser_monorepo.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/emoji.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/scipy.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/tag.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/token.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/commit_parser/util.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/const.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/changelog_header.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/changelog_init.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/changelog_update.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/changes.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/first_release.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/macros.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/unreleased_changes.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.components/versioned_changes.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/.release_notes.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/md/CHANGELOG.md.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/changelog_header.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/changelog_init.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/changelog_update.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/changes.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/first_release.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/macros.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/unreleased_changes.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/.components/versioned_changes.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/data/templates/conventional/rst/CHANGELOG.rst.j2 +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/enums.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/errors.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/globals.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/helpers.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/_base.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/bitbucket.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/gitea.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/github.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/gitlab.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/token_auth.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/hvcs/util.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/py.typed +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/algorithm.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/declaration.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/declarations/enum.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/declarations/i_version_replacer.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/declarations/pattern.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/declarations/toml.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/translator.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/version/version.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/conftest.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/const.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_changelog/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_config/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_config/test_generate_config.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_publish/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_publish/test_publish.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel_branch_update_merge.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_1_channel.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/github_flow_monorepo/test_monorepo_2_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/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.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/bump_version/trunk_based_dev_monorepo/test_monorepo_trunk.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_build.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_bump.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_partial_tag.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_print.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_shallow.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_stamp.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_strict.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/cmd_version/test_version_upstream_check.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/conftest.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/test_help.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/e2e/test_main.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/commit_parsers.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/example_project.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/git_monorepo.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/monorepos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/git_flow/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/github_flow/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/github_flow/repo_w_default_release_w_branch_update_merge.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/repo_initial_commit.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/scipy.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/conftest.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/conftest.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/test_template.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/cli/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/cli/test_config.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/cli/test_util.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/cli/test_version.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/commit_parser/test_conventional.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/commit_parser/test_emoji.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/test_helpers.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/test_translator.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/unit/semantic_release/version/test_version.py +0 -0
- {python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/util.py +0 -0
|
@@ -893,14 +893,14 @@ to the GitHub Release Assets as well.
|
|
|
893
893
|
- name: Action | Semantic Version Release
|
|
894
894
|
id: release
|
|
895
895
|
# Adjust tag with desired version if applicable.
|
|
896
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
896
|
+
uses: python-semantic-release/python-semantic-release@v10.5.3
|
|
897
897
|
with:
|
|
898
898
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
899
899
|
git_committer_name: "github-actions"
|
|
900
900
|
git_committer_email: "actions@users.noreply.github.com"
|
|
901
901
|
|
|
902
902
|
- name: Publish | Upload to GitHub Release Assets
|
|
903
|
-
uses: python-semantic-release/publish-action@v10.5.
|
|
903
|
+
uses: python-semantic-release/publish-action@v10.5.3
|
|
904
904
|
if: steps.release.outputs.released == 'true'
|
|
905
905
|
with:
|
|
906
906
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1005,7 +1005,7 @@ The equivalent GitHub Action configuration would be:
|
|
|
1005
1005
|
|
|
1006
1006
|
- name: Action | Semantic Version Release
|
|
1007
1007
|
# Adjust tag with desired version if applicable.
|
|
1008
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
1008
|
+
uses: python-semantic-release/python-semantic-release@v10.5.3
|
|
1009
1009
|
with:
|
|
1010
1010
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
1011
1011
|
force: patch
|
|
@@ -1064,14 +1064,14 @@ Publish Action.
|
|
|
1064
1064
|
|
|
1065
1065
|
- name: Release submodule 1
|
|
1066
1066
|
id: release-submod-1
|
|
1067
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
1067
|
+
uses: python-semantic-release/python-semantic-release@v10.5.3
|
|
1068
1068
|
with:
|
|
1069
1069
|
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
1070
1070
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
1071
1071
|
|
|
1072
1072
|
- name: Release submodule 2
|
|
1073
1073
|
id: release-submod-2
|
|
1074
|
-
uses: python-semantic-release/python-semantic-release@v10.5.
|
|
1074
|
+
uses: python-semantic-release/python-semantic-release@v10.5.3
|
|
1075
1075
|
with:
|
|
1076
1076
|
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
1077
1077
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1083,7 +1083,7 @@ Publish Action.
|
|
|
1083
1083
|
# ------------------------------------------------------------------- #
|
|
1084
1084
|
|
|
1085
1085
|
- name: Publish | Upload package 1 to GitHub Release Assets
|
|
1086
|
-
uses: python-semantic-release/publish-action@v10.5.
|
|
1086
|
+
uses: python-semantic-release/publish-action@v10.5.3
|
|
1087
1087
|
if: steps.release-submod-1.outputs.released == 'true'
|
|
1088
1088
|
with:
|
|
1089
1089
|
directory: ${{ env.SUBMODULE_1_DIR }}
|
|
@@ -1091,7 +1091,7 @@ Publish Action.
|
|
|
1091
1091
|
tag: ${{ steps.release-submod-1.outputs.tag }}
|
|
1092
1092
|
|
|
1093
1093
|
- name: Publish | Upload package 2 to GitHub Release Assets
|
|
1094
|
-
uses: python-semantic-release/publish-action@v10.5.
|
|
1094
|
+
uses: python-semantic-release/publish-action@v10.5.3
|
|
1095
1095
|
if: steps.release-submod-2.outputs.released == 'true'
|
|
1096
1096
|
with:
|
|
1097
1097
|
directory: ${{ env.SUBMODULE_2_DIR }}
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "python-semantic-release"
|
|
9
|
-
version = "10.5.
|
|
9
|
+
version = "10.5.3"
|
|
10
10
|
description = "Automatic Semantic Versioning for Python projects"
|
|
11
11
|
requires-python = "~= 3.8"
|
|
12
12
|
license = { text = "MIT" }
|
|
@@ -409,6 +409,7 @@ sections = { "tests" = ["tests"] }
|
|
|
409
409
|
ignore_names = ["change_to_ex_proj_dir", "init_example_project"]
|
|
410
410
|
|
|
411
411
|
[tool.semantic_release]
|
|
412
|
+
add_partial_tags = true
|
|
412
413
|
logging_use_named_masks = true
|
|
413
414
|
commit_parser = "conventional"
|
|
414
415
|
commit_parser_options = { parse_squash_commits = true, ignore_merge_commits = true }
|
|
@@ -43,37 +43,46 @@ class ConventionalCommitMonorepoParserOptions(ConventionalCommitParserOptions):
|
|
|
43
43
|
to match them literally.
|
|
44
44
|
"""
|
|
45
45
|
|
|
46
|
-
@classmethod
|
|
47
46
|
@field_validator("path_filters", mode="before")
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
@classmethod
|
|
48
|
+
def convert_strs_to_paths(cls, value: Any) -> tuple[str, ...]:
|
|
49
|
+
if isinstance(value, str):
|
|
50
|
+
return (value,)
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
results.append(Path(val))
|
|
55
|
-
continue
|
|
52
|
+
if isinstance(value, Path):
|
|
53
|
+
return (str(value),)
|
|
56
54
|
|
|
57
|
-
|
|
55
|
+
if isinstance(value, Iterable):
|
|
56
|
+
results: list[str] = []
|
|
57
|
+
for val in value:
|
|
58
|
+
if isinstance(val, (str, Path)):
|
|
59
|
+
results.append(str(Path(val)))
|
|
60
|
+
continue
|
|
58
61
|
|
|
59
|
-
|
|
62
|
+
msg = f"Invalid type: {type(val)}, expected str or Path."
|
|
63
|
+
raise TypeError(msg)
|
|
64
|
+
|
|
65
|
+
return tuple(results)
|
|
66
|
+
|
|
67
|
+
msg = f"Invalid type: {type(value)}, expected str, Path, or Iterable."
|
|
68
|
+
raise TypeError(msg)
|
|
60
69
|
|
|
61
|
-
@classmethod
|
|
62
70
|
@field_validator("path_filters", mode="after")
|
|
63
|
-
|
|
71
|
+
@classmethod
|
|
72
|
+
def resolve_path(cls, dir_path_strs: tuple[str, ...]) -> tuple[str, ...]:
|
|
64
73
|
return tuple(
|
|
65
74
|
(
|
|
66
|
-
|
|
75
|
+
f"!{Path(str_path[1:]).expanduser().absolute().resolve()}"
|
|
67
76
|
# maintains the negation prefix if it exists
|
|
68
|
-
if
|
|
77
|
+
if str_path.startswith("!")
|
|
69
78
|
# otherwise, resolve the path normally
|
|
70
|
-
else
|
|
79
|
+
else str(Path(str_path).expanduser().absolute().resolve())
|
|
71
80
|
)
|
|
72
|
-
for
|
|
81
|
+
for str_path in dir_path_strs
|
|
73
82
|
)
|
|
74
83
|
|
|
75
|
-
@classmethod
|
|
76
84
|
@field_validator("scope_prefix", mode="after")
|
|
85
|
+
@classmethod
|
|
77
86
|
def validate_scope_prefix(cls, scope_prefix: str) -> str:
|
|
78
87
|
if not scope_prefix:
|
|
79
88
|
return ""
|
{python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/src/semantic_release/gitproject.py
RENAMED
|
@@ -336,13 +336,18 @@ class GitProject:
|
|
|
336
336
|
raise GitPushError(f"Failed to push tag ({tag}) to remote") from err
|
|
337
337
|
|
|
338
338
|
def verify_upstream_unchanged( # noqa: C901
|
|
339
|
-
self,
|
|
339
|
+
self,
|
|
340
|
+
local_ref: str = "HEAD",
|
|
341
|
+
upstream_ref: str = "origin",
|
|
342
|
+
remote_url: str | None = None,
|
|
343
|
+
noop: bool = False,
|
|
340
344
|
) -> None:
|
|
341
345
|
"""
|
|
342
346
|
Verify that the upstream branch has not changed since the given local reference.
|
|
343
347
|
|
|
344
348
|
:param local_ref: The local reference to compare against upstream (default: HEAD)
|
|
345
349
|
:param upstream_ref: The name of the upstream remote or specific remote branch (default: origin)
|
|
350
|
+
:param remote_url: Optional authenticated remote URL to use for fetching (default: None, uses configured remote)
|
|
346
351
|
:param noop: Whether to skip the actual verification (for dry-run mode)
|
|
347
352
|
|
|
348
353
|
:raises UpstreamBranchChangedError: If the upstream branch has changed
|
|
@@ -409,7 +414,46 @@ class GitProject:
|
|
|
409
414
|
# Fetch the latest changes from the remote
|
|
410
415
|
self.logger.info("Fetching latest changes from remote '%s'", remote_name)
|
|
411
416
|
try:
|
|
412
|
-
|
|
417
|
+
# Check if we should use authenticated URL for fetch
|
|
418
|
+
# Only use remote_url if:
|
|
419
|
+
# 1. It's provided and different from the configured remote URL
|
|
420
|
+
# 2. It contains authentication credentials (@ symbol)
|
|
421
|
+
# 3. The configured remote is NOT a local path, file:// URL, or test URL (example.com)
|
|
422
|
+
# This ensures we don't break tests or local development
|
|
423
|
+
configured_url = remote_ref_obj.url
|
|
424
|
+
is_local_or_test_remote = (
|
|
425
|
+
configured_url.startswith(("file://", "/", "C:/", "H:/"))
|
|
426
|
+
or "example.com" in configured_url
|
|
427
|
+
or not configured_url.startswith(
|
|
428
|
+
(
|
|
429
|
+
"https://",
|
|
430
|
+
"http://",
|
|
431
|
+
"git://",
|
|
432
|
+
"git@",
|
|
433
|
+
"ssh://",
|
|
434
|
+
"git+ssh://",
|
|
435
|
+
)
|
|
436
|
+
)
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
use_authenticated_fetch = (
|
|
440
|
+
remote_url
|
|
441
|
+
and "@" in remote_url
|
|
442
|
+
and remote_url != configured_url
|
|
443
|
+
and not is_local_or_test_remote
|
|
444
|
+
)
|
|
445
|
+
|
|
446
|
+
if use_authenticated_fetch:
|
|
447
|
+
# Use authenticated remote URL for fetch
|
|
448
|
+
# Fetch the remote branch and update the local tracking ref
|
|
449
|
+
repo.git.fetch(
|
|
450
|
+
remote_url,
|
|
451
|
+
f"refs/heads/{remote_branch_name}:refs/remotes/{upstream_full_ref_name}",
|
|
452
|
+
)
|
|
453
|
+
else:
|
|
454
|
+
# Use the default remote configuration for local paths,
|
|
455
|
+
# file:// URLs, test URLs, or when no authentication is needed
|
|
456
|
+
remote_ref_obj.fetch()
|
|
413
457
|
except GitCommandError as err:
|
|
414
458
|
self.logger.exception(str(err))
|
|
415
459
|
err_msg = f"Failed to fetch from remote '{remote_name}'"
|
{python_semantic_release-10.5.2 → python_semantic_release-10.5.3}/tests/fixtures/git_repo.py
RENAMED
|
@@ -142,6 +142,7 @@ if TYPE_CHECKING:
|
|
|
142
142
|
sha: str
|
|
143
143
|
datetime: NotRequired[DatetimeISOStr]
|
|
144
144
|
include_in_changelog: bool
|
|
145
|
+
file_to_change: NotRequired[Path | str]
|
|
145
146
|
|
|
146
147
|
class BaseRepoVersionDef(TypedDict):
|
|
147
148
|
"""A Common Repo definition for a get_commits_repo_*() fixture with all commit convention types"""
|
|
@@ -290,6 +291,7 @@ if TYPE_CHECKING:
|
|
|
290
291
|
scipy: str
|
|
291
292
|
datetime: NotRequired[DatetimeISOStr]
|
|
292
293
|
include_in_changelog: NotRequired[bool]
|
|
294
|
+
file_to_change: NotRequired[Path | str]
|
|
293
295
|
|
|
294
296
|
class DetailsBase(TypedDict):
|
|
295
297
|
pre_actions: NotRequired[Sequence[RepoActions]]
|
|
@@ -1127,7 +1129,9 @@ def simulate_change_commits_n_rtn_changelog_entry(
|
|
|
1127
1129
|
changelog_entries: list[CommitDef] = []
|
|
1128
1130
|
for commit_msg in commit_msgs:
|
|
1129
1131
|
if not git_repo.is_dirty(index=True, working_tree=False):
|
|
1130
|
-
add_text_to_file(
|
|
1132
|
+
add_text_to_file(
|
|
1133
|
+
git_repo, str(commit_msg.get("file_to_change", file_in_repo))
|
|
1134
|
+
)
|
|
1131
1135
|
|
|
1132
1136
|
changelog_entries.append(commit_n_rtn_changelog_entry(git_repo, commit_msg))
|
|
1133
1137
|
|
|
@@ -1336,39 +1340,6 @@ def configure_base_repo( # noqa: C901
|
|
|
1336
1340
|
|
|
1337
1341
|
@pytest.fixture(scope="session")
|
|
1338
1342
|
def separate_squashed_commit_def() -> SeparateSquashedCommitDefFn:
|
|
1339
|
-
# default_conventional_parser: ConventionalCommitParser,
|
|
1340
|
-
# default_emoji_parser: EmojiCommitParser,
|
|
1341
|
-
# default_scipy_parser: ScipyCommitParser,
|
|
1342
|
-
# message_parsers: dict[
|
|
1343
|
-
# CommitConvention,
|
|
1344
|
-
# ConventionalCommitParser | EmojiCommitParser | ScipyCommitParser,
|
|
1345
|
-
# ] = {
|
|
1346
|
-
# "conventional": ConventionalCommitParser(
|
|
1347
|
-
# options=ConventionalCommitParserOptions(
|
|
1348
|
-
# **{
|
|
1349
|
-
# **default_conventional_parser.options.__dict__,
|
|
1350
|
-
# "parse_squash_commits": True,
|
|
1351
|
-
# }
|
|
1352
|
-
# )
|
|
1353
|
-
# ),
|
|
1354
|
-
# "emoji": EmojiCommitParser(
|
|
1355
|
-
# options=EmojiParserOptions(
|
|
1356
|
-
# **{
|
|
1357
|
-
# **default_emoji_parser.options.__dict__,
|
|
1358
|
-
# "parse_squash_commits": True,
|
|
1359
|
-
# }
|
|
1360
|
-
# )
|
|
1361
|
-
# ),
|
|
1362
|
-
# "scipy": ScipyCommitParser(
|
|
1363
|
-
# options=ScipyParserOptions(
|
|
1364
|
-
# **{
|
|
1365
|
-
# **default_scipy_parser.options.__dict__,
|
|
1366
|
-
# "parse_squash_commits": True,
|
|
1367
|
-
# }
|
|
1368
|
-
# )
|
|
1369
|
-
# ),
|
|
1370
|
-
# }
|
|
1371
|
-
|
|
1372
1343
|
def _separate_squashed_commit_def(
|
|
1373
1344
|
squashed_commit_def: CommitDef,
|
|
1374
1345
|
parser: SquashedCommitSupportedParser,
|
|
@@ -1435,7 +1406,7 @@ def convert_commit_spec_to_commit_def(
|
|
|
1435
1406
|
)
|
|
1436
1407
|
|
|
1437
1408
|
# Extract the correct commit message for the commit type
|
|
1438
|
-
|
|
1409
|
+
commit_def: CommitDef = {
|
|
1439
1410
|
**parse_msg_fn(commit_spec[commit_type], parser=parser),
|
|
1440
1411
|
"cid": commit_spec["cid"],
|
|
1441
1412
|
"datetime": (
|
|
@@ -1443,9 +1414,18 @@ def convert_commit_spec_to_commit_def(
|
|
|
1443
1414
|
if "datetime" in commit_spec
|
|
1444
1415
|
else stable_now_date.isoformat(timespec="seconds")
|
|
1445
1416
|
),
|
|
1446
|
-
"include_in_changelog":
|
|
1417
|
+
"include_in_changelog": commit_spec.get("include_in_changelog", True),
|
|
1447
1418
|
}
|
|
1448
1419
|
|
|
1420
|
+
if "file_to_change" in commit_spec:
|
|
1421
|
+
commit_def.update(
|
|
1422
|
+
{
|
|
1423
|
+
"file_to_change": commit_spec["file_to_change"],
|
|
1424
|
+
}
|
|
1425
|
+
)
|
|
1426
|
+
|
|
1427
|
+
return commit_def
|
|
1428
|
+
|
|
1449
1429
|
return _convert
|
|
1450
1430
|
|
|
1451
1431
|
|
|
@@ -68,8 +68,12 @@ def build_spec_hash_4_example_monorepo(
|
|
|
68
68
|
@pytest.fixture(scope="session")
|
|
69
69
|
def cached_example_monorepo(
|
|
70
70
|
build_repo_or_copy_cache: BuildRepoOrCopyCacheFn,
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
monorepo_pkg1_name: str,
|
|
72
|
+
monorepo_pkg2_name: str,
|
|
73
|
+
monorepo_pkg1_dir: str,
|
|
74
|
+
monorepo_pkg2_dir: str,
|
|
75
|
+
monorepo_pkg1_docs_dir: str,
|
|
76
|
+
monorepo_pkg2_docs_dir: str,
|
|
73
77
|
monorepo_pkg1_version_py_file: Path,
|
|
74
78
|
monorepo_pkg2_version_py_file: Path,
|
|
75
79
|
monorepo_pkg1_pyproject_toml_file: Path,
|
|
@@ -104,6 +108,13 @@ def cached_example_monorepo(
|
|
|
104
108
|
print("{pkg_name} Hello World")
|
|
105
109
|
'''
|
|
106
110
|
).lstrip()
|
|
111
|
+
doc_index_contents = dedent(
|
|
112
|
+
"""
|
|
113
|
+
==================
|
|
114
|
+
{pkg_name} Documentation
|
|
115
|
+
==================
|
|
116
|
+
"""
|
|
117
|
+
).lstrip()
|
|
107
118
|
|
|
108
119
|
with temporary_working_directory(cached_project_path):
|
|
109
120
|
update_version_py_file(
|
|
@@ -127,6 +138,14 @@ def cached_example_monorepo(
|
|
|
127
138
|
(".gitignore", gitignore_contents),
|
|
128
139
|
(monorepo_pkg1_pyproject_toml_file, EXAMPLE_PYPROJECT_TOML_CONTENT),
|
|
129
140
|
(monorepo_pkg2_pyproject_toml_file, EXAMPLE_PYPROJECT_TOML_CONTENT),
|
|
141
|
+
(
|
|
142
|
+
Path(monorepo_pkg1_docs_dir, "index.rst"),
|
|
143
|
+
doc_index_contents.format(pkg_name=monorepo_pkg1_name),
|
|
144
|
+
),
|
|
145
|
+
(
|
|
146
|
+
Path(monorepo_pkg2_docs_dir, "index.rst"),
|
|
147
|
+
doc_index_contents.format(pkg_name=monorepo_pkg2_name),
|
|
148
|
+
),
|
|
130
149
|
]
|
|
131
150
|
|
|
132
151
|
for file, contents in file_2_contents:
|
|
@@ -216,6 +235,27 @@ def monorepo_pkg2_name() -> str:
|
|
|
216
235
|
return "pkg2"
|
|
217
236
|
|
|
218
237
|
|
|
238
|
+
@pytest.fixture(scope="session")
|
|
239
|
+
def monorepo_pkg_docs_dir_pattern() -> str:
|
|
240
|
+
return str(Path("docs", "source", "{package_name}"))
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
@pytest.fixture(scope="session")
|
|
244
|
+
def monorepo_pkg1_docs_dir(
|
|
245
|
+
monorepo_pkg1_name: str,
|
|
246
|
+
monorepo_pkg_docs_dir_pattern: str,
|
|
247
|
+
) -> str:
|
|
248
|
+
return monorepo_pkg_docs_dir_pattern.format(package_name=monorepo_pkg1_name)
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
@pytest.fixture(scope="session")
|
|
252
|
+
def monorepo_pkg2_docs_dir(
|
|
253
|
+
monorepo_pkg2_name: str,
|
|
254
|
+
monorepo_pkg_docs_dir_pattern: str,
|
|
255
|
+
) -> str:
|
|
256
|
+
return monorepo_pkg_docs_dir_pattern.format(package_name=monorepo_pkg2_name)
|
|
257
|
+
|
|
258
|
+
|
|
219
259
|
@pytest.fixture(scope="session")
|
|
220
260
|
def monorepo_pkg_dir_pattern() -> str:
|
|
221
261
|
return str(Path("packages", "{package_name}"))
|
|
@@ -96,8 +96,10 @@ def get_repo_definition_4_github_flow_monorepo_w_default_release_channel(
|
|
|
96
96
|
monorepo_pkg2_changelog_rst_file: Path,
|
|
97
97
|
monorepo_pkg1_name: str,
|
|
98
98
|
monorepo_pkg2_name: str,
|
|
99
|
-
monorepo_pkg1_dir:
|
|
100
|
-
monorepo_pkg2_dir:
|
|
99
|
+
monorepo_pkg1_dir: str,
|
|
100
|
+
monorepo_pkg2_dir: str,
|
|
101
|
+
monorepo_pkg1_docs_dir: str,
|
|
102
|
+
monorepo_pkg2_docs_dir: str,
|
|
101
103
|
monorepo_pkg1_version_py_file: Path,
|
|
102
104
|
monorepo_pkg2_version_py_file: Path,
|
|
103
105
|
monorepo_pkg1_pyproject_toml_file: Path,
|
|
@@ -117,7 +119,8 @@ def get_repo_definition_4_github_flow_monorepo_w_default_release_channel(
|
|
|
117
119
|
* chore(release): pkg1@1.1.0 [skip ci] (tag: pkg1-v1.1.0, branch: main, HEAD -> main)
|
|
118
120
|
* feat(pkg1): file modified outside of pkg 1, identified by scope (#5)
|
|
119
121
|
|
|
|
120
|
-
| *
|
|
122
|
+
| * docs: pkg1 docs modified outside of pkg 1, identified by path filter (branch: pkg1/feat/pr-4)
|
|
123
|
+
| * feat(pkg1): file modified outside of pkg 1, identified by scope
|
|
121
124
|
|/
|
|
122
125
|
* chore(release): pkg2@1.1.1 [skip ci] (tag: pkg2-v1.1.1)
|
|
123
126
|
* fix(pkg2-cli): file modified outside of pkg 2, identified by scope (#4)
|
|
@@ -207,21 +210,23 @@ def get_repo_definition_4_github_flow_monorepo_w_default_release_channel(
|
|
|
207
210
|
if commit_type != "conventional":
|
|
208
211
|
raise ValueError(f"Unsupported commit type: {commit_type}")
|
|
209
212
|
|
|
213
|
+
pkg1_path_filters = (".", f"../../{monorepo_pkg1_docs_dir}")
|
|
210
214
|
pkg1_commit_parser = ConventionalCommitMonorepoParser(
|
|
211
215
|
options=ConventionalCommitMonorepoParserOptions(
|
|
212
216
|
parse_squash_commits=True,
|
|
213
217
|
ignore_merge_commits=ignore_merge_commits,
|
|
214
218
|
scope_prefix=f"{monorepo_pkg1_name}-?",
|
|
215
|
-
path_filters=
|
|
219
|
+
path_filters=pkg1_path_filters,
|
|
216
220
|
)
|
|
217
221
|
)
|
|
218
222
|
|
|
223
|
+
pkg2_path_filters = (".", f"../../{monorepo_pkg2_docs_dir}")
|
|
219
224
|
pkg2_commit_parser = ConventionalCommitMonorepoParser(
|
|
220
225
|
options=ConventionalCommitMonorepoParserOptions(
|
|
221
226
|
parse_squash_commits=pkg1_commit_parser.options.parse_squash_commits,
|
|
222
227
|
ignore_merge_commits=pkg1_commit_parser.options.ignore_merge_commits,
|
|
223
228
|
scope_prefix=f"{monorepo_pkg2_name}-?",
|
|
224
|
-
path_filters=
|
|
229
|
+
path_filters=pkg2_path_filters,
|
|
225
230
|
)
|
|
226
231
|
)
|
|
227
232
|
|
|
@@ -277,7 +282,7 @@ def get_repo_definition_4_github_flow_monorepo_w_default_release_channel(
|
|
|
277
282
|
)
|
|
278
283
|
),
|
|
279
284
|
"tool.semantic_release.commit_parser_options.scope_prefix": pkg1_commit_parser.options.scope_prefix,
|
|
280
|
-
"tool.semantic_release.commit_parser_options.path_filters":
|
|
285
|
+
"tool.semantic_release.commit_parser_options.path_filters": pkg1_path_filters,
|
|
281
286
|
**(extra_configs or {}),
|
|
282
287
|
},
|
|
283
288
|
},
|
|
@@ -301,7 +306,7 @@ def get_repo_definition_4_github_flow_monorepo_w_default_release_channel(
|
|
|
301
306
|
)
|
|
302
307
|
),
|
|
303
308
|
"tool.semantic_release.commit_parser_options.scope_prefix": pkg2_commit_parser.options.scope_prefix,
|
|
304
|
-
"tool.semantic_release.commit_parser_options.path_filters":
|
|
309
|
+
"tool.semantic_release.commit_parser_options.path_filters": pkg2_path_filters,
|
|
305
310
|
**(extra_configs or {}),
|
|
306
311
|
},
|
|
307
312
|
},
|
|
@@ -774,7 +779,15 @@ def get_repo_definition_4_github_flow_monorepo_w_default_release_channel(
|
|
|
774
779
|
"emoji": ":sparkles: (pkg1) file modified outside of pkg 1, identified by scope",
|
|
775
780
|
"scipy": "ENH:pkg1: file modified outside of pkg 1, identified by scope",
|
|
776
781
|
"datetime": next(commit_timestamp_gen),
|
|
777
|
-
}
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"cid": "pkg1-docs-2-squashed",
|
|
785
|
+
"conventional": "docs: pkg1 docs modified outside of pkg 1, identified by path filter",
|
|
786
|
+
"emoji": ":book: pkg1 docs modified outside of pkg 1, identified by path filter",
|
|
787
|
+
"scipy": "DOC: pkg1 docs modified outside of pkg 1, identified by path filter",
|
|
788
|
+
"datetime": next(commit_timestamp_gen),
|
|
789
|
+
"file_to_change": f"{monorepo_pkg1_docs_dir}/index.rst",
|
|
790
|
+
},
|
|
778
791
|
]
|
|
779
792
|
|
|
780
793
|
repo_construction_steps.extend(
|
|
@@ -97,8 +97,10 @@ def get_repo_definition_4_github_flow_monorepo_w_feature_release_channel(
|
|
|
97
97
|
monorepo_pkg2_changelog_rst_file: Path,
|
|
98
98
|
monorepo_pkg1_name: str,
|
|
99
99
|
monorepo_pkg2_name: str,
|
|
100
|
-
monorepo_pkg1_dir:
|
|
101
|
-
monorepo_pkg2_dir:
|
|
100
|
+
monorepo_pkg1_dir: str,
|
|
101
|
+
monorepo_pkg2_dir: str,
|
|
102
|
+
monorepo_pkg1_docs_dir: str,
|
|
103
|
+
monorepo_pkg2_docs_dir: str,
|
|
102
104
|
monorepo_pkg1_version_py_file: Path,
|
|
103
105
|
monorepo_pkg2_version_py_file: Path,
|
|
104
106
|
stable_now_date: GetStableDateNowFn,
|
|
@@ -119,7 +121,7 @@ def get_repo_definition_4_github_flow_monorepo_w_feature_release_channel(
|
|
|
119
121
|
| * chore(release): pkg2@1.1.0-alpha.2 [skip ci] (tag: pkg2-v1.1.0-alpha.2, branch: pkg2/feat/pr-2)
|
|
120
122
|
| * fix(pkg2-cli): file modified outside of pkg 2, identified by scope
|
|
121
123
|
| * chore(release): pkg2@1.1.0-alpha.1 [skip ci] (tag: pkg2-v1.1.0-alpha.1)
|
|
122
|
-
| * docs:
|
|
124
|
+
| * docs: pkg2 docs modified outside of pkg 2, identified by path filter
|
|
123
125
|
| * test: add cli tests
|
|
124
126
|
| * feat: no pkg scope but file in pkg 2 directory
|
|
125
127
|
|/
|
|
@@ -203,21 +205,23 @@ def get_repo_definition_4_github_flow_monorepo_w_feature_release_channel(
|
|
|
203
205
|
if commit_type != "conventional":
|
|
204
206
|
raise ValueError(f"Unsupported commit type: {commit_type}")
|
|
205
207
|
|
|
208
|
+
pkg1_path_filters = (".", f"../../{monorepo_pkg1_docs_dir}")
|
|
206
209
|
pkg1_commit_parser = ConventionalCommitMonorepoParser(
|
|
207
210
|
options=ConventionalCommitMonorepoParserOptions(
|
|
208
211
|
parse_squash_commits=True,
|
|
209
212
|
ignore_merge_commits=ignore_merge_commits,
|
|
210
213
|
scope_prefix=f"{monorepo_pkg1_name}-?",
|
|
211
|
-
path_filters=
|
|
214
|
+
path_filters=pkg1_path_filters,
|
|
212
215
|
)
|
|
213
216
|
)
|
|
214
217
|
|
|
218
|
+
pkg2_path_filters = (".", f"../../{monorepo_pkg2_docs_dir}")
|
|
215
219
|
pkg2_commit_parser = ConventionalCommitMonorepoParser(
|
|
216
220
|
options=ConventionalCommitMonorepoParserOptions(
|
|
217
221
|
parse_squash_commits=pkg1_commit_parser.options.parse_squash_commits,
|
|
218
222
|
ignore_merge_commits=pkg1_commit_parser.options.ignore_merge_commits,
|
|
219
223
|
scope_prefix=f"{monorepo_pkg2_name}-?",
|
|
220
|
-
path_filters=
|
|
224
|
+
path_filters=pkg2_path_filters,
|
|
221
225
|
)
|
|
222
226
|
)
|
|
223
227
|
|
|
@@ -277,7 +281,7 @@ def get_repo_definition_4_github_flow_monorepo_w_feature_release_channel(
|
|
|
277
281
|
"prerelease_token": "alpha",
|
|
278
282
|
},
|
|
279
283
|
"tool.semantic_release.commit_parser_options.scope_prefix": pkg1_commit_parser.options.scope_prefix,
|
|
280
|
-
"tool.semantic_release.commit_parser_options.path_filters":
|
|
284
|
+
"tool.semantic_release.commit_parser_options.path_filters": pkg1_path_filters,
|
|
281
285
|
**(extra_configs or {}),
|
|
282
286
|
},
|
|
283
287
|
},
|
|
@@ -307,7 +311,7 @@ def get_repo_definition_4_github_flow_monorepo_w_feature_release_channel(
|
|
|
307
311
|
"prerelease_token": "alpha",
|
|
308
312
|
},
|
|
309
313
|
"tool.semantic_release.commit_parser_options.scope_prefix": pkg2_commit_parser.options.scope_prefix,
|
|
310
|
-
"tool.semantic_release.commit_parser_options.path_filters":
|
|
314
|
+
"tool.semantic_release.commit_parser_options.path_filters": pkg2_path_filters,
|
|
311
315
|
**(extra_configs or {}),
|
|
312
316
|
},
|
|
313
317
|
},
|
|
@@ -646,11 +650,12 @@ def get_repo_definition_4_github_flow_monorepo_w_feature_release_channel(
|
|
|
646
650
|
cid_pkg2_feb1_c3_docs
|
|
647
651
|
:= "pkg2_feat_branch_1_c3_docs"
|
|
648
652
|
),
|
|
649
|
-
"conventional": "docs:
|
|
650
|
-
"emoji": ":
|
|
651
|
-
"scipy": "DOC:
|
|
653
|
+
"conventional": "docs: pkg2 docs modified outside of pkg 2, identified by path filter",
|
|
654
|
+
"emoji": ":book: pkg2 docs modified outside of pkg 2, identified by path filter",
|
|
655
|
+
"scipy": "DOC: pkg2 docs modified outside of pkg 2, identified by path filter",
|
|
652
656
|
"datetime": next(commit_timestamp_gen),
|
|
653
657
|
"include_in_changelog": True,
|
|
658
|
+
"file_to_change": f"../../{monorepo_pkg2_docs_dir}/index.rst",
|
|
654
659
|
},
|
|
655
660
|
],
|
|
656
661
|
commit_type,
|
|
@@ -88,8 +88,10 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
88
88
|
monorepo_pkg2_changelog_rst_file: Path,
|
|
89
89
|
monorepo_pkg1_name: str,
|
|
90
90
|
monorepo_pkg2_name: str,
|
|
91
|
-
monorepo_pkg1_dir:
|
|
92
|
-
monorepo_pkg2_dir:
|
|
91
|
+
monorepo_pkg1_dir: str,
|
|
92
|
+
monorepo_pkg2_dir: str,
|
|
93
|
+
monorepo_pkg1_docs_dir: str,
|
|
94
|
+
monorepo_pkg2_docs_dir: str,
|
|
93
95
|
monorepo_pkg1_version_py_file: Path,
|
|
94
96
|
monorepo_pkg2_version_py_file: Path,
|
|
95
97
|
stable_now_date: GetStableDateNowFn,
|
|
@@ -104,6 +106,7 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
104
106
|
|
|
105
107
|
```
|
|
106
108
|
* chore(release): pkg1@0.1.0 [skip ci] (tag: pkg1-v0.1.0, branch: main)
|
|
109
|
+
* docs: pkg1 docs modified outside of pkg 1, identified by path filter
|
|
107
110
|
* feat(pkg1): file modified outside of pkg 1, identified by scope
|
|
108
111
|
* chore(release): pkg2@0.1.1 [skip ci] (tag: pkg2-v0.1.1)
|
|
109
112
|
* fix(pkg2-cli): file modified outside of pkg 2, identified by scope
|
|
@@ -182,21 +185,23 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
182
185
|
if commit_type != "conventional":
|
|
183
186
|
raise ValueError(f"Unsupported commit type: {commit_type}")
|
|
184
187
|
|
|
188
|
+
pkg1_path_filters = (".", f"../../{monorepo_pkg1_docs_dir}")
|
|
185
189
|
pkg1_commit_parser = ConventionalCommitMonorepoParser(
|
|
186
190
|
options=ConventionalCommitMonorepoParserOptions(
|
|
187
191
|
parse_squash_commits=True,
|
|
188
192
|
ignore_merge_commits=ignore_merge_commits,
|
|
189
193
|
scope_prefix=f"{monorepo_pkg1_name}-?",
|
|
190
|
-
path_filters=
|
|
194
|
+
path_filters=pkg1_path_filters,
|
|
191
195
|
)
|
|
192
196
|
)
|
|
193
197
|
|
|
198
|
+
pkg2_path_filters = (".", f"../../{monorepo_pkg2_docs_dir}")
|
|
194
199
|
pkg2_commit_parser = ConventionalCommitMonorepoParser(
|
|
195
200
|
options=ConventionalCommitMonorepoParserOptions(
|
|
196
201
|
parse_squash_commits=pkg1_commit_parser.options.parse_squash_commits,
|
|
197
202
|
ignore_merge_commits=pkg1_commit_parser.options.ignore_merge_commits,
|
|
198
203
|
scope_prefix=f"{monorepo_pkg2_name}-?",
|
|
199
|
-
path_filters=
|
|
204
|
+
path_filters=pkg2_path_filters,
|
|
200
205
|
)
|
|
201
206
|
)
|
|
202
207
|
|
|
@@ -247,7 +252,7 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
247
252
|
)
|
|
248
253
|
),
|
|
249
254
|
"tool.semantic_release.commit_parser_options.scope_prefix": pkg1_commit_parser.options.scope_prefix,
|
|
250
|
-
"tool.semantic_release.commit_parser_options.path_filters":
|
|
255
|
+
"tool.semantic_release.commit_parser_options.path_filters": pkg1_path_filters,
|
|
251
256
|
**(extra_configs or {}),
|
|
252
257
|
},
|
|
253
258
|
},
|
|
@@ -271,7 +276,7 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
271
276
|
)
|
|
272
277
|
),
|
|
273
278
|
"tool.semantic_release.commit_parser_options.scope_prefix": pkg2_commit_parser.options.scope_prefix,
|
|
274
|
-
"tool.semantic_release.commit_parser_options.path_filters":
|
|
279
|
+
"tool.semantic_release.commit_parser_options.path_filters": pkg2_path_filters,
|
|
275
280
|
**(extra_configs or {}),
|
|
276
281
|
},
|
|
277
282
|
},
|
|
@@ -524,6 +529,14 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
524
529
|
"scipy": "ENH:pkg1: file modified outside of pkg 1, identified by scope",
|
|
525
530
|
"datetime": next(commit_timestamp_gen),
|
|
526
531
|
},
|
|
532
|
+
{
|
|
533
|
+
"cid": (cid_c11_pkg1_docs := "c11_pkg1_docs"),
|
|
534
|
+
"conventional": "docs: pkg1 docs modified outside of pkg 1, identified by path filter",
|
|
535
|
+
"emoji": ":book: pkg1 docs modified outside of pkg 1, identified by path filter",
|
|
536
|
+
"scipy": "DOC: pkg1 docs modified outside of pkg 1, identified by path filter",
|
|
537
|
+
"datetime": next(commit_timestamp_gen),
|
|
538
|
+
"file_to_change": f"{monorepo_pkg1_docs_dir}/index.rst",
|
|
539
|
+
},
|
|
527
540
|
],
|
|
528
541
|
commit_type,
|
|
529
542
|
parser=cast(
|
|
@@ -550,7 +563,10 @@ def get_repo_definition_4_trunk_only_monorepo_w_tags(
|
|
|
550
563
|
"details": {
|
|
551
564
|
"new_version": pkg1_new_version,
|
|
552
565
|
"dest_files": pkg1_changelog_file_definitions,
|
|
553
|
-
"commit_ids": [
|
|
566
|
+
"commit_ids": [
|
|
567
|
+
cid_c10_pkg1_feat,
|
|
568
|
+
cid_c11_pkg1_docs,
|
|
569
|
+
],
|
|
554
570
|
},
|
|
555
571
|
},
|
|
556
572
|
change_to_pkg1_dir,
|