[Distutils] PEP 517 - specifying build system in pyproject.toml

Steve Dower steve.dower at python.org
Sat May 20 14:36:38 EDT 2017


On 20May2017 1011, Thomas Kluyver wrote:
> On Sat, May 20, 2017, at 05:36 PM, Steve Dower wrote:
>> In general, since most subprocesses (at least on Windows) do not have
>> customizable encodings, the tool that launches them needs to know what
>> the encoding is. Since we don't live in a Python 3.6 world quite yet,
>> that means the tool should read raw bytes from the compiler and encode
>> them to UTF-8.
>
> I half agree, but:
> - Build tools may not 100% know what encoding output will be produced,
> especially if the developer can supply a custom command for the build
> tool to run.

In this case, the whole thing breaks down anyway. UI can't be expected 
to reliably display text from an unknown encoding - at some point it has 
to be forced into a known quantity, and IMHO the code closest to the 
tool should do it.

> - It's possible for data on a pipe to be binary data with no meaning as
> text.

Sure, but it cannot be rendered unless you choose an encoding. All you 
can do is dump it to a file (and let a file editor choose an encoding).

> - As a lazy developer, I don't want to read stdout/stderr from a
> subprocess only to spit it back to my own stdout/stderr. I'd much rather
> just launch the subprocess and let it use the same stdout/stderr as my
> build tool.

One of the open issues against distutils is that it does this. We can 
allow it, but a well-defined tool should capture the output and pass it 
to the UI component rather than bypassing the UI component.

> So I think it's most practical to recommend that build tools produce
> UTF-8 (if not sys.stdout.isatty()), but let build tool developers decide
> how far they go to comply with that.

Require that build tools either send UTF-8 to the UI component, or write 
bytes to a file and call it a build output. I see no benefit in 
requiring both the build tool and the UI tool to guess what the text 
encoding is.

Cheers,
Steve


More information about the Distutils-SIG mailing list