Fixed store actions on 'false'
Send empty lines to frontend, if empty lines are sent Emptied sys.modules when the module is executed
This commit is contained in:
parent
63e8059e94
commit
0c69977e61
4 changed files with 291 additions and 6 deletions
|
@ -98,6 +98,8 @@ class StoreAction(Action):
|
||||||
|
|
||||||
class StoreConstAction(Action):
|
class StoreConstAction(Action):
|
||||||
def store_type_function(self, x):
|
def store_type_function(self, x):
|
||||||
|
if x == 'false':
|
||||||
|
x = None
|
||||||
return self.const if x is not None else self.on_none
|
return self.const if x is not None else self.on_none
|
||||||
|
|
||||||
def __init__(self, action, **kwargs):
|
def __init__(self, action, **kwargs):
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
import io
|
|
||||||
import runpy
|
import runpy
|
||||||
from traceback import print_exc
|
from traceback import print_exc
|
||||||
from contextlib import redirect_stdout, redirect_stderr
|
from contextlib import redirect_stdout, redirect_stderr
|
||||||
|
@ -24,9 +23,284 @@ class Context(Process):
|
||||||
sys.argv = [''] + self.arguments
|
sys.argv = [''] + self.arguments
|
||||||
else:
|
else:
|
||||||
sys.argv = ['']
|
sys.argv = ['']
|
||||||
#if not self.original_modules is None:
|
# if not self.original_modules is None:
|
||||||
# sys.modules = self.original_modules
|
# sys.modules.clear()
|
||||||
# print(sys.modules)
|
# sys.modules.update(self.original_modules)
|
||||||
|
|
||||||
|
del sys.modules['io']
|
||||||
|
del sys.modules['abc']
|
||||||
|
del sys.modules['_weakrefset']
|
||||||
|
del sys.modules['site']
|
||||||
|
del sys.modules['os']
|
||||||
|
del sys.modules['errno']
|
||||||
|
del sys.modules['stat']
|
||||||
|
del sys.modules['_stat']
|
||||||
|
del sys.modules['posixpath']
|
||||||
|
del sys.modules['genericpath']
|
||||||
|
del sys.modules['os.path']
|
||||||
|
del sys.modules['_collections_abc']
|
||||||
|
del sys.modules['_bootlocale']
|
||||||
|
del sys.modules['_locale']
|
||||||
|
del sys.modules['re']
|
||||||
|
del sys.modules['enum']
|
||||||
|
del sys.modules['types']
|
||||||
|
del sys.modules['functools']
|
||||||
|
del sys.modules['_functools']
|
||||||
|
del sys.modules['collections']
|
||||||
|
del sys.modules['operator']
|
||||||
|
del sys.modules['_operator']
|
||||||
|
del sys.modules['keyword']
|
||||||
|
del sys.modules['heapq']
|
||||||
|
del sys.modules['_heapq']
|
||||||
|
del sys.modules['itertools']
|
||||||
|
del sys.modules['reprlib']
|
||||||
|
del sys.modules['_collections']
|
||||||
|
del sys.modules['weakref']
|
||||||
|
del sys.modules['collections.abc']
|
||||||
|
del sys.modules['sre_compile']
|
||||||
|
del sys.modules['_sre']
|
||||||
|
del sys.modules['sre_parse']
|
||||||
|
del sys.modules['sre_constants']
|
||||||
|
del sys.modules['copyreg']
|
||||||
|
del sys.modules['pkg_resources']
|
||||||
|
del sys.modules['__future__']
|
||||||
|
del sys.modules['time']
|
||||||
|
del sys.modules['zipfile']
|
||||||
|
del sys.modules['importlib']
|
||||||
|
del sys.modules['importlib._bootstrap']
|
||||||
|
del sys.modules['importlib._bootstrap_external']
|
||||||
|
del sys.modules['warnings']
|
||||||
|
del sys.modules['importlib.util']
|
||||||
|
del sys.modules['importlib.abc']
|
||||||
|
del sys.modules['importlib.machinery']
|
||||||
|
del sys.modules['contextlib']
|
||||||
|
del sys.modules['shutil']
|
||||||
|
del sys.modules['fnmatch']
|
||||||
|
del sys.modules['zlib']
|
||||||
|
del sys.modules['bz2']
|
||||||
|
del sys.modules['_compression']
|
||||||
|
del sys.modules['threading']
|
||||||
|
del sys.modules['linecache']
|
||||||
|
del sys.modules['tokenize']
|
||||||
|
del sys.modules['token']
|
||||||
|
del sys.modules['_bz2']
|
||||||
|
del sys.modules['lzma']
|
||||||
|
del sys.modules['_lzma']
|
||||||
|
del sys.modules['pwd']
|
||||||
|
del sys.modules['grp']
|
||||||
|
del sys.modules['struct']
|
||||||
|
del sys.modules['_struct']
|
||||||
|
del sys.modules['binascii']
|
||||||
|
del sys.modules['pkgutil']
|
||||||
|
del sys.modules['platform']
|
||||||
|
del sys.modules['subprocess']
|
||||||
|
del sys.modules['signal']
|
||||||
|
del sys.modules['_posixsubprocess']
|
||||||
|
del sys.modules['select']
|
||||||
|
del sys.modules['selectors']
|
||||||
|
del sys.modules['math']
|
||||||
|
del sys.modules['plistlib']
|
||||||
|
del sys.modules['datetime']
|
||||||
|
del sys.modules['_datetime']
|
||||||
|
del sys.modules['xml']
|
||||||
|
del sys.modules['xml.parsers']
|
||||||
|
del sys.modules['xml.parsers.expat']
|
||||||
|
del sys.modules['pyexpat.errors']
|
||||||
|
del sys.modules['pyexpat.model']
|
||||||
|
del sys.modules['pyexpat']
|
||||||
|
del sys.modules['xml.parsers.expat.model']
|
||||||
|
del sys.modules['xml.parsers.expat.errors']
|
||||||
|
del sys.modules['email']
|
||||||
|
del sys.modules['email.parser']
|
||||||
|
del sys.modules['email.feedparser']
|
||||||
|
del sys.modules['email.errors']
|
||||||
|
del sys.modules['email._policybase']
|
||||||
|
del sys.modules['email.header']
|
||||||
|
del sys.modules['email.quoprimime']
|
||||||
|
del sys.modules['string']
|
||||||
|
del sys.modules['_string']
|
||||||
|
del sys.modules['email.base64mime']
|
||||||
|
del sys.modules['base64']
|
||||||
|
del sys.modules['email.charset']
|
||||||
|
del sys.modules['email.encoders']
|
||||||
|
del sys.modules['quopri']
|
||||||
|
del sys.modules['email.utils']
|
||||||
|
del sys.modules['random']
|
||||||
|
del sys.modules['hashlib']
|
||||||
|
del sys.modules['_hashlib']
|
||||||
|
del sys.modules['_blake2']
|
||||||
|
del sys.modules['_sha3']
|
||||||
|
del sys.modules['bisect']
|
||||||
|
del sys.modules['_bisect']
|
||||||
|
del sys.modules['_random']
|
||||||
|
del sys.modules['socket']
|
||||||
|
del sys.modules['_socket']
|
||||||
|
del sys.modules['urllib']
|
||||||
|
del sys.modules['urllib.parse']
|
||||||
|
del sys.modules['email._parseaddr']
|
||||||
|
del sys.modules['calendar']
|
||||||
|
del sys.modules['locale']
|
||||||
|
del sys.modules['tempfile']
|
||||||
|
del sys.modules['textwrap']
|
||||||
|
del sys.modules['six']
|
||||||
|
del sys.modules['six.moves']
|
||||||
|
del sys.modules['six.moves.urllib']
|
||||||
|
del sys.modules['packaging']
|
||||||
|
del sys.modules['packaging.__about__']
|
||||||
|
del sys.modules['packaging.version']
|
||||||
|
del sys.modules['packaging._structures']
|
||||||
|
del sys.modules['packaging.specifiers']
|
||||||
|
del sys.modules['packaging._compat']
|
||||||
|
del sys.modules['packaging.requirements']
|
||||||
|
del sys.modules['pyparsing']
|
||||||
|
del sys.modules['copy']
|
||||||
|
del sys.modules['pprint']
|
||||||
|
del sys.modules['packaging.markers']
|
||||||
|
del sys.modules['appdirs']
|
||||||
|
del sys.modules['sysconfig']
|
||||||
|
del sys.modules['email.message']
|
||||||
|
del sys.modules['uu']
|
||||||
|
del sys.modules['email._encoded_words']
|
||||||
|
del sys.modules['email.iterators']
|
||||||
|
del sys.modules['argparse']
|
||||||
|
del sys.modules['gettext']
|
||||||
|
del sys.modules['pickle']
|
||||||
|
del sys.modules['_compat_pickle']
|
||||||
|
del sys.modules['_pickle']
|
||||||
|
del sys.modules['array']
|
||||||
|
del sys.modules['__mp_main__']
|
||||||
|
del sys.modules['queue']
|
||||||
|
del sys.modules['ctypes']
|
||||||
|
del sys.modules['_ctypes']
|
||||||
|
del sys.modules['ctypes._endian']
|
||||||
|
del sys.modules['ctypes.util']
|
||||||
|
del sys.modules['json']
|
||||||
|
del sys.modules['json.decoder']
|
||||||
|
del sys.modules['json.scanner']
|
||||||
|
del sys.modules['_json']
|
||||||
|
del sys.modules['json.encoder']
|
||||||
|
del sys.modules['flask']
|
||||||
|
del sys.modules['werkzeug']
|
||||||
|
del sys.modules['werkzeug._compat']
|
||||||
|
del sys.modules['werkzeug.exceptions']
|
||||||
|
del sys.modules['werkzeug._internal']
|
||||||
|
del sys.modules['inspect']
|
||||||
|
del sys.modules['ast']
|
||||||
|
del sys.modules['_ast']
|
||||||
|
del sys.modules['dis']
|
||||||
|
del sys.modules['opcode']
|
||||||
|
del sys.modules['_opcode']
|
||||||
|
del sys.modules['werkzeug.wrappers']
|
||||||
|
del sys.modules['werkzeug.http']
|
||||||
|
del sys.modules['urllib.request']
|
||||||
|
del sys.modules['http']
|
||||||
|
del sys.modules['http.client']
|
||||||
|
del sys.modules['ssl']
|
||||||
|
del sys.modules['ipaddress']
|
||||||
|
del sys.modules['_ssl']
|
||||||
|
del sys.modules['urllib.error']
|
||||||
|
del sys.modules['urllib.response']
|
||||||
|
del sys.modules['werkzeug.datastructures']
|
||||||
|
del sys.modules['mimetypes']
|
||||||
|
del sys.modules['werkzeug.filesystem']
|
||||||
|
del sys.modules['werkzeug.urls']
|
||||||
|
del sys.modules['werkzeug.formparser']
|
||||||
|
del sys.modules['werkzeug.wsgi']
|
||||||
|
del sys.modules['werkzeug.utils']
|
||||||
|
del sys.modules['html']
|
||||||
|
del sys.modules['html.entities']
|
||||||
|
del sys.modules['jinja2']
|
||||||
|
del sys.modules['jinja2.environment']
|
||||||
|
del sys.modules['jinja2.nodes']
|
||||||
|
del sys.modules['jinja2.utils']
|
||||||
|
del sys.modules['jinja2._compat']
|
||||||
|
del sys.modules['markupsafe']
|
||||||
|
del sys.modules['markupsafe._compat']
|
||||||
|
del sys.modules['markupsafe._speedups']
|
||||||
|
del sys.modules['jinja2.defaults']
|
||||||
|
del sys.modules['jinja2.filters']
|
||||||
|
del sys.modules['jinja2.runtime']
|
||||||
|
del sys.modules['jinja2.exceptions']
|
||||||
|
del sys.modules['jinja2.tests']
|
||||||
|
del sys.modules['decimal']
|
||||||
|
del sys.modules['_pydecimal']
|
||||||
|
del sys.modules['numbers']
|
||||||
|
del sys.modules['jinja2.lexer']
|
||||||
|
del sys.modules['unicodedata']
|
||||||
|
del sys.modules['jinja2.parser']
|
||||||
|
del sys.modules['jinja2.compiler']
|
||||||
|
del sys.modules['jinja2.visitor']
|
||||||
|
del sys.modules['jinja2.optimizer']
|
||||||
|
del sys.modules['jinja2.idtracking']
|
||||||
|
del sys.modules['jinja2.loaders']
|
||||||
|
del sys.modules['jinja2.bccache']
|
||||||
|
del sys.modules['jinja2.asyncsupport']
|
||||||
|
del sys.modules['asyncio']
|
||||||
|
del sys.modules['asyncio.base_events']
|
||||||
|
del sys.modules['concurrent']
|
||||||
|
del sys.modules['concurrent.futures']
|
||||||
|
del sys.modules['concurrent.futures._base']
|
||||||
|
del sys.modules['logging']
|
||||||
|
del sys.modules['atexit']
|
||||||
|
del sys.modules['concurrent.futures.process']
|
||||||
|
del sys.modules['multiprocessing.connection']
|
||||||
|
del sys.modules['_multiprocessing']
|
||||||
|
del sys.modules['multiprocessing.util']
|
||||||
|
del sys.modules['concurrent.futures.thread']
|
||||||
|
del sys.modules['asyncio.compat']
|
||||||
|
del sys.modules['asyncio.coroutines']
|
||||||
|
del sys.modules['asyncio.events']
|
||||||
|
del sys.modules['asyncio.base_futures']
|
||||||
|
del sys.modules['asyncio.log']
|
||||||
|
del sys.modules['asyncio.futures']
|
||||||
|
del sys.modules['asyncio.base_tasks']
|
||||||
|
del sys.modules['_asyncio']
|
||||||
|
del sys.modules['asyncio.tasks']
|
||||||
|
del sys.modules['asyncio.locks']
|
||||||
|
del sys.modules['asyncio.protocols']
|
||||||
|
del sys.modules['asyncio.queues']
|
||||||
|
del sys.modules['asyncio.streams']
|
||||||
|
del sys.modules['asyncio.subprocess']
|
||||||
|
del sys.modules['asyncio.transports']
|
||||||
|
del sys.modules['asyncio.unix_events']
|
||||||
|
del sys.modules['asyncio.base_subprocess']
|
||||||
|
del sys.modules['asyncio.constants']
|
||||||
|
del sys.modules['asyncio.selector_events']
|
||||||
|
del sys.modules['asyncio.sslproto']
|
||||||
|
del sys.modules['jinja2.asyncfilters']
|
||||||
|
del sys.modules['flask.app']
|
||||||
|
del sys.modules['werkzeug.routing']
|
||||||
|
del sys.modules['difflib']
|
||||||
|
del sys.modules['flask.helpers']
|
||||||
|
del sys.modules['flask.signals']
|
||||||
|
del sys.modules['flask.globals']
|
||||||
|
del sys.modules['werkzeug.local']
|
||||||
|
del sys.modules['flask._compat']
|
||||||
|
del sys.modules['flask.json']
|
||||||
|
del sys.modules['itsdangerous']
|
||||||
|
del sys.modules['hmac']
|
||||||
|
del sys.modules['flask.cli']
|
||||||
|
del sys.modules['click']
|
||||||
|
del sys.modules['click.core']
|
||||||
|
del sys.modules['click.types']
|
||||||
|
del sys.modules['click._compat']
|
||||||
|
del sys.modules['click.exceptions']
|
||||||
|
del sys.modules['click.utils']
|
||||||
|
del sys.modules['click.globals']
|
||||||
|
del sys.modules['click.termui']
|
||||||
|
del sys.modules['click.formatting']
|
||||||
|
del sys.modules['click.parser']
|
||||||
|
del sys.modules['click._unicodefun']
|
||||||
|
del sys.modules['click.decorators']
|
||||||
|
del sys.modules['flask.wrappers']
|
||||||
|
del sys.modules['flask.config']
|
||||||
|
del sys.modules['flask.ctx']
|
||||||
|
del sys.modules['flask.sessions']
|
||||||
|
del sys.modules['flask.templating']
|
||||||
|
del sys.modules['flask.blueprints']
|
||||||
|
del sys.modules['werkzeug.serving']
|
||||||
|
|
||||||
|
print(sys.modules.keys())
|
||||||
sys.modules.update(self.overwritten_modules)
|
sys.modules.update(self.overwritten_modules)
|
||||||
with redirect_stdout(self.stdout):
|
with redirect_stdout(self.stdout):
|
||||||
with redirect_stderr(self.stderr):
|
with redirect_stderr(self.stderr):
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from . import savemodules
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import io
|
import io
|
||||||
|
@ -24,9 +25,15 @@ class QueuedOut(io.StringIO):
|
||||||
lines = b.split('\n')
|
lines = b.split('\n')
|
||||||
for line in lines[:-1]:
|
for line in lines[:-1]:
|
||||||
super().write(line)
|
super().write(line)
|
||||||
self.flush()
|
self.explflush()
|
||||||
super().write(lines[-1])
|
super().write(lines[-1])
|
||||||
|
|
||||||
|
def explflush(self):
|
||||||
|
value = self.getvalue()
|
||||||
|
self.queue.put((self.name, value))
|
||||||
|
self.seek(0)
|
||||||
|
self.truncate(0)
|
||||||
|
|
||||||
def flush(self):
|
def flush(self):
|
||||||
value = self.getvalue()
|
value = self.getvalue()
|
||||||
if len(value) > 1:
|
if len(value) > 1:
|
||||||
|
@ -100,7 +107,7 @@ def start_module(name, is_module):
|
||||||
ioerr,
|
ioerr,
|
||||||
overwritten_modules={'argparse': argparser},
|
overwritten_modules={'argparse': argparser},
|
||||||
is_module = is_module,
|
is_module = is_module,
|
||||||
#original_modules = emptymodules
|
original_modules = savemodules.savedmodules
|
||||||
)
|
)
|
||||||
views.app.module_process.start()
|
views.app.module_process.start()
|
||||||
views.app.output.start()
|
views.app.output.start()
|
||||||
|
|
2
warped/savemodules.py
Normal file
2
warped/savemodules.py
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
import sys
|
||||||
|
savedmodules = dict(sys.modules)
|
Loading…
Add table
Reference in a new issue