python-semantic-release 9.21.1__tar.gz → 9.21.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.
Files changed (210) hide show
  1. {python_semantic_release-9.21.1/src/python_semantic_release.egg-info → python_semantic_release-9.21.2}/PKG-INFO +6 -4
  2. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/automatic-releases/github-actions.rst +10 -10
  3. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/pyproject.toml +15 -9
  4. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2/src/python_semantic_release.egg-info}/PKG-INFO +6 -4
  5. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/python_semantic_release.egg-info/requires.txt +4 -3
  6. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/helpers.py +12 -2
  7. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_1_channel.py +1 -1
  8. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_2_channels.py +1 -1
  9. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_3_channels.py +1 -1
  10. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/git_flow/test_repo_4_channels.py +1 -1
  11. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_1_channel.py +1 -1
  12. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/github_flow/test_repo_2_channels.py +1 -1
  13. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk.py +1 -1
  14. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support.py +1 -1
  15. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_dual_version_support_w_prereleases.py +1 -1
  16. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/test_repo_trunk_w_prereleases.py +1 -1
  17. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_build.py +1 -1
  18. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/test_helpers.py +29 -0
  19. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/AUTHORS.rst +0 -0
  20. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/LICENSE +0 -0
  21. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/MANIFEST.in +0 -0
  22. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/README.rst +0 -0
  23. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/Makefile +0 -0
  24. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/algorithm.rst +0 -0
  25. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/automatic-releases/cronjobs.rst +0 -0
  26. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/automatic-releases/index.rst +0 -0
  27. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/automatic-releases/travis.rst +0 -0
  28. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/changelog_templates.rst +0 -0
  29. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/commands.rst +0 -0
  30. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/commit_parsing.rst +0 -0
  31. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/conf.py +0 -0
  32. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/configuration.rst +0 -0
  33. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/contributing.rst +0 -0
  34. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/contributors.rst +0 -0
  35. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/index.rst +0 -0
  36. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/make.bat +0 -0
  37. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/migrating_from_v7.rst +0 -0
  38. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/multibranch_releases.rst +0 -0
  39. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/psr_changelog.rst +0 -0
  40. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/strict_mode.rst +0 -0
  41. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/docs/troubleshooting.rst +0 -0
  42. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/setup.cfg +0 -0
  43. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/python_semantic_release.egg-info/SOURCES.txt +0 -0
  44. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/python_semantic_release.egg-info/dependency_links.txt +0 -0
  45. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/python_semantic_release.egg-info/entry_points.txt +0 -0
  46. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/python_semantic_release.egg-info/top_level.txt +0 -0
  47. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/__init__.py +0 -0
  48. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/__main__.py +0 -0
  49. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/changelog/__init__.py +0 -0
  50. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/changelog/context.py +0 -0
  51. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/changelog/release_history.py +0 -0
  52. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/changelog/template.py +0 -0
  53. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/__init__.py +0 -0
  54. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/changelog_writer.py +0 -0
  55. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/cli_context.py +0 -0
  56. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/commands/__init__.py +0 -0
  57. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/commands/changelog.py +0 -0
  58. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/commands/generate_config.py +0 -0
  59. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/commands/main.py +0 -0
  60. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/commands/publish.py +0 -0
  61. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/commands/version.py +0 -0
  62. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/config.py +0 -0
  63. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/const.py +0 -0
  64. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/github_actions_output.py +0 -0
  65. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/masking_filter.py +0 -0
  66. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/cli/util.py +0 -0
  67. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/__init__.py +0 -0
  68. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/_base.py +0 -0
  69. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/angular.py +0 -0
  70. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/conventional.py +0 -0
  71. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/emoji.py +0 -0
  72. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/scipy.py +0 -0
  73. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/tag.py +0 -0
  74. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/token.py +0 -0
  75. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/commit_parser/util.py +0 -0
  76. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/const.py +0 -0
  77. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/changelog_header.md.j2 +0 -0
  78. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/changelog_init.md.j2 +0 -0
  79. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/changelog_update.md.j2 +0 -0
  80. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/changes.md.j2 +0 -0
  81. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/first_release.md.j2 +0 -0
  82. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/macros.md.j2 +0 -0
  83. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/unreleased_changes.md.j2 +0 -0
  84. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.components/versioned_changes.md.j2 +0 -0
  85. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/.release_notes.md.j2 +0 -0
  86. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/md/CHANGELOG.md.j2 +0 -0
  87. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/changelog_header.rst.j2 +0 -0
  88. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/changelog_init.rst.j2 +0 -0
  89. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/changelog_update.rst.j2 +0 -0
  90. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/changes.rst.j2 +0 -0
  91. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/first_release.rst.j2 +0 -0
  92. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/macros.rst.j2 +0 -0
  93. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/unreleased_changes.rst.j2 +0 -0
  94. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/.components/versioned_changes.rst.j2 +0 -0
  95. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/data/templates/angular/rst/CHANGELOG.rst.j2 +0 -0
  96. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/enums.py +0 -0
  97. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/errors.py +0 -0
  98. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/gitproject.py +0 -0
  99. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/globals.py +0 -0
  100. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/__init__.py +0 -0
  101. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/_base.py +0 -0
  102. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/bitbucket.py +0 -0
  103. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/gitea.py +0 -0
  104. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/github.py +0 -0
  105. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/gitlab.py +0 -0
  106. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/remote_hvcs_base.py +0 -0
  107. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/token_auth.py +0 -0
  108. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/hvcs/util.py +0 -0
  109. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/py.typed +0 -0
  110. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/__init__.py +0 -0
  111. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/algorithm.py +0 -0
  112. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/declaration.py +0 -0
  113. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/declarations/__init__.py +0 -0
  114. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/declarations/enum.py +0 -0
  115. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/declarations/i_version_replacer.py +0 -0
  116. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/declarations/pattern.py +0 -0
  117. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/declarations/toml.py +0 -0
  118. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/translator.py +0 -0
  119. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/src/semantic_release/version/version.py +0 -0
  120. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/__init__.py +0 -0
  121. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/conftest.py +0 -0
  122. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/const.py +0 -0
  123. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/__init__.py +0 -0
  124. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_changelog/__init__.py +0 -0
  125. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_changelog/test_changelog.py +0 -0
  126. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_changelog/test_changelog_custom_parser.py +0 -0
  127. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_changelog/test_changelog_parsing.py +0 -0
  128. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_changelog/test_changelog_release_notes.py +0 -0
  129. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_config/__init__.py +0 -0
  130. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_config/test_generate_config.py +0 -0
  131. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_publish/__init__.py +0 -0
  132. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_publish/test_publish.py +0 -0
  133. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/__init__.py +0 -0
  134. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/__init__.py +0 -0
  135. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/conftest.py +0 -0
  136. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/git_flow/__init__.py +0 -0
  137. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/github_flow/__init__.py +0 -0
  138. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/bump_version/trunk_based_dev/__init__.py +0 -0
  139. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version.py +0 -0
  140. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_bump.py +0 -0
  141. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_changelog.py +0 -0
  142. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_changelog_custom_commit_msg.py +0 -0
  143. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_github_actions.py +0 -0
  144. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_print.py +0 -0
  145. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_release_notes.py +0 -0
  146. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_stamp.py +0 -0
  147. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/cmd_version/test_version_strict.py +0 -0
  148. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/conftest.py +0 -0
  149. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/test_help.py +0 -0
  150. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/e2e/test_main.py +0 -0
  151. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/__init__.py +0 -0
  152. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/commit_parsers.py +0 -0
  153. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/example_project.py +0 -0
  154. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/git_repo.py +0 -0
  155. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/__init__.py +0 -0
  156. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/git_flow/__init__.py +0 -0
  157. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/git_flow/repo_w_1_release_channel.py +0 -0
  158. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/git_flow/repo_w_2_release_channels.py +0 -0
  159. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/git_flow/repo_w_3_release_channels.py +0 -0
  160. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/git_flow/repo_w_4_release_channels.py +0 -0
  161. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/github_flow/__init__.py +0 -0
  162. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/github_flow/repo_w_default_release.py +0 -0
  163. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/github_flow/repo_w_release_channels.py +0 -0
  164. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/repo_initial_commit.py +0 -0
  165. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/trunk_based_dev/__init__.py +0 -0
  166. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support.py +0 -0
  167. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/trunk_based_dev/repo_w_dual_version_support_w_prereleases.py +0 -0
  168. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/trunk_based_dev/repo_w_no_tags.py +0 -0
  169. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/trunk_based_dev/repo_w_prereleases.py +0 -0
  170. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/repos/trunk_based_dev/repo_w_tags.py +0 -0
  171. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/fixtures/scipy.py +0 -0
  172. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/__init__.py +0 -0
  173. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/conftest.py +0 -0
  174. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/__init__.py +0 -0
  175. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/__init__.py +0 -0
  176. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/conftest.py +0 -0
  177. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/test_changelog_context.py +0 -0
  178. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/test_default_changelog.py +0 -0
  179. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/test_release_history.py +0 -0
  180. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/test_release_notes.py +0 -0
  181. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/test_template.py +0 -0
  182. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/changelog/test_template_render.py +0 -0
  183. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/cli/__init__.py +0 -0
  184. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/cli/test_config.py +0 -0
  185. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/cli/test_github_actions_output.py +0 -0
  186. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/cli/test_masking_filter.py +0 -0
  187. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/cli/test_util.py +0 -0
  188. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/cli/test_version.py +0 -0
  189. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/commit_parser/__init__.py +0 -0
  190. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/commit_parser/test_conventional.py +0 -0
  191. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/commit_parser/test_emoji.py +0 -0
  192. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/commit_parser/test_parsed_commit.py +0 -0
  193. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/commit_parser/test_scipy.py +0 -0
  194. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/commit_parser/test_util.py +0 -0
  195. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/__init__.py +0 -0
  196. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test__base.py +0 -0
  197. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test_bitbucket.py +0 -0
  198. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test_gitea.py +0 -0
  199. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test_github.py +0 -0
  200. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test_gitlab.py +0 -0
  201. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test_token_auth.py +0 -0
  202. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/hvcs/test_util.py +0 -0
  203. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/__init__.py +0 -0
  204. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/declarations/__init__.py +0 -0
  205. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/declarations/test_pattern_declaration.py +0 -0
  206. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/declarations/test_toml_declaration.py +0 -0
  207. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/test_algorithm.py +0 -0
  208. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/test_translator.py +0 -0
  209. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/unit/semantic_release/version/test_version.py +0 -0
  210. {python_semantic_release-9.21.1 → python_semantic_release-9.21.2}/tests/util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-semantic-release
