diff --git a/python/helpers/pydev/_pydevd_bundle/pydevd_dont_trace_files.py b/python/helpers/pydev/_pydevd_bundle/pydevd_dont_trace_files.py index 33bb9fa020cc..4d65b3d269b6 100644 --- a/python/helpers/pydev/_pydevd_bundle/pydevd_dont_trace_files.py +++ b/python/helpers/pydev/_pydevd_bundle/pydevd_dont_trace_files.py @@ -55,7 +55,6 @@ DONT_TRACE = { 'pydev_monkey.py': PYDEV_FILE, 'pydev_monkey_qt.py': PYDEV_FILE, 'pydev_override.py': PYDEV_FILE, - 'pydev_run_in_console.py': PYDEV_FILE, 'pydev_umd.py': PYDEV_FILE, 'pydev_versioncheck.py': PYDEV_FILE, 'pydevconsole.py': PYDEV_FILE, diff --git a/python/helpers/pydev/pydev_run_in_console.py b/python/helpers/pydev/pydev_run_in_console.py deleted file mode 100644 index 85ffe45391cf..000000000000 --- a/python/helpers/pydev/pydev_run_in_console.py +++ /dev/null @@ -1,160 +0,0 @@ -''' -Entry point module to run a file in the interactive console. -''' -import os -import sys -import traceback - -from _pydev_bundle import pydev_imports -from _pydev_bundle.pydev_console_utils import StdIn -from _pydev_imps._pydev_saved_modules import threading, _queue -from _pydevd_bundle.pydevd_utils import save_main_module -from pydevconsole import InterpreterInterface, process_exec_queue, start_console_server, init_mpl_in_console -from pydevd_file_utils import get_fullname - - -def run_file(file, globals=None, locals=None, is_module=False): - module_name = None - entry_point_fn = None - if is_module: - file, _, entry_point_fn = file.partition(':') - module_name = file - filename = get_fullname(file) - if filename is None: - sys.stderr.write("No module named %s\n" % file) - return - else: - file = filename - - if os.path.isdir(file): - new_target = os.path.join(file, '__main__.py') - if os.path.isfile(new_target): - file = new_target - - if globals is None: - m = save_main_module(file, 'pydev_run_in_console') - - globals = m.__dict__ - try: - globals['__builtins__'] = __builtins__ - except NameError: - pass # Not there on Jython... - - if locals is None: - locals = globals - - if not is_module: - sys.path.insert(0, os.path.split(file)[0]) - - print('Running %s' % file) - try: - if not is_module: - pydev_imports.execfile(file, globals, locals) # execute the script - else: - # treat ':' as a seperator between module and entry point function - # if there is no entry point we run we same as with -m switch. Otherwise we perform - # an import and execute the entry point - if entry_point_fn: - mod = __import__(module_name, level=0, fromlist=[entry_point_fn], globals=globals, locals=locals) - func = getattr(mod, entry_point_fn) - func() - else: - # Run with the -m switch - import runpy - if hasattr(runpy, '_run_module_as_main'): - runpy._run_module_as_main(module_name) - else: - runpy.run_module(module_name) - except: - traceback.print_exc() - - return globals - - -def skip_successful_exit(*args): - """ System exit in file shouldn't kill interpreter (i.e. in `timeit`)""" - if len(args) == 1 and args[0] in (0, None): - pass - else: - raise SystemExit(*args) - - -def process_args(argv): - setup_args = {'file': '', 'module': False} - - setup_args['port'] = argv[1] - del argv[1] - setup_args['client_port'] = argv[1] - del argv[1] - - module_flag = "--module" - if module_flag in argv: - i = argv.index(module_flag) - if i != -1: - setup_args['module'] = True - setup_args['file'] = argv[i + 1] - del sys.argv[i] - else: - setup_args['file'] = argv[1] - - del argv[0] - - return setup_args - - -#======================================================================================================================= -# main -#======================================================================================================================= -if __name__ == '__main__': - setup = process_args(sys.argv) - - port = setup['port'] - client_port = setup['client_port'] - file = setup['file'] - is_module = setup['module'] - - from _pydev_bundle import pydev_localhost - - if int(port) == 0 and int(client_port) == 0: - (h, p) = pydev_localhost.get_socket_name() - client_port = p - - host = pydev_localhost.get_localhost() - - #replace exit (see comments on method) - #note that this does not work in jython!!! (sys method can't be replaced). - sys.exit = skip_successful_exit - - connect_status_queue = _queue.Queue() - # ERROR `InterpreterInterface.__init__()` signature changed - # todo this method and file will be eliminated by Liza - interpreter = InterpreterInterface(host, int(client_port), threading.currentThread(), connect_status_queue=connect_status_queue) - - server_thread = threading.Thread(target=start_console_server, - name='ServerThread', - args=(host, int(port), interpreter)) - server_thread.setDaemon(True) - server_thread.start() - - # ERROR `StdIn.__init__()` signature changed - # todo this method and file will be eliminated by Liza - sys.stdin = StdIn(interpreter, host, client_port, sys.stdin) - - init_mpl_in_console(interpreter) - - try: - success = connect_status_queue.get(True, 60) - if not success: - raise ValueError() - except: - sys.stderr.write("Console server didn't start\n") - sys.stderr.flush() - sys.exit(1) - - globals = run_file(file, None, None, is_module) - - interpreter.get_namespace().update(globals) - - interpreter.ShowConsole() - - process_exec_queue(interpreter) diff --git a/python/helpers/pydev/pydevconsole.py b/python/helpers/pydev/pydevconsole.py index 81c7e4e6d1ce..a501afbaa07e 100644 --- a/python/helpers/pydev/pydevconsole.py +++ b/python/helpers/pydev/pydevconsole.py @@ -247,87 +247,6 @@ def do_exit(*args): os._exit(0) -#======================================================================================================================= -# start_console_server -#======================================================================================================================= -def start_console_server(host, port, interpreter): - try: - if port == 0: - host = '' - - #I.e.: supporting the internal Jython version in PyDev to create a Jython interactive console inside Eclipse. - from _pydev_bundle.pydev_imports import SimpleXMLRPCServer as XMLRPCServer #@Reimport - - try: - # @alexander todo initialize transport and thrift server here - if IS_PY24: - server = XMLRPCServer((host, port), logRequests=False) - else: - server = XMLRPCServer((host, port), logRequests=False, allow_none=True) - - except: - # @alexander keep `except` block - sys.stderr.write('Error starting server with host: "%s", port: "%s", client_port: "%s"\n' % (host, port, interpreter.client_port)) - sys.stderr.flush() - raise - - # @alexander keep - # Tell UMD the proper default namespace - _set_globals_function(interpreter.get_namespace) - - # @alexander todo `server.register_function(...)` should all gone - server.register_function(interpreter.execLine) - server.register_function(interpreter.execMultipleLines) - server.register_function(interpreter.getCompletions) - server.register_function(interpreter.getFrame) - server.register_function(interpreter.getVariable) - server.register_function(interpreter.changeVariable) - server.register_function(interpreter.getDescription) - server.register_function(interpreter.close) - server.register_function(interpreter.interrupt) - server.register_function(interpreter.handshake) - server.register_function(interpreter.connectToDebugger) - server.register_function(interpreter.hello) - server.register_function(interpreter.getArray) - server.register_function(interpreter.evaluate) - server.register_function(interpreter.ShowConsole) - server.register_function(interpreter.loadFullValue) - - # Functions for GUI main loop integration - server.register_function(interpreter.enableGui) - - # @alexander commented out because it is not necessary now - # if port == 0: - # (h, port) = server.socket.getsockname() - # - # print(port) - # print(interpreter.client_port) - - while True: - try: - server.serve_forever() - except: - # Ugly code to be py2/3 compatible - # https://sw-brainwy.rhcloud.com/tracker/PyDev/534: - # Unhandled "interrupted system call" error in the pydevconsol.py - e = sys.exc_info()[1] - retry = False - try: - retry = e.args[0] == 4 #errno.EINTR - except: - pass - if not retry: - raise - # Otherwise, keep on going - return server - except: - traceback.print_exc() - # Notify about error to avoid long waiting - connection_queue = interpreter.get_connect_status_queue() - if connection_queue is not None: - connection_queue.put(False) - - def enable_thrift_logging(): import logging @@ -402,7 +321,6 @@ def start_client(host, port): interpreter = InterpreterInterface(threading.currentThread(), None, client) - # start_new_thread(start_console_server,(host, port, interpreter)) # we do not need to start the server in a new thread because it does not need to accept a client connection, it already has it diff --git a/python/helpers/pydev/setup.py b/python/helpers/pydev/setup.py index e779033a7d89..6d64bf552d83 100644 --- a/python/helpers/pydev/setup.py +++ b/python/helpers/pydev/setup.py @@ -121,7 +121,6 @@ args = dict( 'pydev_app_engine_debug_startup', # 'pydev_coverage', -- Not needed for debugger # 'pydev_pysrc', -- Not needed for debugger - 'pydev_run_in_console', 'pydevconsole', 'pydevd_file_utils', 'pydevd', diff --git a/python/src/com/jetbrains/python/PythonHelper.java b/python/src/com/jetbrains/python/PythonHelper.java index 4c2dc6adff96..5858ef65c677 100644 --- a/python/src/com/jetbrains/python/PythonHelper.java +++ b/python/src/com/jetbrains/python/PythonHelper.java @@ -47,7 +47,6 @@ public enum PythonHelper implements HelperPackage { ATTACH_DEBUGGER("pydev/pydevd_attach_to_process/attach_pydevd.py"), CONSOLE("pydev", "pydevconsole", HelperDependency.THRIFTPY), - RUN_IN_CONSOLE("pydev", "pydev_run_in_console"), PROFILER("profiler", "run_profiler", HelperDependency.THRIFTPY), LOAD_ENTRY_POINT("pycharm", "pycharm_load_entry_point"),