mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
bpo-34523: Add _PyCoreConfig.filesystem_encoding (GH-8963)
_PyCoreConfig_Read() is now responsible to choose the filesystem encoding and error handler. Using Py_Main(), the encoding is now chosen even before calling Py_Initialize(). _PyCoreConfig.filesystem_encoding is now the reference, instead of Py_FileSystemDefaultEncoding, for the Python filesystem encoding. Changes: * Add filesystem_encoding and filesystem_errors to _PyCoreConfig * _PyCoreConfig_Read() now reads the locale encoding for the file system encoding. * PyUnicode_EncodeFSDefault() and PyUnicode_DecodeFSDefaultAndSize() now use the interpreter configuration rather than Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors global configuration variables. * Add _Py_SetFileSystemEncoding() and _Py_ClearFileSystemEncoding() private functions to only modify Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors in coreconfig.c. * _Py_CoerceLegacyLocale() now takes an int rather than _PyCoreConfig for the warning.
This commit is contained in:
parent
dfe0dc7453
commit
b2457efc78
12 changed files with 301 additions and 105 deletions
|
@ -861,6 +861,16 @@ class SysModuleTest(unittest.TestCase):
|
|||
def test_no_duplicates_in_meta_path(self):
|
||||
self.assertEqual(len(sys.meta_path), len(set(sys.meta_path)))
|
||||
|
||||
@unittest.skipUnless(hasattr(sys, "_enablelegacywindowsfsencoding"),
|
||||
'needs sys._enablelegacywindowsfsencoding()')
|
||||
def test__enablelegacywindowsfsencoding(self):
|
||||
code = ('import sys',
|
||||
'sys._enablelegacywindowsfsencoding()',
|
||||
'print(sys.getfilesystemencoding(), sys.getfilesystemencodeerrors())')
|
||||
rc, out, err = assert_python_ok('-c', '; '.join(code))
|
||||
out = out.decode('ascii', 'replace').rstrip()
|
||||
self.assertEqual(out, 'mbcs replace')
|
||||
|
||||
|
||||
@test.support.cpython_only
|
||||
class SizeofTest(unittest.TestCase):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue