This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author jaraco
Recipients docs@python, jaraco, petr.viktorin
Date 2022-04-03.12:55:22
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
> Can the argument to `joinpath` contain path separators?

Good question. Currently, I'm aware of three concrete implementations of Traversable.joinpath:

- pathlib.Path.joinpath
- zipfile.Path.joinpath
- importlib.resources.simple.ResourceContainer.joinpath

``Traversable.joinpath`` was modeled after ``pathlib.Path.joinpath``, which itself is itself not rigorous in what path separators are allowed. The [docstring]( does indicate that each of the parameters will be combined with the existing path and acknowledges that absolute paths are possible. The [curated docs]( only give examples, and curiously, those examples only use posixpath.sep, suggesting that it's recommended when passing compound paths to use posixpath separators as they're more widely supported.

For zipfile.Path, I observe that [joinpath does accept path separators]( but looking at the [docs for zipfile](, it's not even obvious to me what path separators are used in zipfiles, but I do observe there is [coercion to posixpath.sep](

``ResourceContainer``, on the other hand, [will not accept path separators]( This class, however, may not be used anywhere and probably could be extended to support path separators as well.

Here's what I propose:

- First, document that the interface is under-specified and that for maximum compatibility, a consumer should pass only relative paths using posixpath.sep or no separator at all. Additionally, explicitly declare that behavior with absolute paths is undefined and unsupported.
- Second, expand the interface on ``Traversable.joinpath`` to stipulate that the interface should accept multiple relative paths.
- Third, ``simple.ResourceContainer`` should be updated to meet that spec.
Date User Action Args
2022-04-03 12:55:22jaracosetrecipients: + jaraco, petr.viktorin, docs@python
2022-04-03 12:55:22jaracosetmessageid: <>
2022-04-03 12:55:22jaracolinkissue47142 messages
2022-04-03 12:55:22jaracocreate