Open
Description
Bug report
Bug description:
According to the docs here a suffix is defined as:
The file extension of the final component, if any
But pathlib doesn't behave as expected, illustrating that on Python 3.12.4:
>>> Path("Mr. Smith resume for review").suffix
'. Smith resume for review'
This is particularly problematic for methods like with_suffix
. According to the docs here that should:
Return a new path with the suffix changed. If the original path doesn’t have a suffix, the new suffix is appended instead. If the suffix is an empty string, the original suffix is removed
But as established above, that results in:
>>> Path("Mr. Smith resume for review").with_suffix(".pdf")
PosixPath('Mr.pdf')
I've characterized that as a bug as that is not working as described, but could also be a matter of documentation improvement.
I see a few ways:
- Implement
add_suffix
, or an argument towith_suffix
, but I know that has been discussed before and was ultimately decided against. Also this is a matter of how suffix is defined, not how it's processed. - Sanity check what a suffix can be, e.g. suffix can't have white space. But ultimately difficult without making assumption.
- Adjust the documentation: Clarify that suffix is not equal to file extension but something like last segment separated by a dot or similar. Maybe even with a warning that this can have unexpected behavior as showcased above.
CPython versions tested on:
3.12
Operating systems tested on:
Linux, Windows