Thoughts on allowing Path objects in shlex.join

At the moment, `shlex.join` raises ``` TypeError: expected string or bytes-like object ``` when given `pathlib.Path` objects. Since `subprocess.run` and related subprocess commands allow `Path` since Python 3.6 and 3.8 for Windows, it seems intuitive to me that `shlex.join` be able to handle paths as well. This has been briefly discussed before on the bug tracker (issue 89293, link below), but with the caveat that it was the wrong venue, and should be brought up on this list instead. That said, I can't find any record that it ever made it over here, but I am curious to get this community's perspective. My understanding of arguments against in that discussion were that `shlex.join` should not implicitly convert its arguments to strings, and that `Path` objects were not special enough for an exception. However (and as noted over there), `subprocess` takes the exact opposite approach, and has an explicit `isinstance` check to allow and convert `os.PathLike` objects. I'm assuming that some of the reasoning behind allow path-to-string conversions there has to do with the prevalence of using paths as command line arguments, and that seems to me like it could be rationale enough for why `Path` objects warrant an exception to the "don't-convert-inputs-to-strings" unwritten rule for `shlex.join`. Without getting into the specific details of implementation, I'd imagine that changing this to just convert `os.PathLike` to strings in `shlex.join` would not break much existing code. I find it rather unlikely—though I'll admit I have no supporting evidence—that anyone is relying on `shlex.join` to catch path objects that should be strings; I'd bet instead anyone using paths already is just converting them to strings "manually" before passing them to `shlex.join`. I'm curious to hear more opinions on this though, since I'm guessing there may be very valid reasons that others have for not wanting to move in this direction that I'm totally oblivious to. Thanks all! Issue 89283: https://github.com/python/cpython/issues/89293

You may find that you need to raise on as an idea on https://discuss.python.org/ as that is where the python code dev are more likely to read this idea. Barry

You may find that you need to raise on as an idea on https://discuss.python.org/ as that is where the python code dev are more likely to read this idea. Barry
participants (3)
-
Barry
-
Mitch
-
mitchell.negus.57@gmail.com