3
- Version: 9.21.1
3
+ Version: 9.21.2
4
4
  Summary: Automatic Semantic Versioning for Python projects
5
5
  Author-email: Rolf Erik Lekang <me@rolflekang.com>
6
6
  License: MIT
@@ -17,17 +17,18 @@ Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
20
21
  Requires-Python: >=3.8
21
22
  Description-Content-Type: text/x-rst
22
23
  License-File: LICENSE
23
24
  License-File: AUTHORS.rst
24
- Requires-Dist: click~=8.0
25
+ Requires-Dist: click~=8.1.0
25
26
  Requires-Dist: click-option-group~=0.5
26
27
  Requires-Dist: gitpython~=3.0
27
28
  Requires-Dist: requests~=2.25
28
29
  Requires-Dist: jinja2~=3.1
29
30
  Requires-Dist: python-gitlab<6.0.0,>=4.0.0
30
- Requires-Dist: tomlkit~=0.11
31
+ Requires-Dist: tomlkit~=0.13.0
31
32
  Requires-Dist: dotty-dict~=1.3
32
33
  Requires-Dist: importlib-resources~=6.0
33
34
  Requires-Dist: pydantic~=2.0
@@ -36,6 +37,7 @@ Requires-Dist: shellingham~=1.5
36
37
  Requires-Dist: Deprecated~=1.2
