##// END OF EJS Templates
Merge pull request #3162 from ivanov/output-stream-kwarg...
Merge pull request #3162 from ivanov/output-stream-kwarg adding stream kwarg to current.new_output This was missing, and made unnecessarily clunky to create output cells of stream type using the nbformat API. Before this commit, you had to do something like from IPython.nbformat import current as c output = c.new_output('stream', the_text) output['stream'] = 'stdout' after this commit from IPython.nbformat import current as c output = c.new_output('stream', the_text, stream='stdout') and actually, that stream= argument defaults to 'stdout' if it isn't given. I modified a test that will break if this functionality is ever removed.

File last commit:

r8335:50c631dd
r10190:c3b429bd merge
Show More
ulinecache.py
45 lines | 1.6 KiB | text/x-python | PythonLexer
Thomas Kluyver
Fix getting unicode lines in IPython.core.debugger.
r8324 """Wrapper around linecache which decodes files to unicode according to PEP 263.
This is only needed for Python 2 - linecache in Python 3 does the same thing
itself.
"""
import functools
import linecache
Jörgen Stenarson
Convert filename to bytes in getlines....
r8335 import sys
Thomas Kluyver
Fix getting unicode lines in IPython.core.debugger.
r8324
from IPython.utils import py3compat
from IPython.utils import openpy
if py3compat.PY3:
getline = linecache.getline
# getlines has to be looked up at runtime, because doctests monkeypatch it.
@functools.wraps(linecache.getlines)
def getlines(filename, module_globals=None):
return linecache.getlines(filename, module_globals=module_globals)
else:
def getlines(filename, module_globals=None):
"""Get the lines (as unicode) for a file from the cache.
Update the cache if it doesn't contain an entry for this file already."""
Jörgen Stenarson
Convert filename to bytes in getlines....
r8335 filename = py3compat.cast_bytes(filename, sys.getfilesystemencoding())
Thomas Kluyver
Fixes for producing unicode tracebacks.
r8325 lines = linecache.getlines(filename, module_globals=module_globals)
# The bits we cache ourselves can be unicode.
if (not lines) or isinstance(lines[0], unicode):
return lines
readline = openpy._list_readline(lines)
Thomas Kluyver
Fix getting unicode lines in IPython.core.debugger.
r8324 try:
encoding, _ = openpy.detect_encoding(readline)
except SyntaxError:
encoding = 'ascii'
Thomas Kluyver
Fixes for producing unicode tracebacks.
r8325 return [l.decode(encoding, 'replace') for l in lines]
Thomas Kluyver
Fix getting unicode lines in IPython.core.debugger.
r8324
# This is a straight copy of linecache.getline
def getline(filename, lineno, module_globals=None):
lines = getlines(filename, module_globals)
if 1 <= lineno <= len(lines):
return lines[lineno-1]
else:
return ''