encoding = text_encoding(encoding)
if encoding == "locale":
- try:
- import locale
- except ImportError:
- # Importing locale may fail if Python is being built
- encoding = "utf-8"
- else:
- encoding = locale.getencoding()
+ encoding = self._get_locale_encoding()
if not isinstance(encoding, str):
raise ValueError("invalid encoding: %r" % encoding)
if not isinstance(encoding, str):
raise TypeError("invalid encoding: %r" % encoding)
if encoding == "locale":
- encoding = locale.getencoding()
+ encoding = self._get_locale_encoding()
if newline is Ellipsis:
newline = self._readnl
self._decoded_chars_used += len(chars)
return chars
+ def _get_locale_encoding(self):
+ try:
+ import locale
+ except ImportError:
+ # Importing locale may fail if Python is being built
+ return "utf-8"
+ else:
+ return locale.getencoding()
+
def _rewind_decoded_chars(self, n):
"""Rewind the _decoded_chars buffer."""
if self._decoded_chars_used < n:
F.tell = lambda x: 0
t = self.TextIOWrapper(F(), encoding='utf-8')
+ def test_reconfigure_locale(self):
+ wrapper = io.TextIOWrapper(io.BytesIO(b"test"))
+ wrapper.reconfigure(encoding="locale")
+
def test_reconfigure_encoding_read(self):
# latin1 -> utf8
# (latin1 can decode utf-8 encoded string)