37
38
  Provides-Extra: build
38
39
  Requires-Dist: build~=1.2; extra == "build"
40
+ Requires-Dist: tomlkit~=0.13.0; extra == "build"
39
41
  Provides-Extra: docs
40
42
  Requires-Dist: Sphinx~=6.0; extra == "docs"
41
43
  Requires-Dist: sphinxcontrib-apidoc==0.5.0; extra == "docs"
@@ -44,7 +46,7 @@ Requires-Dist: furo~=2024.1; extra == "docs"
44
46
  Provides-Extra: test
45
47
  Requires-Dist: coverage[toml]~=7.0; extra == "test"
46
48
  Requires-Dist: filelock~=3.15; extra == "test"
47
- Requires-Dist: flatdict~=4.0; extra == "test"
49
+ Requires-Dist: flatdict2~=4.0; extra == "test"
48
50
  Requires-Dist: freezegun~=1.5; extra == "test"
49
51
  Requires-Dist: pyyaml~=6.0; extra == "test"
50
52
  Requires-Dist: pytest~=8.3; extra == "test"
@@ -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.21.0
340
+ - uses: python-semantic-release/python-semantic-release@v9.21.1
341
341
  with:
342
342
  root_options: "-vv --noop"
343
343
 
@@ -576,7 +576,7 @@ before the :ref:`publish <cmd-publish>` subcommand.
576
576
 
