> All filenames should use the filesystem encoding in Python.
Here is a new patch [code_encoding.patch] implementing this idea:
- Use filesystem encoding (and surrogateescape) to encode/decode paths in compile() and the parser, instead of utf-8 in strict mode
- Ensure that co_filename attribute can be used as a filename (eg. to not raise UnicodeEncodeError on Linux)
- compile() builtin supports bytes filenames
- _Py_FindSourceFile() (traceback.c) encodes paths of sys.path into the filesystem encoding, as do find_module() (import.c)
- PyRun_SimpleFileExFlags() sets __file__ attribute using the filesystem encoding
The patch restores the situation before #6543.