New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pathlib.PurePath.with_suffix() does not allow removing the suffix #64838
Comments
The changeset ef2b2ddd27c8 restricted the argument of Path.with_suffix() too much, and caused some strange behavior. Case 1: removing suffix completely is disallowed now. >>> pathlib.PurePath('a', 'b.c').with_suffix('')
PurePosixPath('a/b') but now fails with ValueError: >>> pathlib.PurePath('a', 'b.c').with_suffix('')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/july/source/python/Lib/pathlib.py", line 760, in with_suffix
raise ValueError("Invalid suffix %r" % (suffix))
ValueError: Invalid suffix '' It was the only one obvious way of removing the suffix, and I think it should remain so. (BTW: There is a XXX note in the code questioning if Path.with_suffix(None) should remove the suffix.) Case 2: while the output is now always a correct Path, the suffix can still contain separator. >>> pathlib.PurePath('a', 'b.c').with_suffix('./.s/.')
PurePosixPath('a/b./.s/.')
>>> _.parts
('a', 'b./.s/.') Now, the produced path is correct, but the code itself is still allowed: >>> pathlib.PurePath('a', 'b.c').with_suffix('./.s/.')
PurePosixPath('a/b.s') while I would expect it to fail with ValueError. Attached: proposed test patch. |
Proposed patch attached. |
Thank you! Unfortunately, it is too late for 3.4, but I will make sure the fix is included in 3.4.1 (and 3.5). |
New changeset 0d84855861ff by Antoine Pitrou in branch '3.4': |
Sorry for the delay! The patch is now applied. Thank you for contributing! |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: