> On 12 May 2023, at 18:54, mitchell.negus...@gmail.com wrote: > > 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 > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/UJYYYI3VQKXN46X5QQTAAS5RORIXJSMF/ > Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/4Q4DSM2IXXAH5ITF3J5ZFP34RMPCODZI/ Code of Conduct: http://python.org/psf/codeofconduct/