577
577
  .. code:: yaml
578
578
 
579
- - uses: python-semantic-release/publish-action@v9.21.0
579
+ - uses: python-semantic-release/publish-action@v9.21.1
580
580
  with:
581
581
  root_options: "-vv --noop"
582
582
 
@@ -698,7 +698,7 @@ to the GitHub Release Assets as well.
698
698
  run: |
699
699
  set +o pipefail
700
700
 
701
- UPSTREAM_BRANCH_NAME="$(git status -sb | head -n 1 | cut -d' ' -f2 | grep -E '\.{3}' | cut -d'.' -f4)"
701
+ UPSTREAM_BRANCH_NAME="$(git status -sb | head -n 1 | awk -F '\\.\\.\\.' '{print $2}' | cut -d ' ' -f1)"
702
702
  printf '%s\n' "Upstream branch name: $UPSTREAM_BRANCH_NAME"
703
703
 
704
704
  set -o pipefail
@@ -728,14 +728,14 @@ to the GitHub Release Assets as well.
728
728
  - name: Action | Semantic Version Release
729
729
  id: release
730
730
  # Adjust tag with desired version if applicable.
731
- uses: python-semantic-release/python-semantic-release@v9.21.0
731
+ uses: python-semantic-release/python-semantic-release@v9.21.1
732
732
  with:
733
733
  github_token: ${{ secrets.GITHUB_TOKEN }}
734
734
  git_committer_name: "github-actions"
735
735
  git_committer_email: "actions@users.noreply.github.com"
736
736
 
737
737
  - name: Publish | Upload to GitHub Release Assets
738
- uses: python-semantic-release/publish-action@v9.21.0
738
+ uses: python-semantic-release/publish-action@v9.21.1
739
739
  if: steps.release.outputs.released == 'true'
740
740
  with:
741
741
  github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -794,7 +794,7 @@ The equivalent GitHub Action configuration would be:
794
794
 
795
795
  - name: Action | Semantic Version Release
796
796
  # Adjust tag with desired version if applicable.
797
- uses: python-semantic-release/python-semantic-release@v9.21.0
797
+ uses: python-semantic-release/python-semantic-release@v9.21.1
798
798
  with:
799
799
  github_token: ${{ secrets.GITHUB_TOKEN }}
800
800
  force: patch
@@ -844,14 +844,14 @@ Publish Action.
844
844
 
845
845
  - name: Release submodule 1
846
846
  id: release-submod-1
847
- uses: python-semantic-release/python-semantic-release@v9.21.0
847
+ uses: python-semantic-release/python-semantic-release@v9.21.1
848
848
  with:
849
849
  directory: ${{ env.SUBMODULE_1_DIR }}
850
850
  github_token: ${{ secrets.GITHUB_TOKEN }}
851
851
 
852
852
  - name: Release submodule 2
853
853
  id: release-submod-2
