summaryrefslogtreecommitdiff
path: root/src/werkzeug/debug/console.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/werkzeug/debug/console.py')
-rw-r--r--src/werkzeug/debug/console.py61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/werkzeug/debug/console.py b/src/werkzeug/debug/console.py
index 2915aea1..adbd170b 100644
--- a/src/werkzeug/debug/console.py
+++ b/src/werkzeug/debug/console.py
@@ -8,20 +8,21 @@
:copyright: 2007 Pallets
:license: BSD-3-Clause
"""
-import sys
import code
+import sys
from types import CodeType
-from werkzeug.utils import escape
-from werkzeug.local import Local
-from werkzeug.debug.repr import debug_repr, dump, helper
+from ..local import Local
+from ..utils import escape
+from .repr import debug_repr
+from .repr import dump
+from .repr import helper
_local = Local()
class HTMLStringO(object):
-
"""A StringO version that HTML escapes on write."""
def __init__(self):
@@ -41,46 +42,46 @@ class HTMLStringO(object):
def readline(self):
if len(self._buffer) == 0:
- return ''
+ return ""
ret = self._buffer[0]
del self._buffer[0]
return ret
def reset(self):
- val = ''.join(self._buffer)
+ val = "".join(self._buffer)
del self._buffer[:]
return val
def _write(self, x):
if isinstance(x, bytes):
- x = x.decode('utf-8', 'replace')
+ x = x.decode("utf-8", "replace")
self._buffer.append(x)
def write(self, x):
self._write(escape(x))
def writelines(self, x):
- self._write(escape(''.join(x)))
+ self._write(escape("".join(x)))
class ThreadedStream(object):
-
"""Thread-local wrapper for sys.stdout for the interactive console."""
+ @staticmethod
def push():
if not isinstance(sys.stdout, ThreadedStream):
sys.stdout = ThreadedStream()
_local.stream = HTMLStringO()
- push = staticmethod(push)
+ @staticmethod
def fetch():
try:
stream = _local.stream
except AttributeError:
- return ''
+ return ""
return stream.reset()
- fetch = staticmethod(fetch)
+ @staticmethod
def displayhook(obj):
try:
stream = _local.stream
@@ -89,18 +90,17 @@ class ThreadedStream(object):
# stream._write bypasses escaping as debug_repr is
# already generating HTML for us.
if obj is not None:
- _local._current_ipy.locals['_'] = obj
+ _local._current_ipy.locals["_"] = obj
stream._write(debug_repr(obj))
- displayhook = staticmethod(displayhook)
def __setattr__(self, name, value):
- raise AttributeError('read only attribute %s' % name)
+ raise AttributeError("read only attribute %s" % name)
def __dir__(self):
return dir(sys.__stdout__)
def __getattribute__(self, name):
- if name == '__members__':
+ if name == "__members__":
return dir(sys.__stdout__)
try:
stream = _local.stream
@@ -118,7 +118,6 @@ sys.displayhook = ThreadedStream.displayhook
class _ConsoleLoader(object):
-
def __init__(self):
self._storage = {}
@@ -143,29 +142,30 @@ def _wrap_compiler(console):
code = compile(source, filename, symbol)
console.loader.register(code, source)
return code
+
console.compile = func
class _InteractiveConsole(code.InteractiveInterpreter):
-
def __init__(self, globals, locals):
code.InteractiveInterpreter.__init__(self, locals)
self.globals = dict(globals)
- self.globals['dump'] = dump
- self.globals['help'] = helper
- self.globals['__loader__'] = self.loader = _ConsoleLoader()
+ self.globals["dump"] = dump
+ self.globals["help"] = helper
+ self.globals["__loader__"] = self.loader = _ConsoleLoader()
self.more = False
self.buffer = []
_wrap_compiler(self)
def runsource(self, source):
- source = source.rstrip() + '\n'
+ source = source.rstrip() + "\n"
ThreadedStream.push()
- prompt = '... ' if self.more else '>>> '
+ prompt = "... " if self.more else ">>> "
try:
- source_to_eval = ''.join(self.buffer + [source])
- if code.InteractiveInterpreter.runsource(self,
- source_to_eval, '<debugger>', 'single'):
+ source_to_eval = "".join(self.buffer + [source])
+ if code.InteractiveInterpreter.runsource(
+ self, source_to_eval, "<debugger>", "single"
+ ):
self.more = True
self.buffer.append(source)
else:
@@ -182,12 +182,14 @@ class _InteractiveConsole(code.InteractiveInterpreter):
self.showtraceback()
def showtraceback(self):
- from werkzeug.debug.tbtools import get_current_traceback
+ from .tbtools import get_current_traceback
+
tb = get_current_traceback(skip=1)
sys.stdout._write(tb.render_summary())
def showsyntaxerror(self, filename=None):
- from werkzeug.debug.tbtools import get_current_traceback
+ from .tbtools import get_current_traceback
+
tb = get_current_traceback(skip=4)
sys.stdout._write(tb.render_summary())
@@ -196,7 +198,6 @@ class _InteractiveConsole(code.InteractiveInterpreter):
class Console(object):
-
"""An interactive console."""
def __init__(self, globals=None, locals=None):