1. 29 Aug, 2018 5 commits
    • Victor Stinner's avatar
      bpo-34523: Add _PyCoreConfig.filesystem_encoding (GH-8963) · b2457efc
      Victor Stinner authored
      _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.
      b2457efc
    • Victor Stinner's avatar
      bpo-34485: Add _PyCoreConfig.stdio_encoding (GH-8881) · dfe0dc74
      Victor Stinner authored
      * Add stdio_encoding and stdio_errors fields to _PyCoreConfig.
      * Add unit tests on stdio_encoding and stdio_errors.
      dfe0dc74
    • Victor Stinner's avatar
      bpo-34485, Windows: LC_CTYPE set to user preference (GH-8988) · 177d921c
      Victor Stinner authored
      On Windows, the LC_CTYPE is now set to the user preferred locale at
      startup: _Py_SetLocaleFromEnv(LC_CTYPE) is now called during the
      Python initialization. Previously, the LC_CTYPE locale was "C" at
      startup, but changed when calling setlocale(LC_CTYPE, "") or
      setlocale(LC_ALL, "").
      
      pymain_read_conf() now also calls _Py_SetLocaleFromEnv(LC_CTYPE) to
      behave as _Py_InitializeCore(). Moreover, it doesn't save/restore the
      LC_ALL anymore.
      
      On Windows, standard streams like sys.stdout now always use
      surrogateescape error handler by default (ignore the locale).
      177d921c
    • Victor Stinner's avatar
      bpo-34485: stdout uses surrogateescape on POSIX locale (GH-8986) · 315877dc
      Victor Stinner authored
      Standard streams like sys.stdout now use the "surrogateescape" error
      handler, instead of "strict", on the POSIX locale (when the C locale is not
      coerced and the UTF-8 Mode is disabled).
      
      Add tests on sys.stdout.errors with LC_ALL=POSIX.
      315877dc
    • Raymond Hettinger's avatar
  2. 28 Aug, 2018 6 commits
    • Victor Stinner's avatar
      bpo-34485: Add _Py_ClearStandardStreamEncoding() (GH-8982) · 124b9eb4
      Victor Stinner authored
      * Move Py_SetStandardStreamEncoding() from pylifecycle.c
        to coreconfig.c
      * Add _Py_ClearStandardStreamEncoding() private function.
      * pymain_free() now calls _Py_ClearStandardStreamEncoding().
      * Add assertions add the end of _PyCoreConfig_Read()
      * _PyCoreConfig_Copy(): rename COPY_STR_ATTR() macro
        to COPY_WSTR_ATTR().
      * Fix get_stdio_errors() indentation.
      124b9eb4
    • Victor Stinner's avatar
      bpo-34485: Fix _Py_InitializeCore() for C locale coercion (GH-8979) · 2c8ddcf4
      Victor Stinner authored
      * _Py_InitializeCore() now sets the LC_CTYPE locale to the user
        preferred locale before checking if the C locale should be coerced
        or not in _PyCoreConfig_Read().
      * Fix pymain_read_conf(): remember if the C locale has been coerced
        when the configuration should be read again if the encoding has
        changed.
      2c8ddcf4
    • Victor Stinner's avatar
      bpo-34485: Enhance init_sys_streams() (GH-8978) · 9e4994d4
      Victor Stinner authored
      Python now gets the locale encoding with C code to initialize the encoding
      of standard streams like sys.stdout. Moreover, the encoding is now
      initialized to the Python codec name to get a normalized encoding name and
      to ensure that the codec is loaded. The change avoids importing
      _bootlocale and _locale modules at startup by default.
      
      When the PYTHONIOENCODING environment variable only contains an encoding,
      the error handler is now is now set explicitly to "strict".
      
      Rename also get_default_standard_stream_error_handler() to
      get_stdio_errors().
      
      Reduce the buffer to format the "cpXXX" string (Windows locale encoding).
      9e4994d4
    • Victor Stinner's avatar
      bpo-34403: On HP-UX, force ASCII for C locale (GH-8969) · d500e530
      Victor Stinner authored
      On HP-UX with C or POSIX locale, sys.getfilesystemencoding() now returns
      "ascii" instead of "roman8" (when the UTF-8 Mode is disabled and the C locale
      is not coerced).
      
      nl_langinfo(CODESET) announces "roman8" whereas it uses the Latin1
      encoding in practice.
      d500e530
    • Victor Stinner's avatar
      bpo-34527: POSIX locale enables the UTF-8 Mode (GH-8972) · 5cb25895
      Victor Stinner authored
      * The UTF-8 Mode is now also enabled by the "POSIX" locale, not only
        by the "C" locale.
      * On FreeBSD, Py_DecodeLocale() and Py_EncodeLocale() now also forces
        the ASCII encoding if the LC_CTYPE locale is "POSIX", not only if
        the LC_CTYPE locale is "C".
      * test_utf8_mode.test_cmd_line() checks also that the command line
        arguments are decoded from UTF-8 when the the UTF-8 Mode is enabled
        with POSIX locale or C locale.
      5cb25895
    • Carl Meyer's avatar
      bpo-21145: Add cached_property decorator in functools (#6982) · d658deac
      Carl Meyer authored
      Robust caching of calculated properties is
      harder than it looks at first glance, so add
      a solid, well-tested implementation to the
      standard library.
      d658deac
  3. 27 Aug, 2018 7 commits
  4. 26 Aug, 2018 2 commits
  5. 25 Aug, 2018 12 commits
  6. 24 Aug, 2018 8 commits