Path.with_name can be used to construct paths containing slashes as name contents (rather than as separators), as demonstrated below. $ python -c 'from pathlib import Path; print(Path("foo").with_name("bar/baz").name)' bar/baz This should be changed to either raise a ValueError, or behave like path.parent / new_name. Given the amount of checking in the related with_suffix method (and the fact that the second option can be readily implemented by hand), the first option seems preferable.
I have the patch almost ready, but ran into another issue: should "path.with_name('foo/')" be allowed? It may make sense to treat it like "path.with_name('foo')", just like 'Path("foo/") == Path("foo")'. The implementation is also simpler with it, as it can reuse the "parse_parts" approach used by "with_suffix". But this also raises a separate issue, which is that with the current implementation, we have "Path('foo').with_suffix('.bar') == Path('foo').with_suffix('.bar/')", and that is less reasonable. Should I open a separate issue for that?