> 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/

Reply via email to