mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-31 17:31:36 +00:00
Fix multiline script error (#6581)
Syntax errors emerged when running multiline scripts in the console when using the run() command.
This commit is contained in:
parent
35f1f2905b
commit
77287e0fc7
1 changed files with 49 additions and 51 deletions
|
@ -80,10 +80,7 @@ class Console(QtWidgets.QPlainTextEdit):
|
|||
with open(filename) as f:
|
||||
script = f.read()
|
||||
|
||||
# eval is generally considered bad practice. use it wisely!
|
||||
result = eval(script, self.namespace, self.namespace)
|
||||
|
||||
|
||||
self.exec_command(script)
|
||||
|
||||
def updateNamespace(self, namespace):
|
||||
self.namespace.update(namespace)
|
||||
|
@ -205,61 +202,62 @@ class Console(QtWidgets.QPlainTextEdit):
|
|||
for i in range(len(self.prompt) + position):
|
||||
self.moveCursor(QtGui.QTextCursor.Right)
|
||||
|
||||
def runCommand(self):
|
||||
def run_command(self):
|
||||
command = self.getCommand()
|
||||
self.addToHistory(command)
|
||||
|
||||
command = self.getConstruct(command)
|
||||
|
||||
if command:
|
||||
tmp_stdout = sys.stdout
|
||||
|
||||
class stdoutProxy():
|
||||
def __init__(self, write_func):
|
||||
self.write_func = write_func
|
||||
self.skip = False
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
||||
def write(self, text):
|
||||
if not self.skip:
|
||||
stripped_text = text.rstrip('\n')
|
||||
self.write_func(stripped_text)
|
||||
QtCore.QCoreApplication.processEvents()
|
||||
self.skip = not self.skip
|
||||
|
||||
if type(self.namespace.get(command)) == type(lambda:None):
|
||||
self.appendPlainText("'{}' is a function. Type '{}()' to use it in the Python console."
|
||||
.format(command, command))
|
||||
self.newPrompt('')
|
||||
return
|
||||
|
||||
sys.stdout = stdoutProxy(self.appendPlainText)
|
||||
try:
|
||||
try:
|
||||
# eval is generally considered bad practice. use it wisely!
|
||||
result = eval(command, self.namespace, self.namespace)
|
||||
if result is not None:
|
||||
if self.is_json:
|
||||
util.print_msg(util.json_encode(result))
|
||||
else:
|
||||
self.appendPlainText(repr(result))
|
||||
except SyntaxError:
|
||||
# exec is generally considered bad practice. use it wisely!
|
||||
exec(command, self.namespace, self.namespace)
|
||||
except SystemExit:
|
||||
self.close()
|
||||
except BaseException:
|
||||
traceback_lines = traceback.format_exc().split('\n')
|
||||
# Remove traceback mentioning this file, and a linebreak
|
||||
for i in (3,2,1,-1):
|
||||
traceback_lines.pop(i)
|
||||
self.appendPlainText('\n'.join(traceback_lines))
|
||||
sys.stdout = tmp_stdout
|
||||
self.exec_command(command)
|
||||
self.newPrompt('')
|
||||
self.set_json(False)
|
||||
|
||||
def exec_command(self, command):
|
||||
tmp_stdout = sys.stdout
|
||||
|
||||
class stdoutProxy():
|
||||
def __init__(self, write_func):
|
||||
self.write_func = write_func
|
||||
self.skip = False
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
||||
def write(self, text):
|
||||
if not self.skip:
|
||||
stripped_text = text.rstrip('\n')
|
||||
self.write_func(stripped_text)
|
||||
QtCore.QCoreApplication.processEvents()
|
||||
self.skip = not self.skip
|
||||
|
||||
if type(self.namespace.get(command)) == type(lambda:None):
|
||||
self.appendPlainText("'{}' is a function. Type '{}()' to use it in the Python console."
|
||||
.format(command, command))
|
||||
return
|
||||
|
||||
sys.stdout = stdoutProxy(self.appendPlainText)
|
||||
try:
|
||||
try:
|
||||
# eval is generally considered bad practice. use it wisely!
|
||||
result = eval(command, self.namespace, self.namespace)
|
||||
if result is not None:
|
||||
if self.is_json:
|
||||
util.print_msg(util.json_encode(result))
|
||||
else:
|
||||
self.appendPlainText(repr(result))
|
||||
except SyntaxError:
|
||||
# exec is generally considered bad practice. use it wisely!
|
||||
exec(command, self.namespace, self.namespace)
|
||||
except SystemExit:
|
||||
self.close()
|
||||
except BaseException:
|
||||
traceback_lines = traceback.format_exc().split('\n')
|
||||
# Remove traceback mentioning this file, and a linebreak
|
||||
for i in (3,2,1,-1):
|
||||
traceback_lines.pop(i)
|
||||
self.appendPlainText('\n'.join(traceback_lines))
|
||||
sys.stdout = tmp_stdout
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
if event.key() == QtCore.Qt.Key_Tab:
|
||||
|
@ -269,7 +267,7 @@ class Console(QtWidgets.QPlainTextEdit):
|
|||
self.hide_completions()
|
||||
|
||||
if event.key() in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
|
||||
self.runCommand()
|
||||
self.run_command()
|
||||
return
|
||||
if event.key() == QtCore.Qt.Key_Home:
|
||||
self.setCursorPosition(0)
|
||||
|
|
Loading…
Add table
Reference in a new issue