123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # coding: utf-8
- """io-related utilities"""
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
- import codecs
- import sys
- from ipython_genutils.py3compat import PY3
- def unicode_std_stream(stream='stdout'):
- u"""Get a wrapper to write unicode to stdout/stderr as UTF-8.
- This ignores environment variables and default encodings, to reliably write
- unicode to stdout or stderr.
- ::
- unicode_std_stream().write(u'ł@e¶ŧ←')
- """
- assert stream in ('stdout', 'stderr')
- stream = getattr(sys, stream)
- if PY3:
- try:
- stream_b = stream.buffer
- except AttributeError:
- # sys.stdout has been replaced - use it directly
- return stream
- else:
- stream_b = stream
- return codecs.getwriter('utf-8')(stream_b)
- def unicode_stdin_stream():
- u"""Get a wrapper to read unicode from stdin as UTF-8.
- This ignores environment variables and default encodings, to reliably read unicode from stdin.
- ::
- totreat = unicode_stdin_stream().read()
- """
- stream = sys.stdin
- if PY3:
- try:
- stream_b = stream.buffer
- except AttributeError:
- return stream
- else:
- stream_b = stream
- return codecs.getreader('utf-8')(stream_b)
|