From bd07fdbb53c20289bd080b9f88d6def0e1036274 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Mon, 29 Dec 2014 12:40:09 +0100 Subject: [PATCH 1/3] Remove debugger wrapper from argv for 'Show command line option' (PY-14767). --- python/helpers/pydev/pydev_run_in_console.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/helpers/pydev/pydev_run_in_console.py b/python/helpers/pydev/pydev_run_in_console.py index 731ead67115e..4224dd1ca999 100644 --- a/python/helpers/pydev/pydev_run_in_console.py +++ b/python/helpers/pydev/pydev_run_in_console.py @@ -41,6 +41,8 @@ if __name__ == '__main__': file = sys.argv[1] + del sys.argv[0] + import pydev_localhost if int(port) == 0 and int(client_port) == 0: From 6e9e4188df90ac616156992f0a4e259ec70702bb Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Mon, 29 Dec 2014 15:00:42 +0100 Subject: [PATCH 2/3] Fix a typo. --- python/helpers/pydev/pydevconsole.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/helpers/pydev/pydevconsole.py b/python/helpers/pydev/pydevconsole.py index c4dc4fdc53c4..02bf1b568295 100644 --- a/python/helpers/pydev/pydevconsole.py +++ b/python/helpers/pydev/pydevconsole.py @@ -336,7 +336,7 @@ def get_interpreter(): try: interpreterInterface = getattr(__builtin__, 'interpreter') except AttributeError: - # fake return_controll_callback function just to prevent exception in PyCharm bebug console + # fake return_controll_callback function just to prevent exception in PyCharm debug console from pydev_ipython.inputhook import set_return_control_callback set_return_control_callback(lambda x: True) From f86b90f2f6e58d2a97766fd9ac6804679db004ea Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Mon, 29 Dec 2014 21:20:19 +0100 Subject: [PATCH 3/3] Fixes from Pydev.Debugger --- .../helpers/pydev/_pydev_jy_imports_tipper.py | 12 +++++++++-- python/helpers/pydev/pydev_monkey.py | 20 +++++++++++++++++++ python/helpers/pydev/pydev_monkey_qt.py | 6 +++--- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/python/helpers/pydev/_pydev_jy_imports_tipper.py b/python/helpers/pydev/_pydev_jy_imports_tipper.py index db1d7f895106..a60d47afa690 100644 --- a/python/helpers/pydev/_pydev_jy_imports_tipper.py +++ b/python/helpers/pydev/_pydev_jy_imports_tipper.py @@ -190,12 +190,20 @@ def ismethod(func): args = list(names[:nargs]) step = 0 + if not hasattr(func_code, 'CO_VARARGS'): + from org.python.core import CodeFlag + co_varargs_flag = CodeFlag.CO_VARARGS.flag + co_varkeywords_flag = CodeFlag.CO_VARKEYWORDS.flag + else: + co_varargs_flag = func_code.CO_VARARGS + co_varkeywords_flag = func_code.CO_VARKEYWORDS + varargs = None - if func_code.co_flags & func_code.CO_VARARGS: + if func_code.co_flags & co_varargs_flag: varargs = func_code.co_varnames[nargs] nargs = nargs + 1 varkw = None - if func_code.co_flags & func_code.CO_VARKEYWORDS: + if func_code.co_flags & co_varkeywords_flag: varkw = func_code.co_varnames[nargs] return args, varargs, varkw diff --git a/python/helpers/pydev/pydev_monkey.py b/python/helpers/pydev/pydev_monkey.py index d92378ed0ee1..a43c492ed46c 100644 --- a/python/helpers/pydev/pydev_monkey.py +++ b/python/helpers/pydev/pydev_monkey.py @@ -277,6 +277,16 @@ os.spawnvpe(mode, file, args, env) return getattr(os, original_name)(mode, path, patch_args(args), env) return new_spawnve +def create_fork_exec(original_name): + """ +_posixsubprocess.fork_exec(args, executable_list, close_fds, ... (13 more)) + """ + def new_fork_exec(args, *other_args): + import _posixsubprocess + args = patch_args(args) + return getattr(_posixsubprocess, original_name)(args, *other_args) + return new_fork_exec + def create_CreateProcess(original_name): """ CreateProcess(*args, **kwargs) @@ -351,6 +361,11 @@ def patch_new_process_functions(): if sys.platform != 'win32': monkey_patch_os('fork', create_fork) + try: + import _posixsubprocess + monkey_patch_module(_posixsubprocess, 'fork_exec', create_fork_exec) + except ImportError: + pass else: #Windows try: @@ -380,6 +395,11 @@ def patch_new_process_functions_with_warning(): if sys.platform != 'win32': monkey_patch_os('fork', create_warn_multiproc) + try: + import _posixsubprocess + monkey_patch_module(_posixsubprocess, 'fork_exec', create_warn_multiproc) + except ImportError: + pass else: #Windows try: diff --git a/python/helpers/pydev/pydev_monkey_qt.py b/python/helpers/pydev/pydev_monkey_qt.py index 2da5655f5dff..6274f02f76be 100644 --- a/python/helpers/pydev/pydev_monkey_qt.py +++ b/python/helpers/pydev/pydev_monkey_qt.py @@ -66,7 +66,7 @@ def _patch_import_to_patch_pyqt_on_import(patch_qt_on_import): #we should not show frame added by patched_import call return type, value, traceback.tb_next return type, value, traceback - + def patched_import(name, *args, **kwargs): if patch_qt_on_import == name or name.startswith(dotted): builtins.__import__ = original_import @@ -80,7 +80,7 @@ def _patch_import_to_patch_pyqt_on_import(patch_qt_on_import): import __builtin__ as builtins builtins.__import__ = patched_import sys.exc_info = patched_exc_info - + def _internal_patch_qt(): try: @@ -97,7 +97,7 @@ def _internal_patch_qt(): _original_thread_init = QtCore.QThread.__init__ _original_runnable_init = QtCore.QRunnable.__init__ _original_QThread = QtCore.QThread - + class FuncWrapper: