summaryrefslogtreecommitdiffstats
path: root/contrib/python/ipython/py3/IPython/utils/io.py
diff options
context:
space:
mode:
authorrobot-contrib <[email protected]>2022-05-18 00:43:36 +0300
committerrobot-contrib <[email protected]>2022-05-18 00:43:36 +0300
commit9e5f436a8b2a27bcc7802e443ea3ef3e41a82a75 (patch)
tree78b522cab9f76336e62064d4d8ff7c897659b20e /contrib/python/ipython/py3/IPython/utils/io.py
parent8113a823ffca6451bb5ff8f0334560885a939a24 (diff)
Update contrib/python/ipython/py3 to 8.3.0
ref:e84342d4d30476f9148137f37fd0c6405fd36f55
Diffstat (limited to 'contrib/python/ipython/py3/IPython/utils/io.py')
-rw-r--r--contrib/python/ipython/py3/IPython/utils/io.py111
1 files changed, 10 insertions, 101 deletions
diff --git a/contrib/python/ipython/py3/IPython/utils/io.py b/contrib/python/ipython/py3/IPython/utils/io.py
index fab9bae7971..170bc625acb 100644
--- a/contrib/python/ipython/py3/IPython/utils/io.py
+++ b/contrib/python/ipython/py3/IPython/utils/io.py
@@ -13,87 +13,16 @@ import os
import sys
import tempfile
import warnings
+from pathlib import Path
from warnings import warn
from IPython.utils.decorators import undoc
from .capture import CapturedIO, capture_output
-@undoc
-class IOStream:
-
- def __init__(self, stream, fallback=None):
- warn('IOStream is deprecated since IPython 5.0, use sys.{stdin,stdout,stderr} instead',
- DeprecationWarning, stacklevel=2)
- if not hasattr(stream,'write') or not hasattr(stream,'flush'):
- if fallback is not None:
- stream = fallback
- else:
- raise ValueError("fallback required, but not specified")
- self.stream = stream
- self._swrite = stream.write
-
- # clone all methods not overridden:
- def clone(meth):
- return not hasattr(self, meth) and not meth.startswith('_')
- for meth in filter(clone, dir(stream)):
- try:
- val = getattr(stream, meth)
- except AttributeError:
- pass
- else:
- setattr(self, meth, val)
-
- def __repr__(self):
- cls = self.__class__
- tpl = '{mod}.{cls}({args})'
- return tpl.format(mod=cls.__module__, cls=cls.__name__, args=self.stream)
-
- def write(self,data):
- warn('IOStream is deprecated since IPython 5.0, use sys.{stdin,stdout,stderr} instead',
- DeprecationWarning, stacklevel=2)
- try:
- self._swrite(data)
- except:
- try:
- # print handles some unicode issues which may trip a plain
- # write() call. Emulate write() by using an empty end
- # argument.
- print(data, end='', file=self.stream)
- except:
- # if we get here, something is seriously broken.
- print('ERROR - failed to write data to stream:', self.stream,
- file=sys.stderr)
-
- def writelines(self, lines):
- warn('IOStream is deprecated since IPython 5.0, use sys.{stdin,stdout,stderr} instead',
- DeprecationWarning, stacklevel=2)
- if isinstance(lines, str):
- lines = [lines]
- for line in lines:
- self.write(line)
-
- # This class used to have a writeln method, but regular files and streams
- # in Python don't have this method. We need to keep this completely
- # compatible so we removed it.
-
- @property
- def closed(self):
- return self.stream.closed
-
- def close(self):
- pass
-
# setup stdin/stdout/stderr to sys.stdin/sys.stdout/sys.stderr
-devnull = open(os.devnull, 'w')
+devnull = open(os.devnull, "w", encoding="utf-8")
atexit.register(devnull.close)
-# io.std* are deprecated, but don't show our own deprecation warnings
-# during initialization of the deprecated API.
-with warnings.catch_warnings():
- warnings.simplefilter('ignore', DeprecationWarning)
- stdin = IOStream(sys.stdin, fallback=devnull)
- stdout = IOStream(sys.stdout, fallback=devnull)
- stderr = IOStream(sys.stderr, fallback=devnull)
class Tee(object):
"""A class to duplicate an output stream to stdout/err.
@@ -112,11 +41,9 @@ class Tee(object):
Parameters
----------
file_or_name : filename or open filehandle (writable)
- File that will be duplicated
-
+ File that will be duplicated
mode : optional, valid mode for open().
- If a filename was give, open with this mode.
-
+ If a filename was give, open with this mode.
channel : str, one of ['stdout', 'stderr']
"""
if channel not in ['stdout', 'stderr']:
@@ -125,7 +52,8 @@ class Tee(object):
if hasattr(file_or_name, 'write') and hasattr(file_or_name, 'seek'):
self.file = file_or_name
else:
- self.file = open(file_or_name, mode)
+ encoding = None if "b" in mode else "utf-8"
+ self.file = open(file_or_name, mode, encoding=encoding)
self.channel = channel
self.ostream = getattr(sys, channel)
setattr(sys, channel, self)
@@ -194,28 +122,21 @@ def temp_pyfile(src, ext='.py'):
Parameters
----------
src : string or list of strings (no need for ending newlines if list)
- Source code to be written to the file.
-
+ Source code to be written to the file.
ext : optional, string
- Extension for the generated file.
+ Extension for the generated file.
Returns
-------
(filename, open filehandle)
- It is the caller's responsibility to close the open file and unlink it.
+ It is the caller's responsibility to close the open file and unlink it.
"""
fname = tempfile.mkstemp(ext)[1]
- with open(fname,'w') as f:
+ with open(Path(fname), "w", encoding="utf-8") as f:
f.write(src)
f.flush()
return fname
-@undoc
-def atomic_writing(*args, **kwargs):
- """DEPRECATED: moved to notebook.services.contents.fileio"""
- warn("IPython.utils.io.atomic_writing has moved to notebook.services.contents.fileio since IPython 4.0", DeprecationWarning, stacklevel=2)
- from notebook.services.contents.fileio import atomic_writing
- return atomic_writing(*args, **kwargs)
@undoc
def raw_print(*args, **kw):
@@ -234,15 +155,3 @@ def raw_print_err(*args, **kw):
print(*args, sep=kw.get('sep', ' '), end=kw.get('end', '\n'),
file=sys.__stderr__)
sys.__stderr__.flush()
-
-# used by IPykernel <- 4.9. Removed during IPython 7-dev period and re-added
-# Keep for a version or two then should remove
-rprint = raw_print
-rprinte = raw_print_err
-
-@undoc
-def unicode_std_stream(stream='stdout'):
- """DEPRECATED, moved to nbconvert.utils.io"""
- warn("IPython.utils.io.unicode_std_stream has moved to nbconvert.utils.io since IPython 4.0", DeprecationWarning, stacklevel=2)
- from nbconvert.utils.io import unicode_std_stream
- return unicode_std_stream(stream)