854
- uses: python-semantic-release/python-semantic-release@v9.21.0
854
+ uses: python-semantic-release/python-semantic-release@v9.21.1
855
855
  with:
856
856
  directory: ${{ env.SUBMODULE_2_DIR }}
857
857
  github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -863,7 +863,7 @@ Publish Action.
863
863
  # ------------------------------------------------------------------- #
864
864
 
865
865
  - name: Publish | Upload package 1 to GitHub Release Assets
866
- uses: python-semantic-release/publish-action@v9.21.0
866
+ uses: python-semantic-release/publish-action@v9.21.1
867
867
  if: steps.release-submod-1.outputs.released == 'true'
868
868
  with:
869
869
  directory: ${{ env.SUBMODULE_1_DIR }}
@@ -871,7 +871,7 @@ Publish Action.
871
871
  tag: ${{ steps.release-submod-1.outputs.tag }}
872
872
 
873
873
  - name: Publish | Upload package 2 to GitHub Release Assets
874
- uses: python-semantic-release/publish-action@v9.21.0
874
+ uses: python-semantic-release/publish-action@v9.21.1
875
875
  if: steps.release-submod-2.outputs.released == 'true'
876
876
  with:
877
877
  directory: ${{ env.SUBMODULE_2_DIR }}
@@ -1,12 +1,10 @@
1
- # Ref: https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
2
- # and https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
3
1
  [build-system]
4
2
  requires = ["setuptools >= 75.3.0, < 81.0.0", "wheel ~= 0.42"]
5
3
  build-backend = "setuptools.build_meta"
6
4
 
7
5
  [project]
8
6
  name = "python-semantic-release"
9
- version = "9.21.1"
7
+ version = "9.21.2"
10
8
  description = "Automatic Semantic Versioning for Python projects"
11
9
  requires-python = ">=3.8"
12
10
  license = { text = "MIT" }
@@ -19,17 +17,18 @@ classifiers = [
19
17
  "Programming Language :: Python :: 3.11",
20
18
  "Programming Language :: Python :: 3.12",
21
19
  "Programming Language :: Python :: 3.13",
20
+ "Programming Language :: Python :: 3.14",
22
21
  ]
23
22
  readme = "README.rst"
24
23
  authors = [{ name = "Rolf Erik Lekang", email = "me@rolflekang.com" }]
