GH-114610: Fix pathlib._abc.PurePathBase.with_suffix('.ext') handling of stems (#114613)

Raise `ValueError` if `with_suffix('.ext')` is called on a path without a
stem. Paths may only have a non-empty suffix if they also have a non-empty
stem.

ABC-only bugfix; no effect on public classes.
This commit is contained in:
Barney Gale 2024-01-30 14:25:16 +00:00 committed by GitHub
parent e21754d7f8
commit 809eed4805
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 7 additions and 12 deletions

View file

@ -299,10 +299,13 @@ class PurePathBase:
has no suffix, add given suffix. If the given suffix is an empty
string, remove the suffix from the path.
"""
stem = self.stem
if not suffix:
return self.with_name(self.stem)
return self.with_name(stem)
elif not stem:
raise ValueError(f"{self!r} has an empty name")
elif suffix.startswith('.') and len(suffix) > 1:
return self.with_name(self.stem + suffix)
return self.with_name(stem + suffix)
else:
raise ValueError(f"Invalid suffix {suffix!r}")