Skip to content

Bug: GitPython v3.1.60 removed Actor.name_email_regex, breaking every config load #1476

Description

@olivialewke

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    resolvedUsed when a bug has been fixed & released

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions