mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-18029 Remove pydev_run_in_console.py
This script is no longer used in PyCharm but it requires changes after switching to new transport.
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user