Summary
GitPython v3.1.60 (released 2026-08-25) removed the name_email_regex class attribute from git.Actor, replacing its internal use in Actor._from_string with string partitioning. RuntimeContext.from_raw_config() reads that attribute unconditionally, so every semantic-release command that loads configuration now fails.
# src/semantic_release/cli/config.py:745
_commit_author_valid = Actor.name_email_regex.match(_commit_author_str)
Error: type object 'Actor' has no attribute 'name_email_regex'
Since PSR requires gitpython ~= 3.0, a fresh install resolves to the broken version.
Affected versions
Reproduced on v10.5.3, v10.6.1, and current master (c74aa3b) — the line is unchanged across all three.
| GitPython |
Result |
| 3.1.59 |
config loads |
| 3.1.60 |
AttributeError |
Reproduction
The repository's own test suite reproduces it — no new test needed:
$ pip install 'gitpython==3.1.60'
$ pytest tests/unit/semantic_release/cli/test_config.py -k commit_author
E AttributeError: type object 'Actor' has no attribute 'name_email_regex'
src/semantic_release/cli/config.py:745: AttributeError
Impact on the GitHub Action
The official action is hit hardest. src/gh_action/Dockerfile installs from src/gh_action/requirements.txt, which pins only python-semantic-release == 10.5.3 and lets transitive dependencies resolve at image-build time. Because the image is built on the runner at job start, pinned workflows that have not changed in months started failing the moment 3.1.60 was published, and there is no input or config key that lets a caller constrain what lands inside the image. Callers currently have to vendor or fork the action to pin GitPython.
Proposed fix
Keep an equivalent regex in semantic_release.const rather than reaching into GitPython's internals — GitPython no longer exposes any public equivalent, so there is nothing to migrate to. PR incoming.
Summary
GitPython v3.1.60 (released 2026-08-25) removed the
name_email_regexclass attribute fromgit.Actor, replacing its internal use inActor._from_stringwith string partitioning.RuntimeContext.from_raw_config()reads that attribute unconditionally, so everysemantic-releasecommand that loads configuration now fails.Since PSR requires
gitpython ~= 3.0, a fresh install resolves to the broken version.Affected versions
Reproduced on v10.5.3, v10.6.1, and current
master(c74aa3b) — the line is unchanged across all three.AttributeErrorReproduction
The repository's own test suite reproduces it — no new test needed:
Impact on the GitHub Action
The official action is hit hardest.
src/gh_action/Dockerfileinstalls fromsrc/gh_action/requirements.txt, which pins onlypython-semantic-release == 10.5.3and lets transitive dependencies resolve at image-build time. Because the image is built on the runner at job start, pinned workflows that have not changed in months started failing the moment 3.1.60 was published, and there is no input or config key that lets a caller constrain what lands inside the image. Callers currently have to vendor or fork the action to pin GitPython.Proposed fix
Keep an equivalent regex in
semantic_release.constrather than reaching into GitPython's internals — GitPython no longer exposes any public equivalent, so there is nothing to migrate to. PR incoming.