25
24
  dependencies = [
26
- "click ~= 8.0",
25
+ "click ~= 8.1.0",
27
26
  "click-option-group ~= 0.5",
28
27
  "gitpython ~= 3.0",
29
28
  "requests ~= 2.25",
30
29
  "jinja2 ~= 3.1",
31
30
  "python-gitlab >= 4.0.0, < 6.0.0",
32
- "tomlkit ~= 0.11",
31
+ "tomlkit ~= 0.13.0",
33
32
  "dotty-dict ~= 1.3",
34
33
  "importlib-resources ~= 6.0",
35
34
  "pydantic ~= 2.0",
@@ -52,7 +51,8 @@ repository = "http://github.com/python-semantic-release/python-semantic-release.
52
51
 
53
52
  [project.optional-dependencies]
54
53
  build = [
55
- "build ~= 1.2"
54
+ "build ~= 1.2",
55
+ "tomlkit ~= 0.13.0",
56
56
  ]
57
57
  docs = [
58
58
  "Sphinx ~= 6.0",
@@ -63,7 +63,7 @@ docs = [
63
63
  test = [
64
64
  "coverage[toml] ~= 7.0",
65
65
  "filelock ~= 3.15",
66
- "flatdict ~= 4.0",
66
+ "flatdict2 ~= 4.0",
67
67
  "freezegun ~= 1.5",
68
68
  "pyyaml ~= 6.0",
69
69
  "pytest ~= 8.3",
@@ -91,6 +91,7 @@ mypy = [
91
91
  ]
92
92
 
93
93
 
94
+
94
95
  [tool.setuptools]
95
96
  include-package-data = true
96
97
 
@@ -197,7 +198,7 @@ module = "tests.*"
197
198
  disallow_untyped_defs = false
198
199
 
199
200
  [[tool.mypy.overrides]]
200
- module = "flatdict"
201
+ module = "flatdict2"
201
202
  ignore_missing_imports = true
202
203
 
203
204
  [[tool.mypy.overrides]]
@@ -433,7 +434,12 @@ mode = "update"
433
434
  template_dir = "config/release-templates"
434
435
 
435
436
  [tool.semantic_release.branches.main]
436
- match = "(main|master)"
437
+ match = "^(main|master)$"
438
+ prerelease = false
439
+ prerelease_token = "rc"
440
+
441
+ [tool.semantic_release.branches.maintenance]
442
+ match = "^releases/v9"
437
443
  prerelease = false
438
444
  prerelease_token = "rc"
439
445
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-semantic-release
3
- Version: 9.21.1
3
+ Version: 9.21.2
4
4
  Summary: Automatic Semantic Versioning for Python projects
5
5
  Author-email: Rolf Erik Lekang <me@rolflekang.com>
6
6
  License: MIT
@@ -17,17 +17,18 @@ Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
20
21
  Requires-Python: >=3.8
21
22
  Description-Content-Type: text/x-rst
22
23
  License-File: LICENSE
23
24
  License-File: AUTHORS.rst
24
- Requires-Dist: click~=8.0
25
+ Requires-Dist: click~=8.1.0
25
26
  Requires-Dist: click-option-group~=0.5
26
27
  Requires-Dist: gitpython~=3.0
27
28
  Requires-Dist: requests~=2.25
28
29
  Requires-Dist: jinja2~=3.1
29
30
  Requires-Dist: python-gitlab<6.0.0,>=4.0.0
30
- Requires-Dist: tomlkit~=0.11
31
+ Requires-Dist: tomlkit~=0.13.0
31
32
  Requires-Dist: dotty-dict~=1.3
32
33
  Requires-Dist: importlib-resources~=6.0
33
34
  Requires-Dist: pydantic~=2.0
@@ -36,6 +37,7 @@ Requires-Dist: shellingham~=1.5
36
37
  Requires-Dist: Deprecated~=1.2
37
38
  Provides-Extra: build
38
39
  Requires-Dist: build~=1.2; extra == "build"
40
+ Requires-Dist: tomlkit~=0.13.0; extra == "build"
39
41
  Provides-Extra: docs
40
42
  Requires-Dist: Sphinx~=6.0; extra == "docs"
41
43
  Requires-Dist: sphinxcontrib-apidoc==0.5.0; extra == "docs"
@@ -44,7 +46,7 @@ Requires-Dist: furo~=2024.1; extra == "docs"
44
46
  Provides-Extra: test
45
47
  Requires-Dist: coverage[toml]~=7.0; extra == "test"
46
48
  Requires-Dist: filelock~=3.15; extra == "test"
47
- Requires-Dist: flatdict~=4.0; extra == "test"
49
+ Requires-Dist: flatdict2~=4.0; extra == "test"
48
50
  Requires-Dist: freezegun~=1.5; extra == "test"
49
51
  Requires-Dist: pyyaml~=6.0; extra == "test"
50
52
  Requires-Dist: pytest~=8.3; extra == "test"
@@ -1,10 +1,10 @@
1
- click~=8.0
1
+ click~=8.1.0
2
2
  click-option-group~=0.5
3
3
  gitpython~=3.0
4
4
  requests~=2.25
5
5
  jinja2~=3.1
6
6
  python-gitlab<6.0.0,>=4.0.0
7
- tomlkit~=0.11
7
+ tomlkit~=0.13.0
8
8
  dotty-dict~=1.3
9
9
  importlib-resources~=6.0
10
10
  pydantic~=2.0
@@ -14,6 +14,7 @@ Deprecated~=1.2
14
14
 
15
15
  [build]
16
16
  build~=1.2
17
+ tomlkit~=0.13.0
17
18
 
18
19
  [dev]
19
20
  pre-commit~=3.5
@@ -35,7 +36,7 @@ types-pyyaml~=6.0
35
36
  [test]
36
37
  coverage[toml]~=7.0
37
38
  filelock~=3.15
38
- flatdict~=4.0
39
+ flatdict2~=4.0
39
40
  freezegun~=1.5
40
41
  pyyaml~=6.0
41
42
  pytest~=8.3
@@ -10,7 +10,7 @@ from functools import lru_cache, reduce, wraps
10
10
  from pathlib import Path, PurePosixPath
11
11
  from re import IGNORECASE, compile as regexp
12
12
  from typing import TYPE_CHECKING, Any, Callable, NamedTuple, Sequence, TypeVar
13
- from urllib.parse import urlsplit
13
+ from urllib.parse import urlsplit, urlunsplit
14
14
 
15
15
  if TYPE_CHECKING: # pragma: no cover
16
16
  from re import Pattern
@@ -215,6 +215,16 @@ class ParsedGitUrl(NamedTuple):
215
215
  repo_name: str
216
216
 
217
217
 
218
+ def _hide_credentials_in_url(url: str) -> str:
219
+ url_parts = urlsplit(url)
220
+
221
+ if not url_parts.scheme or "@" not in url_parts.netloc:
222
+ return url
223
+
224
+ _, _, host = url_parts.netloc.rpartition("@")
225
+ return urlunsplit(url_parts._replace(netloc=f"<credentials>@{host}"))
226
+
227
+
218
228
  @lru_cache(maxsize=512)
219
229
  def parse_git_url(url: str) -> ParsedGitUrl:
220
230
  """
@@ -242,7 +252,7 @@ def parse_git_url(url: str) -> ParsedGitUrl:
242
252
 
243
253
  Raises ValueError if the url can't be parsed.
244
254
  """
245
- log.debug("Parsing git url %r", url)
255
+ log.debug("Parsing git url %r", _hide_credentials_in_url(url))
246
256
 
247
257
  # Normalizers are a list of tuples of (pattern, replacement)
248
258
  normalizers = [
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import pytest
6
6
  import tomlkit
7
- from flatdict import FlatDict
7
+ from flatdict2 import FlatDict
8
8
  from freezegun import freeze_time
9
9
 
10
10
  from semantic_release.cli.commands.main import main
@@ -10,7 +10,7 @@ from unittest import mock
10
10
  import pytest
11
11
  import shellingham
12
12
  import tomlkit
13
- from flatdict import FlatDict
13
+ from flatdict2 import FlatDict
14
14
  from pytest_lazy_fixtures.lazy_fixture import lf as lazy_fixture
15
15
 
16
16
  from semantic_release.cli.commands.main import main
@@ -1,4 +1,5 @@
1
1
  from typing import Iterable
2
+ from unittest.mock import patch
2
3
 
3
4
  import pytest
4
5
 
@@ -120,6 +121,34 @@ def test_parse_valid_git_urls(url: str, expected: ParsedGitUrl):
120
121
  assert expected == parse_git_url(url)
121
122
 
122
123
 
124
+ def test_parse_git_url_does_not_log_credentials():
125
+ """Test that credentials in git urls are masked before logging."""
126
+ username = "x-oauth-basic"
127
+ secret = "ghp_secret_token"
128
+ url = f"https://{username}:{secret}@github.example.com/owner/project.git"
129
+
130
+ expected_parsed_url = ParsedGitUrl(
131
+ "https",
132
+ f"{username}:{secret}@github.example.com",
133
+ "owner",
134
+ "project",
135
+ )
136
+
137
+ parse_git_url.cache_clear()
138
+ with patch("semantic_release.helpers.log") as mock_log:
139
+ actual_parsed_url = parse_git_url(url)
140
+
141
+ assert expected_parsed_url == actual_parsed_url
142
+ assert mock_log.debug.called
143
+
144
+ for debug_call in mock_log.debug.call_args_list:
145
+ args = debug_call[0]
146
+ formatted_msg = args[0] % args[1:] if len(args) > 1 else str(args[0])
147
+ assert secret not in formatted_msg
148
+ assert username not in formatted_msg
149
+ assert "<credentials>@github.example.com" in formatted_msg
150
+
151
+
123
152
  @pytest.mark.parametrize(
124
153
  "url",
125
154
  [