I'm in the process of implementing PEP 517 for pip, and I've hit a question. I'm pretty sure I know the answer, but I want to be clear, as whatever the answer is will require some fixing up.
The various hooks take directory paths as arguments, and typically return a filename (e.g., build_wheel). The returned filename is always explicitly noted as being a unicode string. However, argumnents (metadata_directory in build_wheel/prepare_metadata_for_build_wheel) are not explicitly mandated to be Unicode.
My assumption is that the intent is that all strings, whether arguments or return values, must be Unicode.
The reason that I've hit this is that the current setuptools PEP 517 backend passes the metadata_directory direct to distutils which, on Python 2, checks for a (non-Unicode) string type and errors if Unicode is supplied. Fixing that is going to be annoyingly tricky, so I want to be sure that's the requirement before I start making fixes to setuptools.