Sun, 18 Sep 2016 21:35:53 +0200
Get changes from current branch.
--- a/.hgignore Thu Sep 15 21:49:13 2016 +0200 +++ b/.hgignore Sun Sep 18 21:35:53 2016 +0200 @@ -17,3 +17,4 @@ glob:**.DS_Store glob:**.coverage glob:GPUCache +glob:**Thumbs.db
--- a/APIs/Python3/eric6.api Thu Sep 15 21:49:13 2016 +0200 +++ b/APIs/Python3/eric6.api Sun Sep 18 21:35:53 2016 +0200 @@ -118,222 +118,184 @@ eric6.DataViews.PyProfileDialog.PyProfileDialog.on_buttonBox_clicked?4(button) eric6.DataViews.PyProfileDialog.PyProfileDialog.start?4(pfn, fn=None) eric6.DataViews.PyProfileDialog.PyProfileDialog?1(parent=None) -eric6.DebugClients.Python.AsyncFile.AsyncFile.close?4(closeit=0) -eric6.DebugClients.Python.AsyncFile.AsyncFile.fileno?4() -eric6.DebugClients.Python.AsyncFile.AsyncFile.flush?4() -eric6.DebugClients.Python.AsyncFile.AsyncFile.isatty?4() -eric6.DebugClients.Python.AsyncFile.AsyncFile.maxbuffersize?7 -eric6.DebugClients.Python.AsyncFile.AsyncFile.maxtries?7 -eric6.DebugClients.Python.AsyncFile.AsyncFile.pendingWrite?4() -eric6.DebugClients.Python.AsyncFile.AsyncFile.read?4(size=-1) -eric6.DebugClients.Python.AsyncFile.AsyncFile.read_p?4(size=-1) -eric6.DebugClients.Python.AsyncFile.AsyncFile.readline?4(sizehint=-1) -eric6.DebugClients.Python.AsyncFile.AsyncFile.readline_p?4(size=-1) -eric6.DebugClients.Python.AsyncFile.AsyncFile.readlines?4(sizehint=-1) -eric6.DebugClients.Python.AsyncFile.AsyncFile.seek?4(offset, whence=0) -eric6.DebugClients.Python.AsyncFile.AsyncFile.tell?4() -eric6.DebugClients.Python.AsyncFile.AsyncFile.truncate?4(size=-1) -eric6.DebugClients.Python.AsyncFile.AsyncFile.write?4(s) -eric6.DebugClients.Python.AsyncFile.AsyncFile.writelines?4(list) -eric6.DebugClients.Python.AsyncFile.AsyncFile?1(sock, mode, name) -eric6.DebugClients.Python.AsyncFile.AsyncPendingWrite?4(file) -eric6.DebugClients.Python.AsyncIO.AsyncIO.disconnect?4() -eric6.DebugClients.Python.AsyncIO.AsyncIO.readReady?4(fd) -eric6.DebugClients.Python.AsyncIO.AsyncIO.setDescriptors?4(rfd, wfd) -eric6.DebugClients.Python.AsyncIO.AsyncIO.write?4(s) -eric6.DebugClients.Python.AsyncIO.AsyncIO.writeReady?4(fd) -eric6.DebugClients.Python.AsyncIO.AsyncIO?1() -eric6.DebugClients.Python.DCTestResult.DCTestResult.addError?4(test, err) -eric6.DebugClients.Python.DCTestResult.DCTestResult.addExpectedFailure?4(test, err) -eric6.DebugClients.Python.DCTestResult.DCTestResult.addFailure?4(test, err) -eric6.DebugClients.Python.DCTestResult.DCTestResult.addSkip?4(test, reason) -eric6.DebugClients.Python.DCTestResult.DCTestResult.addUnexpectedSuccess?4(test) -eric6.DebugClients.Python.DCTestResult.DCTestResult.startTest?4(test) -eric6.DebugClients.Python.DCTestResult.DCTestResult.stopTest?4(test) -eric6.DebugClients.Python.DCTestResult.DCTestResult?1(parent) -eric6.DebugClients.Python.DebugBase.DebugBase.break_anywhere?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.break_here?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.clear_watch?4(cond) -eric6.DebugClients.Python.DebugBase.DebugBase.dispatch_exception?4(frame, arg) -eric6.DebugClients.Python.DebugBase.DebugBase.dispatch_line?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.dispatch_return?4(frame, arg) -eric6.DebugClients.Python.DebugBase.DebugBase.fix_frame_filename?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.getCurrentFrame?4() -eric6.DebugClients.Python.DebugBase.DebugBase.getEvent?4() -eric6.DebugClients.Python.DebugBase.DebugBase.getFrameLocals?4(frmnr=0) -eric6.DebugClients.Python.DebugBase.DebugBase.getStack?4() -eric6.DebugClients.Python.DebugBase.DebugBase.get_break?4(filename, lineno) -eric6.DebugClients.Python.DebugBase.DebugBase.get_watch?4(cond) -eric6.DebugClients.Python.DebugBase.DebugBase.go?4(special) -eric6.DebugClients.Python.DebugBase.DebugBase.isBroken?4() -eric6.DebugClients.Python.DebugBase.DebugBase.profile?4(frame, event, arg) -eric6.DebugClients.Python.DebugBase.DebugBase.setRecursionDepth?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.set_continue?4(special) -eric6.DebugClients.Python.DebugBase.DebugBase.set_quit?4() -eric6.DebugClients.Python.DebugBase.DebugBase.set_trace?4(frame=None) -eric6.DebugClients.Python.DebugBase.DebugBase.set_watch?4(cond, temporary=0) -eric6.DebugClients.Python.DebugBase.DebugBase.step?4(traceMode) -eric6.DebugClients.Python.DebugBase.DebugBase.stepOut?4() -eric6.DebugClients.Python.DebugBase.DebugBase.stop_here?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.storeFrameLocals?4(frmnr=0) -eric6.DebugClients.Python.DebugBase.DebugBase.trace_dispatch?4(frame, event, arg) -eric6.DebugClients.Python.DebugBase.DebugBase.user_exception?4(frame, (exctype, excval, exctb), unhandled=0) -eric6.DebugClients.Python.DebugBase.DebugBase.user_line?4(frame) -eric6.DebugClients.Python.DebugBase.DebugBase.user_return?4(frame, retval) -eric6.DebugClients.Python.DebugBase.DebugBase?1(dbgClient) -eric6.DebugClients.Python.DebugBase.gRecursionLimit?7 -eric6.DebugClients.Python.DebugBase.printerr?4(s) -eric6.DebugClients.Python.DebugBase.setRecursionLimit?4(limit) -eric6.DebugClients.Python.DebugClient.DebugClient.debugClient?7 -eric6.DebugClients.Python.DebugClient.DebugClient?1() -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.absPath?4(fn) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.attachThread?4(target=None, args=None, kwargs=None, mainThread=0) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.clientCapabilities?7 -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.close?4(fd) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.connectDebugger?4(port, remoteAddress=None, redirect=1) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.eventLoop?4(disablePolling=False) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.eventPoll?4() -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.fork?4() -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.getCoding?4() -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.getRunning?4() -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.handleLine?4(line) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.input?4(prompt) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.main?4() -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.progTerminated?4(status) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.raw_input?4(prompt, echo) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.run_call?4(scriptname, func, *args) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sessionClose?4(exit=1) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.shouldSkip?4(fn) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.startDebugger?4(filename=None, host=None, port=None, enableTrace=1, exceptions=1, tracePython=0, redirect=1) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.startProgInDebugger?4(progargs, wd='', host=None, port=None, exceptions=1, tracePython=0, redirect=1) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase.write?4(s) -eric6.DebugClients.Python.DebugClientBase.DebugClientBase?1() -eric6.DebugClients.Python.DebugClientBase.DebugClientClose?4(fd) -eric6.DebugClients.Python.DebugClientBase.DebugClientFork?4() -eric6.DebugClients.Python.DebugClientBase.DebugClientInput?4(prompt="") -eric6.DebugClients.Python.DebugClientBase.DebugClientInstance?7 -eric6.DebugClients.Python.DebugClientBase.DebugClientRawInput?4(prompt="", echo=1) -eric6.DebugClients.Python.DebugClientBase.DebugClientSetRecursionLimit?4(limit) -eric6.DebugClients.Python.DebugClientCapabilities.HasAll?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasCompleter?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasCoverage?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasDebugger?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasInterpreter?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasProfiler?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasShell?7 -eric6.DebugClients.Python.DebugClientCapabilities.HasUnittest?7 -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.attachThread?4(target=None, args=None, kwargs=None, mainThread=0) -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.debugClient?7 -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.eventLoop?4(disablePolling=False) -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.lockClient?4(blocking=1) -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.setCurrentThread?4(id) -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.set_quit?4() -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.threadTerminated?4(dbgThread) -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads.unlockClient?4() -eric6.DebugClients.Python.DebugClientThreads.DebugClientThreads?1() -eric6.DebugClients.Python.DebugClientThreads._debugclient_start_new_thread?5(target, args, kwargs={}) -eric6.DebugClients.Python.DebugClientThreads._original_start_thread?8 -eric6.DebugClients.Python.DebugConfig.ConfigVarTypeStrings?7 -eric6.DebugClients.Python.DebugProtocol.CallTrace?7 -eric6.DebugClients.Python.DebugProtocol.DebugAddress?7 -eric6.DebugClients.Python.DebugProtocol.EOT?7 -eric6.DebugClients.Python.DebugProtocol.PassiveStartup?7 -eric6.DebugClients.Python.DebugProtocol.RequestBanner?7 -eric6.DebugClients.Python.DebugProtocol.RequestBreak?7 -eric6.DebugClients.Python.DebugProtocol.RequestBreakEnable?7 -eric6.DebugClients.Python.DebugProtocol.RequestBreakIgnore?7 -eric6.DebugClients.Python.DebugProtocol.RequestCallTrace?7 -eric6.DebugClients.Python.DebugProtocol.RequestCapabilities?7 -eric6.DebugClients.Python.DebugProtocol.RequestCompletion?7 -eric6.DebugClients.Python.DebugProtocol.RequestContinue?7 -eric6.DebugClients.Python.DebugProtocol.RequestCoverage?7 -eric6.DebugClients.Python.DebugProtocol.RequestEnv?7 -eric6.DebugClients.Python.DebugProtocol.RequestEval?7 -eric6.DebugClients.Python.DebugProtocol.RequestExec?7 -eric6.DebugClients.Python.DebugProtocol.RequestForkMode?7 -eric6.DebugClients.Python.DebugProtocol.RequestForkTo?7 -eric6.DebugClients.Python.DebugProtocol.RequestLoad?7 -eric6.DebugClients.Python.DebugProtocol.RequestOK?7 -eric6.DebugClients.Python.DebugProtocol.RequestProfile?7 -eric6.DebugClients.Python.DebugProtocol.RequestRun?7 -eric6.DebugClients.Python.DebugProtocol.RequestSetFilter?7 -eric6.DebugClients.Python.DebugProtocol.RequestShutdown?7 -eric6.DebugClients.Python.DebugProtocol.RequestStep?7 -eric6.DebugClients.Python.DebugProtocol.RequestStepOut?7 -eric6.DebugClients.Python.DebugProtocol.RequestStepOver?7 -eric6.DebugClients.Python.DebugProtocol.RequestStepQuit?7 -eric6.DebugClients.Python.DebugProtocol.RequestThreadList?7 -eric6.DebugClients.Python.DebugProtocol.RequestThreadSet?7 -eric6.DebugClients.Python.DebugProtocol.RequestUTPrepare?7 -eric6.DebugClients.Python.DebugProtocol.RequestUTRun?7 -eric6.DebugClients.Python.DebugProtocol.RequestUTStop?7 -eric6.DebugClients.Python.DebugProtocol.RequestVariable?7 -eric6.DebugClients.Python.DebugProtocol.RequestVariables?7 -eric6.DebugClients.Python.DebugProtocol.RequestWatch?7 -eric6.DebugClients.Python.DebugProtocol.RequestWatchEnable?7 -eric6.DebugClients.Python.DebugProtocol.RequestWatchIgnore?7 -eric6.DebugClients.Python.DebugProtocol.ResponseBPConditionError?7 -eric6.DebugClients.Python.DebugProtocol.ResponseBanner?7 -eric6.DebugClients.Python.DebugProtocol.ResponseCapabilities?7 -eric6.DebugClients.Python.DebugProtocol.ResponseClearBreak?7 -eric6.DebugClients.Python.DebugProtocol.ResponseClearWatch?7 -eric6.DebugClients.Python.DebugProtocol.ResponseCompletion?7 -eric6.DebugClients.Python.DebugProtocol.ResponseContinue?7 -eric6.DebugClients.Python.DebugProtocol.ResponseException?7 -eric6.DebugClients.Python.DebugProtocol.ResponseExit?7 -eric6.DebugClients.Python.DebugProtocol.ResponseForkTo?7 -eric6.DebugClients.Python.DebugProtocol.ResponseLine?7 -eric6.DebugClients.Python.DebugProtocol.ResponseOK?7 -eric6.DebugClients.Python.DebugProtocol.ResponseRaw?7 -eric6.DebugClients.Python.DebugProtocol.ResponseSignal?7 -eric6.DebugClients.Python.DebugProtocol.ResponseStack?7 -eric6.DebugClients.Python.DebugProtocol.ResponseSyntax?7 -eric6.DebugClients.Python.DebugProtocol.ResponseThreadList?7 -eric6.DebugClients.Python.DebugProtocol.ResponseThreadSet?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTFinished?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTPrepared?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTStartTest?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTStopTest?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTTestErrored?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTTestFailed?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTTestFailedExpected?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTTestSkipped?7 -eric6.DebugClients.Python.DebugProtocol.ResponseUTTestSucceededUnexpected?7 -eric6.DebugClients.Python.DebugProtocol.ResponseVariable?7 -eric6.DebugClients.Python.DebugProtocol.ResponseVariables?7 -eric6.DebugClients.Python.DebugProtocol.ResponseWPConditionError?7 -eric6.DebugClients.Python.DebugThread.DebugThread.bootstrap?4() -eric6.DebugClients.Python.DebugThread.DebugThread.get_ident?4() -eric6.DebugClients.Python.DebugThread.DebugThread.get_name?4() -eric6.DebugClients.Python.DebugThread.DebugThread.set_ident?4(id) -eric6.DebugClients.Python.DebugThread.DebugThread.traceThread?4() -eric6.DebugClients.Python.DebugThread.DebugThread.trace_dispatch?4(frame, event, arg) -eric6.DebugClients.Python.DebugThread.DebugThread?1(dbgClient, targ=None, args=None, kwargs=None, mainThread=0) -eric6.DebugClients.Python.FlexCompleter.Completer._callable_postfix?5(val, word) -eric6.DebugClients.Python.FlexCompleter.Completer.attr_matches?4(text) -eric6.DebugClients.Python.FlexCompleter.Completer.complete?4(text, state) -eric6.DebugClients.Python.FlexCompleter.Completer.global_matches?4(text) -eric6.DebugClients.Python.FlexCompleter.Completer?1(namespace=None) -eric6.DebugClients.Python.FlexCompleter.get_class_members?4(klass) -eric6.DebugClients.Python.PyProfile.PyProfile.dispatch?7 -eric6.DebugClients.Python.PyProfile.PyProfile.dump_stats?4(file) -eric6.DebugClients.Python.PyProfile.PyProfile.erase?4() -eric6.DebugClients.Python.PyProfile.PyProfile.fix_frame_filename?4(frame) -eric6.DebugClients.Python.PyProfile.PyProfile.save?4() -eric6.DebugClients.Python.PyProfile.PyProfile.trace_dispatch_call?4(frame, t) -eric6.DebugClients.Python.PyProfile.PyProfile?1(basename, timer=None, bias=None) -eric6.DebugClients.Python.eric6dbgstub.debugger?7 -eric6.DebugClients.Python.eric6dbgstub.ericpath?7 -eric6.DebugClients.Python.eric6dbgstub.initDebugger?4(kind="standard") -eric6.DebugClients.Python.eric6dbgstub.modDir?7 -eric6.DebugClients.Python.eric6dbgstub.runcall?4(func, *args) -eric6.DebugClients.Python.eric6dbgstub.setScriptname?4(name) -eric6.DebugClients.Python.eric6dbgstub.startDebugger?4(enableTrace=True, exceptions=True, tracePython=False, redirect=True) -eric6.DebugClients.Python.getpass.default_getpass?7 -eric6.DebugClients.Python.getpass.getpass?4(prompt='Password: ') -eric6.DebugClients.Python.getpass.getuser?4() -eric6.DebugClients.Python.getpass.unix_getpass?7 -eric6.DebugClients.Python.getpass.win_getpass?7 +eric6.DebugClients.Python2.AsyncFile.AsyncFile.close?4(closeit=False) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.fileno?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.flush?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.isatty?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.maxbuffersize?7 +eric6.DebugClients.Python2.AsyncFile.AsyncFile.maxtries?7 +eric6.DebugClients.Python2.AsyncFile.AsyncFile.pendingWrite?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.read?4(size=-1) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.read_p?4(size=-1) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.readable?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.readline?4(sizehint=-1) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.readline_p?4(size=-1) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.readlines?4(sizehint=-1) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.seek?4(offset, whence=0) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.seekable?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.tell?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.truncate?4(size=-1) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.writable?4() +eric6.DebugClients.Python2.AsyncFile.AsyncFile.write?4(s) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.write_p?4(s) +eric6.DebugClients.Python2.AsyncFile.AsyncFile.writelines?4(lines) +eric6.DebugClients.Python2.AsyncFile.AsyncFile?1(sock, mode, name) +eric6.DebugClients.Python2.AsyncFile.AsyncPendingWrite?4(file) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.addError?4(test, err) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.addExpectedFailure?4(test, err) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.addFailure?4(test, err) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.addSkip?4(test, reason) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.addUnexpectedSuccess?4(test) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.startTest?4(test) +eric6.DebugClients.Python2.DCTestResult.DCTestResult.stopTest?4(test) +eric6.DebugClients.Python2.DCTestResult.DCTestResult?1(dbgClient) +eric6.DebugClients.Python2.DebugBase.DebugBase.break_anywhere?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.break_here?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.clear_watch?4(cond) +eric6.DebugClients.Python2.DebugBase.DebugBase.dispatch_exception?4(frame, arg) +eric6.DebugClients.Python2.DebugBase.DebugBase.dispatch_line?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.dispatch_return?4(frame, arg) +eric6.DebugClients.Python2.DebugBase.DebugBase.fix_frame_filename?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.getCurrentFrame?4() +eric6.DebugClients.Python2.DebugBase.DebugBase.getEvent?4() +eric6.DebugClients.Python2.DebugBase.DebugBase.getFrameLocals?4(frmnr=0) +eric6.DebugClients.Python2.DebugBase.DebugBase.getStack?4() +eric6.DebugClients.Python2.DebugBase.DebugBase.get_break?4(filename, lineno) +eric6.DebugClients.Python2.DebugBase.DebugBase.get_watch?4(cond) +eric6.DebugClients.Python2.DebugBase.DebugBase.go?4(special) +eric6.DebugClients.Python2.DebugBase.DebugBase.isBroken?4() +eric6.DebugClients.Python2.DebugBase.DebugBase.profile?4(frame, event, arg) +eric6.DebugClients.Python2.DebugBase.DebugBase.setRecursionDepth?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.set_continue?4(special) +eric6.DebugClients.Python2.DebugBase.DebugBase.set_quit?4() +eric6.DebugClients.Python2.DebugBase.DebugBase.set_trace?4(frame=None) +eric6.DebugClients.Python2.DebugBase.DebugBase.set_watch?4(cond, temporary=False) +eric6.DebugClients.Python2.DebugBase.DebugBase.step?4(traceMode) +eric6.DebugClients.Python2.DebugBase.DebugBase.stepOut?4() +eric6.DebugClients.Python2.DebugBase.DebugBase.stop_here?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.storeFrameLocals?4(frmnr=0) +eric6.DebugClients.Python2.DebugBase.DebugBase.trace_dispatch?4(frame, event, arg) +eric6.DebugClients.Python2.DebugBase.DebugBase.user_exception?4(frame, (exctype, excval, exctb), unhandled=0) +eric6.DebugClients.Python2.DebugBase.DebugBase.user_line?4(frame) +eric6.DebugClients.Python2.DebugBase.DebugBase.user_return?4(frame, retval) +eric6.DebugClients.Python2.DebugBase.DebugBase?1(dbgClient) +eric6.DebugClients.Python2.DebugBase.gRecursionLimit?7 +eric6.DebugClients.Python2.DebugBase.printerr?4(s) +eric6.DebugClients.Python2.DebugBase.setRecursionLimit?4(limit) +eric6.DebugClients.Python2.DebugClient.DebugClient.debugClient?7 +eric6.DebugClients.Python2.DebugClient.DebugClient?1() +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.Indicators?7 +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.absPath?4(fn) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.attachThread?4(target=None, args=None, kwargs=None, mainThread=False) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.clientCapabilities?7 +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.close?4(fd) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.connectDebugger?4(port, remoteAddress=None, redirect=1) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.eventLoop?4(disablePolling=False) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.eventPoll?4() +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.fork?4() +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.getCoding?4() +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.getRunning?4() +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.handleJsonCommand?4(jsonStr) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.handleLine?4(line) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.input?4(prompt) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.main?4() +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.progTerminated?4(status, message="") +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.raw_input?4(prompt, echo) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.readReady?4(stream) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.run_call?4(scriptname, func, *args) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendCallTrace?4(event, fromInfo, toInfo) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendClearTemporaryBreakpoint?4(filename, lineno) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendClearTemporaryWatch?4(condition) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendException?4(exceptionType, exceptionMessage, stack) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendJsonCommand?4(method, params) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendPassiveStartup?4(filename, exceptions) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendResponseLine?4(stack) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sendSyntaxError?4(message, filename, lineno, charno) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.sessionClose?4(exit=True) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.shouldSkip?4(fn) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.startDebugger?4(filename=None, host=None, port=None, enableTrace=True, exceptions=True, tracePython=False, redirect=True) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.startProgInDebugger?4(progargs, wd='', host=None, port=None, exceptions=True, tracePython=False, redirect=True) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase.writeReady?4(stream) +eric6.DebugClients.Python2.DebugClientBase.DebugClientBase?1() +eric6.DebugClients.Python2.DebugClientBase.DebugClientClose?4(fd) +eric6.DebugClients.Python2.DebugClientBase.DebugClientFork?4() +eric6.DebugClients.Python2.DebugClientBase.DebugClientInput?4(prompt="") +eric6.DebugClients.Python2.DebugClientBase.DebugClientInstance?7 +eric6.DebugClients.Python2.DebugClientBase.DebugClientRawInput?4(prompt="", echo=1) +eric6.DebugClients.Python2.DebugClientBase.DebugClientSetRecursionLimit?4(limit) +eric6.DebugClients.Python2.DebugClientCapabilities.HasAll?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasCompleter?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasCoverage?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasDebugger?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasInterpreter?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasProfiler?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasShell?7 +eric6.DebugClients.Python2.DebugClientCapabilities.HasUnittest?7 +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.attachThread?4(target=None, args=None, kwargs=None, mainThread=False) +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.debugClient?7 +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.eventLoop?4(disablePolling=False) +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.lockClient?4(blocking=True) +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.setCurrentThread?4(id) +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.set_quit?4() +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.threadTerminated?4(dbgThread) +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads.unlockClient?4() +eric6.DebugClients.Python2.DebugClientThreads.DebugClientThreads?1() +eric6.DebugClients.Python2.DebugClientThreads._debugclient_start_new_thread?5(target, args, kwargs={}) +eric6.DebugClients.Python2.DebugClientThreads._original_start_thread?8 +eric6.DebugClients.Python2.DebugConfig.ConfigVarTypeStrings?7 +eric6.DebugClients.Python2.DebugThread.DebugThread.bootstrap?4() +eric6.DebugClients.Python2.DebugThread.DebugThread.get_ident?4() +eric6.DebugClients.Python2.DebugThread.DebugThread.get_name?4() +eric6.DebugClients.Python2.DebugThread.DebugThread.set_ident?4(id) +eric6.DebugClients.Python2.DebugThread.DebugThread.traceThread?4() +eric6.DebugClients.Python2.DebugThread.DebugThread.trace_dispatch?4(frame, event, arg) +eric6.DebugClients.Python2.DebugThread.DebugThread?1(dbgClient, targ=None, args=None, kwargs=None, mainThread=False) +eric6.DebugClients.Python2.DebugUtilities.prepareJsonCommand?4(method, params) +eric6.DebugClients.Python2.DebugVariables.BaseResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.BaseResolver.resolve?4(var, attribute) +eric6.DebugClients.Python2.DebugVariables.DefaultResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.DefaultResolver.resolve?4(var, attribute) +eric6.DebugClients.Python2.DebugVariables.DictResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.DictResolver.resolve?4(var, attribute) +eric6.DebugClients.Python2.DebugVariables.ListResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.ListResolver.resolve?4(var, attribute) +eric6.DebugClients.Python2.DebugVariables.MaxItemsToHandle?7 +eric6.DebugClients.Python2.DebugVariables.SetResolver.getDictionary?4(var) +eric6.DebugClients.Python2.DebugVariables.SetResolver.resolve?4(var, attribute) +eric6.DebugClients.Python2.DebugVariables.TooLargeAttribute?7 +eric6.DebugClients.Python2.DebugVariables.TooLargeMessage?7 +eric6.DebugClients.Python2.DebugVariables._TypeMap?8 +eric6.DebugClients.Python2.DebugVariables._initTypeMap?5() +eric6.DebugClients.Python2.DebugVariables.defaultResolver?7 +eric6.DebugClients.Python2.DebugVariables.dictResolver?7 +eric6.DebugClients.Python2.DebugVariables.getType?4(obj) +eric6.DebugClients.Python2.DebugVariables.listResolver?7 +eric6.DebugClients.Python2.DebugVariables.setResolver?7 +eric6.DebugClients.Python2.FlexCompleter.Completer._callable_postfix?5(val, word) +eric6.DebugClients.Python2.FlexCompleter.Completer.attr_matches?4(text) +eric6.DebugClients.Python2.FlexCompleter.Completer.complete?4(text, state) +eric6.DebugClients.Python2.FlexCompleter.Completer.global_matches?4(text) +eric6.DebugClients.Python2.FlexCompleter.Completer?1(namespace=None) +eric6.DebugClients.Python2.FlexCompleter.get_class_members?4(klass) +eric6.DebugClients.Python2.PyProfile.PyProfile.dispatch?7 +eric6.DebugClients.Python2.PyProfile.PyProfile.dump_stats?4(file) +eric6.DebugClients.Python2.PyProfile.PyProfile.erase?4() +eric6.DebugClients.Python2.PyProfile.PyProfile.fix_frame_filename?4(frame) +eric6.DebugClients.Python2.PyProfile.PyProfile.save?4() +eric6.DebugClients.Python2.PyProfile.PyProfile.trace_dispatch_call?4(frame, t) +eric6.DebugClients.Python2.PyProfile.PyProfile?1(basename, timer=None, bias=None) +eric6.DebugClients.Python2.eric6dbgstub.debugger?7 +eric6.DebugClients.Python2.eric6dbgstub.ericpath?7 +eric6.DebugClients.Python2.eric6dbgstub.initDebugger?4(kind="standard") +eric6.DebugClients.Python2.eric6dbgstub.modDir?7 +eric6.DebugClients.Python2.eric6dbgstub.runcall?4(func, *args) +eric6.DebugClients.Python2.eric6dbgstub.setScriptname?4(name) +eric6.DebugClients.Python2.eric6dbgstub.startDebugger?4(enableTrace=True, exceptions=True, tracePython=False, redirect=True) +eric6.DebugClients.Python2.getpass.default_getpass?7 +eric6.DebugClients.Python2.getpass.getpass?4(prompt='Password: ') +eric6.DebugClients.Python2.getpass.getuser?4() +eric6.DebugClients.Python2.getpass.unix_getpass?7 +eric6.DebugClients.Python2.getpass.win_getpass?7 eric6.DebugClients.Python3.AsyncFile.AsyncFile.close?4(closeit=False) eric6.DebugClients.Python3.AsyncFile.AsyncFile.fileno?4() eric6.DebugClients.Python3.AsyncFile.AsyncFile.flush?4() @@ -353,15 +315,10 @@ eric6.DebugClients.Python3.AsyncFile.AsyncFile.truncate?4(size=-1) eric6.DebugClients.Python3.AsyncFile.AsyncFile.writable?4() eric6.DebugClients.Python3.AsyncFile.AsyncFile.write?4(s) -eric6.DebugClients.Python3.AsyncFile.AsyncFile.writelines?4(list) +eric6.DebugClients.Python3.AsyncFile.AsyncFile.write_p?4(s) +eric6.DebugClients.Python3.AsyncFile.AsyncFile.writelines?4(lines) eric6.DebugClients.Python3.AsyncFile.AsyncFile?1(sock, mode, name) eric6.DebugClients.Python3.AsyncFile.AsyncPendingWrite?4(file) -eric6.DebugClients.Python3.AsyncIO.AsyncIO.disconnect?4() -eric6.DebugClients.Python3.AsyncIO.AsyncIO.readReady?4(fd) -eric6.DebugClients.Python3.AsyncIO.AsyncIO.setDescriptors?4(rfd, wfd) -eric6.DebugClients.Python3.AsyncIO.AsyncIO.write?4(s) -eric6.DebugClients.Python3.AsyncIO.AsyncIO.writeReady?4(fd) -eric6.DebugClients.Python3.AsyncIO.AsyncIO?1() eric6.DebugClients.Python3.DCTestResult.DCTestResult.addError?4(test, err) eric6.DebugClients.Python3.DCTestResult.DCTestResult.addExpectedFailure?4(test, err) eric6.DebugClients.Python3.DCTestResult.DCTestResult.addFailure?4(test, err) @@ -369,7 +326,7 @@ eric6.DebugClients.Python3.DCTestResult.DCTestResult.addUnexpectedSuccess?4(test) eric6.DebugClients.Python3.DCTestResult.DCTestResult.startTest?4(test) eric6.DebugClients.Python3.DCTestResult.DCTestResult.stopTest?4(test) -eric6.DebugClients.Python3.DCTestResult.DCTestResult?1(parent) +eric6.DebugClients.Python3.DCTestResult.DCTestResult?1(dbgClient) eric6.DebugClients.Python3.DebugBase.DebugBase.break_anywhere?4(frame) eric6.DebugClients.Python3.DebugBase.DebugBase.break_here?4(frame) eric6.DebugClients.Python3.DebugBase.DebugBase.clear_watch?4(cond) @@ -405,6 +362,7 @@ eric6.DebugClients.Python3.DebugBase.setRecursionLimit?4(limit) eric6.DebugClients.Python3.DebugClient.DebugClient.debugClient?7 eric6.DebugClients.Python3.DebugClient.DebugClient?1() +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.Indicators?7 eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.absPath?4(fn) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.attachThread?4(target=None, args=None, kwargs=None, mainThread=False) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.clientCapabilities?7 @@ -415,16 +373,26 @@ eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.fork?4() eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.getCoding?4() eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.getRunning?4() +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.handleJsonCommand?4(jsonStr) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.handleLine?4(line) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.input?4(prompt, echo=True) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.main?4() -eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.progTerminated?4(status) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.progTerminated?4(status, message="") +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.readReady?4(stream) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.run_call?4(scriptname, func, *args) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendCallTrace?4(event, fromInfo, toInfo) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendClearTemporaryBreakpoint?4(filename, lineno) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendClearTemporaryWatch?4(condition) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendException?4(exceptionType, exceptionMessage, stack) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendJsonCommand?4(method, params) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendPassiveStartup?4(filename, exceptions) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendResponseLine?4(stack) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sendSyntaxError?4(message, filename, lineno, charno) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.sessionClose?4(exit=True) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.shouldSkip?4(fn) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.startDebugger?4(filename=None, host=None, port=None, enableTrace=True, exceptions=True, tracePython=False, redirect=True) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.startProgInDebugger?4(progargs, wd='', host=None, port=None, exceptions=True, tracePython=False, redirect=True) -eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.write?4(s) +eric6.DebugClients.Python3.DebugClientBase.DebugClientBase.writeReady?4(stream) eric6.DebugClients.Python3.DebugClientBase.DebugClientBase?1() eric6.DebugClients.Python3.DebugClientBase.DebugClientClose?4(fd) eric6.DebugClients.Python3.DebugClientBase.DebugClientFork?4() @@ -451,74 +419,6 @@ eric6.DebugClients.Python3.DebugClientThreads._debugclient_start_new_thread?5(target, args, kwargs={}) eric6.DebugClients.Python3.DebugClientThreads._original_start_thread?8 eric6.DebugClients.Python3.DebugConfig.ConfigVarTypeStrings?7 -eric6.DebugClients.Python3.DebugProtocol.CallTrace?7 -eric6.DebugClients.Python3.DebugProtocol.DebugAddress?7 -eric6.DebugClients.Python3.DebugProtocol.EOT?7 -eric6.DebugClients.Python3.DebugProtocol.PassiveStartup?7 -eric6.DebugClients.Python3.DebugProtocol.RequestBanner?7 -eric6.DebugClients.Python3.DebugProtocol.RequestBreak?7 -eric6.DebugClients.Python3.DebugProtocol.RequestBreakEnable?7 -eric6.DebugClients.Python3.DebugProtocol.RequestBreakIgnore?7 -eric6.DebugClients.Python3.DebugProtocol.RequestCallTrace?7 -eric6.DebugClients.Python3.DebugProtocol.RequestCapabilities?7 -eric6.DebugClients.Python3.DebugProtocol.RequestCompletion?7 -eric6.DebugClients.Python3.DebugProtocol.RequestContinue?7 -eric6.DebugClients.Python3.DebugProtocol.RequestCoverage?7 -eric6.DebugClients.Python3.DebugProtocol.RequestEnv?7 -eric6.DebugClients.Python3.DebugProtocol.RequestEval?7 -eric6.DebugClients.Python3.DebugProtocol.RequestExec?7 -eric6.DebugClients.Python3.DebugProtocol.RequestForkMode?7 -eric6.DebugClients.Python3.DebugProtocol.RequestForkTo?7 -eric6.DebugClients.Python3.DebugProtocol.RequestLoad?7 -eric6.DebugClients.Python3.DebugProtocol.RequestOK?7 -eric6.DebugClients.Python3.DebugProtocol.RequestProfile?7 -eric6.DebugClients.Python3.DebugProtocol.RequestRun?7 -eric6.DebugClients.Python3.DebugProtocol.RequestSetFilter?7 -eric6.DebugClients.Python3.DebugProtocol.RequestShutdown?7 -eric6.DebugClients.Python3.DebugProtocol.RequestStep?7 -eric6.DebugClients.Python3.DebugProtocol.RequestStepOut?7 -eric6.DebugClients.Python3.DebugProtocol.RequestStepOver?7 -eric6.DebugClients.Python3.DebugProtocol.RequestStepQuit?7 -eric6.DebugClients.Python3.DebugProtocol.RequestThreadList?7 -eric6.DebugClients.Python3.DebugProtocol.RequestThreadSet?7 -eric6.DebugClients.Python3.DebugProtocol.RequestUTPrepare?7 -eric6.DebugClients.Python3.DebugProtocol.RequestUTRun?7 -eric6.DebugClients.Python3.DebugProtocol.RequestUTStop?7 -eric6.DebugClients.Python3.DebugProtocol.RequestVariable?7 -eric6.DebugClients.Python3.DebugProtocol.RequestVariables?7 -eric6.DebugClients.Python3.DebugProtocol.RequestWatch?7 -eric6.DebugClients.Python3.DebugProtocol.RequestWatchEnable?7 -eric6.DebugClients.Python3.DebugProtocol.RequestWatchIgnore?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseBPConditionError?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseBanner?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseCapabilities?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseClearBreak?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseClearWatch?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseCompletion?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseContinue?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseException?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseExit?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseForkTo?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseLine?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseOK?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseRaw?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseSignal?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseStack?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseSyntax?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseThreadList?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseThreadSet?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTFinished?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTPrepared?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTStartTest?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTStopTest?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTTestErrored?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTTestFailed?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTTestFailedExpected?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTTestSkipped?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseUTTestSucceededUnexpected?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseVariable?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseVariables?7 -eric6.DebugClients.Python3.DebugProtocol.ResponseWPConditionError?7 eric6.DebugClients.Python3.DebugThread.DebugThread.bootstrap?4() eric6.DebugClients.Python3.DebugThread.DebugThread.get_ident?4() eric6.DebugClients.Python3.DebugThread.DebugThread.get_name?4() @@ -530,6 +430,27 @@ eric6.DebugClients.Python3.DebugUtilities._getfullargs?5(co) eric6.DebugClients.Python3.DebugUtilities.formatargvalues?4(args, varargs, varkw, locals, formatarg=str, formatvarargs=lambda name: '*' + name, formatvarkw=lambda name: '**' + name, formatvalue=lambda value: '=' + repr(value)) eric6.DebugClients.Python3.DebugUtilities.getargvalues?4(frame) +eric6.DebugClients.Python3.DebugUtilities.prepareJsonCommand?4(method, params) +eric6.DebugClients.Python3.DebugVariables.BaseResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.BaseResolver.resolve?4(var, attribute) +eric6.DebugClients.Python3.DebugVariables.DefaultResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.DefaultResolver.resolve?4(var, attribute) +eric6.DebugClients.Python3.DebugVariables.DictResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.DictResolver.resolve?4(var, attribute) +eric6.DebugClients.Python3.DebugVariables.ListResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.ListResolver.resolve?4(var, attribute) +eric6.DebugClients.Python3.DebugVariables.MaxItemsToHandle?7 +eric6.DebugClients.Python3.DebugVariables.SetResolver.getDictionary?4(var) +eric6.DebugClients.Python3.DebugVariables.SetResolver.resolve?4(var, attribute) +eric6.DebugClients.Python3.DebugVariables.TooLargeAttribute?7 +eric6.DebugClients.Python3.DebugVariables.TooLargeMessage?7 +eric6.DebugClients.Python3.DebugVariables._TypeMap?8 +eric6.DebugClients.Python3.DebugVariables._initTypeMap?5() +eric6.DebugClients.Python3.DebugVariables.defaultResolver?7 +eric6.DebugClients.Python3.DebugVariables.dictResolver?7 +eric6.DebugClients.Python3.DebugVariables.getType?4(obj) +eric6.DebugClients.Python3.DebugVariables.listResolver?7 +eric6.DebugClients.Python3.DebugVariables.setResolver?7 eric6.DebugClients.Python3.FlexCompleter.Completer._callable_postfix?5(val, word) eric6.DebugClients.Python3.FlexCompleter.Completer.attr_matches?4(text) eric6.DebugClients.Python3.FlexCompleter.Completer.complete?4(text, state) @@ -594,10 +515,13 @@ eric6.Debugger.CallTraceViewer.CallTraceViewer.on_resizeButton_clicked?4() eric6.Debugger.CallTraceViewer.CallTraceViewer.on_saveButton_clicked?4() eric6.Debugger.CallTraceViewer.CallTraceViewer.on_startTraceButton_clicked?4() +eric6.Debugger.CallTraceViewer.CallTraceViewer.on_stopCheckBox_clicked?4(checked) eric6.Debugger.CallTraceViewer.CallTraceViewer.on_stopTraceButton_clicked?4() eric6.Debugger.CallTraceViewer.CallTraceViewer.setProjectMode?4(enabled) eric6.Debugger.CallTraceViewer.CallTraceViewer.sourceFile?7 eric6.Debugger.CallTraceViewer.CallTraceViewer?1(debugServer, parent=None) +eric6.Debugger.Config.ConfigVarTypeDispStrings?7 +eric6.Debugger.Config.ConfigVarTypeFilters?7 eric6.Debugger.DebugClientCapabilities.HasAll?7 eric6.Debugger.DebugClientCapabilities.HasCompleter?7 eric6.Debugger.DebugClientCapabilities.HasCoverage?7 @@ -606,73 +530,6 @@ eric6.Debugger.DebugClientCapabilities.HasProfiler?7 eric6.Debugger.DebugClientCapabilities.HasShell?7 eric6.Debugger.DebugClientCapabilities.HasUnittest?7 -eric6.Debugger.DebugProtocol.CallTrace?7 -eric6.Debugger.DebugProtocol.EOT?7 -eric6.Debugger.DebugProtocol.PassiveStartup?7 -eric6.Debugger.DebugProtocol.RequestBanner?7 -eric6.Debugger.DebugProtocol.RequestBreak?7 -eric6.Debugger.DebugProtocol.RequestBreakEnable?7 -eric6.Debugger.DebugProtocol.RequestBreakIgnore?7 -eric6.Debugger.DebugProtocol.RequestCallTrace?7 -eric6.Debugger.DebugProtocol.RequestCapabilities?7 -eric6.Debugger.DebugProtocol.RequestCompletion?7 -eric6.Debugger.DebugProtocol.RequestContinue?7 -eric6.Debugger.DebugProtocol.RequestCoverage?7 -eric6.Debugger.DebugProtocol.RequestEnv?7 -eric6.Debugger.DebugProtocol.RequestEval?7 -eric6.Debugger.DebugProtocol.RequestExec?7 -eric6.Debugger.DebugProtocol.RequestForkMode?7 -eric6.Debugger.DebugProtocol.RequestForkTo?7 -eric6.Debugger.DebugProtocol.RequestLoad?7 -eric6.Debugger.DebugProtocol.RequestOK?7 -eric6.Debugger.DebugProtocol.RequestProfile?7 -eric6.Debugger.DebugProtocol.RequestRun?7 -eric6.Debugger.DebugProtocol.RequestSetFilter?7 -eric6.Debugger.DebugProtocol.RequestShutdown?7 -eric6.Debugger.DebugProtocol.RequestStep?7 -eric6.Debugger.DebugProtocol.RequestStepOut?7 -eric6.Debugger.DebugProtocol.RequestStepOver?7 -eric6.Debugger.DebugProtocol.RequestStepQuit?7 -eric6.Debugger.DebugProtocol.RequestThreadList?7 -eric6.Debugger.DebugProtocol.RequestThreadSet?7 -eric6.Debugger.DebugProtocol.RequestUTPrepare?7 -eric6.Debugger.DebugProtocol.RequestUTRun?7 -eric6.Debugger.DebugProtocol.RequestUTStop?7 -eric6.Debugger.DebugProtocol.RequestVariable?7 -eric6.Debugger.DebugProtocol.RequestVariables?7 -eric6.Debugger.DebugProtocol.RequestWatch?7 -eric6.Debugger.DebugProtocol.RequestWatchEnable?7 -eric6.Debugger.DebugProtocol.RequestWatchIgnore?7 -eric6.Debugger.DebugProtocol.ResponseBPConditionError?7 -eric6.Debugger.DebugProtocol.ResponseBanner?7 -eric6.Debugger.DebugProtocol.ResponseCapabilities?7 -eric6.Debugger.DebugProtocol.ResponseClearBreak?7 -eric6.Debugger.DebugProtocol.ResponseClearWatch?7 -eric6.Debugger.DebugProtocol.ResponseCompletion?7 -eric6.Debugger.DebugProtocol.ResponseContinue?7 -eric6.Debugger.DebugProtocol.ResponseException?7 -eric6.Debugger.DebugProtocol.ResponseExit?7 -eric6.Debugger.DebugProtocol.ResponseForkTo?7 -eric6.Debugger.DebugProtocol.ResponseLine?7 -eric6.Debugger.DebugProtocol.ResponseOK?7 -eric6.Debugger.DebugProtocol.ResponseRaw?7 -eric6.Debugger.DebugProtocol.ResponseSignal?7 -eric6.Debugger.DebugProtocol.ResponseStack?7 -eric6.Debugger.DebugProtocol.ResponseSyntax?7 -eric6.Debugger.DebugProtocol.ResponseThreadList?7 -eric6.Debugger.DebugProtocol.ResponseThreadSet?7 -eric6.Debugger.DebugProtocol.ResponseUTFinished?7 -eric6.Debugger.DebugProtocol.ResponseUTPrepared?7 -eric6.Debugger.DebugProtocol.ResponseUTStartTest?7 -eric6.Debugger.DebugProtocol.ResponseUTStopTest?7 -eric6.Debugger.DebugProtocol.ResponseUTTestErrored?7 -eric6.Debugger.DebugProtocol.ResponseUTTestFailed?7 -eric6.Debugger.DebugProtocol.ResponseUTTestFailedExpected?7 -eric6.Debugger.DebugProtocol.ResponseUTTestSkipped?7 -eric6.Debugger.DebugProtocol.ResponseUTTestSucceededUnexpected?7 -eric6.Debugger.DebugProtocol.ResponseVariable?7 -eric6.Debugger.DebugProtocol.ResponseVariables?7 -eric6.Debugger.DebugProtocol.ResponseWPConditionError?7 eric6.Debugger.DebugServer.DebugServer.appendStdout?7 eric6.Debugger.DebugServer.DebugServer.callTraceInfo?7 eric6.Debugger.DebugServer.DebugServer.clientBanner?7 @@ -731,8 +588,6 @@ eric6.Debugger.DebugServer.DebugServer.remoteContinue?4(special=False) eric6.Debugger.DebugServer.DebugServer.remoteCoverage?4(fn, argv, wd, env, autoClearShell=True, erase=False, forProject=False, runInConsole=False, clientType="") eric6.Debugger.DebugServer.DebugServer.remoteEnvironment?4(env) -eric6.Debugger.DebugServer.DebugServer.remoteEval?4(arg) -eric6.Debugger.DebugServer.DebugServer.remoteExec?4(stmt) eric6.Debugger.DebugServer.DebugServer.remoteLoad?4(fn, argv, wd, env, autoClearShell=True, tracePython=False, autoContinue=True, forProject=False, runInConsole=False, autoFork=False, forkChild=False, clientType="", enableCallTrace=False) eric6.Debugger.DebugServer.DebugServer.remoteProfile?4(fn, argv, wd, env, autoClearShell=True, erase=False, forProject=False, runInConsole=False, clientType="") eric6.Debugger.DebugServer.DebugServer.remoteRawInput?4(s) @@ -757,7 +612,7 @@ eric6.Debugger.DebugServer.DebugServer.signalClientClearWatch?4(condition) eric6.Debugger.DebugServer.DebugServer.signalClientCompletionList?4(completionList, text) eric6.Debugger.DebugServer.DebugServer.signalClientException?4(exceptionType, exceptionMessage, stackTrace) -eric6.Debugger.DebugServer.DebugServer.signalClientExit?4(status) +eric6.Debugger.DebugServer.DebugServer.signalClientExit?4(status, message="") eric6.Debugger.DebugServer.DebugServer.signalClientLine?4(filename, lineno, forStack=False) eric6.Debugger.DebugServer.DebugServer.signalClientOutput?4(line) eric6.Debugger.DebugServer.DebugServer.signalClientRawInput?4(prompt, echo) @@ -784,6 +639,7 @@ eric6.Debugger.DebugServer.DebugServer?1() eric6.Debugger.DebugServer.DebuggerInterfaces?7 eric6.Debugger.DebugUI.DebugUI.appendStdout?7 +eric6.Debugger.DebugUI.DebugUI.clearHistories?4() eric6.Debugger.DebugUI.DebugUI.clientStack?7 eric6.Debugger.DebugUI.DebugUI.compileForms?7 eric6.Debugger.DebugUI.DebugUI.compileResources?7 @@ -821,6 +677,8 @@ eric6.Debugger.DebugViewer.DebugViewer.setCallTraceToProjectMode?4(enabled) eric6.Debugger.DebugViewer.DebugViewer.setCurrentWidget?4(widget) eric6.Debugger.DebugViewer.DebugViewer.setDebugger?4(debugUI) +eric6.Debugger.DebugViewer.DebugViewer.setGlobalsFilter?4() +eric6.Debugger.DebugViewer.DebugViewer.setLocalsFilter?4() eric6.Debugger.DebugViewer.DebugViewer.setVariablesFilter?4(globalsFilter, localsFilter) eric6.Debugger.DebugViewer.DebugViewer.showThreadList?4(currentID, threadList) eric6.Debugger.DebugViewer.DebugViewer.showVariable?4(vlist, globals) @@ -834,7 +692,6 @@ eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.getClientCapabilities?4() eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.isConnected?4() eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.newConnection?4(sock) -eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBanner?4() eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpoint?4(fn, line, set, cond=None, temp=False) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpointEnable?4(fn, line, enable) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteBreakpointIgnore?4(fn, line, count) @@ -847,7 +704,6 @@ eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteCoverage?4(fn, argv, wd, erase=False) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteEnvironment?4(env) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteEval?4(arg) -eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteExec?4(stmt) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteProfile?4(fn, argv, wd, erase=False) eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRawInput?4(s) @@ -872,56 +728,54 @@ eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone?1(debugServer, passive) eric6.Debugger.DebuggerInterfaceNone.createDebuggerInterfaceNone?4(debugServer, passive) eric6.Debugger.DebuggerInterfaceNone.getRegistryData?4() -eric6.Debugger.DebuggerInterfacePython.ClientDefaultCapabilities?7 -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.flush?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.getClientCapabilities?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.isConnected?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.newConnection?4(sock) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBanner?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpoint?4(fn, line, set, cond=None, temp=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointEnable?4(fn, line, enable) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointIgnore?4(fn, line, count) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCapabilities?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientSetFilter?4(scope, filter) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariable?4(scope, filter, var, framenr=0) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariables?4(scope, filter, framenr=0) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCompletion?4(text) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteContinue?4(special=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCoverage?4(fn, argv, wd, erase=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteEnvironment?4(env) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteEval?4(arg) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteExec?4(stmt) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteProfile?4(fn, argv, wd, erase=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRawInput?4(s) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteSetThread?4(tid) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStatement?4(stmt) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStep?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOut?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOver?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepQuit?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteThreadList?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTRun?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTStop?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpoint?4(cond, set, temp=False) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointEnable?4(cond, enable) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointIgnore?4(cond, count) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.setCallTraceEnabled?4(on) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.shutdown?4() -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython?1(debugServer, passive) -eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython?4(debugServer, passive) -eric6.Debugger.DebuggerInterfacePython.getRegistryData?4() +eric6.Debugger.DebuggerInterfacePython2.ClientDefaultCapabilities?7 +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.flush?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.getClientCapabilities?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.isConnected?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.newConnection?4(sock) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBanner?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBreakpointEnable?4(fn, line, enable) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBreakpointIgnore?4(fn, line, count) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteCapabilities?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteClientSetFilter?4(scope, filter) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteClientVariable?4(scope, filter, var, framenr=0) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteClientVariables?4(scope, filter, framenr=0) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteCompletion?4(text) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteContinue?4(special=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteCoverage?4(fn, argv, wd, erase=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteEnvironment?4(env) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteProfile?4(fn, argv, wd, erase=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteRawInput?4(s) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteSetThread?4(tid) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStatement?4(stmt) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStep?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStepOut?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStepOver?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStepQuit?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteThreadList?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteUTRun?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteUTStop?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteWatchpoint?4(cond, setWatch, temp=False) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteWatchpointEnable?4(cond, enable) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteWatchpointIgnore?4(cond, count) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.setCallTraceEnabled?4(on) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.shutdown?4() +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.startRemote?4(port, runInConsole) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.startRemoteForProject?4(port, runInConsole) +eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2?1(debugServer, passive) +eric6.Debugger.DebuggerInterfacePython2.createDebuggerInterfacePython2?4(debugServer, passive) +eric6.Debugger.DebuggerInterfacePython2.getRegistryData?4() eric6.Debugger.DebuggerInterfacePython3.ClientDefaultCapabilities?7 eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.flush?4() eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.getClientCapabilities?4() eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.isConnected?4() eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.newConnection?4(sock) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBanner?4() -eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpoint?4(fn, line, set, cond=None, temp=False) +eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpointEnable?4(fn, line, enable) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpointIgnore?4(fn, line, count) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteCapabilities?4() @@ -932,8 +786,6 @@ eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteContinue?4(special=False) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteCoverage?4(fn, argv, wd, erase=False) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteEnvironment?4(env) -eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteEval?4(arg) -eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteExec?4(stmt) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteProfile?4(fn, argv, wd, erase=False) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteRawInput?4(s) @@ -948,7 +800,7 @@ eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteUTRun?4() eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteUTStop?4() -eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpoint?4(cond, set, temp=False) +eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpoint?4(cond, setWatch, temp=False) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpointEnable?4(cond, enable) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpointIgnore?4(cond, count) eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.setCallTraceEnabled?4(on) @@ -989,14 +841,20 @@ eric6.Debugger.VariablesFilterDialog.VariablesFilterDialog.setSelection?4(lList, gList) eric6.Debugger.VariablesFilterDialog.VariablesFilterDialog?1(parent=None, name=None, modal=False) eric6.Debugger.VariablesViewer.ArrayElementVarItem?1(parent, dvar, dvalue, dtype) -eric6.Debugger.VariablesViewer.SpecialArrayElementVarItem?1(parent, dvar, dvalue, dtype, frmnr, scope) +eric6.Debugger.VariablesViewer.SpecialArrayElementVarItem?1(parent, dvar, dvalue, dtype, frmnr, globalScope) eric6.Debugger.VariablesViewer.SpecialVarItem.expand?4() -eric6.Debugger.VariablesViewer.SpecialVarItem?1(parent, dvar, dvalue, dtype, frmnr, scope) +eric6.Debugger.VariablesViewer.SpecialVarItem?1(parent, dvar, dvalue, dtype, frmnr, globalScope) +eric6.Debugger.VariablesViewer.VariableItem.Indicators?7 +eric6.Debugger.VariablesViewer.VariableItem.Type2Indicators?7 +eric6.Debugger.VariablesViewer.VariableItem._buildKey?5() eric6.Debugger.VariablesViewer.VariableItem.attachDummy?4() eric6.Debugger.VariablesViewer.VariableItem.collapse?4() eric6.Debugger.VariablesViewer.VariableItem.data?4(column, role) eric6.Debugger.VariablesViewer.VariableItem.deleteChildren?4() eric6.Debugger.VariablesViewer.VariableItem.expand?4() +eric6.Debugger.VariablesViewer.VariableItem.extractId?4(var) +eric6.Debugger.VariablesViewer.VariableItem.extractIndicators?4(var) +eric6.Debugger.VariablesViewer.VariableItem.getId?4() eric6.Debugger.VariablesViewer.VariableItem.getValue?4() eric6.Debugger.VariablesViewer.VariableItem?1(parent, dvar, dvalue, dtype) eric6.Debugger.VariablesViewer.VariablesViewer.collapseItem?4(parentItem) @@ -1005,7 +863,7 @@ eric6.Debugger.VariablesViewer.VariablesViewer.mouseDoubleClickEvent?4(mouseEvent) eric6.Debugger.VariablesViewer.VariablesViewer.showVariable?4(vlist) eric6.Debugger.VariablesViewer.VariablesViewer.showVariables?4(vlist, frmnr) -eric6.Debugger.VariablesViewer.VariablesViewer?1(parent=None, scope=1) +eric6.Debugger.VariablesViewer.VariablesViewer?1(viewer, globalScope, parent=None) eric6.Debugger.WatchPointModel.WatchPointModel.addWatchPoint?4(cond, special, properties) eric6.Debugger.WatchPointModel.WatchPointModel.columnCount?4(parent=QModelIndex()) eric6.Debugger.WatchPointModel.WatchPointModel.data?4(index, role) @@ -1458,11 +1316,13 @@ eric6.E5Gui.E5PathPicker.E5PathPickerBase?1(parent=None, useLineEdit=True) eric6.E5Gui.E5PathPicker.E5PathPickerModes.CustomMode?7 eric6.E5Gui.E5PathPicker.E5PathPickerModes.DirectoryMode?7 +eric6.E5Gui.E5PathPicker.E5PathPickerModes.DirectoryShowFilesMode?7 eric6.E5Gui.E5PathPicker.E5PathPickerModes.NoMode?7 eric6.E5Gui.E5PathPicker.E5PathPickerModes.OpenFileMode?7 eric6.E5Gui.E5PathPicker.E5PathPickerModes.OpenFilesMode?7 eric6.E5Gui.E5PathPicker.E5PathPickerModes.SaveFileEnsureExtensionMode?7 eric6.E5Gui.E5PathPicker.E5PathPickerModes.SaveFileMode?7 +eric6.E5Gui.E5PathPicker.E5PathPickerModes.SaveFileOverwriteMode?7 eric6.E5Gui.E5ProgressDialog.E5ProgressDialog.format?4() eric6.E5Gui.E5ProgressDialog.E5ProgressDialog.setFormat?4(format) eric6.E5Gui.E5ProgressDialog.E5ProgressDialog?1(labelText, cancelButtonText, minimum, maximum, format=None, parent=None, flags=Qt.WindowFlags()) @@ -1586,6 +1446,7 @@ eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.VersionMarker?7 eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.actionById?4(aID) eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.addAction?4(action, category) +eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.addActions?4(actions, category) eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.addToolBar?4(toolBar, category) eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.categories?4() eric6.E5Gui.E5ToolBarManager.E5ToolBarManager.categoryActions?4(category) @@ -3804,6 +3665,7 @@ eric6.MultiProject.MultiProject.MultiProject.addProject?4(startdir=None) eric6.MultiProject.MultiProject.MultiProject.changeProjectProperties?4(pro) eric6.MultiProject.MultiProject.MultiProject.checkDirty?4() +eric6.MultiProject.MultiProject.MultiProject.clearRecent?4() eric6.MultiProject.MultiProject.MultiProject.closeMultiProject?4() eric6.MultiProject.MultiProject.MultiProject.dirty?7 eric6.MultiProject.MultiProject.MultiProject.getActions?4() @@ -4273,130 +4135,134 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.PathNode.dot_id?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.PathNode.to_dot?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.mccabe.PathNode?1(name, look="circle") -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.ARITHMETIC_OP?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BENCHMARK_KEYS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.error?4(line_number, offset, text, check) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.error_args?4(line_number, offset, text, check, *args) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.get_count?4(prefix='') -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.get_file_results?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.get_statistics?4(prefix='') -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.increment_logical_line?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.init_file?4(filename, lines, expected, line_offset) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.print_benchmark?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.print_filename?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.print_statistics?4(prefix='') -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.start?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport.stop?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.BaseReport?1(options) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.COMMENT_WITH_NL?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.COMPARE_NEGATIVE_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.COMPARE_SINGLETON_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.COMPARE_TYPE_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.build_tokens_line?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.check_all?4(expected=None, line_offset=0) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.check_ast?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.check_logical?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.check_physical?4(line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.generate_tokens?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.init_checker_state?4(name, argument_names) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.maybe_check_physical?4(token) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.readline?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.report_invalid_syntax?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker.run_check?4(check, argument_names) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.Checker?1(filename=None, lines=None, options=None, report=None, **kwargs) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.DEFAULT_EXCLUDE?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.DEFAULT_IGNORE?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.DOCSTRING_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.DiffReport.error?4(line_number, offset, text, check) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.DiffReport?1(options) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.ERRORCODE_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.EXTRANEOUS_WHITESPACE_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.FileReport.print_filename?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.HUNK_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.INDENT_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.KEYWORDS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.KEYWORD_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.LAMBDA_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.MAX_LINE_LENGTH?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.NEWLINE?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.OPERATOR_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.PROJECT_CONFIG?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.RAISE_COMMA_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.REPORT_FORMAT?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.RERAISE_COMMA_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.SINGLETONS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.SKIP_COMMENTS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.SKIP_TOKENS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StandardReport.error?4(line_number, offset, text, check) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StandardReport.error_args?4(line_number, offset, code, check, *args) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StandardReport.get_file_results?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StandardReport.init_file?4(filename, lines, expected, line_offset) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StandardReport?1(options) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.check_files?4(paths=None) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.excluded?4(filename, parent=None) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.get_checks?4(argument_name) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.ignore_code?4(code) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.init_report?4(reporter=None) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.input_dir?4(dirname) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide.input_file?4(filename, lines=None, expected=None, line_offset=0) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.StyleGuide?1(*args, **kwargs) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.TESTSUITE_PATH?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.UNARY_OPERATORS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.WHITESPACE?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.WHITESPACE_AFTER_COMMA_REGEX?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.WS_NEEDED_OPERATORS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.WS_OPTIONAL_OPERATORS?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._add_check?5(check, kind, codes, args) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._checks?8 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._get_parameters?5(function) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._is_eol_token?5(token) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._is_eol_token?5(token, _eol_token=_is_eol_token) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._main?5() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8._parse_multi_options?5(options, split_token=', ') -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.blank_lines?4(logical_line, blank_lines, indent_level, line_number, blank_before, previous_logical, previous_indent_level) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.break_around_binary_operator?4(logical_line, tokens) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.comparison_negative?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.comparison_to_singleton?4(logical_line, noqa) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.comparison_type?4(logical_line, noqa) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.compound_statements?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.continued_indentation?4(logical_line, tokens, indent_level, hang_closing, indent_char, noqa, verbose) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.expand_indent?4(line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.explicit_line_join?4(logical_line, tokens) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.extraneous_whitespace?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.filename_match?4(filename, patterns, default=True) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.get_parser?4(prog='pep8', version=__version__) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.imports_on_separate_lines?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.indentation?4(logical_line, previous_logical, indent_char, indent_level, previous_indent_level) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.init_checks_registry?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.is_binary_operator?4(token_type, text) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.is_string_literal?4(line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.maximum_line_length?4(physical_line, max_line_length, multiline) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.missing_whitespace?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.missing_whitespace_around_operator?4(logical_line, tokens) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.module_imports_on_top_of_file?4(logical_line, indent_level, checker_state, noqa) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.mute_string?4(text) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.noqa?7 -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.normalize_paths?4(value, parent=os.curdir) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.parse_udiff?4(diff, patterns=None, parent='.') -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.process_options?4(arglist=None, parse_argv=False, config_file=None, parser=None) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.python_3000_backticks?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.python_3000_has_key?4(logical_line, noqa) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.python_3000_not_equal?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.python_3000_raise_comma?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.read_config?4(options, args, arglist, parser) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.readlines?4(filename) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.register_check?4(check, codes=None) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.stdin_get_value?4() -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.tabs_obsolete?4(physical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.tabs_or_spaces?4(physical_line, indent_char) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.trailing_blank_lines?4(physical_line, lines, line_number, total_lines) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.trailing_whitespace?4(physical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.whitespace_around_comma?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.whitespace_around_keywords?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.whitespace_around_named_parameter_equals?4(logical_line, tokens) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.whitespace_around_operator?4(logical_line) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.whitespace_before_comment?4(logical_line, tokens) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.whitespace_before_parameters?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.ARITHMETIC_OP?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BENCHMARK_KEYS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.error?4(line_number, offset, text, check) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.error_args?4(line_number, offset, text, check, *args) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.get_count?4(prefix='') +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.get_file_results?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.get_statistics?4(prefix='') +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.increment_logical_line?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.init_file?4(filename, lines, expected, line_offset) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.print_benchmark?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.print_filename?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.print_statistics?4(prefix='') +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.start?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport.stop?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.BaseReport?1(options) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.COMMENT_WITH_NL?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.COMPARE_NEGATIVE_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.COMPARE_SINGLETON_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.COMPARE_TYPE_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.build_tokens_line?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.check_all?4(expected=None, line_offset=0) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.check_ast?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.check_logical?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.check_physical?4(line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.generate_tokens?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.init_checker_state?4(name, argument_names) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.maybe_check_physical?4(token) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.readline?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.report_invalid_syntax?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker.run_check?4(check, argument_names) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.Checker?1(filename=None, lines=None, options=None, report=None, **kwargs) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.DEFAULT_EXCLUDE?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.DEFAULT_IGNORE?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.DOCSTRING_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.DiffReport.error?4(line_number, offset, text, check) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.DiffReport?1(options) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.ERRORCODE_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.EXTRANEOUS_WHITESPACE_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.FileReport.print_filename?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.HUNK_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.INDENT_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.KEYWORDS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.KEYWORD_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.LAMBDA_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.MAX_LINE_LENGTH?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.NEWLINE?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.OPERATOR_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.PROJECT_CONFIG?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.PyCF_ONLY_AST?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.RAISE_COMMA_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.REPORT_FORMAT?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.RERAISE_COMMA_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.SINGLETONS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.SKIP_COMMENTS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.SKIP_TOKENS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StandardReport.error?4(line_number, offset, text, check) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StandardReport.error_args?4(line_number, offset, code, check, *args) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StandardReport.get_file_results?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StandardReport.init_file?4(filename, lines, expected, line_offset) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StandardReport?1(options) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.check_files?4(paths=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.excluded?4(filename, parent=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.get_checks?4(argument_name) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.ignore_code?4(code) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.init_report?4(reporter=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.input_dir?4(dirname) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide.input_file?4(filename, lines=None, expected=None, line_offset=0) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.StyleGuide?1(*args, **kwargs) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.TESTSUITE_PATH?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.UNARY_OPERATORS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WHITESPACE?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WHITESPACE_AFTER_COMMA_REGEX?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WS_NEEDED_OPERATORS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.WS_OPTIONAL_OPERATORS?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._add_check?5(check, kind, codes, args) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._checks?8 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._get_parameters?5(function) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._is_eol_token?5(token) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._is_eol_token?5(token, _eol_token=_is_eol_token) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._main?5() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle._parse_multi_options?5(options, split_token=', ') +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.ambiguous_identifier?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.blank_lines?4(logical_line, blank_lines, indent_level, line_number, blank_before, previous_logical, previous_unindented_logical_line, previous_indent_level, lines) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.break_around_binary_operator?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.comparison_negative?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.comparison_to_singleton?4(logical_line, noqa) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.comparison_type?4(logical_line, noqa) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.compound_statements?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.continued_indentation?4(logical_line, tokens, indent_level, hang_closing, indent_char, noqa, verbose) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.expand_indent?4(line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.explicit_line_join?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.extraneous_whitespace?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.filename_match?4(filename, patterns, default=True) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.get_parser?4(prog='pycodestyle', version=__version__) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.imports_on_separate_lines?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.indentation?4(logical_line, previous_logical, indent_char, indent_level, previous_indent_level) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.init_checks_registry?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.is_binary_operator?4(token_type, text) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.is_string_literal?4(line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.maximum_line_length?4(physical_line, max_line_length, multiline, noqa) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.missing_whitespace?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.missing_whitespace_after_import_keyword?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.missing_whitespace_around_operator?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.module_imports_on_top_of_file?4(logical_line, indent_level, checker_state, noqa) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.mute_string?4(text) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.noqa?7 +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.normalize_paths?4(value, parent=os.curdir) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.parse_udiff?4(diff, patterns=None, parent='.') +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.process_options?4(arglist=None, parse_argv=False, config_file=None, parser=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.python_3000_backticks?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.python_3000_has_key?4(logical_line, noqa) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.python_3000_not_equal?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.python_3000_raise_comma?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.read_config?4(options, args, arglist, parser) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.readlines?4(filename) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.register_check?4(check, codes=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.stdin_get_value?4() +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.tabs_obsolete?4(physical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.tabs_or_spaces?4(physical_line, indent_char) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.trailing_blank_lines?4(physical_line, lines, line_number, total_lines) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.trailing_whitespace?4(physical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.update_counts?4(s, counts) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_around_comma?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_around_keywords?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_around_named_parameter_equals?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_around_operator?4(logical_line) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_before_comment?4(logical_line, tokens) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.whitespace_before_parameters?4(logical_line, tokens) eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations._messages?8 eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations._messages_sample_args?8 eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.getTranslatedMessage?4(message) @@ -5495,21 +5361,6 @@ eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgUnshelveContinue?4(name) eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.shutdown?4() eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve?1(vcs) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.TransplantProjectHelper.initActions?4() -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.TransplantProjectHelper.initMenu?4(mainMenu) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.TransplantProjectHelper.menuTitle?4() -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.TransplantProjectHelper.setObjects?4(vcsObject, projectObject) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.TransplantProjectHelper?1() -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.RevisionsValidator.validate?4(input, pos) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.RevisionsValidator?1(multiRevsAllowed, parent=None) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.TransplantDialog.getData?4() -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.TransplantDialog.on_allCheckBox_clicked?4(checked) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.TransplantDialog.on_branchesCombo_editTextChanged?4(txt) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.TransplantDialog.on_revisionsEdit_textChanged?4() -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.TransplantDialog.TransplantDialog?1(branchesList, parent=None) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.transplant.Transplant.hgTransplant?4(path) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.transplant.Transplant.hgTransplantContinue?4(path) -eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.transplant.Transplant?1(vcs) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.IgnoreFileName?7 eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg._createStatusMonitorThread?5(interval, project) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.activeExtensionsChanged?7 @@ -5533,8 +5384,8 @@ eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkIncoming?4(name) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkMove?4(name) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkOutgoing?4(name) -eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkPull?4(name) -eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkPush?4(name) +eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkPull?4(name, current=False) +eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkPush?4(name, current=False) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBookmarkRename?4(name) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBranch?4(name) eric6.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBundle?4(name) @@ -7015,13 +6866,13 @@ eric6.Project.Project.Project.checkDirty?4() eric6.Project.Project.Project.checkLanguageFiles?4() eric6.Project.Project.Project.checkVCSStatus?4() +eric6.Project.Project.Project.clearRecent?4() eric6.Project.Project.Project.clearStatusMonitorCachedState?4(name) eric6.Project.Project.Project.closeProject?4(reopen=False, noSave=False) eric6.Project.Project.Project.completeRepopulateItem?7 eric6.Project.Project.Project.copyDirectory?4(olddn, newdn) eric6.Project.Project.Project.createNewProject?4() eric6.Project.Project.Project.createProjectManagementDir?4() -eric6.Project.Project.Project.dbgKeynames?7 eric6.Project.Project.Project.deleteDirectory?4(dn) eric6.Project.Project.Project.deleteFile?4(fn) eric6.Project.Project.Project.deleteLanguageFile?4(langFile) @@ -7072,6 +6923,7 @@ eric6.Project.Project.Project.isDebugPropertiesLoaded?4() eric6.Project.Project.Project.isDirty?4() eric6.Project.Project.Project.isJavaScriptProject?4() +eric6.Project.Project.Project.isMixedLanguageProject?4() eric6.Project.Project.Project.isOpen?4() eric6.Project.Project.Project.isProjectFile?4(fn) eric6.Project.Project.Project.isProjectForm?4(fn) @@ -7082,7 +6934,6 @@ eric6.Project.Project.Project.isPy3Project?4() eric6.Project.Project.Project.isPythonProject?4() eric6.Project.Project.Project.isRubyProject?4() -eric6.Project.Project.Project.keynames?7 eric6.Project.Project.Project.lexerAssociationsChanged?7 eric6.Project.Project.Project.linguistFile?7 eric6.Project.Project.Project.moveDirectory?4(olddn, newdn) @@ -7133,6 +6984,7 @@ eric6.Project.Project.Project.setDirty?4(b) eric6.Project.Project.Project.setStatusMonitorAutoUpdate?4(auto) eric6.Project.Project.Project.setStatusMonitorInterval?4(interval) +eric6.Project.Project.Project.setTranslationPattern?4(pattern) eric6.Project.Project.Project.showMenu?7 eric6.Project.Project.Project.sourceFile?7 eric6.Project.Project.Project.startStatusMonitor?4() @@ -7141,7 +6993,6 @@ eric6.Project.Project.Project.unregisterProjectType?4(type_) eric6.Project.Project.Project.updateFileTypes?4() eric6.Project.Project.Project.useSystemEol?4() -eric6.Project.Project.Project.userKeynames?7 eric6.Project.Project.Project.vcsSoftwareAvailable?4() eric6.Project.Project.Project.vcsStatusMonitorStatus?7 eric6.Project.Project.Project.writeTasks?4() @@ -7158,6 +7009,7 @@ eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._expandAllDirs?5() eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._initHookMethods?5() eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._initMenusAndVcs?5() +eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._keyboardSearchType?5(item) eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._newProject?5() eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._prepareRepopulateItem?5(name) eric6.Project.ProjectBaseBrowser.ProjectBaseBrowser._projectClosed?5() @@ -8150,6 +8002,7 @@ eric6.QScintilla.SearchReplaceWidget.SearchReplaceWidget.updateSelectionCheckBox?4(editor) eric6.QScintilla.SearchReplaceWidget.SearchReplaceWidget?1(replace, vm, parent=None, sliding=False) eric6.QScintilla.Shell.Shell.clear?4() +eric6.QScintilla.Shell.Shell.clearAllHistories?4() eric6.QScintilla.Shell.Shell.closeShell?4() eric6.QScintilla.Shell.Shell.contextMenuEvent?4(ev) eric6.QScintilla.Shell.Shell.dragEnterEvent?4(event) @@ -8359,6 +8212,11 @@ eric6.Tasks.TaskPropertiesDialog.TaskPropertiesDialog.setReadOnly?4() eric6.Tasks.TaskPropertiesDialog.TaskPropertiesDialog.setSubTaskMode?4(projectTask) eric6.Tasks.TaskPropertiesDialog.TaskPropertiesDialog?1(task=None, parent=None, projectOpen=False) +eric6.Tasks.TaskViewer.ProjectTaskExtractionThread.requestInterrupt?4() +eric6.Tasks.TaskViewer.ProjectTaskExtractionThread.run?4() +eric6.Tasks.TaskViewer.ProjectTaskExtractionThread.scan?4(markers, files) +eric6.Tasks.TaskViewer.ProjectTaskExtractionThread.taskFound?7 +eric6.Tasks.TaskViewer.ProjectTaskExtractionThread?1(parent=None) eric6.Tasks.TaskViewer.TaskViewer.addFileTask?4(summary, filename, lineno, taskType=Task.TypeTodo, description="") eric6.Tasks.TaskViewer.TaskViewer.addTask?4(summary, priority=1, filename="", lineno=0, completed=False, _time=0, isProjectTask=False, taskType=Task.TypeTodo, description="", uid="", parentTask=None) eric6.Tasks.TaskViewer.TaskViewer.clearFileTasks?4(filename, conditionally=False) @@ -8369,8 +8227,10 @@ eric6.Tasks.TaskViewer.TaskViewer.getGlobalTasks?4() eric6.Tasks.TaskViewer.TaskViewer.getProjectTasks?4() eric6.Tasks.TaskViewer.TaskViewer.handlePreferencesChanged?4() +eric6.Tasks.TaskViewer.TaskViewer.regenerateProjectTasks?4(quiet=False) eric6.Tasks.TaskViewer.TaskViewer.saveProjectTasks?4() eric6.Tasks.TaskViewer.TaskViewer.setProjectOpen?4(o=False) +eric6.Tasks.TaskViewer.TaskViewer.stopProjectTaskExtraction?4() eric6.Tasks.TaskViewer.TaskViewer?1(parent, project) eric6.Templates.TemplateHelpDialog.TemplateHelpDialog?1(parent=None) eric6.Templates.TemplateMultipleVariablesDialog.TemplateMultipleVariablesDialog.getVariables?4() @@ -8493,6 +8353,7 @@ eric6.UI.Browser.Browser._editPixmap?5() eric6.UI.Browser.Browser._gotoAttribute?5(act) eric6.UI.Browser.Browser._init?5() +eric6.UI.Browser.Browser._keyboardSearchType?5(item) eric6.UI.Browser.Browser._openHexEditor?5() eric6.UI.Browser.Browser._openItem?5() eric6.UI.Browser.Browser._resizeColumns?5(index) @@ -8507,6 +8368,7 @@ eric6.UI.Browser.Browser.handlePreferencesChanged?4() eric6.UI.Browser.Browser.handleProgramChange?4(fn) eric6.UI.Browser.Browser.handleUnittest?4() +eric6.UI.Browser.Browser.keyboardSearch?4(search) eric6.UI.Browser.Browser.layoutDisplay?4() eric6.UI.Browser.Browser.linguistFile?7 eric6.UI.Browser.Browser.mouseDoubleClickEvent?4(mouseEvent) @@ -8651,6 +8513,8 @@ eric6.UI.BrowserSortFilterProxyModel.BrowserSortFilterProxyModel.preferencesChanged?4() eric6.UI.BrowserSortFilterProxyModel.BrowserSortFilterProxyModel.sort?4(column, order) eric6.UI.BrowserSortFilterProxyModel.BrowserSortFilterProxyModel?1(parent=None) +eric6.UI.ClearPrivateDataDialog.ClearPrivateDataDialog.getData?4() +eric6.UI.ClearPrivateDataDialog.ClearPrivateDataDialog?1(parent=None) eric6.UI.CompareDialog.CompareDialog.compare?4(lines1, lines2, name1="", name2="") eric6.UI.CompareDialog.CompareDialog.on_buttonBox_clicked?4(button) eric6.UI.CompareDialog.CompareDialog.on_diffButton_clicked?4() @@ -9207,6 +9071,7 @@ eric6.Utilities.extractFlags?4(text) eric6.Utilities.extractFlagsFromFile?4(filename) eric6.Utilities.extractLineFlags?4(line, startComment=") +eric6.Utilities.filterAnsiSequences?4(txt) eric6.Utilities.fromNativeSeparators?4(path) eric6.Utilities.generateDistroInfo?4(linesep='\n') eric6.Utilities.generatePluginsVersionInfo?4(linesep='\n') @@ -9432,6 +9297,7 @@ eric6.ViewManager.ViewManager.ViewManager.checkActions?7 eric6.ViewManager.ViewManager.ViewManager.checkAllDirty?4() eric6.ViewManager.ViewManager.ViewManager.checkDirty?4(editor, autosave=False) +eric6.ViewManager.ViewManager.ViewManager.clearRecent?4() eric6.ViewManager.ViewManager.ViewManager.cloneEditor?4(caller, filetype, fn) eric6.ViewManager.ViewManager.ViewManager.closeAllWindows?4() eric6.ViewManager.ViewManager.ViewManager.closeCurrentWindow?4() @@ -9705,7 +9571,9 @@ eric6.WebBrowser.Bookmarks.BookmarkPropertiesDialog.BookmarkPropertiesDialog.accept?4() eric6.WebBrowser.Bookmarks.BookmarkPropertiesDialog.BookmarkPropertiesDialog?1(node, parent=None) eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.closeEvent?4(evt) -eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.newUrl?7 +eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.newBackgroundTab?7 +eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.newTab?7 +eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.newWindow?7 eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.openUrl?7 eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog.reject?4() eric6.WebBrowser.Bookmarks.BookmarksDialog.BookmarksDialog?1(parent=None, manager=None) @@ -9775,9 +9643,10 @@ eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.entryChanged?7 eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.entryRemoved?7 eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.exportBookmarks?4() +eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.faviconChanged?4(url) eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.getFileName?4() -eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.iconChanged?4(url) eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.importBookmarks?4() +eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.incVisitCount?4(node) eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.load?4() eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.menu?4() eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.reload?4() @@ -9787,6 +9656,7 @@ eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.setTimestamp?4(node, timestampType, timestamp) eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.setTitle?4(node, newTitle) eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.setUrl?4(node, newUrl) +eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.setVisitCount?4(node, count) eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.toolbar?4() eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager.undoRedoStack?4() eric6.WebBrowser.Bookmarks.BookmarksManager.BookmarksManager?1(parent=None) @@ -9803,7 +9673,8 @@ eric6.WebBrowser.Bookmarks.BookmarksManager.StartRoot?7 eric6.WebBrowser.Bookmarks.BookmarksManager.StartToolBar?7 eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.createBaseMenu?4() -eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.newUrl?7 +eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.newTab?7 +eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.newWindow?7 eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.openAll?4() eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.openUrl?7 eric6.WebBrowser.Bookmarks.BookmarksMenu.BookmarksMenu.postPopulated?4() @@ -9818,6 +9689,7 @@ eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.TypeRole?7 eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.UrlRole?7 eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.UrlStringRole?7 +eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.VisitCountRole?7 eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.bookmarksManager?4() eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.columnCount?4(parent=QModelIndex()) eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.data?4(index, role=Qt.DisplayRole) @@ -9840,7 +9712,8 @@ eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel.supportedDropActions?4() eric6.WebBrowser.Bookmarks.BookmarksModel.BookmarksModel?1(manager, parent=None) eric6.WebBrowser.Bookmarks.BookmarksToolBar.BookmarksToolBar._createMenu?5() -eric6.WebBrowser.Bookmarks.BookmarksToolBar.BookmarksToolBar.newUrl?7 +eric6.WebBrowser.Bookmarks.BookmarksToolBar.BookmarksToolBar.newTab?7 +eric6.WebBrowser.Bookmarks.BookmarksToolBar.BookmarksToolBar.newWindow?7 eric6.WebBrowser.Bookmarks.BookmarksToolBar.BookmarksToolBar.openUrl?7 eric6.WebBrowser.Bookmarks.BookmarksToolBar.BookmarksToolBar?1(mainWindow, model, parent=None) eric6.WebBrowser.Bookmarks.DefaultBookmarks_rc.qCleanupResources?4() @@ -9867,8 +9740,6 @@ eric6.WebBrowser.ClosedTabsManager.ClosedTabsManager.isClosedTabAvailable?4() eric6.WebBrowser.ClosedTabsManager.ClosedTabsManager.recordBrowser?4(browser, position) eric6.WebBrowser.ClosedTabsManager.ClosedTabsManager?1(parent=None) -eric6.WebBrowser.CookieJar.CookieDetailsDialog.CookieDetailsDialog.setData?4(domain, name, path, secure, expires, value) -eric6.WebBrowser.CookieJar.CookieDetailsDialog.CookieDetailsDialog?1(parent=None) eric6.WebBrowser.CookieJar.CookieExceptionsModel.CookieExceptionsModel.addRule?4(host, rule) eric6.WebBrowser.CookieJar.CookieExceptionsModel.CookieExceptionsModel.columnCount?4(parent=QModelIndex()) eric6.WebBrowser.CookieJar.CookieExceptionsModel.CookieExceptionsModel.data?4(index, role) @@ -9892,10 +9763,12 @@ eric6.WebBrowser.CookieJar.CookieJar.CookieJar.blockedCookies?4() eric6.WebBrowser.CookieJar.CookieJar.CookieJar.clear?4() eric6.WebBrowser.CookieJar.CookieJar.CookieJar.close?4() +eric6.WebBrowser.CookieJar.CookieJar.CookieJar.cookieDomains?4() eric6.WebBrowser.CookieJar.CookieJar.CookieJar.cookies?4() eric6.WebBrowser.CookieJar.CookieJar.CookieJar.cookiesChanged?7 eric6.WebBrowser.CookieJar.CookieJar.CookieJar.filterTrackingCookies?4() eric6.WebBrowser.CookieJar.CookieJar.CookieJar.keepPolicy?4() +eric6.WebBrowser.CookieJar.CookieJar.CookieJar.removeCookie?4(cookie) eric6.WebBrowser.CookieJar.CookieJar.CookieJar.removeCookies?4(cookies) eric6.WebBrowser.CookieJar.CookieJar.CookieJar.setAcceptPolicy?4(policy) eric6.WebBrowser.CookieJar.CookieJar.CookieJar.setAllowForSessionCookies?4(list_) @@ -9904,17 +9777,17 @@ eric6.WebBrowser.CookieJar.CookieJar.CookieJar.setFilterTrackingCookies?4(filterTrackingCookies) eric6.WebBrowser.CookieJar.CookieJar.CookieJar.setKeepPolicy?4(policy) eric6.WebBrowser.CookieJar.CookieJar.CookieJar?1(parent=None) -eric6.WebBrowser.CookieJar.CookieModel.CookieModel.columnCount?4(parent=QModelIndex()) -eric6.WebBrowser.CookieJar.CookieModel.CookieModel.data?4(index, role) -eric6.WebBrowser.CookieJar.CookieModel.CookieModel.headerData?4(section, orientation, role) -eric6.WebBrowser.CookieJar.CookieModel.CookieModel.removeRows?4(row, count, parent=QModelIndex()) -eric6.WebBrowser.CookieJar.CookieModel.CookieModel.rowCount?4(parent=QModelIndex()) -eric6.WebBrowser.CookieJar.CookieModel.CookieModel?1(cookieJar, parent=None) eric6.WebBrowser.CookieJar.CookiesConfigurationDialog.CookiesConfigurationDialog.accept?4() eric6.WebBrowser.CookieJar.CookiesConfigurationDialog.CookiesConfigurationDialog.on_cookiesButton_clicked?4() eric6.WebBrowser.CookieJar.CookiesConfigurationDialog.CookiesConfigurationDialog.on_exceptionsButton_clicked?4() eric6.WebBrowser.CookieJar.CookiesConfigurationDialog.CookiesConfigurationDialog?1(parent) +eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.CookieRole?7 +eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.DomainRole?7 eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.on_addButton_clicked?4() +eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.on_cookiesTree_currentItemChanged?4(current, previous) +eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.on_removeAllButton_clicked?4() +eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.on_removeButton_clicked?4() +eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog.on_searchEdit_textChanged?4(txt) eric6.WebBrowser.CookieJar.CookiesDialog.CookiesDialog?1(cookieJar, parent=None) eric6.WebBrowser.CookieJar.CookiesExceptionsDialog.CookiesExceptionsDialog.on_allowButton_clicked?4() eric6.WebBrowser.CookieJar.CookiesExceptionsDialog.CookiesExceptionsDialog.on_allowForSessionButton_clicked?4() @@ -9997,7 +9870,10 @@ eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.ErrorDataRole?7 eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.UrlStringRole?7 eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.addFeed?4(urlString, title, icon) -eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.newUrl?7 +eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.newBackgroundTab?7 +eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.newPrivateWindow?7 +eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.newTab?7 +eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.newWindow?7 eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.on_deleteButton_clicked?4() eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.on_editButton_clicked?4() eric6.WebBrowser.Feeds.FeedsManager.FeedsManager.on_feedsTree_itemSelectionChanged?4() @@ -10140,7 +10016,10 @@ eric6.WebBrowser.History.HistoryCompleter.HistoryCompletionView.resizeEvent?4(evt) eric6.WebBrowser.History.HistoryCompleter.HistoryCompletionView.sizeHintForRow?4(row) eric6.WebBrowser.History.HistoryCompleter.HistoryCompletionView?1(parent=None) -eric6.WebBrowser.History.HistoryDialog.HistoryDialog.newUrl?7 +eric6.WebBrowser.History.HistoryDialog.HistoryDialog.newBackgroundTab?7 +eric6.WebBrowser.History.HistoryDialog.HistoryDialog.newPrivateWindow?7 +eric6.WebBrowser.History.HistoryDialog.HistoryDialog.newTab?7 +eric6.WebBrowser.History.HistoryDialog.HistoryDialog.newWindow?7 eric6.WebBrowser.History.HistoryDialog.HistoryDialog.openUrl?7 eric6.WebBrowser.History.HistoryDialog.HistoryDialog?1(parent=None, manager=None) eric6.WebBrowser.History.HistoryFilterModel.HistoryData?1(offset, frequency=0) @@ -10186,7 +10065,10 @@ eric6.WebBrowser.History.HistoryManager.HistoryManager.setHistory?4(history, loadedAndSorted=False) eric6.WebBrowser.History.HistoryManager.HistoryManager.updateHistoryEntry?4(url, title) eric6.WebBrowser.History.HistoryManager.HistoryManager?1(parent=None) -eric6.WebBrowser.History.HistoryMenu.HistoryMenu.newUrl?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMenu.newBackgroundTab?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMenu.newPrivateWindow?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMenu.newTab?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMenu.newWindow?7 eric6.WebBrowser.History.HistoryMenu.HistoryMenu.openUrl?7 eric6.WebBrowser.History.HistoryMenu.HistoryMenu.postPopulated?4() eric6.WebBrowser.History.HistoryMenu.HistoryMenu.prePopulated?4() @@ -10202,7 +10084,10 @@ eric6.WebBrowser.History.HistoryMenu.HistoryMenuModel.parent?4(index) eric6.WebBrowser.History.HistoryMenu.HistoryMenuModel.rowCount?4(parent=QModelIndex()) eric6.WebBrowser.History.HistoryMenu.HistoryMenuModel?1(sourceModel, parent=None) -eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.newUrl?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.newBackgroundTab?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.newPrivateWindow?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.newTab?7 +eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.newWindow?7 eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.openUrl?7 eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu.prePopulated?4() eric6.WebBrowser.History.HistoryMenu.HistoryMostVisitedMenu?1(count, parent=None) @@ -10453,24 +10338,31 @@ eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.escapePressed?7 eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.eventFilter?4(watched, event) eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.focusInEvent?4(evt) -eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.linkActivated?7 -eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.linksActivated?7 -eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget?1(engine, mainWindow, parent=None) +eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.newBackgroundTab?7 +eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.newTab?7 +eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.newWindow?7 +eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget.openUrl?7 +eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget?1(engine, parent=None) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.contextMenuEvent?4(evt) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.escapePressed?7 eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.eventFilter?4(watched, event) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.keyPressEvent?4(evt) -eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.linkActivated?7 -eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget?1(engine, mainWindow, parent=None) +eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.newBackgroundTab?7 +eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.newTab?7 +eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.newWindow?7 +eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.openUrl?7 +eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget?1(engine, parent=None) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.escapePressed?7 eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.eventFilter?4(watched, event) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.expandToDepth?4(depth) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.focusInEvent?4(evt) -eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.itemClicked?4(index) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.keyPressEvent?4(evt) -eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.linkActivated?7 +eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.newBackgroundTab?7 +eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.newTab?7 +eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.newWindow?7 +eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.openUrl?7 eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.syncToContent?4(url) -eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget?1(engine, mainWindow, parent=None) +eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget?1(engine, parent=None) eric6.WebBrowser.QtHelp.HelpTopicDialog.HelpTopicDialog.link?4() eric6.WebBrowser.QtHelp.HelpTopicDialog.HelpTopicDialog?1(parent, keyword, links) eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.QtHelpDocumentationDialog.getTabsToClose?4() @@ -10648,6 +10540,9 @@ eric6.WebBrowser.Tools.DelayedFileWatcher.DelayedFileWatcher.delayedDirectoryChanged?7 eric6.WebBrowser.Tools.DelayedFileWatcher.DelayedFileWatcher.delayedFileChanged?7 eric6.WebBrowser.Tools.DelayedFileWatcher.DelayedFileWatcher?1(paths=None, parent=None) +eric6.WebBrowser.Tools.PrintToPdfDialog.PrintToPdfDialog.getData?4() +eric6.WebBrowser.Tools.PrintToPdfDialog.PrintToPdfDialog.on_pageLayoutButton_clicked?4() +eric6.WebBrowser.Tools.PrintToPdfDialog.PrintToPdfDialog?1(filePath, parent=None) eric6.WebBrowser.Tools.Scripts.completeFormData?4(data) eric6.WebBrowser.Tools.Scripts.getAllImages?4() eric6.WebBrowser.Tools.Scripts.getAllMetaAttributes?4() @@ -10670,6 +10565,7 @@ eric6.WebBrowser.Tools.WebBrowserTools.readAllFileByteContents?4(filename) eric6.WebBrowser.Tools.WebBrowserTools.readAllFileContents?4(filename) eric6.WebBrowser.Tools.WebHitTestResult.WebHitTestResult.alternateText?4() +eric6.WebBrowser.Tools.WebHitTestResult.WebHitTestResult.baseUrl?4() eric6.WebBrowser.Tools.WebHitTestResult.WebHitTestResult.boundingRect?4() eric6.WebBrowser.Tools.WebHitTestResult.WebHitTestResult.imageUrl?4() eric6.WebBrowser.Tools.WebHitTestResult.WebHitTestResult.isContentEditable?4() @@ -10814,6 +10710,7 @@ eric6.WebBrowser.WebBrowserPage.WebBrowserPage.certificateError?4(error) eric6.WebBrowser.WebBrowserPage.WebBrowserPage.execJavaScript?4(script, worldId=QWebEngineScript.MainWorld, timeout=500) eric6.WebBrowser.WebBrowserPage.WebBrowserPage.hitTestContent?4(pos) +eric6.WebBrowser.WebBrowserPage.WebBrowserPage.icon?4() eric6.WebBrowser.WebBrowserPage.WebBrowserPage.isJavaScriptEnabled?4() eric6.WebBrowser.WebBrowserPage.WebBrowserPage.javaScriptConsoleMessage?4(level, message, lineNumber, sourceId) eric6.WebBrowser.WebBrowserPage.WebBrowserPage.mapToViewport?4(pos) @@ -10847,8 +10744,8 @@ eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.currentUrlBar?4() eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.currentUrlChanged?7 eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.getSourceFileList?4() -eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.newBrowser?4(link=None, position=-1) -eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.newBrowserAfter?4(browser, link=None) +eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.newBrowser?4(link=None, position=-1, background=False) +eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.newBrowserAfter?4(browser, link=None, background=False) eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.preferencesChanged?4() eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.printBrowser?4(browser=None) eric6.WebBrowser.WebBrowserTabWidget.WebBrowserTabWidget.printBrowserPdf?4(browser=None) @@ -10888,6 +10785,7 @@ eric6.WebBrowser.WebBrowserView.WebBrowserView.dropEvent?4(evt) eric6.WebBrowser.WebBrowserView.WebBrowserView.event?4(evt) eric6.WebBrowser.WebBrowserView.WebBrowserView.eventFilter?4(obj, evt) +eric6.WebBrowser.WebBrowserView.WebBrowserView.faviconChanged?7 eric6.WebBrowser.WebBrowserView.WebBrowserView.findNextPrev?4(txt, case, backwards, callback) eric6.WebBrowser.WebBrowserView.WebBrowserView.focusOutEvent?4(evt) eric6.WebBrowser.WebBrowserView.WebBrowserView.forward?4() @@ -10899,7 +10797,6 @@ eric6.WebBrowser.WebBrowserView.WebBrowserView.highlighted?7 eric6.WebBrowser.WebBrowserView.WebBrowserView.home?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.icon?4() -eric6.WebBrowser.WebBrowserView.WebBrowserView.iconChanged?7 eric6.WebBrowser.WebBrowserView.WebBrowserView.inputWidget?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.isBackwardAvailable?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.isForwardAvailable?4() @@ -10915,6 +10812,7 @@ eric6.WebBrowser.WebBrowserView.WebBrowserView.reload?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.reloadBypassingCache?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.requestFullScreen?4(enable) +eric6.WebBrowser.WebBrowserView.WebBrowserView.saveAs?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.search?7 eric6.WebBrowser.WebBrowserView.WebBrowserView.selectAll?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.setSource?4(name, newTab=False) @@ -10922,6 +10820,7 @@ eric6.WebBrowser.WebBrowserView.WebBrowserView.source?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.sourceChanged?7 eric6.WebBrowser.WebBrowserView.WebBrowserView.undo?4() +eric6.WebBrowser.WebBrowserView.WebBrowserView.unselect?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.zoomIn?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.zoomOut?4() eric6.WebBrowser.WebBrowserView.WebBrowserView.zoomReset?4() @@ -10997,12 +10896,15 @@ eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.mousePressEvent?4(evt) eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.newPrivateWindow?4(link=None) -eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.newTab?4(link=None, addNextTo=None) +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.newTab?4(link=None, addNextTo=None, background=False) eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.newWindow?4(link=None) eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.notificationsEnabled?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openSearchManager?4() -eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrl?4(url, title) -eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrlNewTab?4(url, title) +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrl?4(url, title=None) +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrlNewBackgroundTab?4(url, title=None) +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrlNewPrivateWindow?4(url, title=None) +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrlNewTab?4(url, title=None) +eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.openUrlNewWindow?4(url, title=None) eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.personalInformationManager?4() eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.preferencesChanged?4() @@ -11126,6 +11028,24 @@ eric6.eric6_webbrowser.main?4() eric6.eric6config._pkg_config?8 eric6.eric6config.getConfig?4(name) +eric6.install-debugclients.cleanUp?4() +eric6.install-debugclients.cleanupSource?4(dirName) +eric6.install-debugclients.copyTree?4(src, dst, filters, excludeDirs=[], excludePatterns=[]) +eric6.install-debugclients.currDir?7 +eric6.install-debugclients.distDir?7 +eric6.install-debugclients.doCleanup?7 +eric6.install-debugclients.doCompile?7 +eric6.install-debugclients.exit?4(rcode=0) +eric6.install-debugclients.initGlobals?4() +eric6.install-debugclients.installEricDebugClients?4() +eric6.install-debugclients.installPackage?7 +eric6.install-debugclients.main?4(argv) +eric6.install-debugclients.modDir?7 +eric6.install-debugclients.progName?7 +eric6.install-debugclients.pyModDir?7 +eric6.install-debugclients.shutilCopy?4(src, dst, perm=0o644) +eric6.install-debugclients.sourceDir?7 +eric6.install-debugclients.usage?4(rcode=2) eric6.install-i18n.configDir?7 eric6.install-i18n.getConfigDir?4() eric6.install-i18n.installTranslations?4() @@ -11188,6 +11108,16 @@ eric6.patch_modpython.modDir?7 eric6.patch_modpython.progName?7 eric6.patch_modpython.usage?4(rcode=2) +eric6.uninstall-debugclients.currDir?7 +eric6.uninstall-debugclients.exit?4(rcode=0) +eric6.uninstall-debugclients.initGlobals?4() +eric6.uninstall-debugclients.installPackage?7 +eric6.uninstall-debugclients.main?4(argv) +eric6.uninstall-debugclients.modDir?7 +eric6.uninstall-debugclients.progName?7 +eric6.uninstall-debugclients.pyModDir?7 +eric6.uninstall-debugclients.uninstallEricDebugClients?4() +eric6.uninstall-debugclients.usage?4(rcode=2) eric6.uninstall.PythonMarkers?7 eric6.uninstall.defaultMacAppBundleName?7 eric6.uninstall.defaultMacAppBundlePath?7
--- a/APIs/Python3/eric6.bas Thu Sep 15 21:49:13 2016 +0200 +++ b/APIs/Python3/eric6.bas Sun Sep 18 21:35:53 2016 +0200 @@ -70,6 +70,7 @@ ClassItem UMLItem ClassModel UMLModel ClbrBase _ClbrBase +ClearPrivateDataDialog QDialog Ui_ClearPrivateDataDialog ClickToFlash QWidget Ui_ClickToFlash ClickToFlashPlugin WebPluginInterface ClickToFlashWhitelistDialog QDialog Ui_ClickToFlashWhitelistDialog @@ -77,7 +78,7 @@ CodeMetricsDialog QDialog Ui_CodeMetricsDialog CodeStyleCheckerDialog QDialog Ui_CodeStyleCheckerDialog CodeStyleCheckerPlugin QObject -CodeStyleCheckerReport pep8.BaseReport +CodeStyleCheckerReport pycodestyle.BaseReport CodeStyleCodeSelectionDialog QDialog Ui_CodeStyleCodeSelectionDialog CodeStyleStatisticsDialog QDialog Ui_CodeStyleStatisticsDialog Coding ClbrBase @@ -110,23 +111,25 @@ DCTestResult TestResult Data bytes DebugBase bdb.Bdb -DebugClient AsyncIO DebugBase DebugClientBase.DebugClientBase -DebugClientThreads AsyncIO DebugClientBase.DebugClientBase +DebugClient DebugBase DebugClientBase.DebugClientBase +DebugClientThreads DebugClientBase.DebugClientBase DebugServer QTcpServer DebugThread DebugBase DebugUI QObject DebugViewer QWidget DebuggerGeneralPage ConfigurationPageBase Ui_DebuggerGeneralPage DebuggerInterfaceNone QObject -DebuggerInterfacePython QObject +DebuggerInterfacePython2 QObject DebuggerInterfacePython3 QObject DebuggerPropertiesDialog QDialog Ui_DebuggerPropertiesDialog DebuggerPropertiesReader XMLStreamReaderBase DebuggerPropertiesWriter XMLStreamWriterBase DebuggerPython3Page ConfigurationPageBase Ui_DebuggerPython3Page DebuggerPythonPage ConfigurationPageBase Ui_DebuggerPythonPage +DefaultResolver BaseResolver DelayedFileWatcher QFileSystemWatcher DeleteFilesConfirmationDialog QDialog Ui_DeleteFilesConfirmationDialog +DictResolver BaseResolver DiffDialog QWidget Ui_DiffDialog DiffHighlighter E5GenericDiffHighlighter DiffReport StandardReport @@ -489,6 +492,7 @@ LexerYAML Lexer QsciLexerYAML LfConvertDataDialog QDialog Ui_LfConvertDataDialog LfRevisionsInputDialog QDialog Ui_LfRevisionsInputDialog +ListResolver BaseResolver Listspace ViewManager LogViewer QWidget LogViewerEdit QTextEdit @@ -583,6 +587,7 @@ Previewer QStackedWidget PreviewerHTML QWidget PreviewerQSS QWidget Ui_PreviewerQSS +PrintToPdfDialog QDialog Ui_PrintToPdfDialog Printer QsciPrinter PrinterPage ConfigurationPageBase Ui_PrinterPage ProfileTreeWidgetItem QTreeWidgetItem @@ -603,6 +608,7 @@ ProjectReader XMLStreamReaderBase ProjectResourcesBrowser ProjectBaseBrowser ProjectSourcesBrowser ProjectBaseBrowser +ProjectTaskExtractionThread QThread ProjectTranslationsBrowser ProjectBaseBrowser ProjectWriter XMLStreamWriterBase PropertiesDialog QDialog Ui_PropertiesDialog @@ -650,7 +656,6 @@ RecursionError OverflowError ValueError Redirector QObject RemoveBookmarksCommand QUndoCommand -RevisionsValidator QValidator SafariImporter BookmarksImporter SchemeAccessHandler QObject SearchReplaceSlidingWidget QWidget @@ -660,6 +665,7 @@ SendRefererWhitelistDialog QDialog Ui_SendRefererWhitelistDialog SessionReader XMLStreamReaderBase SessionWriter XMLStreamWriterBase +SetResolver BaseResolver Shell QsciScintillaCompat ShellAssembly QWidget ShellHistoryDialog QDialog Ui_ShellHistoryDialog @@ -781,9 +787,6 @@ ToolGroupConfigurationDialog QDialog Ui_ToolGroupConfigurationDialog TranslationPropertiesDialog QDialog Ui_TranslationPropertiesDialog TranslationsDict QObject -Transplant HgExtension -TransplantDialog QDialog Ui_TransplantDialog -TransplantProjectHelper HgExtensionProjectHelper TrayStarter QSystemTrayIcon TrayStarterPage ConfigurationPageBase Ui_TrayStarterPage UIPreviewer E5MainWindow
--- a/DataViews/PyCoverageDialog.py Thu Sep 15 21:49:13 2016 +0200 +++ b/DataViews/PyCoverageDialog.py Sun Sep 18 21:35:53 2016 +0200 @@ -22,7 +22,7 @@ from .Ui_PyCoverageDialog import Ui_PyCoverageDialog import Utilities -from coverage import coverage +from coverage import Coverage from coverage.misc import CoverageException @@ -168,7 +168,7 @@ self.path = os.path.dirname(cfn) files.sort() - cover = coverage(data_file=self.cfn) + cover = Coverage(data_file=self.cfn) cover.load() # set the exclude pattern @@ -315,7 +315,7 @@ itm = self.resultList.currentItem() fn = itm.text(0) - cover = coverage(data_file=self.cfn) + cover = Coverage(data_file=self.cfn) cover.exclude(self.excludeList[0]) cover.load() cover.annotate([fn], None, True) @@ -337,7 +337,7 @@ itm = self.resultList.topLevelItem(index) files.append(itm.text(0)) - cover = coverage(data_file=self.cfn) + cover = Coverage(data_file=self.cfn) cover.exclude(self.excludeList[0]) cover.load() @@ -365,7 +365,7 @@ This method erases the collected coverage data that is stored in the .coverage file. """ - cover = coverage(data_file=self.cfn) + cover = Coverage(data_file=self.cfn) cover.load() cover.erase()
--- a/DebugClients/Python/AsyncFile.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,304 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing an asynchronous file like socket interface for the -debugger. -""" - -import socket - -from DebugProtocol import EOT - - -def AsyncPendingWrite(file): - """ - Module function to check for data to be written. - - @param file The file object to be checked (file) - @return Flag indicating if there is data wating (int) - """ - try: - pending = file.pendingWrite() - except Exception: - pending = 0 - - return pending - - -class AsyncFile(object): - """ - Class wrapping a socket object with a file interface. - """ - maxtries = 10 - maxbuffersize = 1024 * 1024 * 4 - - def __init__(self, sock, mode, name): - """ - Constructor - - @param sock the socket object being wrapped - @param mode mode of this file (string) - @param name name of this file (string) - """ - # Initialise the attributes. - self.closed = 0 - self.sock = sock - self.mode = mode - self.name = name - self.nWriteErrors = 0 - self.encoding = "utf-8" - - self.wpending = u'' - - def __checkMode(self, mode): - """ - Private method to check the mode. - - This method checks, if an operation is permitted according to - the mode of the file. If it is not, an IOError is raised. - - @param mode the mode to be checked (string) - @exception IOError raised to indicate a bad file descriptor - """ - if mode != self.mode: - raise IOError('[Errno 9] Bad file descriptor') - - def __nWrite(self, n): - """ - Private method to write a specific number of pending bytes. - - @param n the number of bytes to be written (int) - """ - if n: - try: - buf = "%s%s" % (self.wpending[:n], EOT) - try: - buf = buf.encode('utf-8') - except (UnicodeEncodeError, UnicodeDecodeError): - pass - self.sock.sendall(buf) - self.wpending = self.wpending[n:] - self.nWriteErrors = 0 - except socket.error: - self.nWriteErrors += 1 - if self.nWriteErrors > self.maxtries: - self.wpending = u'' # delete all output - - def pendingWrite(self): - """ - Public method that returns the number of bytes waiting to be written. - - @return the number of bytes to be written (int) - """ - return self.wpending.rfind('\n') + 1 - - def close(self, closeit=0): - """ - Public method to close the file. - - @param closeit flag to indicate a close ordered by the debugger code - (boolean) - """ - if closeit and not self.closed: - self.flush() - self.sock.close() - self.closed = 1 - - def flush(self): - """ - Public method to write all pending bytes. - """ - self.__nWrite(len(self.wpending)) - - def isatty(self): - """ - Public method to indicate whether a tty interface is supported. - - @return always false - """ - return 0 - - def fileno(self): - """ - Public method returning the file number. - - @return file number (int) - """ - try: - return self.sock.fileno() - except socket.error: - return -1 - - def read_p(self, size=-1): - """ - Public method to read bytes from this file. - - @param size maximum number of bytes to be read (int) - @return the bytes read (any) - """ - self.__checkMode('r') - - if size < 0: - size = 20000 - - return self.sock.recv(size).decode('utf8') - - def read(self, size=-1): - """ - Public method to read bytes from this file. - - @param size maximum number of bytes to be read (int) - @return the bytes read (any) - """ - self.__checkMode('r') - - buf = raw_input() - if size >= 0: - buf = buf[:size] - return buf - - def readline_p(self, size=-1): - """ - Public method to read a line from this file. - - <b>Note</b>: This method will not block and may return - only a part of a line if that is all that is available. - - @param size maximum number of bytes to be read (int) - @return one line of text up to size bytes (string) - """ - self.__checkMode('r') - - if size < 0: - size = 20000 - - # The integration of the debugger client event loop and the connection - # to the debugger relies on the two lines of the debugger command being - # delivered as two separate events. Therefore we make sure we only - # read a line at a time. - line = self.sock.recv(size, socket.MSG_PEEK) - - eol = line.find('\n') - - if eol >= 0: - size = eol + 1 - else: - size = len(line) - - # Now we know how big the line is, read it for real. - return self.sock.recv(size).decode('utf8') - - def readlines(self, sizehint=-1): - """ - Public method to read all lines from this file. - - @param sizehint hint of the numbers of bytes to be read (int) - @return list of lines read (list of strings) - """ - self.__checkMode('r') - - lines = [] - room = sizehint - - line = self.readline_p(room) - linelen = len(line) - - while linelen > 0: - lines.append(line) - - if sizehint >= 0: - room = room - linelen - - if room <= 0: - break - - line = self.readline_p(room) - linelen = len(line) - - return lines - - def readline(self, sizehint=-1): - """ - Public method to read one line from this file. - - @param sizehint hint of the numbers of bytes to be read (int) - @return one line read (string) - """ - self.__checkMode('r') - - line = raw_input() + '\n' - if sizehint >= 0: - line = line[:sizehint] - return line - - def seek(self, offset, whence=0): - """ - Public method to move the filepointer. - - @param offset offset to seek for - @param whence where to seek from - @exception IOError This method is not supported and always raises an - IOError. - """ - raise IOError('[Errno 29] Illegal seek') - - def tell(self): - """ - Public method to get the filepointer position. - - @exception IOError This method is not supported and always raises an - IOError. - """ - raise IOError('[Errno 29] Illegal seek') - - def truncate(self, size=-1): - """ - Public method to truncate the file. - - @param size size to truncate to (integer) - @exception IOError This method is not supported and always raises an - IOError. - """ - raise IOError('[Errno 29] Illegal seek') - - def write(self, s): - """ - Public method to write a string to the file. - - @param s bytes to be written (string) - @exception socket.error raised to indicate too many send attempts - """ - self.__checkMode('w') - tries = 0 - if not self.wpending: - self.wpending = s - elif type(self.wpending) != type(s) or \ - len(self.wpending) + len(s) > self.maxbuffersize: - # flush wpending so that different string types are not - # concatenated - while self.wpending: - # if we have a persistent error in sending the data, an - # exception will be raised in __nWrite - self.flush() - tries += 1 - if tries > self.maxtries: - raise socket.error("Too many attempts to send data") - self.wpending = s - else: - self.wpending += s - self.__nWrite(self.pendingWrite()) - - def writelines(self, list): - """ - Public method to write a list of strings to the file. - - @param list the list to be written (list of string) - """ - map(self.write, list) - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/AsyncIO.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a base class of an asynchronous interface for the debugger. -""" - - -class AsyncIO(object): - """ - Class implementing asynchronous reading and writing. - """ - def __init__(self): - """ - Constructor - """ - # There is no connection yet. - self.disconnect() - - def disconnect(self): - """ - Public method to disconnect any current connection. - """ - self.readfd = None - self.writefd = None - - def setDescriptors(self, rfd, wfd): - """ - Public method called to set the descriptors for the connection. - - @param rfd file descriptor of the input file (int) - @param wfd file descriptor of the output file (int) - """ - self.rbuf = '' - self.readfd = rfd - - self.wbuf = '' - self.writefd = wfd - - def readReady(self, fd): - """ - Public method called when there is data ready to be read. - - @param fd file descriptor of the file that has data to be read (int) - """ - try: - got = self.readfd.readline_p() - except Exception: - return - - if len(got) == 0: - self.sessionClose() - return - - self.rbuf = self.rbuf + got - - # Call handleLine for the line if it is complete. - eol = self.rbuf.find('\n') - - while eol >= 0: - s = self.rbuf[:eol + 1] - self.rbuf = self.rbuf[eol + 1:] - self.handleLine(s) - eol = self.rbuf.find('\n') - - def writeReady(self, fd): - """ - Public method called when we are ready to write data. - - @param fd file descriptor of the file that has data to be written (int) - """ - self.writefd.write(self.wbuf) - self.writefd.flush() - self.wbuf = '' - - def write(self, s): - """ - Public method to write a string. - - @param s the data to be written (string) - """ - self.wbuf = self.wbuf + s - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/BreakpointWatch.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,333 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the breakpoint and watch class. -""" - -import os - - -class Breakpoint: - """ - Breakpoint class. - - Implements temporary breakpoints, ignore counts, disabling and - (re)-enabling, and conditionals. - - Breakpoints are indexed by the file,line tuple using breaks. It - points to a single Breakpoint instance. This is rather different to - the original bdb, since there may be more than one breakpoint per line. - - To test for a specific line in a file there is another dict breakInFile, - which is indexed only by filename and holds all line numbers where - breakpoints are. - """ - breaks = {} # indexed by (filename, lineno) tuple: Breakpoint - breakInFile = {} # indexed by filename: [lineno] - breakInFrameCache = {} - - def __init__(self, filename, lineno, temporary=0, cond=None): - """ - Constructor - - @param filename the filename where a breakpoint is set - @type str - @param lineno the line number of the breakpoint - @type int - @keyparam temporary flag to indicate a temporary breakpoint - @type int - @keyparam cond Python expression which dynamically enables this bp - @type str - """ - filename = os.path.abspath(filename) - self.file = filename - self.line = lineno - self.temporary = temporary - self.cond = cond - self.enabled = 1 - self.ignore = 0 - self.hits = 0 - self.breaks[filename, lineno] = self - lines = self.breakInFile.setdefault(filename, []) - if lineno not in lines: - lines.append(lineno) - self.breakInFrameCache.clear() - - def deleteMe(self): - """ - Public method to clear this breakpoint. - """ - try: - del self.breaks[(self.file, self.line)] - self.breakInFile[self.file].remove(self.line) - if not self.breakInFile[self.file]: - del self.breakInFile[self.file] - except KeyError: - pass - - def enable(self): - """ - Public method to enable this breakpoint. - """ - self.enabled = 1 - - def disable(self): - """ - Public method to disable this breakpoint. - """ - self.enabled = 0 - - @staticmethod - def clear_break(filename, lineno): - """ - Public method reimplemented from bdb.py to clear a breakpoint. - - @param filename the filename of the bp to retrieve - @type str - @param lineno the linenumber of the bp to retrieve - @type int - """ - bp = Breakpoint.breaks.get((filename, lineno)) - if bp: - bp.deleteMe() - Breakpoint.breakInFrameCache.clear() - - @staticmethod - def clear_all_breaks(): - """ - Public method to clear all breakpoints. - """ - for bp in Breakpoint.breaks.copy(): - bp.deleteMe() - Breakpoint.breakInFrameCache.clear() - - @staticmethod - def get_break(filename, lineno): - """ - Public method to get the breakpoint of a particular line. - - Because eric6 supports only one breakpoint per line, this - method will return only one breakpoint. - - @param filename the filename of the bp to retrieve - @type str - @param lineno the linenumber of the bp to retrieve - @type int - @return Breakpoint or None, if there is no bp - @rtype Breakpoint object or None - """ - return Breakpoint.breaks.get((filename, lineno)) - - @staticmethod - def effectiveBreak(filename, lineno, frame): - """ - Public method to determine which breakpoint for this filename:lineno - is to be acted upon. - - Called only if we know there is a bpt at this - location. Returns breakpoint that was triggered and a flag - that indicates if it is ok to delete a temporary bp. - - @param filename the filename of the bp to retrieve - @type str - @param lineno the linenumber of the bp to retrieve - @type int - @param frame the current execution frame - @type frame object - @return tuple of Breakpoint and a flag to indicate, that a - temporary breakpoint may be deleted - @rtype tuple of Breakpoint, bool - """ - b = Breakpoint.breaks[filename, lineno] - if b.enabled == 0: - return (None, 0) - - # Count every hit when bp is enabled - b.hits += 1 - if not b.cond: - # If unconditional, and ignoring, - # go on to next, else break - if b.ignore > 0: - b.ignore -= 1 - return (None, 0) - else: - # breakpoint and marker that's ok - # to delete if temporary - return (b, 1) - else: - # Conditional bp. - # Ignore count applies only to those bpt hits where the - # condition evaluates to true. - try: - val = eval(b.cond, frame.f_globals, frame.f_locals) - if val: - if b.ignore > 0: - b.ignore -= 1 - # continue - else: - return (b, 1) - # else: - # continue - except Exception: - # if eval fails, most conservative - # thing is to stop on breakpoint - # regardless of ignore count. - # Don't delete temporary, - # as another hint to user. - return (b, 0) - return (None, 0) - - -class Watch: - """ - Watch class. - - Implements temporary watches, ignore counts, disabling and - (re)-enabling, and conditionals. - """ - watches = [] - - def __init__(self, cond, compiledCond, flag, temporary=0): - """ - Constructor - - @param cond condition as string with flag - @type str - @param compiledCond precompiled condition - @type code object - @param flag indicates type of watch (created or changed) - @type str - @keyparam temporary flag for temporary watches - @type int - """ - # Should not occur - if not cond: - return - - self.cond = cond - self.compiledCond = compiledCond - self.temporary = temporary - - self.enabled = 1 - self.ignore = 0 - - self.created = False - self.changed = False - if flag == '??created??': - self.created = True - elif flag == '??changed??': - self.changed = True - - self.values = {} - self.watches.append(self) - - def deleteMe(self): - """ - Public method to clear this watch expression. - """ - try: - del self.watches[self] - except ValueError: - pass - - def enable(self): - """ - Public method to enable this watch. - """ - self.enabled = 1 - - def disable(self): - """ - Public method to disable this watch. - """ - self.enabled = 0 - - @staticmethod - def clear_watch(cond): - """ - Public method to clear a watch expression. - - @param cond expression of the watch expression to be cleared - @type str - """ - try: - Watch.watches.remove(Watch.get_watch(cond)) - except ValueError: - pass - - @staticmethod - def clear_all_watches(): - """ - Public method to clear all watch expressions. - """ - del Watch.watches[:] - - @staticmethod - def get_watch(cond): - """ - Public method to get a watch expression. - - @param cond expression of the watch expression to be cleared - @type str - @return reference to the watch point - @rtype Watch or None - """ - for b in Watch.watches: - if b.cond == cond: - return b - - @staticmethod - def effectiveWatch(frame): - """ - Public method to determine, if a watch expression is effective. - - @param frame the current execution frame - @type frame object - @return tuple of watch expression and a flag to indicate, that a - temporary watch expression may be deleted - @rtype tuple of Watch, int - """ - for b in Watch.watches: - if b.enabled == 0: - continue - try: - val = eval(b.compiledCond, frame.f_globals, frame.f_locals) - if b.created: - if frame in b.values: - continue - else: - b.values[frame] = [1, val, b.ignore] - return (b, 1) - - elif b.changed: - try: - if b.values[frame][1] != val: - b.values[frame][1] = val - else: - continue - except KeyError: - b.values[frame] = [1, val, b.ignore] - - if b.values[frame][2] > 0: - b.values[frame][2] -= 1 - continue - else: - return (b, 1) - - elif val: - if b.ignore > 0: - b.ignore -= 1 - continue - else: - return (b, 1) - except Exception: - continue - return (None, 0) - - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DCTestResult.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2003 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a TestResult derivative for the eric6 debugger. -""" - -import select -from unittest import TestResult - - -from DebugProtocol import ResponseUTTestFailed, ResponseUTTestErrored, \ - ResponseUTStartTest, ResponseUTStopTest, ResponseUTTestSkipped, \ - ResponseUTTestFailedExpected, ResponseUTTestSucceededUnexpected - - -class DCTestResult(TestResult): - """ - A TestResult derivative to work with eric6's debug client. - - For more details see unittest.py of the standard python distribution. - """ - def __init__(self, parent): - """ - Constructor - - @param parent The parent widget. - """ - TestResult.__init__(self) - self.parent = parent - - def addFailure(self, test, err): - """ - Public method called if a test failed. - - @param test Reference to the test object - @param err The error traceback - """ - TestResult.addFailure(self, test, err) - tracebackLines = self._exc_info_to_string(err, test) - self.parent.write( - '%s%s\n' % ( - ResponseUTTestFailed, - unicode((unicode(test), tracebackLines, test.id())))) - - def addError(self, test, err): - """ - Public method called if a test errored. - - @param test Reference to the test object - @param err The error traceback - """ - TestResult.addError(self, test, err) - tracebackLines = self._exc_info_to_string(err, test) - self.parent.write( - '%s%s\n' % ( - ResponseUTTestErrored, - unicode((unicode(test), tracebackLines, test.id())))) - - def addSkip(self, test, reason): - """ - Public method called if a test was skipped. - - @param test reference to the test object - @param reason reason for skipping the test (string) - """ - TestResult.addSkip(self, test, reason) - self.parent.write( - '%s%s\n' % ( - ResponseUTTestSkipped, - str((str(test), reason, test.id())))) - - def addExpectedFailure(self, test, err): - """ - Public method called if a test failed expected. - - @param test reference to the test object - @param err error traceback - """ - TestResult.addExpectedFailure(self, test, err) - tracebackLines = self._exc_info_to_string(err, test) - self.parent.write( - '%s%s\n' % ( - ResponseUTTestFailedExpected, - str((str(test), tracebackLines, test.id())))) - - def addUnexpectedSuccess(self, test): - """ - Public method called if a test succeeded expectedly. - - @param test reference to the test object - """ - TestResult.addUnexpectedSuccess(self, test) - self.parent.write( - '%s%s\n' % ( - ResponseUTTestSucceededUnexpected, - str((str(test), test.id())))) - - def startTest(self, test): - """ - Public method called at the start of a test. - - @param test Reference to the test object - """ - TestResult.startTest(self, test) - self.parent.write( - '%s%s\n' % ( - ResponseUTStartTest, - unicode((unicode(test), test.shortDescription())))) - - def stopTest(self, test): - """ - Public method called at the end of a test. - - @param test Reference to the test object - """ - TestResult.stopTest(self, test) - self.parent.write('%s\n' % ResponseUTStopTest) - - # ensure that pending input is processed - rrdy, wrdy, xrdy = select.select([self.parent.readstream], [], [], - 0.01) - - if self.parent.readstream in rrdy: - self.parent.readReady(self.parent.readstream.fileno()) - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugBase.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,895 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the debug base class which based originally on bdb. -""" - -import sys -import os -import types -import atexit -import inspect -import ctypes -import thread -import time - -from DebugProtocol import ResponseClearWatch, ResponseClearBreak, \ - ResponseLine, ResponseSyntax, ResponseException, CallTrace -from BreakpointWatch import Breakpoint, Watch - -gRecursionLimit = 64 - - -def printerr(s): - """ - Module function used for debugging the debug client. - - @param s data to be printed - """ - sys.__stderr__.write('%s\n' % unicode(s)) - sys.__stderr__.flush() - - -def setRecursionLimit(limit): - """ - Module function to set the recursion limit. - - @param limit recursion limit (integer) - """ - global gRecursionLimit - gRecursionLimit = limit - - -class DebugBase(object): - """ - Class implementing base class of the debugger. - - Provides methods for the 'owning' client to call to step etc. - """ - # Don't thrust distutils.sysconfig.get_python_lib: possible case mismatch - # on Windows - lib = os.path.dirname(inspect.__file__) - # tuple required because it's accessed a lot of times by startswith method - pathsToSkip = ('<', os.path.dirname(__file__), inspect.__file__[:-1]) - filesToSkip = {} - - # cache for fixed file names - _fnCache = {} - - def __init__(self, dbgClient): - """ - Constructor - - @param dbgClient the owning client - """ - self._dbgClient = dbgClient - self._mainThread = 1 - self.quitting = 0 - - self.tracePythonLibs(0) - - # Special handling of a recursion error - self.skipFrames = 0 - - self.__isBroken = False - self.cFrame = None - - # current frame we are at - self.currentFrame = None - - # frame that we are stepping in, can be different than currentFrame - self.stepFrame = None - - self.botframe = None - self.stopframe = None - self.returnframe = None - self.stop_everywhere = False - - # provide a hook to perform a hard breakpoint - # Use it like this: - # if hasattr(sys, 'breakpoint): sys.breakpoint() - sys.breakpoint = self.set_trace - - self.__recursionDepth = -1 - self.setRecursionDepth(inspect.currentframe()) - - # background task to periodicaly check for client interactions - self.eventPollFlag = False - self.timer = thread.start_new_thread(self.__eventPollTimer, ()) - - def __eventPollTimer(self): - """ - Private method to set a flag every 0.5 s to check for new messages. - """ - while True: - time.sleep(0.5) - self.eventPollFlag = True - - def getCurrentFrame(self): - """ - Public method to return the current frame. - - @return the current frame - """ - return self.currentFrame - - def getFrameLocals(self, frmnr=0): - """ - Public method to return the locals dictionary of the current frame - or a frame below. - - @keyparam frmnr distance of frame to get locals dictionary of. 0 is - the current frame (int) - @return locals dictionary of the frame - """ - f = self.currentFrame - while f is not None and frmnr > 0: - f = f.f_back - frmnr -= 1 - return f.f_locals - - def storeFrameLocals(self, frmnr=0): - """ - Public method to store the locals into the frame, so an access to - frame.f_locals returns the last data. - - @keyparam frmnr distance of frame to store locals dictionary to. 0 is - the current frame (int) - """ - cf = self.currentFrame - while cf is not None and frmnr > 0: - cf = cf.f_back - frmnr -= 1 - ctypes.pythonapi.PyFrame_LocalsToFast( - ctypes.py_object(cf), - ctypes.c_int(0)) - - def step(self, traceMode): - """ - Public method to perform a step operation in this thread. - - @param traceMode If it is non-zero, then the step is a step into, - otherwise it is a step over. - """ - self.stepFrame = self.currentFrame - - if traceMode: - self.currentFrame = None - self.set_step() - else: - self.set_next(self.currentFrame) - - def stepOut(self): - """ - Public method to perform a step out of the current call. - """ - self.stepFrame = self.currentFrame - self.set_return(self.currentFrame) - - def go(self, special): - """ - Public method to resume the thread. - - It resumes the thread stopping only at breakpoints or exceptions. - - @param special flag indicating a special continue operation - """ - self.currentFrame = None - self.set_continue(special) - - def setRecursionDepth(self, frame): - """ - Public method to determine the current recursion depth. - - @param frame The current stack frame. - """ - self.__recursionDepth = 0 - while frame is not None: - self.__recursionDepth += 1 - frame = frame.f_back - - def profileWithRecursion(self, frame, event, arg): - """ - Public method used to trace some stuff independent of the debugger - trace function. - - @param frame current stack frame - @type frame object - @param event trace event - @type str - @param arg arguments - @type depends on the previous event parameter - @exception RuntimeError raised to indicate too many recursions - """ - if event == 'return': - self.cFrame = frame.f_back - self.__recursionDepth -= 1 - if self._dbgClient.callTraceEnabled: - self.__sendCallTrace(event, frame, self.cFrame) - elif event == 'call': - if self._dbgClient.callTraceEnabled: - self.__sendCallTrace(event, self.cFrame, frame) - self.cFrame = frame - self.__recursionDepth += 1 - if self.__recursionDepth > gRecursionLimit: - raise RuntimeError( - 'maximum recursion depth exceeded\n' - '(offending frame is two down the stack)') - - def profile(self, frame, event, arg): - """ - Public method used to trace some stuff independent of the debugger - trace function. - - @param frame current stack frame - @type frame object - @param event trace event - @type str - @param arg arguments - @type depends on the previous event parameter - """ - if event == 'return': - self.__sendCallTrace(event, frame, frame.f_back) - elif event == 'call': - self.__sendCallTrace(event, frame.f_back, frame) - - def __sendCallTrace(self, event, fromFrame, toFrame): - """ - Private method to send a call/return trace. - - @param event trace event - @type str - @param fromFrame originating frame - @type frame object - @param toFrame destination frame - @type frame object - """ - if not self.__skipFrame(fromFrame) and not self.__skipFrame(toFrame): - fromStr = "%s:%s:%s" % ( - self._dbgClient.absPath(self.fix_frame_filename(fromFrame)), - fromFrame.f_lineno, - fromFrame.f_code.co_name) - toStr = "%s:%s:%s" % ( - self._dbgClient.absPath(self.fix_frame_filename(toFrame)), - toFrame.f_lineno, - toFrame.f_code.co_name) - self._dbgClient.write("%s%s@@%s@@%s\n" % ( - CallTrace, event[0], fromStr, toStr)) - - def trace_dispatch(self, frame, event, arg): - """ - Public method reimplemented from bdb.py to do some special things. - - This specialty is to check the connection to the debug server - for new events (i.e. new breakpoints) while we are going through - the code. - - @param frame The current stack frame - @type frame object - @param event The trace event - @type str - @param arg The arguments - @type depends on the previous event parameter - @return local trace function - @rtype trace function or None - @exception SystemExit - """ - # give the client a chance to push through new break points. - if self.eventPollFlag: - self._dbgClient.eventPoll() - self.eventPollFlag = False - - if self.quitting: - raise SystemExit - - if event == 'line': - if self.stop_here(frame) or self.break_here(frame): - self.user_line(frame) - return - - if event == 'call': - if self.botframe is None and frame.f_lineno > 1: - self.botframe = frame.f_back - frame.f_trace = self.trace_dispatch - self._dbgClient.mainFrame = frame - - self.user_line(frame) - return self.trace_dispatch - - if not (self.stop_here(frame) or - self.__checkBreakInFrame(frame) or - Watch.watches != []): - # No need to trace this function - return - return self.trace_dispatch - - if event == 'return': - # The program has finished if we have just left the first frame - if (self.stop_here(frame) and - frame == self._dbgClient.mainFrame and - self._mainThread): - atexit._run_exitfuncs() - self._dbgClient.progTerminated(arg) - - if self.quitting and not self._dbgClient.passive: - raise SystemExit - return - - if event == 'exception': - if not self.__skipFrame(frame): - self.user_exception(frame, arg) - return - - if event == 'c_call': - return - if event == 'c_exception': - return - if event == 'c_return': - return - print 'DebugBase.trace_dispatch: unknown debugging event:', repr(event) # __IGNORE_WARNING__ - return self.trace_dispatch - - def set_trace(self, frame=None): - """ - Public method to start debugging from 'frame'. - - If frame is not specified, debugging starts from caller's frame. - Because of jump optimizations it's not possible to use sys.breakpoint() - as last instruction in a function or method. - - @keyparam frame frame to start debugging from - @type frame object - """ - if frame is None: - frame = sys._getframe().f_back # Skip set_trace method - - frame.f_trace = self.trace_dispatch - while frame is not None: - # stop at erics debugger frame - if frame.f_back.f_code == self._dbgClient.handleLine.func_code: - frame.f_trace = self.trace_dispatch - self.botframe = frame - self._dbgClient.mainFrame = frame - break - - frame = frame.f_back - - self.stop_everywhere = True - sys.settrace(self.trace_dispatch) - sys.setprofile(self._dbgClient.callTraceEnabled) - - def run(self, cmd, globals=None, locals=None): - """ - Public method to start a given command under debugger control. - - @param cmd command / code to execute under debugger control - @type str or CodeType - @keyparam globals dictionary of global variables for cmd - @type dict - @keyparam locals dictionary of local variables for cmd - @type dict - """ - if globals is None: - import __main__ - globals = __main__.__dict__ - - if locals is None: - locals = globals - - sys.settrace(self.trace_dispatch) - if not isinstance(cmd, types.CodeType): - cmd += '\n' - - try: - exec cmd in globals, locals - except SystemExit: - pass - finally: - self.quitting = 1 - sys.settrace(None) - - def _set_stopinfo(self, stopframe, returnframe): - """ - Protected method to update the frame pointers. - - @param stopframe the frame object where to stop - @type frame object - @param returnframe the frame object where to stop on a function return - @type frame object - """ - self.stopframe = stopframe - self.returnframe = returnframe - self.stop_everywhere = False - - def set_continue(self, special): - """ - Public method to stop only on next breakpoint. - - @param special flag indicating a special continue operation - @type bool - """ - # Here we only set a new stop frame if it is a normal continue. - if not special: - self._set_stopinfo(self.botframe, None) - - # Disable tracing if not started in debug mode - if not self._dbgClient.debugging: - sys.settrace(None) - sys.setprofile(None) - - def set_step(self): - """ - Public method to stop after one line of code. - """ - self._set_stopinfo(None, None) - self.stop_everywhere = True - - def set_next(self, frame): - """ - Public method to stop on the next line in or below the given frame. - - @param frame the frame object - @type frame object - """ - self._set_stopinfo(frame, frame.f_back) - frame.f_back.f_trace = self.trace_dispatch - frame.f_trace = self.trace_dispatch - - def set_return(self, frame): - """ - Public method to stop when returning from the given frame. - - @param frame the frame object - @type frame object - """ - self._set_stopinfo(None, frame.f_back) - - def set_quit(self): - """ - Public method to quit. - - Disables the trace functions and resets all frame pointer. - """ - self.currentFrame = None - sys.setprofile(None) - sys.settrace(None) - self.stopframe = None - self.returnframe = None - self.quitting = 1 - - def fix_frame_filename(self, frame): - """ - Public method used to fixup the filename for a given frame. - - The logic employed here is that if a module was loaded - from a .pyc file, then the correct .py to operate with - should be in the same path as the .pyc. The reason this - logic is needed is that when a .pyc file is generated, the - filename embedded and thus what is readable in the code object - of the frame object is the fully qualified filepath when the - pyc is generated. If files are moved from machine to machine - this can break debugging as the .pyc will refer to the .py - on the original machine. Another case might be sharing - code over a network... This logic deals with that. - - @param frame the frame object - @type frame object - @return fixed up file name - @rtype str - """ - # get module name from __file__ - fn = frame.f_globals.get('__file__') - try: - return self._fnCache[fn] - except KeyError: - if fn and fn != frame.f_code.co_filename: - absFilename = os.path.abspath(fn) - if absFilename.endswith(('.pyc', '.pyo')): - fixedName = absFilename[:-1] - if not os.path.exists(fixedName): - fixedName = absFilename - else: - fixedName = absFilename - else: - fixedName = frame.f_code.co_filename - # update cache - self._fnCache[fn] = fixedName - return fixedName - - def __checkBreakInFrame(self, frame): - """ - Private method to check if the function / method has a line number - which is a breakpoint. - - @param frame the frame object - @type frame object - @return Flag indicating a function / method with breakpoint - @rtype bool - """ - try: - return Breakpoint.breakInFrameCache[ - frame.f_globals.get('__file__'), - frame.f_code.co_firstlineno] - except KeyError: - filename = self.fix_frame_filename(frame) - if filename not in Breakpoint.breakInFile: - Breakpoint.breakInFrameCache[ - frame.f_globals.get('__file__'), - frame.f_code.co_firstlineno] = False - return False - lineNo = frame.f_code.co_firstlineno - lineNumbers = [lineNo] - # No need to handle special case if a lot of lines between - # (e.g. closure), because the additional lines won't cause a bp - for co_lno in frame.f_code.co_lnotab[1::2]: - lineNo += ord(co_lno) - lineNumbers.append(lineNo) - - for bp in Breakpoint.breakInFile[filename]: - if bp in lineNumbers: - Breakpoint.breakInFrameCache[ - frame.f_globals.get('__file__'), - frame.f_code.co_firstlineno] = True - return True - Breakpoint.breakInFrameCache[ - frame.f_globals.get('__file__'), - frame.f_code.co_firstlineno] = False - return False - - def break_here(self, frame): - """ - Public method reimplemented from bdb.py to fix the filename from the - frame. - - See fix_frame_filename for more info. - - @param frame the frame object - @type frame object - @return flag indicating the break status - @rtype bool - """ - filename = self.fix_frame_filename(frame) - if (filename, frame.f_lineno) in Breakpoint.breaks: - bp, flag = Breakpoint.effectiveBreak( - filename, frame.f_lineno, frame) - if bp: - # flag says ok to delete temp. bp - if flag and bp.temporary: - self.__do_clearBreak(filename, frame.f_lineno) - return True - - if Watch.watches != []: - bp, flag = Watch.effectiveWatch(frame) - if bp: - # flag says ok to delete temp. watch - if flag and bp.temporary: - self.__do_clearWatch(bp.cond) - return True - - return False - - def __do_clearBreak(self, filename, lineno): - """ - Private method called to clear a temporary breakpoint. - - @param filename name of the file the bp belongs to - @type str - @param lineno linenumber of the bp - @type int - """ - Breakpoint.clear_break(filename, lineno) - self._dbgClient.write('%s%s,%d\n' % (ResponseClearBreak, filename, - lineno)) - - def __do_clearWatch(self, cond): - """ - Private method called to clear a temporary watch expression. - - @param cond expression of the watch expression to be cleared - @type str - """ - Watch.clear_watch(cond) - self._dbgClient.write('%s%s\n' % (ResponseClearWatch, cond)) - - def getStack(self): - """ - Public method to get the stack. - - @return list of lists with file name (string), line number (integer) - and function name (string) - """ - fr = self.cFrame - stack = [] - while fr is not None: - fname = self._dbgClient.absPath(self.fix_frame_filename(fr)) - if not fname.startswith("<"): - fline = fr.f_lineno - ffunc = fr.f_code.co_name - - if ffunc == '?': - ffunc = '' - - if ffunc and not ffunc.startswith("<"): - argInfo = inspect.getargvalues(fr) - try: - fargs = inspect.formatargvalues(argInfo[0], argInfo[1], - argInfo[2], argInfo[3]) - except Exception: - fargs = "" - else: - fargs = "" - - stack.append([fname, fline, ffunc, fargs]) - - if fr == self._dbgClient.mainFrame: - fr = None - else: - fr = fr.f_back - - return stack - - def user_line(self, frame): - """ - Public method reimplemented to handle the program about to execute a - particular line. - - @param frame the frame object - """ - # We never stop on line 0. - if frame.f_lineno == 0: - return - - self.currentFrame = frame - - fr = frame - stack = [] - while fr is not None: - # Reset the trace function so we can be sure - # to trace all functions up the stack... This gets around - # problems where an exception/breakpoint has occurred - # but we had disabled tracing along the way via a None - # return from dispatch_call - fr.f_trace = self.trace_dispatch - fname = self._dbgClient.absPath(self.fix_frame_filename(fr)) - if not fname.startswith("<"): - fline = fr.f_lineno - ffunc = fr.f_code.co_name - - if ffunc == '?': - ffunc = '' - - if ffunc and not ffunc.startswith("<"): - argInfo = inspect.getargvalues(fr) - try: - fargs = inspect.formatargvalues(argInfo[0], argInfo[1], - argInfo[2], argInfo[3]) - except Exception: - fargs = "" - else: - fargs = "" - - stack.append([fname, fline, ffunc, fargs]) - - if fr == self._dbgClient.mainFrame: - fr = None - else: - fr = fr.f_back - - self.__isBroken = True - - self._dbgClient.write('%s%s\n' % (ResponseLine, unicode(stack))) - self._dbgClient.eventLoop() - - self.__isBroken = False - - def user_exception(self, frame, (exctype, excval, exctb), unhandled=0): - """ - Public method reimplemented to report an exception to the debug server. - - @param frame the frame object - @type frame object - @param exctype the type of the exception - @type Exception - @param excval data about the exception - @type excval object - @param exctb traceback for the exception - @type traceback frame object - @param unhandled flag indicating an uncaught exception - @type int - """ - if exctype in [GeneratorExit, StopIteration]: - # ignore these - return - - if exctype == SystemExit: - atexit._run_exitfuncs() - if excval is None: - excval = 0 - elif isinstance(excval, (unicode, str)): - self._dbgClient.write(excval) - excval = 1 - if isinstance(excval, int): - self._dbgClient.progTerminated(excval) - else: - self._dbgClient.progTerminated(excval.code) - return - - if exctype in [SyntaxError, IndentationError]: - try: - message, (filename, linenr, charnr, text) = excval - except ValueError: - exclist = [] - realSyntaxError = True - else: - exclist = [message, [filename, linenr, charnr]] - realSyntaxError = os.path.exists(filename) - - if realSyntaxError: - self._dbgClient.write("%s%s\n" % (ResponseSyntax, - unicode(exclist))) - self._dbgClient.eventLoop() - return - - self.skipFrames = 0 - if (exctype == RuntimeError and - str(excval).startswith('maximum recursion depth exceeded')): - excval = 'maximum recursion depth exceeded' - depth = 0 - tb = exctb - while tb: - tb = tb.tb_next - - if (tb and tb.tb_frame.f_code.co_name == 'trace_dispatch' and - __file__.startswith(tb.tb_frame.f_code.co_filename)): - depth = 1 - self.skipFrames += depth - - if type(exctype) in [types.ClassType, # Python up to 2.4 - types.TypeType]: # Python 2.5+ - exctype = exctype.__name__ - - if excval is None: - excval = '' - - if unhandled: - exctypetxt = "unhandled %s" % unicode(exctype) - else: - exctypetxt = unicode(exctype) - - try: - exclist = [exctypetxt, - unicode(excval).encode(self._dbgClient.getCoding())] - except TypeError: - exclist = [exctypetxt, str(excval)] - - if exctb: - frlist = self.__extract_stack(exctb) - frlist.reverse() - - self.currentFrame = frlist[0] - - for fr in frlist[self.skipFrames:]: - filename = self._dbgClient.absPath(self.fix_frame_filename(fr)) - - if os.path.basename(filename).startswith("DebugClientBase"): - break - - linenr = fr.f_lineno - ffunc = fr.f_code.co_name - - if ffunc == '?': - ffunc = '' - - if ffunc and not ffunc.startswith("<"): - argInfo = inspect.getargvalues(fr) - try: - fargs = inspect.formatargvalues(argInfo[0], argInfo[1], - argInfo[2], argInfo[3]) - except Exception: - fargs = "" - else: - fargs = "" - - exclist.append([filename, linenr, ffunc, fargs]) - - self._dbgClient.write("%s%s\n" % (ResponseException, unicode(exclist))) - - if exctb is None: - return - - self._dbgClient.eventLoop() - self.skipFrames = 0 - - def __extract_stack(self, exctb): - """ - Private member to return a list of stack frames. - - @param exctb exception traceback - @return list of stack frames - """ - tb = exctb - stack = [] - while tb is not None: - stack.append(tb.tb_frame) - tb = tb.tb_next - tb = None - return stack - - def stop_here(self, frame): - """ - Public method reimplemented to filter out debugger files. - - Tracing is turned off for files that are part of the - debugger that are called from the application being debugged. - - @param frame the frame object - @type frame object - @return flag indicating whether the debugger should stop here - @rtype bool - """ - if self.__skipFrame(frame): - return False - - return (self.stop_everywhere or - frame is self.stopframe or - frame is self.returnframe or - frame is self.botframe) - - def tracePythonLibs(self, enable): - """ - Public method to update the settings to trace into Python libraries. - - @param enable flag to debug into Python libraries - @type int - """ - pathsToSkip = list(self.pathsToSkip) - # don't trace into Python library? - if enable: - pathsToSkip = [x for x in pathsToSkip if not x.endswith( - ("site-packages", "dist-packages", self.lib))] - else: - pathsToSkip.append(self.lib) - localLib = [x for x in sys.path if x.endswith(("site-packages", - "dist-packages")) and not x.startswith(self.lib)] - pathsToSkip.extend(localLib) - - self.pathsToSkip = tuple(pathsToSkip) - - def __skipFrame(self, frame): - """ - Private method to filter out debugger files. - - Tracing is turned off for files that are part of the - debugger that are called from the application being debugged. - - @param frame the frame object - @type frame object - @return flag indicating whether the debugger should skip this frame - @rtype bool - """ - try: - return self.filesToSkip[frame.f_code.co_filename] - except KeyError: - ret = frame.f_code.co_filename.startswith(self.pathsToSkip) - self.filesToSkip[frame.f_code.co_filename] = ret - return ret - except AttributeError: - # if frame is None - return True - - def isBroken(self): - """ - Public method to return the broken state of the debugger. - - @return flag indicating the broken state - @rtype bool - """ - return self.__isBroken - - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugClient.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2003 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a Qt free version of the debug client. -""" - -from AsyncIO import AsyncIO -from DebugBase import DebugBase -import DebugClientBase - - -class DebugClient(DebugClientBase.DebugClientBase, AsyncIO, DebugBase): - """ - Class implementing the client side of the debugger. - - This variant of the debugger implements the standard debugger client - by subclassing all relevant base classes. - """ - def __init__(self): - """ - Constructor - """ - AsyncIO.__init__(self) - - DebugClientBase.DebugClientBase.__init__(self) - - DebugBase.__init__(self, self) - - self.variant = 'Standard' - -# We are normally called by the debugger to execute directly. - -if __name__ == '__main__': - debugClient = DebugClient() - debugClient.main() - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugClientBase.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2211 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a debug client base class. -""" - -import sys -import socket -import select -import codeop -import traceback -import os -import imp -import re -import atexit -import signal -import inspect - - -import DebugProtocol -import DebugClientCapabilities -from DebugBase import setRecursionLimit, printerr # __IGNORE_WARNING__ -from AsyncFile import AsyncFile, AsyncPendingWrite -from DebugConfig import ConfigVarTypeStrings -from FlexCompleter import Completer -from BreakpointWatch import Breakpoint, Watch - - -DebugClientInstance = None - -############################################################################### - - -def DebugClientRawInput(prompt="", echo=1): - """ - Replacement for the standard raw_input builtin. - - This function works with the split debugger. - - @param prompt prompt to be shown. (string) - @param echo flag indicating echoing of the input (boolean) - @return result of the raw_input() call - """ - if DebugClientInstance is None or DebugClientInstance.redirect == 0: - return DebugClientOrigRawInput(prompt) - - return DebugClientInstance.raw_input(prompt, echo) - -# Use our own raw_input(). -try: - DebugClientOrigRawInput = __builtins__.__dict__['raw_input'] - __builtins__.__dict__['raw_input'] = DebugClientRawInput -except (AttributeError, KeyError): - import __main__ - DebugClientOrigRawInput = __main__.__builtins__.__dict__['raw_input'] - __main__.__builtins__.__dict__['raw_input'] = DebugClientRawInput - -############################################################################### - - -def DebugClientInput(prompt=""): - """ - Replacement for the standard input builtin. - - This function works with the split debugger. - - @param prompt prompt to be shown (string) - @return result of the input() call - """ - if DebugClientInstance is None or DebugClientInstance.redirect == 0: - return DebugClientOrigInput(prompt) - - return DebugClientInstance.input(prompt) - -# Use our own input(). -try: - DebugClientOrigInput = __builtins__.__dict__['input'] - __builtins__.__dict__['input'] = DebugClientInput -except (AttributeError, KeyError): - import __main__ - DebugClientOrigInput = __main__.__builtins__.__dict__['input'] - __main__.__builtins__.__dict__['input'] = DebugClientInput - -############################################################################### - - -def DebugClientFork(): - """ - Replacement for the standard os.fork(). - - @return result of the fork() call - """ - if DebugClientInstance is None: - return DebugClientOrigFork() - - return DebugClientInstance.fork() - -# use our own fork(). -if 'fork' in dir(os): - DebugClientOrigFork = os.fork - os.fork = DebugClientFork - -############################################################################### - - -def DebugClientClose(fd): - """ - Replacement for the standard os.close(fd). - - @param fd open file descriptor to be closed (integer) - """ - if DebugClientInstance is None: - DebugClientOrigClose(fd) - - DebugClientInstance.close(fd) - -# use our own close(). -if 'close' in dir(os): - DebugClientOrigClose = os.close - os.close = DebugClientClose - -############################################################################### - - -def DebugClientSetRecursionLimit(limit): - """ - Replacement for the standard sys.setrecursionlimit(limit). - - @param limit recursion limit (integer) - """ - rl = max(limit, 64) - setRecursionLimit(rl) - DebugClientOrigSetRecursionLimit(rl + 64) - -# use our own setrecursionlimit(). -if 'setrecursionlimit' in dir(sys): - DebugClientOrigSetRecursionLimit = sys.setrecursionlimit - sys.setrecursionlimit = DebugClientSetRecursionLimit - DebugClientSetRecursionLimit(sys.getrecursionlimit()) - -############################################################################### - - -class DebugClientBase(object): - """ - Class implementing the client side of the debugger. - - It provides access to the Python interpeter from a debugger running in - another process whether or not the Qt event loop is running. - - The protocol between the debugger and the client assumes that there will be - a single source of debugger commands and a single source of Python - statements. Commands and statement are always exactly one line and may be - interspersed. - - The protocol is as follows. First the client opens a connection to the - debugger and then sends a series of one line commands. A command is either - >Load<, >Step<, >StepInto<, ... or a Python statement. - See DebugProtocol.py for a listing of valid protocol tokens. - - A Python statement consists of the statement to execute, followed (in a - separate line) by >OK?<. If the statement was incomplete then the - response is >Continue<. If there was an exception then the response - is >Exception<. Otherwise the response is >OK<. The reason - for the >OK?< part is to provide a sentinal (ie. the responding - >OK<) after any possible output as a result of executing the command. - - The client may send any other lines at any other time which should be - interpreted as program output. - - If the debugger closes the session there is no response from the client. - The client may close the session at any time as a result of the script - being debugged closing or crashing. - - <b>Note</b>: This class is meant to be subclassed by individual - DebugClient classes. Do not instantiate it directly. - """ - clientCapabilities = DebugClientCapabilities.HasAll - - def __init__(self): - """ - Constructor - """ - self.breakpoints = {} - self.redirect = 1 - - # The next couple of members are needed for the threaded version. - # For this base class they contain static values for the non threaded - # debugger - - # dictionary of all threads running - self.threads = {} - - # the "current" thread, basically the thread we are at a breakpoint - # for. - self.currentThread = self - - # special objects representing the main scripts thread and frame - self.mainThread = self - self.mainFrame = None - self.framenr = 0 - - # The context to run the debugged program in. - self.debugMod = imp.new_module('__main__') - self.debugMod.__dict__['__builtins__'] = __builtins__ - - # The list of complete lines to execute. - self.buffer = '' - - # The list of regexp objects to filter variables against - self.globalsFilterObjects = [] - self.localsFilterObjects = [] - - self.pendingResponse = DebugProtocol.ResponseOK - self._fncache = {} - self.dircache = [] - self.inRawMode = 0 - self.mainProcStr = None # used for the passive mode - self.passive = 0 # used to indicate the passive mode - self.running = None - self.test = None - self.debugging = 0 - - self.fork_auto = False - self.fork_child = False - - self.readstream = None - self.writestream = None - self.errorstream = None - self.pollingDisabled = False - - self.callTraceEnabled = None - - self.skipdirs = sys.path[:] - - self.variant = 'You should not see this' - - # commandline completion stuff - self.complete = Completer(self.debugMod.__dict__).complete - - if sys.hexversion < 0x2020000: - self.compile_command = codeop.compile_command - else: - self.compile_command = codeop.CommandCompiler() - - self.coding_re = re.compile(r"coding[:=]\s*([-\w_.]+)") - self.defaultCoding = 'utf-8' - self.__coding = self.defaultCoding - self.noencoding = False - - def getCoding(self): - """ - Public method to return the current coding. - - @return codec name (string) - """ - return self.__coding - - def __setCoding(self, filename): - """ - Private method to set the coding used by a python file. - - @param filename name of the file to inspect (string) - """ - if self.noencoding: - self.__coding = sys.getdefaultencoding() - else: - default = 'latin-1' - try: - f = open(filename, 'rb') - # read the first and second line - text = f.readline() - text = "%s%s" % (text, f.readline()) - f.close() - except IOError: - self.__coding = default - return - - for l in text.splitlines(): - m = self.coding_re.search(l) - if m: - self.__coding = m.group(1) - return - self.__coding = default - - def attachThread(self, target=None, args=None, kwargs=None, mainThread=0): - """ - Public method to setup a thread for DebugClient to debug. - - If mainThread is non-zero, then we are attaching to the already - started mainthread of the app and the rest of the args are ignored. - - @param target the start function of the target thread (i.e. the user - code) - @param args arguments to pass to target - @param kwargs keyword arguments to pass to target - @param mainThread non-zero, if we are attaching to the already - started mainthread of the app - """ - pass - - def __dumpThreadList(self): - """ - Private method to send the list of threads. - """ - threadList = [] - if self.threads and self.currentThread: - # indication for the threaded debugger - currentId = self.currentThread.get_ident() - for t in self.threads.values(): - d = {} - d["id"] = t.get_ident() - d["name"] = t.get_name() - d["broken"] = t.isBroken() - threadList.append(d) - else: - currentId = -1 - d = {} - d["id"] = -1 - d["name"] = "MainThread" - if hasattr(self, "isBroken"): - d["broken"] = self.isBroken() - else: - d["broken"] = False - threadList.append(d) - - self.write('%s%s\n' % (DebugProtocol.ResponseThreadList, - unicode((currentId, threadList)))) - - def raw_input(self, prompt, echo): - """ - Public method to implement raw_input() using the event loop. - - @param prompt the prompt to be shown (string) - @param echo Flag indicating echoing of the input (boolean) - @return the entered string - """ - self.write("%s%s\n" % (DebugProtocol.ResponseRaw, - unicode((prompt, echo)))) - self.inRawMode = 1 - self.eventLoop(True) - return self.rawLine - - def input(self, prompt): - """ - Public method to implement input() using the event loop. - - @param prompt the prompt to be shown (string) - @return the entered string evaluated as a Python expresion - """ - return eval(self.raw_input(prompt, 1)) - - def __exceptionRaised(self): - """ - Private method called in the case of an exception. - - It ensures that the debug server is informed of the raised exception. - """ - self.pendingResponse = DebugProtocol.ResponseException - - def sessionClose(self, exit=1): - """ - Public method to close the session with the debugger and optionally - terminate. - - @param exit flag indicating to terminate (boolean) - """ - try: - self.set_quit() - except Exception: - pass - - # clean up asyncio. - self.disconnect() - self.debugging = 0 - - # make sure we close down our end of the socket - # might be overkill as normally stdin, stdout and stderr - # SHOULD be closed on exit, but it does not hurt to do it here - self.readstream.close(1) - self.writestream.close(1) - self.errorstream.close(1) - - if exit: - # Ok, go away. - sys.exit() - - def handleLine(self, line): - """ - Public method to handle the receipt of a complete line. - - It first looks for a valid protocol token at the start of the line. - Thereafter it trys to execute the lines accumulated so far. - - @param line the received line - """ - # Remove any newline. - if line[-1] == '\n': - line = line[:-1] - -## printerr(line) ##debug - - eoc = line.find('<') - - if eoc >= 0 and line[0] == '>': - # Get the command part and any argument. - cmd = line[:eoc + 1] - arg = line[eoc + 1:] - - if cmd == DebugProtocol.RequestVariables: - frmnr, scope, filter = eval(arg) - self.__dumpVariables(int(frmnr), int(scope), filter) - return - - if cmd == DebugProtocol.RequestVariable: - var, frmnr, scope, filter = eval(arg) - self.__dumpVariable(var, int(frmnr), int(scope), filter) - return - - if cmd == DebugProtocol.RequestThreadList: - self.__dumpThreadList() - return - - if cmd == DebugProtocol.RequestThreadSet: - tid = eval(arg) - if tid in self.threads: - self.setCurrentThread(tid) - self.write(DebugProtocol.ResponseThreadSet + '\n') - stack = self.currentThread.getStack() - self.write('%s%s\n' % (DebugProtocol.ResponseStack, - unicode(stack))) - return - - if cmd == DebugProtocol.RequestStep: - self.currentThread.step(1) - self.eventExit = 1 - return - - if cmd == DebugProtocol.RequestStepOver: - self.currentThread.step(0) - self.eventExit = 1 - return - - if cmd == DebugProtocol.RequestStepOut: - self.currentThread.stepOut() - self.eventExit = 1 - return - - if cmd == DebugProtocol.RequestStepQuit: - if self.passive: - self.progTerminated(42) - else: - self.set_quit() - self.eventExit = 1 - return - - if cmd == DebugProtocol.RequestContinue: - special = int(arg) - self.currentThread.go(special) - self.eventExit = 1 - return - - if cmd == DebugProtocol.RequestOK: - self.write(self.pendingResponse + '\n') - self.pendingResponse = DebugProtocol.ResponseOK - return - - if cmd == DebugProtocol.RequestCallTrace: - if arg.strip().lower() == "on": - callTraceEnabled = self.profile - else: - callTraceEnabled = None - if self.debugging: - sys.setprofile(callTraceEnabled) - else: - # remember for later - self.callTraceEnabled = callTraceEnabled - - return - - if cmd == DebugProtocol.RequestEnv: - env = eval(arg) - for key, value in env.items(): - if key.endswith("+"): - if key[:-1] in os.environ: - os.environ[key[:-1]] += value - else: - os.environ[key[:-1]] = value - else: - os.environ[key] = value - return - - if cmd == DebugProtocol.RequestLoad: - self._fncache = {} - self.dircache = [] - sys.argv = [] - wd, fn, args, tracePython = arg.split('|') - fn = fn.encode(sys.getfilesystemencoding()) - self.__setCoding(fn) - sys.argv.append(fn) - sys.argv.extend(eval(args)) - sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) - if wd == '': - os.chdir(sys.path[1]) - else: - os.chdir(wd) - self.running = sys.argv[0] - self.mainFrame = None - self.inRawMode = 0 - self.debugging = 1 - - self.threads.clear() - self.attachThread(mainThread=1) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - # clear all old breakpoints, they'll get set after we have - # started - Breakpoint.clear_all_breaks() - Watch.clear_all_watches() - - self.mainThread.tracePythonLibs(int(tracePython)) - - # This will eventually enter a local event loop. - # Note the use of backquotes to cause a repr of self.running. - # The need for this is on Windows os where backslash is the - # path separator. They will get inadvertantly stripped away - # during the eval causing IOErrors, if self.running is passed - # as a normal str. - self.debugMod.__dict__['__file__'] = self.running - sys.modules['__main__'] = self.debugMod - sys.setprofile(self.callTraceEnabled) - res = self.mainThread.run( - 'execfile(' + repr(self.running) + ')', - self.debugMod.__dict__) - self.progTerminated(res) - return - - if cmd == DebugProtocol.RequestRun: - sys.argv = [] - wd, fn, args = arg.split('|') - fn = fn.encode(sys.getfilesystemencoding()) - self.__setCoding(fn) - sys.argv.append(fn) - sys.argv.extend(eval(args)) - sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) - if wd == '': - os.chdir(sys.path[1]) - else: - os.chdir(wd) - - self.running = sys.argv[0] - self.mainFrame = None - self.botframe = None - self.inRawMode = 0 - - self.threads.clear() - self.attachThread(mainThread=1) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - self.mainThread.tracePythonLibs(0) - - self.debugMod.__dict__['__file__'] = sys.argv[0] - sys.modules['__main__'] = self.debugMod - res = 0 - try: - execfile(sys.argv[0], self.debugMod.__dict__) - except SystemExit as exc: - res = exc.code - atexit._run_exitfuncs() - self.writestream.flush() - self.progTerminated(res) - return - - if cmd == DebugProtocol.RequestCoverage: - from coverage import coverage - sys.argv = [] - wd, fn, args, erase = arg.split('@@') - fn = fn.encode(sys.getfilesystemencoding()) - self.__setCoding(fn) - sys.argv.append(fn) - sys.argv.extend(eval(args)) - sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) - if wd == '': - os.chdir(sys.path[1]) - else: - os.chdir(wd) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - # generate a coverage object - self.cover = coverage( - auto_data=True, - data_file="%s.coverage" % os.path.splitext(sys.argv[0])[0]) - - if int(erase): - self.cover.erase() - sys.modules['__main__'] = self.debugMod - self.debugMod.__dict__['__file__'] = sys.argv[0] - self.running = sys.argv[0] - res = 0 - self.cover.start() - try: - execfile(sys.argv[0], self.debugMod.__dict__) - except SystemExit as exc: - res = exc.code - atexit._run_exitfuncs() - self.cover.stop() - self.cover.save() - self.writestream.flush() - self.progTerminated(res) - return - - if cmd == DebugProtocol.RequestProfile: - sys.setprofile(None) - import PyProfile - sys.argv = [] - wd, fn, args, erase = arg.split('|') - fn = fn.encode(sys.getfilesystemencoding()) - self.__setCoding(fn) - sys.argv.append(fn) - sys.argv.extend(eval(args)) - sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) - if wd == '': - os.chdir(sys.path[1]) - else: - os.chdir(wd) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - # generate a profile object - self.prof = PyProfile.PyProfile(sys.argv[0]) - - if int(erase): - self.prof.erase() - self.debugMod.__dict__['__file__'] = sys.argv[0] - sys.modules['__main__'] = self.debugMod - self.running = sys.argv[0] - res = 0 - try: - self.prof.run('execfile(%r)' % sys.argv[0]) - except SystemExit as exc: - res = exc.code - atexit._run_exitfuncs() - self.prof.save() - self.writestream.flush() - self.progTerminated(res) - return - - if cmd == DebugProtocol.RequestShutdown: - self.sessionClose() - return - - if cmd == DebugProtocol.RequestBreak: - fn, line, temporary, set, cond = arg.split('@@') - fn = fn.encode(sys.getfilesystemencoding()) - line = int(line) - set = int(set) - temporary = int(temporary) - - if set: - if cond == 'None' or cond == '': - cond = None - else: - try: - cond = compile(cond, '<string>', 'eval') - except SyntaxError: - self.write( - '%s%s,%d\n' % - (DebugProtocol.ResponseBPConditionError, - fn, line)) - return - Breakpoint(fn, line, temporary, cond) - else: - Breakpoint.clear_break(fn, line) - - return - - if cmd == DebugProtocol.RequestBreakEnable: - fn, line, enable = arg.split(',') - fn = fn.encode(sys.getfilesystemencoding()) - line = int(line) - enable = int(enable) - - bp = Breakpoint.get_break(fn, line) - if bp is not None: - if enable: - bp.enable() - else: - bp.disable() - - return - - if cmd == DebugProtocol.RequestBreakIgnore: - fn, line, count = arg.split(',') - fn = fn.encode(sys.getfilesystemencoding()) - line = int(line) - count = int(count) - - bp = Breakpoint.get_break(fn, line) - if bp is not None: - bp.ignore = count - - return - - if cmd == DebugProtocol.RequestWatch: - cond, temporary, set = arg.split('@@') - set = int(set) - temporary = int(temporary) - - if cond.endswith(('??created??', '??changed??')): - compiledCond, flag = cond.split() - else: - compiledCond = cond - flag = '' - - try: - compiledCond = compile(compiledCond, '<string>', 'eval') - except SyntaxError: - self.write('%s%s\n' % ( - DebugProtocol.ResponseWPConditionError, cond)) - return - - if set: - Watch(cond, compiledCond, flag, temporary) - else: - Watch.clear_watch(cond) - - return - - if cmd == DebugProtocol.RequestWatchEnable: - cond, enable = arg.split(',') - enable = int(enable) - - bp = Watch.get_watch(cond) - if bp is not None: - if enable: - bp.enable() - else: - bp.disable() - - return - - if cmd == DebugProtocol.RequestWatchIgnore: - cond, count = arg.split(',') - count = int(count) - - bp = Watch.get_watch(cond) - if bp is not None: - bp.ignore = count - - return - - if cmd == DebugProtocol.RequestEval: - try: - value = eval( - arg, - self.currentThread.getCurrentFrame().f_globals, - self.currentThread.getFrameLocals(self.framenr)) - self.currentThread.storeFrameLocals(self.framenr) - except Exception: - # Report the exception and the traceback - try: - type, value, tb = sys.exc_info() - sys.last_type = type - sys.last_value = value - sys.last_traceback = tb - tblist = traceback.extract_tb(tb) - del tblist[:1] - list = traceback.format_list(tblist) - if list: - list.insert(0, "Traceback (innermost last):\n") - list[len(list):] = \ - traceback.format_exception_only(type, value) - finally: - tblist = tb = None - - map(self.write, list) - - self.write(DebugProtocol.ResponseException + '\n') - - else: - self.write(unicode(value) + '\n') - self.write(DebugProtocol.ResponseOK + '\n') - - return - - if cmd == DebugProtocol.RequestExec: - _globals = self.currentThread.getCurrentFrame().f_globals - _locals = self.currentThread.getFrameLocals(self.framenr) - try: - code = compile(arg + '\n', '<stdin>', 'single') - exec code in _globals, _locals - self.currentThread.storeFrameLocals(self.framenr) - except Exception: - # Report the exception and the traceback - try: - type, value, tb = sys.exc_info() - sys.last_type = type - sys.last_value = value - sys.last_traceback = tb - tblist = traceback.extract_tb(tb) - del tblist[:1] - list = traceback.format_list(tblist) - if list: - list.insert(0, "Traceback (innermost last):\n") - list[len(list):] = \ - traceback.format_exception_only(type, value) - finally: - tblist = tb = None - - map(self.write, list) - - self.write(DebugProtocol.ResponseException + '\n') - - return - - if cmd == DebugProtocol.RequestBanner: - self.write( - '%s%s\n' % ( - DebugProtocol.ResponseBanner, - unicode(("Python %s" % sys.version, - socket.gethostname(), - self.variant)))) - return - - if cmd == DebugProtocol.RequestCapabilities: - self.write('%s%d, "Python2"\n' % ( - DebugProtocol.ResponseCapabilities, - self.__clientCapabilities())) - return - - if cmd == DebugProtocol.RequestCompletion: - self.__completionList(arg) - return - - if cmd == DebugProtocol.RequestSetFilter: - scope, filterString = eval(arg) - self.__generateFilterObjects(int(scope), filterString) - return - - if cmd == DebugProtocol.RequestUTPrepare: - fn, tn, tfn, failed, cov, covname, erase = arg.split('|') - fn = fn.encode(sys.getfilesystemencoding()) - sys.path.insert(0, os.path.dirname(os.path.abspath(fn))) - os.chdir(sys.path[0]) - failed = eval(failed) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - try: - import unittest - utModule = __import__(tn) - try: - if failed: - self.test = unittest.defaultTestLoader\ - .loadTestsFromNames(failed, utModule) - else: - self.test = unittest.defaultTestLoader\ - .loadTestsFromName(tfn, utModule) - except AttributeError: - self.test = unittest.defaultTestLoader\ - .loadTestsFromModule(utModule) - except Exception: - exc_type, exc_value, exc_tb = sys.exc_info() - self.write( - '%s%s\n' % ( - DebugProtocol.ResponseUTPrepared, - unicode((0, str(exc_type), str(exc_value))))) - self.__exceptionRaised() - return - - # generate a coverage object - if int(cov): - from coverage import coverage - self.cover = coverage( - auto_data=True, - data_file="%s.coverage" % os.path.splitext(covname)[0]) - if int(erase): - self.cover.erase() - else: - self.cover = None - - self.write( - '%s%s\n' % ( - DebugProtocol.ResponseUTPrepared, - unicode((self.test.countTestCases(), "", "")))) - return - - if cmd == DebugProtocol.RequestUTRun: - from DCTestResult import DCTestResult - self.testResult = DCTestResult(self) - if self.cover: - self.cover.start() - self.test.run(self.testResult) - if self.cover: - self.cover.stop() - self.cover.save() - self.write('%s\n' % DebugProtocol.ResponseUTFinished) - return - - if cmd == DebugProtocol.RequestUTStop: - self.testResult.stop() - return - - if cmd == DebugProtocol.ResponseForkTo: - # this results from a separate event loop - self.fork_child = (arg == 'child') - self.eventExit = 1 - return - - if cmd == DebugProtocol.RequestForkMode: - self.fork_auto, self.fork_child = eval(arg) - return - - # If we are handling raw mode input then reset the mode and break out - # of the current event loop. - if self.inRawMode: - self.inRawMode = 0 - self.rawLine = line - self.eventExit = 1 - return - - if self.buffer: - self.buffer = self.buffer + '\n' + line - else: - self.buffer = line - - try: - code = self.compile_command(self.buffer, self.readstream.name) - except (OverflowError, SyntaxError, ValueError): - # Report the exception - sys.last_type, sys.last_value, sys.last_traceback = sys.exc_info() - map(self.write, traceback.format_exception_only( - sys.last_type, sys.last_value)) - self.buffer = '' - else: - if code is None: - self.pendingResponse = DebugProtocol.ResponseContinue - else: - self.buffer = '' - - try: - if self.running is None: - exec code in self.debugMod.__dict__ - else: - if self.currentThread is None: - # program has terminated - self.running = None - _globals = self.debugMod.__dict__ - _locals = _globals - else: - cf = self.currentThread.getCurrentFrame() - # program has terminated - if cf is None: - self.running = None - _globals = self.debugMod.__dict__ - _locals = _globals - else: - frmnr = self.framenr - while cf is not None and frmnr > 0: - cf = cf.f_back - frmnr -= 1 - _globals = cf.f_globals - _locals = \ - self.currentThread.getFrameLocals( - self.framenr) - # reset sys.stdout to our redirector (unconditionally) - if "sys" in _globals: - __stdout = _globals["sys"].stdout - _globals["sys"].stdout = self.writestream - exec code in _globals, _locals - _globals["sys"].stdout = __stdout - elif "sys" in _locals: - __stdout = _locals["sys"].stdout - _locals["sys"].stdout = self.writestream - exec code in _globals, _locals - _locals["sys"].stdout = __stdout - else: - exec code in _globals, _locals - - self.currentThread.storeFrameLocals(self.framenr) - except SystemExit, exc: - self.progTerminated(exc.code) - except Exception: - # Report the exception and the traceback - try: - type, value, tb = sys.exc_info() - sys.last_type = type - sys.last_value = value - sys.last_traceback = tb - tblist = traceback.extract_tb(tb) - del tblist[:1] - list = traceback.format_list(tblist) - if list: - list.insert(0, "Traceback (innermost last):\n") - list[len(list):] = \ - traceback.format_exception_only(type, value) - finally: - tblist = tb = None - - map(self.write, list) - - def __clientCapabilities(self): - """ - Private method to determine the clients capabilities. - - @return client capabilities (integer) - """ - try: - import PyProfile # __IGNORE_WARNING__ - try: - del sys.modules['PyProfile'] - except KeyError: - pass - return self.clientCapabilities - except ImportError: - return ( - self.clientCapabilities & ~DebugClientCapabilities.HasProfiler) - - def write(self, s): - """ - Public method to write data to the output stream. - - @param s data to be written (string) - """ - self.writestream.write(s) - self.writestream.flush() - - def __interact(self): - """ - Private method to interact with the debugger. - """ - global DebugClientInstance - - self.setDescriptors(self.readstream, self.writestream) - DebugClientInstance = self - - if not self.passive: - # At this point simulate an event loop. - self.eventLoop() - - def eventLoop(self, disablePolling=False): - """ - Public method implementing our event loop. - - @param disablePolling flag indicating to enter an event loop with - polling disabled (boolean) - """ - self.eventExit = None - self.pollingDisabled = disablePolling - - while self.eventExit is None: - wrdy = [] - - if self.writestream.nWriteErrors > self.writestream.maxtries: - break - - if AsyncPendingWrite(self.writestream): - wrdy.append(self.writestream) - - if AsyncPendingWrite(self.errorstream): - wrdy.append(self.errorstream) - - try: - rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, []) - except (select.error, KeyboardInterrupt, socket.error): - # just carry on - continue - - if self.readstream in rrdy: - self.readReady(self.readstream.fileno()) - - if self.writestream in wrdy: - self.writeReady(self.writestream.fileno()) - - if self.errorstream in wrdy: - self.writeReady(self.errorstream.fileno()) - - self.eventExit = None - self.pollingDisabled = False - - def eventPoll(self): - """ - Public method to poll for events like 'set break point'. - """ - if self.pollingDisabled: - return - - wrdy = [] - if AsyncPendingWrite(self.writestream): - wrdy.append(self.writestream) - - if AsyncPendingWrite(self.errorstream): - wrdy.append(self.errorstream) - - # immediate return if nothing is ready. - try: - rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, [], 0) - except (select.error, KeyboardInterrupt, socket.error): - return - - if self.readstream in rrdy: - self.readReady(self.readstream.fileno()) - - if self.writestream in wrdy: - self.writeReady(self.writestream.fileno()) - - if self.errorstream in wrdy: - self.writeReady(self.errorstream.fileno()) - - def connectDebugger(self, port, remoteAddress=None, redirect=1): - """ - Public method to establish a session with the debugger. - - It opens a network connection to the debugger, connects it to stdin, - stdout and stderr and saves these file objects in case the application - being debugged redirects them itself. - - @param port the port number to connect to (int) - @param remoteAddress the network address of the debug server host - (string) - @param redirect flag indicating redirection of stdin, stdout and - stderr (boolean) - """ - if remoteAddress is None: - remoteAddress = "127.0.0.1" - elif "@@i" in remoteAddress: - remoteAddress = remoteAddress.split("@@i")[0] - sock = socket.create_connection((remoteAddress, port)) - - self.readstream = AsyncFile(sock, sys.stdin.mode, sys.stdin.name) - self.writestream = AsyncFile(sock, sys.stdout.mode, sys.stdout.name) - self.errorstream = AsyncFile(sock, sys.stderr.mode, sys.stderr.name) - - if redirect: - sys.stdin = self.readstream - sys.stdout = self.writestream - sys.stderr = self.errorstream - self.redirect = redirect - - # attach to the main thread here - self.attachThread(mainThread=1) - - def __unhandled_exception(self, exctype, excval, exctb): - """ - Private method called to report an uncaught exception. - - @param exctype the type of the exception - @param excval data about the exception - @param exctb traceback for the exception - """ - self.mainThread.user_exception(None, (exctype, excval, exctb), 1) - - def __interceptSignals(self): - """ - Private method to intercept common signals. - """ - for signum in [ - signal.SIGABRT, # abnormal termination - signal.SIGFPE, # floating point exception - signal.SIGILL, # illegal instruction - signal.SIGSEGV, # segmentation violation - ]: - signal.signal(signum, self.__signalHandler) - - def __signalHandler(self, signalNumber, stackFrame): - """ - Private method to handle signals. - - @param signalNumber number of the signal to be handled - @type int - @param stackFrame current stack frame - @type frame object - """ - if signalNumber == signal.SIGABRT: - message = "Abnormal Termination" - elif signalNumber == signal.SIGFPE: - message = "Floating Point Exception" - elif signalNumber == signal.SIGILL: - message = "Illegal Instruction" - elif signalNumber == signal.SIGSEGV: - message = "Segmentation Violation" - else: - message = "Unknown Signal '%d'" % signalNumber - - filename = self.absPath(stackFrame) - - linenr = stackFrame.f_lineno - ffunc = stackFrame.f_code.co_name - - if ffunc == '?': - ffunc = '' - - if ffunc and not ffunc.startswith("<"): - argInfo = inspect.getargvalues(stackFrame) - try: - fargs = inspect.formatargvalues( - argInfo.args, argInfo.varargs, - argInfo.keywords, argInfo.locals) - except Exception: - fargs = "" - else: - fargs = "" - - siglist = [message, [filename, linenr, ffunc, fargs]] - - self.write("%s%s" % (DebugProtocol.ResponseSignal, str(siglist))) - - def absPath(self, fn): - """ - Public method to convert a filename to an absolute name. - - sys.path is used as a set of possible prefixes. The name stays - relative if a file could not be found. - - @param fn filename (string) - @return the converted filename (string) - """ - if os.path.isabs(fn): - return fn - - # Check the cache. - if fn in self._fncache: - return self._fncache[fn] - - # Search sys.path. - for p in sys.path: - afn = os.path.abspath(os.path.join(p, fn)) - nafn = os.path.normcase(afn) - - if os.path.exists(nafn): - self._fncache[fn] = afn - d = os.path.dirname(afn) - if (d not in sys.path) and (d not in self.dircache): - self.dircache.append(d) - return afn - - # Search the additional directory cache - for p in self.dircache: - afn = os.path.abspath(os.path.join(p, fn)) - nafn = os.path.normcase(afn) - - if os.path.exists(nafn): - self._fncache[fn] = afn - return afn - - # Nothing found. - return fn - - def getRunning(self): - """ - Public method to return the main script we are currently running. - - @return flag indicating a running debug session (boolean) - """ - return self.running - - def progTerminated(self, status): - """ - Public method to tell the debugger that the program has terminated. - - @param status return status - @type int - """ - if status is None: - status = 0 - else: - try: - int(status) - except ValueError: - status = 1 - - if self.running: - self.set_quit() - self.running = None - self.write('%s%d\n' % (DebugProtocol.ResponseExit, status)) - - # reset coding - self.__coding = self.defaultCoding - - def __dumpVariables(self, frmnr, scope, filter): - """ - Private method to return the variables of a frame to the debug server. - - @param frmnr distance of frame reported on. 0 is the current frame - (int) - @param scope 1 to report global variables, 0 for local variables (int) - @param filter the indices of variable types to be filtered - (list of int) - """ - if self.currentThread is None: - return - - frmnr += self.currentThread.skipFrames - if scope == 0: - self.framenr = frmnr - - f = self.currentThread.getCurrentFrame() - - while f is not None and frmnr > 0: - f = f.f_back - frmnr -= 1 - - if f is None: - if scope: - dict = self.debugMod.__dict__ - else: - scope = -1 - elif scope: - dict = f.f_globals - elif f.f_globals is f.f_locals: - scope = -1 - else: - dict = f.f_locals - - varlist = [scope] - - if scope != -1: - keylist = dict.keys() - - vlist = self.__formatVariablesList(keylist, dict, scope, filter) - varlist.extend(vlist) - - self.write('%s%s\n' % ( - DebugProtocol.ResponseVariables, unicode(varlist))) - - def __dumpVariable(self, var, frmnr, scope, filter): - """ - Private method to return the variables of a frame to the debug server. - - @param var list encoded name of the requested variable - (list of strings) - @param frmnr distance of frame reported on. 0 is the current frame - (int) - @param scope 1 to report global variables, 0 for local variables (int) - @param filter the indices of variable types to be filtered - (list of int) - """ - if self.currentThread is None: - return - - frmnr += self.currentThread.skipFrames - f = self.currentThread.getCurrentFrame() - - while f is not None and frmnr > 0: - f = f.f_back - frmnr -= 1 - - if f is None: - if scope: - dict = self.debugMod.__dict__ - else: - scope = -1 - elif scope: - dict = f.f_globals - elif f.f_globals is f.f_locals: - scope = -1 - else: - dict = f.f_locals - - varlist = [scope, var] - - if scope != -1: - # search the correct dictionary - i = 0 - rvar = var[:] - dictkeys = None - obj = None - isDict = 0 - formatSequences = 0 - access = "" - oaccess = "" - odict = dict - - qtVariable = False - qvar = None - qvtype = "" - - while i < len(var): - if len(dict): - udict = dict - ndict = {} - # this has to be in line with VariablesViewer.indicators - if var[i][-2:] in ["[]", "()", "{}"]: # __IGNORE_WARNING__ - if i + 1 == len(var): - if var[i][:-2] == '...': - dictkeys = [var[i - 1]] - else: - dictkeys = [var[i][:-2]] - formatSequences = 1 - if not access and not oaccess: - if var[i][:-2] == '...': - access = '["%s"]' % var[i - 1] - dict = odict - else: - access = '["%s"]' % var[i][:-2] - else: - if var[i][:-2] == '...': - if oaccess: - access = oaccess - else: - access = '%s[%s]' % (access, var[i - 1]) - dict = odict - else: - if oaccess: - access = '%s[%s]' % (oaccess, var[i][:-2]) - oaccess = '' - else: - access = '%s[%s]' % (access, var[i][:-2]) - if var[i][-2:] == "{}": # __IGNORE_WARNING__ - isDict = 1 - break - else: - if not access: - if var[i][:-2] == '...': - access = '["%s"]' % var[i - 1] - dict = odict - else: - access = '["%s"]' % var[i][:-2] - else: - if var[i][:-2] == '...': - access = '%s[%s]' % (access, var[i - 1]) - dict = odict - else: - if oaccess: - access = '%s[%s]' % (oaccess, var[i][:-2]) - oaccess = '' - else: - access = '%s[%s]' % (access, var[i][:-2]) - else: - if access: - if oaccess: - access = '%s[%s]' % (oaccess, var[i]) - else: - access = '%s[%s]' % (access, var[i]) - if var[i - 1][:-2] == '...': - oaccess = access - else: - oaccess = '' - try: - exec 'mdict = dict%s.__dict__' % access - ndict.update(mdict) - exec 'obj = dict%s' % access - if "PyQt4." in str(type(obj)) or \ - "PyQt5." in str(type(obj)): - qtVariable = True - qvar = obj - qvtype = ("%s" % type(qvar))[1:-1]\ - .split()[1][1:-1] - except Exception: - pass - try: - exec 'mcdict = dict%s.__class__.__dict__' % access - ndict.update(mcdict) - if mdict and "sipThis" not in mdict.keys(): - del rvar[0:2] - access = "" - except Exception: - pass - try: - cdict = {} - exec 'slv = dict%s.__slots__' % access - for v in slv: # __IGNORE_WARNING__ - try: - exec 'cdict[v] = dict%s.%s' % (access, v) - except Exception: - pass - ndict.update(cdict) - exec 'obj = dict%s' % access - access = "" - if "PyQt4." in str(type(obj)) or \ - "PyQt5." in str(type(obj)): - qtVariable = True - qvar = obj - qvtype = ("%s" % type(qvar))[1:-1]\ - .split()[1][1:-1] - except Exception: - pass - else: - try: - ndict.update(dict[var[i]].__dict__) - ndict.update(dict[var[i]].__class__.__dict__) - del rvar[0] - obj = dict[var[i]] - if "PyQt4." in str(type(obj)) or \ - "PyQt5." in str(type(obj)): - qtVariable = True - qvar = obj - qvtype = ("%s" % type(qvar))[1:-1]\ - .split()[1][1:-1] - except Exception: - pass - try: - cdict = {} - slv = dict[var[i]].__slots__ - for v in slv: - try: - exec 'cdict[v] = dict[var[i]].%s' % v - except Exception: - pass - ndict.update(cdict) - obj = dict[var[i]] - if "PyQt4." in str(type(obj)) or \ - "PyQt5." in str(type(obj)): - qtVariable = True - qvar = obj - qvtype = ("%s" % type(qvar))[1:-1]\ - .split()[1][1:-1] - except Exception: - pass - odict = dict - dict = ndict - i += 1 - - if qtVariable: - vlist = self.__formatQtVariable(qvar, qvtype) - elif ("sipThis" in dict.keys() and len(dict) == 1) or \ - (len(dict) == 0 and len(udict) > 0): - if access: - exec 'qvar = udict%s' % access - # this has to be in line with VariablesViewer.indicators - elif rvar and rvar[0][-2:] in ["[]", "()", "{}"]: # __IGNORE_WARNING__ - exec 'qvar = udict["%s"][%s]' % (rvar[0][:-2], rvar[1]) - else: - qvar = udict[var[-1]] - qvtype = ("%s" % type(qvar))[1:-1].split()[1][1:-1] - if qvtype.startswith(("PyQt4", "PyQt5")): - vlist = self.__formatQtVariable(qvar, qvtype) - else: - vlist = [] - else: - qtVariable = False - if len(dict) == 0 and len(udict) > 0: - if access: - exec 'qvar = udict%s' % access - # this has to be in line with VariablesViewer.indicators - elif rvar and rvar[0][-2:] in ["[]", "()", "{}"]: # __IGNORE_WARNING__ - exec 'qvar = udict["%s"][%s]' % (rvar[0][:-2], rvar[1]) - else: - qvar = udict[var[-1]] - qvtype = ("%s" % type(qvar))[1:-1].split()[1][1:-1] - if qvtype.startswith(("PyQt4", "PyQt5")): - qtVariable = True - - if qtVariable: - vlist = self.__formatQtVariable(qvar, qvtype) - else: - # format the dictionary found - if dictkeys is None: - dictkeys = dict.keys() - else: - # treatment for sequences and dictionaries - if access: - exec "dict = dict%s" % access - else: - dict = dict[dictkeys[0]] - if isDict: - dictkeys = dict.keys() - else: - dictkeys = range(len(dict)) - vlist = self.__formatVariablesList( - dictkeys, dict, scope, filter, formatSequences) - varlist.extend(vlist) - - if obj is not None and not formatSequences: - try: - if unicode(repr(obj)).startswith('{'): - varlist.append(('...', 'dict', "%d" % len(obj.keys()))) - elif unicode(repr(obj)).startswith('['): - varlist.append(('...', 'list', "%d" % len(obj))) - elif unicode(repr(obj)).startswith('('): - varlist.append(('...', 'tuple', "%d" % len(obj))) - except Exception: - pass - - self.write('%s%s\n' % ( - DebugProtocol.ResponseVariable, unicode(varlist))) - - def __formatQtVariable(self, value, vtype): - """ - Private method to produce a formatted output of a simple Qt4/Qt5 type. - - @param value variable to be formatted - @param vtype type of the variable to be formatted (string) - @return A tuple consisting of a list of formatted variables. Each - variable entry is a tuple of three elements, the variable name, - its type and value. - """ - qttype = vtype.split('.')[-1] - varlist = [] - if qttype == 'QChar': - varlist.append(("", "QChar", "%s" % unichr(value.unicode()))) - varlist.append(("", "int", "%d" % value.unicode())) - elif qttype == 'QByteArray': - varlist.append(("hex", "QByteArray", "%s" % value.toHex())) - varlist.append(("base64", "QByteArray", "%s" % value.toBase64())) - varlist.append(("percent encoding", "QByteArray", - "%s" % value.toPercentEncoding())) - elif qttype == 'QString': - varlist.append(("", "QString", "%s" % value)) - elif qttype == 'QStringList': - for i in range(value.count()): - varlist.append(("%d" % i, "QString", "%s" % value[i])) - elif qttype == 'QPoint': - varlist.append(("x", "int", "%d" % value.x())) - varlist.append(("y", "int", "%d" % value.y())) - elif qttype == 'QPointF': - varlist.append(("x", "float", "%g" % value.x())) - varlist.append(("y", "float", "%g" % value.y())) - elif qttype == 'QRect': - varlist.append(("x", "int", "%d" % value.x())) - varlist.append(("y", "int", "%d" % value.y())) - varlist.append(("width", "int", "%d" % value.width())) - varlist.append(("height", "int", "%d" % value.height())) - elif qttype == 'QRectF': - varlist.append(("x", "float", "%g" % value.x())) - varlist.append(("y", "float", "%g" % value.y())) - varlist.append(("width", "float", "%g" % value.width())) - varlist.append(("height", "float", "%g" % value.height())) - elif qttype == 'QSize': - varlist.append(("width", "int", "%d" % value.width())) - varlist.append(("height", "int", "%d" % value.height())) - elif qttype == 'QSizeF': - varlist.append(("width", "float", "%g" % value.width())) - varlist.append(("height", "float", "%g" % value.height())) - elif qttype == 'QColor': - varlist.append(("name", "str", "%s" % value.name())) - r, g, b, a = value.getRgb() - varlist.append(("rgba", "int", "%d, %d, %d, %d" % (r, g, b, a))) - h, s, v, a = value.getHsv() - varlist.append(("hsva", "int", "%d, %d, %d, %d" % (h, s, v, a))) - c, m, y, k, a = value.getCmyk() - varlist.append( - ("cmyka", "int", "%d, %d, %d, %d, %d" % (c, m, y, k, a))) - elif qttype == 'QDate': - varlist.append(("", "QDate", "%s" % value.toString())) - elif qttype == 'QTime': - varlist.append(("", "QTime", "%s" % value.toString())) - elif qttype == 'QDateTime': - varlist.append(("", "QDateTime", "%s" % value.toString())) - elif qttype == 'QDir': - varlist.append(("path", "str", "%s" % value.path())) - varlist.append( - ("absolutePath", "str", "%s" % value.absolutePath())) - varlist.append( - ("canonicalPath", "str", "%s" % value.canonicalPath())) - elif qttype == 'QFile': - varlist.append(("fileName", "str", "%s" % value.fileName())) - elif qttype == 'QFont': - varlist.append(("family", "str", "%s" % value.family())) - varlist.append(("pointSize", "int", "%d" % value.pointSize())) - varlist.append(("weight", "int", "%d" % value.weight())) - varlist.append(("bold", "bool", "%s" % value.bold())) - varlist.append(("italic", "bool", "%s" % value.italic())) - elif qttype == 'QUrl': - varlist.append(("url", "str", "%s" % value.toString())) - varlist.append(("scheme", "str", "%s" % value.scheme())) - varlist.append(("user", "str", "%s" % value.userName())) - varlist.append(("password", "str", "%s" % value.password())) - varlist.append(("host", "str", "%s" % value.host())) - varlist.append(("port", "int", "%d" % value.port())) - varlist.append(("path", "str", "%s" % value.path())) - elif qttype == 'QModelIndex': - varlist.append(("valid", "bool", "%s" % value.isValid())) - if value.isValid(): - varlist.append(("row", "int", "%s" % value.row())) - varlist.append(("column", "int", "%s" % value.column())) - varlist.append( - ("internalId", "int", "%s" % value.internalId())) - varlist.append( - ("internalPointer", "void *", "%s" % - value.internalPointer())) - elif qttype == 'QRegExp': - varlist.append(("pattern", "str", "%s" % value.pattern())) - - # GUI stuff - elif qttype == 'QAction': - varlist.append(("name", "str", "%s" % value.objectName())) - varlist.append(("text", "str", "%s" % value.text())) - varlist.append(("icon text", "str", "%s" % value.iconText())) - varlist.append(("tooltip", "str", "%s" % value.toolTip())) - varlist.append(("whatsthis", "str", "%s" % value.whatsThis())) - varlist.append( - ("shortcut", "str", "%s" % value.shortcut().toString())) - elif qttype == 'QKeySequence': - varlist.append(("value", "", "%s" % value.toString())) - - # XML stuff - elif qttype == 'QDomAttr': - varlist.append(("name", "str", "%s" % value.name())) - varlist.append(("value", "str", "%s" % value.value())) - elif qttype == 'QDomCharacterData': - varlist.append(("data", "str", "%s" % value.data())) - elif qttype == 'QDomComment': - varlist.append(("data", "str", "%s" % value.data())) - elif qttype == "QDomDocument": - varlist.append(("text", "str", "%s" % value.toString())) - elif qttype == 'QDomElement': - varlist.append(("tagName", "str", "%s" % value.tagName())) - varlist.append(("text", "str", "%s" % value.text())) - elif qttype == 'QDomText': - varlist.append(("data", "str", "%s" % value.data())) - - # Networking stuff - elif qttype == 'QHostAddress': - varlist.append( - ("address", "QHostAddress", "%s" % value.toString())) - - return varlist - - def __formatVariablesList(self, keylist, dict, scope, filter=[], - formatSequences=0): - """ - Private method to produce a formated variables list. - - The dictionary passed in to it is scanned. Variables are - only added to the list, if their type is not contained - in the filter list and their name doesn't match any of - the filter expressions. The formated variables list (a list of tuples - of 3 values) is returned. - - @param keylist keys of the dictionary - @param dict the dictionary to be scanned - @param scope 1 to filter using the globals filter, 0 using the locals - filter (int). - Variables are only added to the list, if their name do not match - any of the filter expressions. - @param filter the indices of variable types to be filtered. Variables - are only added to the list, if their type is not contained in the - filter list. - @param formatSequences flag indicating, that sequence or dictionary - variables should be formatted. If it is 0 (or false), just the - number of items contained in these variables is returned. (boolean) - @return A tuple consisting of a list of formatted variables. Each - variable entry is a tuple of three elements, the variable name, - its type and value. - """ - varlist = [] - if scope: - patternFilterObjects = self.globalsFilterObjects - else: - patternFilterObjects = self.localsFilterObjects - - for key in keylist: - # filter based on the filter pattern - matched = 0 - for pat in patternFilterObjects: - if pat.match(unicode(key)): - matched = 1 - break - if matched: - continue - - # filter hidden attributes (filter #0) - if 0 in filter and unicode(key)[:2] == '__': - continue - - # special handling for '__builtins__' (it's way too big) - if key == '__builtins__': - rvalue = '<module __builtin__ (built-in)>' - valtype = 'module' - else: - value = dict[key] - valtypestr = ("%s" % type(value))[1:-1] - - if valtypestr.split(' ', 1)[0] == 'class': - # handle new class type of python 2.2+ - if ConfigVarTypeStrings.index('instance') in filter: - continue - valtype = valtypestr - else: - valtype = valtypestr[6:-1] - try: - if ConfigVarTypeStrings.index(valtype) in filter: - continue - except ValueError: - if valtype == "classobj": - if ConfigVarTypeStrings.index( - 'instance') in filter: - continue - elif valtype == "sip.methoddescriptor": - if ConfigVarTypeStrings.index( - 'instance method') in filter: - continue - elif valtype == "sip.enumtype": - if ConfigVarTypeStrings.index('class') in filter: - continue - elif not valtype.startswith("PySide") and \ - ConfigVarTypeStrings.index('other') in filter: - continue - - try: - if valtype not in ['list', 'tuple', 'dict']: - rvalue = repr(value) - if valtype.startswith('class') and \ - rvalue[0] in ['{', '(', '[']: - rvalue = "" - else: - if valtype == 'dict': - rvalue = "%d" % len(value.keys()) - else: - rvalue = "%d" % len(value) - except Exception: - rvalue = '' - - if formatSequences: - if unicode(key) == key: - key = "'%s'" % key - else: - key = unicode(key) - varlist.append((key, valtype, rvalue)) - - return varlist - - def __generateFilterObjects(self, scope, filterString): - """ - Private slot to convert a filter string to a list of filter objects. - - @param scope 1 to generate filter for global variables, 0 for local - variables (int) - @param filterString string of filter patterns separated by ';' - """ - patternFilterObjects = [] - for pattern in filterString.split(';'): - patternFilterObjects.append(re.compile('^%s$' % pattern)) - if scope: - self.globalsFilterObjects = patternFilterObjects[:] - else: - self.localsFilterObjects = patternFilterObjects[:] - - def __completionList(self, text): - """ - Private slot to handle the request for a commandline completion list. - - @param text the text to be completed (string) - """ - completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?' - - completions = set() - # find position of last delim character - pos = -1 - while pos >= -len(text): - if text[pos] in completerDelims: - if pos == -1: - text = '' - else: - text = text[pos + 1:] - break - pos -= 1 - - # Get local and global completions - try: - localdict = self.currentThread.getFrameLocals(self.framenr) - localCompleter = Completer(localdict).complete - self.__getCompletionList(text, localCompleter, completions) - except AttributeError: - pass - self.__getCompletionList(text, self.complete, completions) - - self.write("%s%s||%s\n" % (DebugProtocol.ResponseCompletion, - unicode(list(completions)), text)) - - def __getCompletionList(self, text, completer, completions): - """ - Private method to create a completions list. - - @param text text to complete (string) - @param completer completer methode - @param completions set where to add new completions strings (set) - """ - state = 0 - try: - comp = completer(text, state) - except Exception: - comp = None - while comp is not None: - completions.add(comp) - state += 1 - try: - comp = completer(text, state) - except Exception: - comp = None - - def startDebugger(self, filename=None, host=None, port=None, - enableTrace=1, exceptions=1, tracePython=0, redirect=1): - """ - Public method used to start the remote debugger. - - @param filename the program to be debugged (string) - @param host hostname of the debug server (string) - @param port portnumber of the debug server (int) - @param enableTrace flag to enable the tracing function (boolean) - @param exceptions flag to enable exception reporting of the IDE - (boolean) - @param tracePython flag to enable tracing into the Python library - (boolean) - @param redirect flag indicating redirection of stdin, stdout and - stderr (boolean) - """ - global debugClient - if host is None: - host = os.getenv('ERICHOST', 'localhost') - if port is None: - port = os.getenv('ERICPORT', 42424) - - remoteAddress = self.__resolveHost(host) - self.connectDebugger(port, remoteAddress, redirect) - if filename is not None: - self.running = os.path.abspath(filename) - else: - try: - self.running = os.path.abspath(sys.argv[0]) - except IndexError: - self.running = None - if self.running: - self.__setCoding(self.running) - self.passive = 1 - self.write("%s%s|%d\n" % ( - DebugProtocol.PassiveStartup, self.running, exceptions)) - self.__interact() - - # setup the debugger variables - self._fncache = {} - self.dircache = [] - self.mainFrame = None - self.inRawMode = 0 - self.debugging = 1 - - self.attachThread(mainThread=1) - self.mainThread.tracePythonLibs(tracePython) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - # now start debugging - if enableTrace: - self.mainThread.set_trace() - - def startProgInDebugger(self, progargs, wd='', host=None, - port=None, exceptions=1, tracePython=0, - redirect=1): - """ - Public method used to start the remote debugger. - - @param progargs commandline for the program to be debugged - (list of strings) - @param wd working directory for the program execution (string) - @param host hostname of the debug server (string) - @param port portnumber of the debug server (int) - @param exceptions flag to enable exception reporting of the IDE - (boolean) - @param tracePython flag to enable tracing into the Python library - (boolean) - @param redirect flag indicating redirection of stdin, stdout and - stderr (boolean) - """ - if host is None: - host = os.getenv('ERICHOST', 'localhost') - if port is None: - port = os.getenv('ERICPORT', 42424) - - remoteAddress = self.__resolveHost(host) - self.connectDebugger(port, remoteAddress, redirect) - - self._fncache = {} - self.dircache = [] - sys.argv = progargs[:] - sys.argv[0] = os.path.abspath(sys.argv[0]) - sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) - if wd == '': - os.chdir(sys.path[1]) - else: - os.chdir(wd) - self.running = sys.argv[0] - self.__setCoding(self.running) - self.mainFrame = None - self.inRawMode = 0 - self.debugging = 1 - - self.passive = 1 - self.write("%s%s|%d\n" % ( - DebugProtocol.PassiveStartup, self.running, exceptions)) - self.__interact() - - self.attachThread(mainThread=1) - self.mainThread.tracePythonLibs(tracePython) - - # set the system exception handling function to ensure, that - # we report on all unhandled exceptions - sys.excepthook = self.__unhandled_exception - self.__interceptSignals() - - # This will eventually enter a local event loop. - # Note the use of backquotes to cause a repr of self.running. The - # need for this is on Windows os where backslash is the path separator. - # They will get inadvertantly stripped away during the eval causing - # IOErrors if self.running is passed as a normal str. - self.debugMod.__dict__['__file__'] = self.running - sys.modules['__main__'] = self.debugMod - res = self.mainThread.run('execfile(' + repr(self.running) + ')', - self.debugMod.__dict__) - self.progTerminated(res) - - def run_call(self, scriptname, func, *args): - """ - Public method used to start the remote debugger and call a function. - - @param scriptname name of the script to be debugged (string) - @param func function to be called - @param *args arguments being passed to func - @return result of the function call - """ - self.startDebugger(scriptname, enableTrace=0) - res = self.mainThread.runcall(func, *args) - self.progTerminated(res) - return res - - def __resolveHost(self, host): - """ - Private method to resolve a hostname to an IP address. - - @param host hostname of the debug server (string) - @return IP address (string) - """ - try: - host, version = host.split("@@") - except ValueError: - version = 'v4' - if version == 'v4': - family = socket.AF_INET - else: - family = socket.AF_INET6 - return socket.getaddrinfo(host, None, family, - socket.SOCK_STREAM)[0][4][0] - - def main(self): - """ - Public method implementing the main method. - """ - if '--' in sys.argv: - args = sys.argv[1:] - host = None - port = None - wd = '' - tracePython = 0 - exceptions = 1 - redirect = 1 - while args[0]: - if args[0] == '-h': - host = args[1] - del args[0] - del args[0] - elif args[0] == '-p': - port = int(args[1]) - del args[0] - del args[0] - elif args[0] == '-w': - wd = args[1] - del args[0] - del args[0] - elif args[0] == '-t': - tracePython = 1 - del args[0] - elif args[0] == '-e': - exceptions = 0 - del args[0] - elif args[0] == '-n': - redirect = 0 - del args[0] - elif args[0] == '--no-encoding': - self.noencoding = True - del args[0] - elif args[0] == '--fork-child': - self.fork_auto = True - self.fork_child = True - del args[0] - elif args[0] == '--fork-parent': - self.fork_auto = True - self.fork_child = False - del args[0] - elif args[0] == '--': - del args[0] - break - else: # unknown option - del args[0] - if not args: - print "No program given. Aborting!" # __IGNORE_WARNING__ - else: - if not self.noencoding: - self.__coding = self.defaultCoding - self.startProgInDebugger(args, wd, host, port, - exceptions=exceptions, - tracePython=tracePython, - redirect=redirect) - else: - if sys.argv[1] == '--no-encoding': - self.noencoding = True - del sys.argv[1] - if sys.argv[1] == '': - del sys.argv[1] - try: - port = int(sys.argv[1]) - except (ValueError, IndexError): - port = -1 - try: - redirect = int(sys.argv[2]) - except (ValueError, IndexError): - redirect = 1 - try: - ipOrHost = sys.argv[3] - if ':' in ipOrHost: - remoteAddress = ipOrHost - elif ipOrHost[0] in '0123456789': - remoteAddress = ipOrHost - else: - remoteAddress = self.__resolveHost(ipOrHost) - except Exception: - remoteAddress = None - sys.argv = [''] - if '' not in sys.path: - sys.path.insert(0, '') - if port >= 0: - if not self.noencoding: - self.__coding = self.defaultCoding - self.connectDebugger(port, remoteAddress, redirect) - self.__interact() - else: - print "No network port given. Aborting..." # __IGNORE_WARNING__ - - def fork(self): - """ - Public method implementing a fork routine deciding which branch to - follow. - - @return process ID (integer) - """ - if not self.fork_auto: - self.write(DebugProtocol.RequestForkTo + '\n') - self.eventLoop(True) - pid = DebugClientOrigFork() - if pid == 0: - # child - if not self.fork_child: - sys.settrace(None) - sys.setprofile(None) - self.sessionClose(0) - else: - # parent - if self.fork_child: - sys.settrace(None) - sys.setprofile(None) - self.sessionClose(0) - return pid - - def close(self, fd): - """ - Public method implementing a close method as a replacement for - os.close(). - - It prevents the debugger connections from being closed. - - @param fd file descriptor to be closed (integer) - """ - if fd in [self.readstream.fileno(), self.writestream.fileno(), - self.errorstream.fileno()]: - return - - DebugClientOrigClose(fd) - - def __getSysPath(self, firstEntry): - """ - Private slot to calculate a path list including the PYTHONPATH - environment variable. - - @param firstEntry entry to be put first in sys.path (string) - @return path list for use as sys.path (list of strings) - """ - sysPath = [path for path in os.environ.get("PYTHONPATH", "") - .split(os.pathsep) - if path not in sys.path] + sys.path[:] - if "" in sysPath: - sysPath.remove("") - sysPath.insert(0, firstEntry) - sysPath.insert(0, '') - return sysPath - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugClientCapabilities.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2005 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module defining the debug clients capabilities. -""" - -HasDebugger = 0x0001 -HasInterpreter = 0x0002 -HasProfiler = 0x0004 -HasCoverage = 0x0008 -HasCompleter = 0x0010 -HasUnittest = 0x0020 -HasShell = 0x0040 - -HasAll = HasDebugger | HasInterpreter | HasProfiler | \ - HasCoverage | HasCompleter | HasUnittest | HasShell - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugClientThreads.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2003 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the multithreaded version of the debug client. -""" - -import thread -import sys - -from AsyncIO import AsyncIO -from DebugThread import DebugThread -import DebugClientBase - - -def _debugclient_start_new_thread(target, args, kwargs={}): - """ - Module function used to allow for debugging of multiple threads. - - The way it works is that below, we reset thread._start_new_thread to - this function object. Thus, providing a hook for us to see when - threads are started. From here we forward the request onto the - DebugClient which will create a DebugThread object to allow tracing - of the thread then start up the thread. These actions are always - performed in order to allow dropping into debug mode. - - See DebugClientThreads.attachThread and DebugThread.DebugThread in - DebugThread.py - - @param target the start function of the target thread (i.e. the user code) - @param args arguments to pass to target - @param kwargs keyword arguments to pass to target - @return The identifier of the created thread - """ - if DebugClientBase.DebugClientInstance is not None: - return DebugClientBase.DebugClientInstance.attachThread( - target, args, kwargs) - else: - return _original_start_thread(target, args, kwargs) - -# make thread hooks available to system -_original_start_thread = thread.start_new_thread -thread.start_new_thread = _debugclient_start_new_thread - -# Note: import threading here AFTER above hook, as threading cache's -# thread._start_new_thread. -from threading import RLock - - -class DebugClientThreads(DebugClientBase.DebugClientBase, AsyncIO): - """ - Class implementing the client side of the debugger. - - This variant of the debugger implements a threaded debugger client - by subclassing all relevant base classes. - """ - def __init__(self): - """ - Constructor - """ - AsyncIO.__init__(self) - - DebugClientBase.DebugClientBase.__init__(self) - - # protection lock for synchronization - self.clientLock = RLock() - - # the "current" thread, basically the thread we are at a breakpoint - # for. - self.currentThread = None - - # special objects representing the main scripts thread and frame - self.mainThread = None - self.mainFrame = None - - self.variant = 'Threaded' - - def attachThread(self, target=None, args=None, kwargs=None, mainThread=0): - """ - Public method to setup a thread for DebugClient to debug. - - If mainThread is non-zero, then we are attaching to the already - started mainthread of the app and the rest of the args are ignored. - - @param target the start function of the target thread (i.e. the - user code) - @param args arguments to pass to target - @param kwargs keyword arguments to pass to target - @param mainThread non-zero, if we are attaching to the already - started mainthread of the app - @return The identifier of the created thread - """ - try: - self.lockClient() - newThread = DebugThread(self, target, args, kwargs, mainThread) - ident = -1 - if mainThread: - ident = thread.get_ident() - self.mainThread = newThread - if self.debugging: - sys.setprofile(newThread.profile) - else: - ident = _original_start_thread(newThread.bootstrap, ()) - if self.mainThread is not None: - self.tracePython = self.mainThread.tracePython - newThread.set_ident(ident) - self.threads[newThread.get_ident()] = newThread - finally: - self.unlockClient() - return ident - - def threadTerminated(self, dbgThread): - """ - Public method called when a DebugThread has exited. - - @param dbgThread the DebugThread that has exited - """ - try: - self.lockClient() - try: - del self.threads[dbgThread.get_ident()] - except KeyError: - pass - finally: - self.unlockClient() - - def lockClient(self, blocking=1): - """ - Public method to acquire the lock for this client. - - @param blocking flag to indicating a blocking lock - @return flag indicating successful locking - """ - if blocking: - self.clientLock.acquire() - else: - return self.clientLock.acquire(blocking) - - def unlockClient(self): - """ - Public method to release the lock for this client. - """ - try: - self.clientLock.release() - except AssertionError: - pass - - def setCurrentThread(self, id): - """ - Public method to set the current thread. - - @param id the id the current thread should be set to. - """ - try: - self.lockClient() - if id is None: - self.currentThread = None - else: - self.currentThread = self.threads[id] - finally: - self.unlockClient() - - def eventLoop(self, disablePolling=False): - """ - Public method implementing our event loop. - - @param disablePolling flag indicating to enter an event loop with - polling disabled (boolean) - """ - # make sure we set the current thread appropriately - threadid = thread.get_ident() - self.setCurrentThread(threadid) - - DebugClientBase.DebugClientBase.eventLoop(self, disablePolling) - - self.setCurrentThread(None) - - def set_quit(self): - """ - Public method to do a 'set quit' on all threads. - """ - try: - locked = self.lockClient(0) - try: - for key in self.threads.keys(): - self.threads[key].set_quit() - except Exception: - pass - finally: - if locked: - self.unlockClient() - -# We are normally called by the debugger to execute directly. - -if __name__ == '__main__': - debugClient = DebugClientThreads() - debugClient.main() - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702, E402
--- a/DebugClients/Python/DebugConfig.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2005 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module defining type strings for the different Python types. -""" - -ConfigVarTypeStrings = [ - '__', 'NoneType', 'type', - 'bool', 'int', 'long', 'float', 'complex', - 'str', 'unicode', 'tuple', 'list', - 'dict', 'dict-proxy', 'set', 'file', 'xrange', - 'slice', 'buffer', 'class', 'instance', - 'instance method', 'property', 'generator', - 'function', 'builtin_function_or_method', 'code', 'module', - 'ellipsis', 'traceback', 'frame', 'other' -] - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugProtocol.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module defining the debug protocol tokens. -""" - -# The address used for debugger/client communications. -DebugAddress = '127.0.0.1' - -# The protocol "words". -RequestOK = '>OK?<' -RequestEnv = '>Environment<' -RequestCapabilities = '>Capabilities<' -RequestLoad = '>Load<' -RequestRun = '>Run<' -RequestCoverage = '>Coverage<' -RequestProfile = '>Profile<' -RequestContinue = '>Continue<' -RequestStep = '>Step<' -RequestStepOver = '>StepOver<' -RequestStepOut = '>StepOut<' -RequestStepQuit = '>StepQuit<' -RequestBreak = '>Break<' -RequestBreakEnable = '>EnableBreak<' -RequestBreakIgnore = '>IgnoreBreak<' -RequestWatch = '>Watch<' -RequestWatchEnable = '>EnableWatch<' -RequestWatchIgnore = '>IgnoreWatch<' -RequestVariables = '>Variables<' -RequestVariable = '>Variable<' -RequestSetFilter = '>SetFilter<' -RequestThreadList = '>ThreadList<' -RequestThreadSet = '>ThreadSet<' -RequestEval = '>Eval<' -RequestExec = '>Exec<' -RequestShutdown = '>Shutdown<' -RequestBanner = '>Banner<' -RequestCompletion = '>Completion<' -RequestUTPrepare = '>UTPrepare<' -RequestUTRun = '>UTRun<' -RequestUTStop = '>UTStop<' -RequestForkTo = '>ForkTo<' -RequestForkMode = '>ForkMode<' - -ResponseOK = '>OK<' -ResponseCapabilities = RequestCapabilities -ResponseContinue = '>Continue<' -ResponseException = '>Exception<' -ResponseSyntax = '>SyntaxError<' -ResponseSignal = '>Signal<' -ResponseExit = '>Exit<' -ResponseLine = '>Line<' -ResponseRaw = '>Raw<' -ResponseClearBreak = '>ClearBreak<' -ResponseBPConditionError = '>BPConditionError<' -ResponseClearWatch = '>ClearWatch<' -ResponseWPConditionError = '>WPConditionError<' -ResponseVariables = RequestVariables -ResponseVariable = RequestVariable -ResponseThreadList = RequestThreadList -ResponseThreadSet = RequestThreadSet -ResponseStack = '>CurrentStack<' -ResponseBanner = RequestBanner -ResponseCompletion = RequestCompletion -ResponseUTPrepared = '>UTPrepared<' -ResponseUTStartTest = '>UTStartTest<' -ResponseUTStopTest = '>UTStopTest<' -ResponseUTTestFailed = '>UTTestFailed<' -ResponseUTTestErrored = '>UTTestErrored<' -ResponseUTTestSkipped = '>UTTestSkipped<' -ResponseUTTestFailedExpected = '>UTTestFailedExpected<' -ResponseUTTestSucceededUnexpected = '>UTTestSucceededUnexpected<' -ResponseUTFinished = '>UTFinished<' -ResponseForkTo = RequestForkTo - -PassiveStartup = '>PassiveStartup<' - -RequestCallTrace = '>CallTrace<' -CallTrace = '>CallTrace<' - -EOT = '>EOT<\n' - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/DebugThread.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the debug thread. -""" - -import bdb -import sys - -from DebugBase import DebugBase - - -class DebugThread(DebugBase): - """ - Class implementing a debug thread. - - It represents a thread in the python interpreter that we are tracing. - - Provides simple wrapper methods around bdb for the 'owning' client to - call to step etc. - """ - def __init__(self, dbgClient, targ=None, args=None, kwargs=None, - mainThread=0): - """ - Constructor - - @param dbgClient the owning client - @param targ the target method in the run thread - @param args arguments to be passed to the thread - @param kwargs arguments to be passed to the thread - @param mainThread 0 if this thread is not the mainscripts thread - """ - DebugBase.__init__(self, dbgClient) - - self._target = targ - self._args = args - self._kwargs = kwargs - self._mainThread = mainThread - # thread running tracks execution state of client code - # it will always be 0 for main thread as that is tracked - # by DebugClientThreads and Bdb... - self._threadRunning = 0 - - self.__ident = None # id of this thread. - self.__name = "" - self.tracePython = False - - def set_ident(self, id): - """ - Public method to set the id for this thread. - - @param id id for this thread (int) - """ - self.__ident = id - - def get_ident(self): - """ - Public method to return the id of this thread. - - @return the id of this thread (int) - """ - return self.__ident - - def get_name(self): - """ - Public method to return the name of this thread. - - @return name of this thread (string) - """ - return self.__name - - def traceThread(self): - """ - Public method to setup tracing for this thread. - """ - self.set_trace() - if not self._mainThread: - self.set_continue(0) - - def bootstrap(self): - """ - Public method to bootstrap the thread. - - It wraps the call to the user function to enable tracing - before hand. - """ - try: - try: - self._threadRunning = 1 - self.traceThread() - self._target(*self._args, **self._kwargs) - except bdb.BdbQuit: - pass - finally: - self._threadRunning = 0 - self.quitting = 1 - self._dbgClient.threadTerminated(self) - sys.settrace(None) - sys.setprofile(None) - - def trace_dispatch(self, frame, event, arg): - """ - Public method wrapping the trace_dispatch of bdb.py. - - It wraps the call to dispatch tracing into - bdb to make sure we have locked the client to prevent multiple - threads from entering the client event loop. - - @param frame The current stack frame. - @param event The trace event (string) - @param arg The arguments - @return local trace function - """ - try: - self._dbgClient.lockClient() - # if this thread came out of a lock, and we are quitting - # and we are still running, then get rid of tracing for this thread - if self.quitting and self._threadRunning: - sys.settrace(None) - sys.setprofile(None) - import threading - self.__name = threading.currentThread().getName() - retval = DebugBase.trace_dispatch(self, frame, event, arg) - finally: - self._dbgClient.unlockClient() - - return retval - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/FlexCompleter.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,275 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Word completion for the eric6 shell. - -<h4>NOTE for eric6 variant</h4> - - This version is a re-implementation of FlexCompleter - as found in the PyQwt package. It is modified to work with the eric6 debug - clients. - - -<h4>NOTE for the PyQwt variant</h4> - - This version is a re-implementation of FlexCompleter - with readline support for PyQt&sip-3.6 and earlier. - - Full readline support is present in PyQt&sip-snapshot-20030531 and later. - - -<h4>NOTE for FlexCompleter</h4> - - This version is a re-implementation of rlcompleter with - selectable namespace. - - The problem with rlcompleter is that it's hardwired to work with - __main__.__dict__, and in some cases one may have 'sandboxed' namespaces. - So this class is a ripoff of rlcompleter, with the namespace to work in as - an optional parameter. - - This class can be used just like rlcompleter, but the Completer class now - has a constructor with the optional 'namespace' parameter. - - A patch has been submitted to Python@sourceforge for these changes to go in - the standard Python distribution. - - -<h4>Original rlcompleter documentation</h4> - - This requires the latest extension to the readline module (the - completes keywords, built-ins and globals in __main__; when completing - NAME.NAME..., it evaluates (!) the expression up to the last dot and - completes its attributes. - - It's very cool to do "import string" type "string.", hit the - completion key (twice), and see the list of names defined by the - string module! - - Tip: to use the tab key as the completion key, call - - 'readline.parse_and_bind("tab: complete")' - - <b>Notes</b>: - <ul> - <li> - Exceptions raised by the completer function are *ignored* (and - generally cause the completion to fail). This is a feature -- since - readline sets the tty device in raw (or cbreak) mode, printing a - traceback wouldn't work well without some complicated hoopla to save, - reset and restore the tty state. - </li> - <li> - The evaluation of the NAME.NAME... form may cause arbitrary - application defined code to be executed if an object with a - __getattr__ hook is found. Since it is the responsibility of the - application (or the user) to enable this feature, I consider this an - acceptable risk. More complicated expressions (e.g. function calls or - indexing operations) are *not* evaluated. - </li> - <li> - GNU readline is also used by the built-in functions input() and - raw_input(), and thus these also benefit/suffer from the completer - features. Clearly an interactive application can benefit by - specifying its own completer function and using raw_input() for all - its input. - </li> - <li> - When the original stdin is not a tty device, GNU readline is never - used, and this module (and the readline module) are silently inactive. - </li> - </ul> -""" - -#***************************************************************************** -# -# Since this file is essentially a minimally modified copy of the rlcompleter -# module which is part of the standard Python distribution, I assume that the -# proper procedure is to maintain its copyright as belonging to the Python -# Software Foundation: -# -# Copyright (C) 2001 Python Software Foundation, www.python.org -# -# Distributed under the terms of the Python Software Foundation license. -# -# Full text available at: -# -# http://www.python.org/2.1/license.html -# -#***************************************************************************** - -import __builtin__ -import __main__ - -__all__ = ["Completer"] - - -class Completer(object): - """ - Class implementing the command line completer object. - """ - def __init__(self, namespace=None): - """ - Constructor - - Completer([namespace]) -> completer instance. - - If unspecified, the default namespace where completions are performed - is __main__ (technically, __main__.__dict__). Namespaces should be - given as dictionaries. - - Completer instances should be used as the completion mechanism of - readline via the set_completer() call: - - readline.set_completer(Completer(my_namespace).complete) - - @param namespace namespace for the completer - @exception TypeError raised to indicate a wrong namespace structure - """ - if namespace and not isinstance(namespace, dict): - raise TypeError('namespace must be a dictionary') - - # Don't bind to namespace quite yet, but flag whether the user wants a - # specific namespace or to use __main__.__dict__. This will allow us - # to bind to __main__.__dict__ at completion time, not now. - if namespace is None: - self.use_main_ns = 1 - else: - self.use_main_ns = 0 - self.namespace = namespace - - def complete(self, text, state): - """ - Public method to return the next possible completion for 'text'. - - This is called successively with state == 0, 1, 2, ... until it - returns None. The completion should begin with 'text'. - - @param text The text to be completed. (string) - @param state The state of the completion. (integer) - @return The possible completions as a list of strings. - """ - if self.use_main_ns: - self.namespace = __main__.__dict__ - - if state == 0: - if "." in text: - self.matches = self.attr_matches(text) - else: - self.matches = self.global_matches(text) - try: - return self.matches[state] - except IndexError: - return None - - def _callable_postfix(self, val, word): - """ - Protected method to check for a callable. - - @param val value to check (object) - @param word word to ammend (string) - @return ammended word (string) - """ - if hasattr(val, '__call__'): - word = word + "(" - return word - - def global_matches(self, text): - """ - Public method to compute matches when text is a simple name. - - @param text The text to be completed. (string) - @return A list of all keywords, built-in functions and names currently - defined in self.namespace that match. - """ - import keyword - matches = [] - n = len(text) - for word in keyword.kwlist: - if word[:n] == text: - matches.append(word) - for nspace in [__builtin__.__dict__, self.namespace]: - for word, val in nspace.items(): - if word[:n] == text and word != "__builtins__": - matches.append(self._callable_postfix(val, word)) - return matches - - def attr_matches(self, text): - """ - Public method to compute matches when text contains a dot. - - Assuming the text is of the form NAME.NAME....[NAME], and is - evaluatable in self.namespace, it will be evaluated and its attributes - (as revealed by dir()) are used as possible completions. (For class - instances, class members are are also considered.) - - <b>WARNING</b>: this can still invoke arbitrary C code, if an object - with a __getattr__ hook is evaluated. - - @param text The text to be completed. (string) - @return A list of all matches. - """ - import re - - # Testing. This is the original code: - #m = re.match(r"(\w+(\.\w+)*)\.(\w*)", text) - - # Modified to catch [] in expressions: - #m = re.match(r"([\w\[\]]+(\.[\w\[\]]+)*)\.(\w*)", text) - - # Another option, seems to work great. Catches things like ''.<tab> - m = re.match(r"(\S+(\.\w+)*)\.(\w*)", text) - - if not m: - return - expr, attr = m.group(1, 3) - try: - thisobject = eval(expr, self.namespace) - except Exception: - return [] - - # get the content of the object, except __builtins__ - words = dir(thisobject) - if "__builtins__" in words: - words.remove("__builtins__") - - if hasattr(object, '__class__'): - words.append('__class__') - words = words + get_class_members(object.__class__) - matches = [] - n = len(attr) - for word in words: - try: - if word[:n] == attr and hasattr(thisobject, word): - val = getattr(thisobject, word) - word = self._callable_postfix( - val, "%s.%s" % (expr, word)) - matches.append(word) - except Exception: - # some badly behaved objects pollute dir() with non-strings, - # which cause the completion to fail. This way we skip the - # bad entries and can still continue processing the others. - pass - return matches - - -def get_class_members(klass): - """ - Module function to retrieve the class members. - - @param klass The class object to be analysed. - @return A list of all names defined in the class. - """ - # PyQwt's hack for PyQt&sip-3.6 and earlier - if hasattr(klass, 'getLazyNames'): - return klass.getLazyNames() - # vanilla Python stuff - ret = dir(klass) - if hasattr(klass, '__bases__'): - for base in klass.__bases__: - ret = ret + get_class_members(base) - return ret - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702, M111
--- a/DebugClients/Python/PyProfile.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> - -""" -Module defining additions to the standard Python profile.py. -""" - -import os -import marshal -import profile -import atexit -import pickle - - -class PyProfile(profile.Profile): - """ - Class extending the standard Python profiler with additional methods. - - This class extends the standard Python profiler by the functionality to - save the collected timing data in a timing cache, to restore these data - on subsequent calls, to store a profile dump to a standard filename and - to erase these caches. - """ - def __init__(self, basename, timer=None, bias=None): - """ - Constructor - - @param basename name of the script to be profiled (string) - @param timer function defining the timing calculation - @param bias calibration value (float) - """ - try: - profile.Profile.__init__(self, timer, bias) - except TypeError: - profile.Profile.__init__(self, timer) - - self.dispatch = self.__class__.dispatch - - basename = os.path.splitext(basename)[0] - self.profileCache = "%s.profile" % basename - self.timingCache = "%s.timings" % basename - - self.__restore() - atexit.register(self.save) - - def __restore(self): - """ - Private method to restore the timing data from the timing cache. - """ - if not os.path.exists(self.timingCache): - return - - try: - cache = open(self.timingCache, 'rb') - timings = marshal.load(cache) - cache.close() - if isinstance(timings, type.DictType): - self.timings = timings - except Exception: - pass - - def save(self): - """ - Public method to store the collected profile data. - """ - # dump the raw timing data - cache = open(self.timingCache, 'wb') - marshal.dump(self.timings, cache) - cache.close() - - # dump the profile data - self.dump_stats(self.profileCache) - - def dump_stats(self, file): - """ - Public method to dump the statistics data. - - @param file name of the file to write to (string) - """ - try: - f = open(file, 'wb') - self.create_stats() - pickle.dump(self.stats, f, 2) - except (EnvironmentError, pickle.PickleError): - pass - finally: - f.close() - - def erase(self): - """ - Public method to erase the collected timing data. - """ - self.timings = {} - if os.path.exists(self.timingCache): - os.remove(self.timingCache) - - def fix_frame_filename(self, frame): - """ - Public method used to fixup the filename for a given frame. - - The logic employed here is that if a module was loaded - from a .pyc file, then the correct .py to operate with - should be in the same path as the .pyc. The reason this - logic is needed is that when a .pyc file is generated, the - filename embedded and thus what is readable in the code object - of the frame object is the fully qualified filepath when the - pyc is generated. If files are moved from machine to machine - this can break debugging as the .pyc will refer to the .py - on the original machine. Another case might be sharing - code over a network... This logic deals with that. - - @param frame the frame object - @return fixed up file name (string) - """ - # get module name from __file__ - if not isinstance(frame, profile.Profile.fake_frame) and \ - '__file__' in frame.f_globals: - root, ext = os.path.splitext(frame.f_globals['__file__']) - if ext == '.pyc' or ext == '.py': - fixedName = root + '.py' - if os.path.exists(fixedName): - return fixedName - - return frame.f_code.co_filename - - def trace_dispatch_call(self, frame, t): - """ - Public method used to trace functions calls. - - This is a variant of the one found in the standard Python - profile.py calling fix_frame_filename above. - - @param frame reference to the call frame - @param t arguments of the call - @return flag indicating a handled call - """ - if self.cur and frame.f_back is not self.cur[-2]: - rpt, rit, ret, rfn, rframe, rcur = self.cur - if not isinstance(rframe, profile.Profile.fake_frame): - assert rframe.f_back is frame.f_back, ("Bad call", rfn, - rframe, rframe.f_back, - frame, frame.f_back) - self.trace_dispatch_return(rframe, 0) - assert (self.cur is None or - frame.f_back is self.cur[-2]), ("Bad call", - self.cur[-3]) - fcode = frame.f_code - fn = (self.fix_frame_filename(frame), - fcode.co_firstlineno, fcode.co_name) - self.cur = (t, 0, 0, fn, frame, self.cur) - timings = self.timings - if fn in timings: - cc, ns, tt, ct, callers = timings[fn] - timings[fn] = cc, ns + 1, tt, ct, callers - else: - timings[fn] = 0, 0, 0, 0, {} - return 1 - - dispatch = { - "call": trace_dispatch_call, - "exception": profile.Profile.trace_dispatch_exception, - "return": profile.Profile.trace_dispatch_return, - "c_call": profile.Profile.trace_dispatch_c_call, - "c_exception": profile.Profile.trace_dispatch_return, - # the C function returned - "c_return": profile.Profile.trace_dispatch_return, - } - -# -# eflag: FileType = Python2 -# eflag: noqa = M601, M702
--- a/DebugClients/Python/__init__.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2005 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Package implementing the Python debugger. - -It consists of different kinds of debug clients. -""" - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/__init__.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Code coverage measurement for Python. - -Ned Batchelder -http://nedbatchelder.com/code/coverage - -""" - -from coverage.version import __version__, __url__, version_info - -from coverage.control import Coverage, process_startup -from coverage.data import CoverageData -from coverage.misc import CoverageException -from coverage.plugin import CoveragePlugin, FileTracer, FileReporter - -# Backward compatibility. -coverage = Coverage - -# On Windows, we encode and decode deep enough that something goes wrong and -# the encodings.utf_8 module is loaded and then unloaded, I don't know why. -# Adding a reference here prevents it from being unloaded. Yuk. -import encodings.utf_8 - -# Because of the "from coverage.control import fooey" lines at the top of the -# file, there's an entry for coverage.coverage in sys.modules, mapped to None. -# This makes some inspection tools (like pydoc) unable to find the class -# coverage.coverage. So remove that entry. -import sys -try: - del sys.modules['coverage.coverage'] -except KeyError: - pass - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/__main__.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Coverage.py's main entry point.""" - -import sys -from coverage.cmdline import main -sys.exit(main()) - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/annotate.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Source file annotation for coverage.py.""" - -import io -import os -import re - -from coverage.files import flat_rootname -from coverage.report import Reporter - -class AnnotateReporter(Reporter): - """Generate annotated source files showing line coverage. - - This reporter creates annotated copies of the measured source files. Each - .py file is copied as a .py,cover file, with a left-hand margin annotating - each line:: - - > def h(x): - - if 0: #pragma: no cover - - pass - > if x == 1: - ! a = 1 - > else: - > a = 2 - - > h(2) - - Executed lines use '>', lines not executed use '!', lines excluded from - consideration use '-'. - - """ - - def __init__(self, coverage, config): - super(AnnotateReporter, self).__init__(coverage, config) - self.directory = None - - blank_re = re.compile(r"\s*(#|$)") - else_re = re.compile(r"\s*else\s*:\s*(#|$)") - - def report(self, morfs, directory=None): - """Run the report. - - See `coverage.report()` for arguments. - - """ - self.report_files(self.annotate_file, morfs, directory) - - def annotate_file(self, fr, analysis): - """Annotate a single file. - - `fr` is the FileReporter for the file to annotate. - - """ - statements = sorted(analysis.statements) - missing = sorted(analysis.missing) - excluded = sorted(analysis.excluded) - - if self.directory: - dest_file = os.path.join(self.directory, flat_rootname(fr.relative_filename())) - if dest_file.endswith("_py"): - dest_file = dest_file[:-3] + ".py" - dest_file += ",cover" - else: - dest_file = fr.filename + ",cover" - - with io.open(dest_file, 'w', encoding='utf8') as dest: - i = 0 - j = 0 - covered = True - source = fr.source() - for lineno, line in enumerate(source.splitlines(True), start=1): - while i < len(statements) and statements[i] < lineno: - i += 1 - while j < len(missing) and missing[j] < lineno: - j += 1 - if i < len(statements) and statements[i] == lineno: - covered = j >= len(missing) or missing[j] > lineno - if self.blank_re.match(line): - dest.write(u' ') - elif self.else_re.match(line): - # Special logic for lines containing only 'else:'. - if i >= len(statements) and j >= len(missing): - dest.write(u'! ') - elif i >= len(statements) or j >= len(missing): - dest.write(u'> ') - elif statements[i] == missing[j]: - dest.write(u'! ') - else: - dest.write(u'> ') - elif lineno in excluded: - dest.write(u'- ') - elif covered: - dest.write(u'> ') - else: - dest.write(u'! ') - - dest.write(line) - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/backunittest.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Implementations of unittest features from the future.""" - -# Use unittest2 if it's available, otherwise unittest. This gives us -# back-ported features for 2.6. -try: - import unittest2 as unittest -except ImportError: - import unittest - - -def unittest_has(method): - """Does `unittest.TestCase` have `method` defined?""" - return hasattr(unittest.TestCase, method) - - -class TestCase(unittest.TestCase): - """Just like unittest.TestCase, but with assert methods added. - - Designed to be compatible with 3.1 unittest. Methods are only defined if - `unittest` doesn't have them. - - """ - # pylint: disable=missing-docstring - - # Many Pythons have this method defined. But PyPy3 has a bug with it - # somehow (https://bitbucket.org/pypy/pypy/issues/2092), so always use our - # own implementation that works everywhere, at least for the ways we're - # calling it. - def assertCountEqual(self, s1, s2): - """Assert these have the same elements, regardless of order.""" - self.assertEqual(sorted(s1), sorted(s2)) - - if not unittest_has('assertRaisesRegex'): - def assertRaisesRegex(self, *args, **kwargs): - return self.assertRaisesRegexp(*args, **kwargs) - - if not unittest_has('assertRegex'): - def assertRegex(self, *args, **kwargs): - return self.assertRegexpMatches(*args, **kwargs)
--- a/DebugClients/Python/coverage/backward.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Add things to old Pythons so I can pretend they are newer.""" - -# This file does lots of tricky stuff, so disable a bunch of pylint warnings. -# pylint: disable=redefined-builtin -# pylint: disable=unused-import -# pylint: disable=no-name-in-module - -import sys - -from coverage import env - - -# Pythons 2 and 3 differ on where to get StringIO. -try: - from cStringIO import StringIO -except ImportError: - from io import StringIO - -# In py3, ConfigParser was renamed to the more-standard configparser -try: - import configparser -except ImportError: - import ConfigParser as configparser - -# What's a string called? -try: - string_class = basestring -except NameError: - string_class = str - -# What's a Unicode string called? -try: - unicode_class = unicode -except NameError: - unicode_class = str - -# Where do pickles come from? -try: - import cPickle as pickle -except ImportError: - import pickle - -# range or xrange? -try: - range = xrange -except NameError: - range = range - -# A function to iterate listlessly over a dict's items. -try: - {}.iteritems -except AttributeError: - def iitems(d): - """Produce the items from dict `d`.""" - return d.items() -else: - def iitems(d): - """Produce the items from dict `d`.""" - return d.iteritems() - -# Getting the `next` function from an iterator is different in 2 and 3. -try: - iter([]).next -except AttributeError: - def iternext(seq): - """Get the `next` function for iterating over `seq`.""" - return iter(seq).__next__ -else: - def iternext(seq): - """Get the `next` function for iterating over `seq`.""" - return iter(seq).next - -# Python 3.x is picky about bytes and strings, so provide methods to -# get them right, and make them no-ops in 2.x -if env.PY3: - def to_bytes(s): - """Convert string `s` to bytes.""" - return s.encode('utf8') - - def binary_bytes(byte_values): - """Produce a byte string with the ints from `byte_values`.""" - return bytes(byte_values) - - def byte_to_int(byte_value): - """Turn an element of a bytes object into an int.""" - return byte_value - - def bytes_to_ints(bytes_value): - """Turn a bytes object into a sequence of ints.""" - # In Python 3, iterating bytes gives ints. - return bytes_value - -else: - def to_bytes(s): - """Convert string `s` to bytes (no-op in 2.x).""" - return s - - def binary_bytes(byte_values): - """Produce a byte string with the ints from `byte_values`.""" - return "".join(chr(b) for b in byte_values) - - def byte_to_int(byte_value): - """Turn an element of a bytes object into an int.""" - return ord(byte_value) - - def bytes_to_ints(bytes_value): - """Turn a bytes object into a sequence of ints.""" - for byte in bytes_value: - yield ord(byte) - - -try: - # In Python 2.x, the builtins were in __builtin__ - BUILTINS = sys.modules['__builtin__'] -except KeyError: - # In Python 3.x, they're in builtins - BUILTINS = sys.modules['builtins'] - - -# imp was deprecated in Python 3.3 -try: - import importlib - import importlib.util - imp = None -except ImportError: - importlib = None - -# We only want to use importlib if it has everything we need. -try: - importlib_util_find_spec = importlib.util.find_spec -except Exception: - import imp - importlib_util_find_spec = None - -# What is the .pyc magic number for this version of Python? -try: - PYC_MAGIC_NUMBER = importlib.util.MAGIC_NUMBER -except AttributeError: - PYC_MAGIC_NUMBER = imp.get_magic() - - -def import_local_file(modname): - """Import a local file as a module. - - Opens a file in the current directory named `modname`.py, imports it - as `modname`, and returns the module object. - - """ - try: - from importlib.machinery import SourceFileLoader - except ImportError: - SourceFileLoader = None - - modfile = modname + '.py' - if SourceFileLoader: - mod = SourceFileLoader(modname, modfile).load_module() - else: - for suff in imp.get_suffixes(): # pragma: part covered - if suff[0] == '.py': - break - - with open(modfile, 'r') as f: - # pylint: disable=undefined-loop-variable - mod = imp.load_module(modname, f, modfile, suff) - - return mod - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/bytecode.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Bytecode manipulation for coverage.py""" - -import opcode -import types - -from coverage.backward import byte_to_int - - -class ByteCode(object): - """A single bytecode.""" - def __init__(self): - # The offset of this bytecode in the code object. - self.offset = -1 - - # The opcode, defined in the `opcode` module. - self.op = -1 - - # The argument, a small integer, whose meaning depends on the opcode. - self.arg = -1 - - # The offset in the code object of the next bytecode. - self.next_offset = -1 - - # The offset to jump to. - self.jump_to = -1 - - -class ByteCodes(object): - """Iterator over byte codes in `code`. - - This handles the logic of EXTENDED_ARG byte codes internally. Those byte - codes are not returned by this iterator. - - Returns `ByteCode` objects. - - """ - def __init__(self, code): - self.code = code - - def __getitem__(self, i): - return byte_to_int(self.code[i]) - - def __iter__(self): - offset = 0 - ext_arg = 0 - while offset < len(self.code): - bc = ByteCode() - bc.op = self[offset] - bc.offset = offset - - next_offset = offset+1 - if bc.op >= opcode.HAVE_ARGUMENT: - bc.arg = ext_arg + self[offset+1] + 256*self[offset+2] - next_offset += 2 - - label = -1 - if bc.op in opcode.hasjrel: - label = next_offset + bc.arg - elif bc.op in opcode.hasjabs: - label = bc.arg - bc.jump_to = label - - bc.next_offset = offset = next_offset - if bc.op == opcode.EXTENDED_ARG: - ext_arg = bc.arg * 256*256 - else: - ext_arg = 0 - yield bc - - -class CodeObjects(object): - """Iterate over all the code objects in `code`.""" - def __init__(self, code): - self.stack = [code] - - def __iter__(self): - while self.stack: - # We're going to return the code object on the stack, but first - # push its children for later returning. - code = self.stack.pop() - for c in code.co_consts: - if isinstance(c, types.CodeType): - self.stack.append(c) - yield code - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/cmdline.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Command-line support for coverage.py.""" - -import glob -import optparse -import os.path -import sys -import traceback - -from coverage import env -from coverage.execfile import run_python_file, run_python_module -from coverage.misc import CoverageException, ExceptionDuringRun, NoSource -from coverage.debug import info_formatter, info_header - - -class Opts(object): - """A namespace class for individual options we'll build parsers from.""" - - append = optparse.make_option( - '-a', '--append', action='store_true', - help="Append coverage data to .coverage, otherwise it is started " - "clean with each run." - ) - branch = optparse.make_option( - '', '--branch', action='store_true', - help="Measure branch coverage in addition to statement coverage." - ) - CONCURRENCY_CHOICES = [ - "thread", "gevent", "greenlet", "eventlet", "multiprocessing", - ] - concurrency = optparse.make_option( - '', '--concurrency', action='store', metavar="LIB", - choices=CONCURRENCY_CHOICES, - help="Properly measure code using a concurrency library. " - "Valid values are: %s." % ", ".join(CONCURRENCY_CHOICES) - ) - debug = optparse.make_option( - '', '--debug', action='store', metavar="OPTS", - help="Debug options, separated by commas" - ) - directory = optparse.make_option( - '-d', '--directory', action='store', metavar="DIR", - help="Write the output files to DIR." - ) - fail_under = optparse.make_option( - '', '--fail-under', action='store', metavar="MIN", type="int", - help="Exit with a status of 2 if the total coverage is less than MIN." - ) - help = optparse.make_option( - '-h', '--help', action='store_true', - help="Get help on this command." - ) - ignore_errors = optparse.make_option( - '-i', '--ignore-errors', action='store_true', - help="Ignore errors while reading source files." - ) - include = optparse.make_option( - '', '--include', action='store', - metavar="PAT1,PAT2,...", - help="Include only files whose paths match one of these patterns. " - "Accepts shell-style wildcards, which must be quoted." - ) - pylib = optparse.make_option( - '-L', '--pylib', action='store_true', - help="Measure coverage even inside the Python installed library, " - "which isn't done by default." - ) - show_missing = optparse.make_option( - '-m', '--show-missing', action='store_true', - help="Show line numbers of statements in each module that weren't " - "executed." - ) - skip_covered = optparse.make_option( - '--skip-covered', action='store_true', - help="Skip files with 100% coverage." - ) - omit = optparse.make_option( - '', '--omit', action='store', - metavar="PAT1,PAT2,...", - help="Omit files whose paths match one of these patterns. " - "Accepts shell-style wildcards, which must be quoted." - ) - output_xml = optparse.make_option( - '-o', '', action='store', dest="outfile", - metavar="OUTFILE", - help="Write the XML report to this file. Defaults to 'coverage.xml'" - ) - parallel_mode = optparse.make_option( - '-p', '--parallel-mode', action='store_true', - help="Append the machine name, process id and random number to the " - ".coverage data file name to simplify collecting data from " - "many processes." - ) - module = optparse.make_option( - '-m', '--module', action='store_true', - help="<pyfile> is an importable Python module, not a script path, " - "to be run as 'python -m' would run it." - ) - rcfile = optparse.make_option( - '', '--rcfile', action='store', - help="Specify configuration file. Defaults to '.coveragerc'" - ) - source = optparse.make_option( - '', '--source', action='store', metavar="SRC1,SRC2,...", - help="A list of packages or directories of code to be measured." - ) - timid = optparse.make_option( - '', '--timid', action='store_true', - help="Use a simpler but slower trace method. Try this if you get " - "seemingly impossible results!" - ) - title = optparse.make_option( - '', '--title', action='store', metavar="TITLE", - help="A text string to use as the title on the HTML." - ) - version = optparse.make_option( - '', '--version', action='store_true', - help="Display version information and exit." - ) - - -class CoverageOptionParser(optparse.OptionParser, object): - """Base OptionParser for coverage.py. - - Problems don't exit the program. - Defaults are initialized for all options. - - """ - - def __init__(self, *args, **kwargs): - super(CoverageOptionParser, self).__init__( - add_help_option=False, *args, **kwargs - ) - self.set_defaults( - action=None, - append=None, - branch=None, - concurrency=None, - debug=None, - directory=None, - fail_under=None, - help=None, - ignore_errors=None, - include=None, - module=None, - omit=None, - parallel_mode=None, - pylib=None, - rcfile=True, - show_missing=None, - skip_covered=None, - source=None, - timid=None, - title=None, - version=None, - ) - - self.disable_interspersed_args() - self.help_fn = self.help_noop - - def help_noop(self, error=None, topic=None, parser=None): - """No-op help function.""" - pass - - class OptionParserError(Exception): - """Used to stop the optparse error handler ending the process.""" - pass - - def parse_args_ok(self, args=None, options=None): - """Call optparse.parse_args, but return a triple: - - (ok, options, args) - - """ - try: - options, args = \ - super(CoverageOptionParser, self).parse_args(args, options) - except self.OptionParserError: - return False, None, None - return True, options, args - - def error(self, msg): - """Override optparse.error so sys.exit doesn't get called.""" - self.help_fn(msg) - raise self.OptionParserError - - -class GlobalOptionParser(CoverageOptionParser): - """Command-line parser for coverage.py global option arguments.""" - - def __init__(self): - super(GlobalOptionParser, self).__init__() - - self.add_options([ - Opts.help, - Opts.version, - ]) - - -class CmdOptionParser(CoverageOptionParser): - """Parse one of the new-style commands for coverage.py.""" - - def __init__(self, action, options=None, defaults=None, usage=None, - description=None - ): - """Create an OptionParser for a coverage.py command. - - `action` is the slug to put into `options.action`. - `options` is a list of Option's for the command. - `defaults` is a dict of default value for options. - `usage` is the usage string to display in help. - `description` is the description of the command, for the help text. - - """ - if usage: - usage = "%prog " + usage - super(CmdOptionParser, self).__init__( - prog="coverage %s" % action, - usage=usage, - description=description, - ) - self.set_defaults(action=action, **(defaults or {})) - if options: - self.add_options(options) - self.cmd = action - - def __eq__(self, other): - # A convenience equality, so that I can put strings in unit test - # results, and they will compare equal to objects. - return (other == "<CmdOptionParser:%s>" % self.cmd) - -GLOBAL_ARGS = [ - Opts.debug, - Opts.help, - Opts.rcfile, - ] - -CMDS = { - 'annotate': CmdOptionParser("annotate", - [ - Opts.directory, - Opts.ignore_errors, - Opts.include, - Opts.omit, - ] + GLOBAL_ARGS, - usage = "[options] [modules]", - description = "Make annotated copies of the given files, marking " - "statements that are executed with > and statements that are " - "missed with !." - ), - - 'combine': CmdOptionParser("combine", GLOBAL_ARGS, - usage = "<path1> <path2> ... <pathN>", - description = "Combine data from multiple coverage files collected " - "with 'run -p'. The combined results are written to a single " - "file representing the union of the data. The positional " - "arguments are data files or directories containing data files. " - "If no paths are provided, data files in the default data file's " - "directory are combined." - ), - - 'debug': CmdOptionParser("debug", GLOBAL_ARGS, - usage = "<topic>", - description = "Display information on the internals of coverage.py, " - "for diagnosing problems. " - "Topics are 'data' to show a summary of the collected data, " - "or 'sys' to show installation information." - ), - - 'erase': CmdOptionParser("erase", GLOBAL_ARGS, - usage = " ", - description = "Erase previously collected coverage data." - ), - - 'help': CmdOptionParser("help", GLOBAL_ARGS, - usage = "[command]", - description = "Describe how to use coverage.py" - ), - - 'html': CmdOptionParser("html", - [ - Opts.directory, - Opts.fail_under, - Opts.ignore_errors, - Opts.include, - Opts.omit, - Opts.title, - ] + GLOBAL_ARGS, - usage = "[options] [modules]", - description = "Create an HTML report of the coverage of the files. " - "Each file gets its own page, with the source decorated to show " - "executed, excluded, and missed lines." - ), - - 'report': CmdOptionParser("report", - [ - Opts.fail_under, - Opts.ignore_errors, - Opts.include, - Opts.omit, - Opts.show_missing, - Opts.skip_covered, - ] + GLOBAL_ARGS, - usage = "[options] [modules]", - description = "Report coverage statistics on modules." - ), - - 'run': CmdOptionParser("run", - [ - Opts.append, - Opts.branch, - Opts.concurrency, - Opts.include, - Opts.module, - Opts.omit, - Opts.pylib, - Opts.parallel_mode, - Opts.source, - Opts.timid, - ] + GLOBAL_ARGS, - usage = "[options] <pyfile> [program options]", - description = "Run a Python program, measuring code execution." - ), - - 'xml': CmdOptionParser("xml", - [ - Opts.fail_under, - Opts.ignore_errors, - Opts.include, - Opts.omit, - Opts.output_xml, - ] + GLOBAL_ARGS, - usage = "[options] [modules]", - description = "Generate an XML report of coverage results." - ), - } - - -OK, ERR, FAIL_UNDER = 0, 1, 2 - - -class CoverageScript(object): - """The command-line interface to coverage.py.""" - - def __init__(self, _covpkg=None, _run_python_file=None, - _run_python_module=None, _help_fn=None, _path_exists=None): - # _covpkg is for dependency injection, so we can test this code. - if _covpkg: - self.covpkg = _covpkg - else: - import coverage - self.covpkg = coverage - - # For dependency injection: - self.run_python_file = _run_python_file or run_python_file - self.run_python_module = _run_python_module or run_python_module - self.help_fn = _help_fn or self.help - self.path_exists = _path_exists or os.path.exists - self.global_option = False - - self.coverage = None - - def command_line(self, argv): - """The bulk of the command line interface to coverage.py. - - `argv` is the argument list to process. - - Returns 0 if all is well, 1 if something went wrong. - - """ - # Collect the command-line options. - if not argv: - self.help_fn(topic='minimum_help') - return OK - - # The command syntax we parse depends on the first argument. Global - # switch syntax always starts with an option. - self.global_option = argv[0].startswith('-') - if self.global_option: - parser = GlobalOptionParser() - else: - parser = CMDS.get(argv[0]) - if not parser: - self.help_fn("Unknown command: '%s'" % argv[0]) - return ERR - argv = argv[1:] - - parser.help_fn = self.help_fn - ok, options, args = parser.parse_args_ok(argv) - if not ok: - return ERR - - # Handle help and version. - if self.do_help(options, args, parser): - return OK - - # Check for conflicts and problems in the options. - if not self.args_ok(options, args): - return ERR - - # We need to be able to import from the current directory, because - # plugins may try to, for example, to read Django settings. - sys.path[0] = '' - - # Listify the list options. - source = unshell_list(options.source) - omit = unshell_list(options.omit) - include = unshell_list(options.include) - debug = unshell_list(options.debug) - - # Do something. - self.coverage = self.covpkg.coverage( - data_suffix = options.parallel_mode, - cover_pylib = options.pylib, - timid = options.timid, - branch = options.branch, - config_file = options.rcfile, - source = source, - omit = omit, - include = include, - debug = debug, - concurrency = options.concurrency, - ) - - if options.action == "debug": - return self.do_debug(args) - - elif options.action == "erase": - self.coverage.erase() - return OK - - elif options.action == "run": - return self.do_run(options, args) - - elif options.action == "combine": - self.coverage.load() - data_dirs = args or None - self.coverage.combine(data_dirs) - self.coverage.save() - return OK - - # Remaining actions are reporting, with some common options. - report_args = dict( - morfs = unglob_args(args), - ignore_errors = options.ignore_errors, - omit = omit, - include = include, - ) - - self.coverage.load() - - total = None - if options.action == "report": - total = self.coverage.report( - show_missing=options.show_missing, - skip_covered=options.skip_covered, **report_args) - elif options.action == "annotate": - self.coverage.annotate( - directory=options.directory, **report_args) - elif options.action == "html": - total = self.coverage.html_report( - directory=options.directory, title=options.title, - **report_args) - elif options.action == "xml": - outfile = options.outfile - total = self.coverage.xml_report(outfile=outfile, **report_args) - - if total is not None: - # Apply the command line fail-under options, and then use the config - # value, so we can get fail_under from the config file. - if options.fail_under is not None: - self.coverage.set_option("report:fail_under", options.fail_under) - - if self.coverage.get_option("report:fail_under"): - - # Total needs to be rounded, but be careful of 0 and 100. - if 0 < total < 1: - total = 1 - elif 99 < total < 100: - total = 99 - else: - total = round(total) - - if total >= self.coverage.get_option("report:fail_under"): - return OK - else: - return FAIL_UNDER - - return OK - - def help(self, error=None, topic=None, parser=None): - """Display an error message, or the named topic.""" - assert error or topic or parser - if error: - print(error) - print("Use 'coverage help' for help.") - elif parser: - print(parser.format_help().strip()) - else: - help_msg = HELP_TOPICS.get(topic, '').strip() - if help_msg: - print(help_msg % self.covpkg.__dict__) - else: - print("Don't know topic %r" % topic) - - def do_help(self, options, args, parser): - """Deal with help requests. - - Return True if it handled the request, False if not. - - """ - # Handle help. - if options.help: - if self.global_option: - self.help_fn(topic='help') - else: - self.help_fn(parser=parser) - return True - - if options.action == "help": - if args: - for a in args: - parser = CMDS.get(a) - if parser: - self.help_fn(parser=parser) - else: - self.help_fn(topic=a) - else: - self.help_fn(topic='help') - return True - - # Handle version. - if options.version: - self.help_fn(topic='version') - return True - - return False - - def args_ok(self, options, args): - """Check for conflicts and problems in the options. - - Returns True if everything is OK, or False if not. - - """ - if options.action == "run" and not args: - self.help_fn("Nothing to do.") - return False - - return True - - def do_run(self, options, args): - """Implementation of 'coverage run'.""" - - if options.append and self.coverage.get_option("run:parallel"): - self.help_fn("Can't append to data files in parallel mode.") - return ERR - - if not self.coverage.get_option("run:parallel"): - if not options.append: - self.coverage.erase() - - # Run the script. - self.coverage.start() - code_ran = True - try: - if options.module: - self.run_python_module(args[0], args) - else: - filename = args[0] - self.run_python_file(filename, args) - except NoSource: - code_ran = False - raise - finally: - self.coverage.stop() - if code_ran: - if options.append: - data_file = self.coverage.get_option("run:data_file") - if self.path_exists(data_file): - self.coverage.combine(data_paths=[data_file]) - self.coverage.save() - - return OK - - def do_debug(self, args): - """Implementation of 'coverage debug'.""" - - if not args: - self.help_fn("What information would you like: data, sys?") - return ERR - - for info in args: - if info == 'sys': - sys_info = self.coverage.sys_info() - print(info_header("sys")) - for line in info_formatter(sys_info): - print(" %s" % line) - elif info == 'data': - self.coverage.load() - data = self.coverage.data - print(info_header("data")) - print("path: %s" % self.coverage.data_files.filename) - if data: - print("has_arcs: %r" % data.has_arcs()) - summary = data.line_counts(fullpath=True) - filenames = sorted(summary.keys()) - print("\n%d files:" % len(filenames)) - for f in filenames: - line = "%s: %d lines" % (f, summary[f]) - plugin = data.file_tracer(f) - if plugin: - line += " [%s]" % plugin - print(line) - else: - print("No data collected") - else: - self.help_fn("Don't know what you mean by %r" % info) - return ERR - - return OK - - -def unshell_list(s): - """Turn a command-line argument into a list.""" - if not s: - return None - if env.WINDOWS: - # When running coverage.py as coverage.exe, some of the behavior - # of the shell is emulated: wildcards are expanded into a list of - # file names. So you have to single-quote patterns on the command - # line, but (not) helpfully, the single quotes are included in the - # argument, so we have to strip them off here. - s = s.strip("'") - return s.split(',') - - -def unglob_args(args): - """Interpret shell wildcards for platforms that need it.""" - if env.WINDOWS: - globbed = [] - for arg in args: - if '?' in arg or '*' in arg: - globbed.extend(glob.glob(arg)) - else: - globbed.append(arg) - args = globbed - return args - - -HELP_TOPICS = { -# ------------------------- -'help': """\ -Coverage.py, version %(__version__)s -Measure, collect, and report on code coverage in Python programs. - -usage: coverage <command> [options] [args] - -Commands: - annotate Annotate source files with execution information. - combine Combine a number of data files. - erase Erase previously collected coverage data. - help Get help on using coverage.py. - html Create an HTML report. - report Report coverage stats on modules. - run Run a Python program and measure code execution. - xml Create an XML report of coverage results. - -Use "coverage help <command>" for detailed help on any command. -For full documentation, see %(__url__)s -""", -# ------------------------- -'minimum_help': """\ -Code coverage for Python. Use 'coverage help' for help. -""", -# ------------------------- -'version': """\ -Coverage.py, version %(__version__)s. -Documentation at %(__url__)s -""", -} - - -def main(argv=None): - """The main entry point to coverage.py. - - This is installed as the script entry point. - - """ - if argv is None: - argv = sys.argv[1:] - try: - status = CoverageScript().command_line(argv) - except ExceptionDuringRun as err: - # An exception was caught while running the product code. The - # sys.exc_info() return tuple is packed into an ExceptionDuringRun - # exception. - traceback.print_exception(*err.args) - status = ERR - except CoverageException as err: - # A controlled error inside coverage.py: print the message to the user. - print(err) - status = ERR - except SystemExit as err: - # The user called `sys.exit()`. Exit with their argument, if any. - if err.args: - status = err.args[0] - else: - status = None - return status - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/collector.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,325 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Raw data collector for coverage.py.""" - -import os, sys - -from coverage import env -from coverage.backward import iitems -from coverage.files import abs_file -from coverage.misc import CoverageException -from coverage.pytracer import PyTracer - -try: - # Use the C extension code when we can, for speed. - from coverage.tracer import CTracer, CFileDisposition # pylint: disable=no-name-in-module -except ImportError: - # Couldn't import the C extension, maybe it isn't built. - if os.getenv('COVERAGE_TEST_TRACER') == 'c': - # During testing, we use the COVERAGE_TEST_TRACER environment variable - # to indicate that we've fiddled with the environment to test this - # fallback code. If we thought we had a C tracer, but couldn't import - # it, then exit quickly and clearly instead of dribbling confusing - # errors. I'm using sys.exit here instead of an exception because an - # exception here causes all sorts of other noise in unittest. - sys.stderr.write("*** COVERAGE_TEST_TRACER is 'c' but can't import CTracer!\n") - sys.exit(1) - CTracer = None - - -class FileDisposition(object): - """A simple value type for recording what to do with a file.""" - pass - - -class Collector(object): - """Collects trace data. - - Creates a Tracer object for each thread, since they track stack - information. Each Tracer points to the same shared data, contributing - traced data points. - - When the Collector is started, it creates a Tracer for the current thread, - and installs a function to create Tracers for each new thread started. - When the Collector is stopped, all active Tracers are stopped. - - Threads started while the Collector is stopped will never have Tracers - associated with them. - - """ - - # The stack of active Collectors. Collectors are added here when started, - # and popped when stopped. Collectors on the stack are paused when not - # the top, and resumed when they become the top again. - _collectors = [] - - def __init__(self, should_trace, check_include, timid, branch, warn, concurrency): - """Create a collector. - - `should_trace` is a function, taking a file name, and returning a - `coverage.FileDisposition object`. - - `check_include` is a function taking a file name and a frame. It returns - a boolean: True if the file should be traced, False if not. - - If `timid` is true, then a slower simpler trace function will be - used. This is important for some environments where manipulation of - tracing functions make the faster more sophisticated trace function not - operate properly. - - If `branch` is true, then branches will be measured. This involves - collecting data on which statements followed each other (arcs). Use - `get_arc_data` to get the arc data. - - `warn` is a warning function, taking a single string message argument, - to be used if a warning needs to be issued. - - `concurrency` is a string indicating the concurrency library in use. - Valid values are "greenlet", "eventlet", "gevent", or "thread" (the - default). - - """ - self.should_trace = should_trace - self.check_include = check_include - self.warn = warn - self.branch = branch - self.threading = None - self.concurrency = concurrency - - self.concur_id_func = None - - try: - if concurrency == "greenlet": - import greenlet - self.concur_id_func = greenlet.getcurrent - elif concurrency == "eventlet": - import eventlet.greenthread # pylint: disable=import-error,useless-suppression - self.concur_id_func = eventlet.greenthread.getcurrent - elif concurrency == "gevent": - import gevent # pylint: disable=import-error,useless-suppression - self.concur_id_func = gevent.getcurrent - elif concurrency == "thread" or not concurrency: - # It's important to import threading only if we need it. If - # it's imported early, and the program being measured uses - # gevent, then gevent's monkey-patching won't work properly. - import threading - self.threading = threading - else: - raise CoverageException("Don't understand concurrency=%s" % concurrency) - except ImportError: - raise CoverageException( - "Couldn't trace with concurrency=%s, the module isn't installed." % concurrency - ) - - self.reset() - - if timid: - # Being timid: use the simple Python trace function. - self._trace_class = PyTracer - else: - # Being fast: use the C Tracer if it is available, else the Python - # trace function. - self._trace_class = CTracer or PyTracer - - if self._trace_class is CTracer: - self.file_disposition_class = CFileDisposition - self.supports_plugins = True - else: - self.file_disposition_class = FileDisposition - self.supports_plugins = False - - def __repr__(self): - return "<Collector at 0x%x: %s>" % (id(self), self.tracer_name()) - - def tracer_name(self): - """Return the class name of the tracer we're using.""" - return self._trace_class.__name__ - - def reset(self): - """Clear collected data, and prepare to collect more.""" - # A dictionary mapping file names to dicts with line number keys (if not - # branch coverage), or mapping file names to dicts with line number - # pairs as keys (if branch coverage). - self.data = {} - - # A dictionary mapping file names to file tracer plugin names that will - # handle them. - self.file_tracers = {} - - # The .should_trace_cache attribute is a cache from file names to - # coverage.FileDisposition objects, or None. When a file is first - # considered for tracing, a FileDisposition is obtained from - # Coverage.should_trace. Its .trace attribute indicates whether the - # file should be traced or not. If it should be, a plugin with dynamic - # file names can decide not to trace it based on the dynamic file name - # being excluded by the inclusion rules, in which case the - # FileDisposition will be replaced by None in the cache. - if env.PYPY: - import __pypy__ # pylint: disable=import-error - # Alex Gaynor said: - # should_trace_cache is a strictly growing key: once a key is in - # it, it never changes. Further, the keys used to access it are - # generally constant, given sufficient context. That is to say, at - # any given point _trace() is called, pypy is able to know the key. - # This is because the key is determined by the physical source code - # line, and that's invariant with the call site. - # - # This property of a dict with immutable keys, combined with - # call-site-constant keys is a match for PyPy's module dict, - # which is optimized for such workloads. - # - # This gives a 20% benefit on the workload described at - # https://bitbucket.org/pypy/pypy/issue/1871/10x-slower-than-cpython-under-coverage - self.should_trace_cache = __pypy__.newdict("module") - else: - self.should_trace_cache = {} - - # Our active Tracers. - self.tracers = [] - - def _start_tracer(self): - """Start a new Tracer object, and store it in self.tracers.""" - tracer = self._trace_class() - tracer.data = self.data - tracer.trace_arcs = self.branch - tracer.should_trace = self.should_trace - tracer.should_trace_cache = self.should_trace_cache - tracer.warn = self.warn - - if hasattr(tracer, 'concur_id_func'): - tracer.concur_id_func = self.concur_id_func - elif self.concur_id_func: - raise CoverageException( - "Can't support concurrency=%s with %s, only threads are supported" % ( - self.concurrency, self.tracer_name(), - ) - ) - - if hasattr(tracer, 'file_tracers'): - tracer.file_tracers = self.file_tracers - if hasattr(tracer, 'threading'): - tracer.threading = self.threading - if hasattr(tracer, 'check_include'): - tracer.check_include = self.check_include - - fn = tracer.start() - self.tracers.append(tracer) - - return fn - - # The trace function has to be set individually on each thread before - # execution begins. Ironically, the only support the threading module has - # for running code before the thread main is the tracing function. So we - # install this as a trace function, and the first time it's called, it does - # the real trace installation. - - def _installation_trace(self, frame, event, arg): - """Called on new threads, installs the real tracer.""" - # Remove ourselves as the trace function. - sys.settrace(None) - # Install the real tracer. - fn = self._start_tracer() - # Invoke the real trace function with the current event, to be sure - # not to lose an event. - if fn: - fn = fn(frame, event, arg) - # Return the new trace function to continue tracing in this scope. - return fn - - def start(self): - """Start collecting trace information.""" - if self._collectors: - self._collectors[-1].pause() - - # Check to see whether we had a fullcoverage tracer installed. If so, - # get the stack frames it stashed away for us. - traces0 = [] - fn0 = sys.gettrace() - if fn0: - tracer0 = getattr(fn0, '__self__', None) - if tracer0: - traces0 = getattr(tracer0, 'traces', []) - - try: - # Install the tracer on this thread. - fn = self._start_tracer() - except: - if self._collectors: - self._collectors[-1].resume() - raise - - # If _start_tracer succeeded, then we add ourselves to the global - # stack of collectors. - self._collectors.append(self) - - # Replay all the events from fullcoverage into the new trace function. - for args in traces0: - (frame, event, arg), lineno = args - try: - fn(frame, event, arg, lineno=lineno) - except TypeError: - raise Exception("fullcoverage must be run with the C trace function.") - - # Install our installation tracer in threading, to jump start other - # threads. - if self.threading: - self.threading.settrace(self._installation_trace) - - def stop(self): - """Stop collecting trace information.""" - assert self._collectors - assert self._collectors[-1] is self, ( - "Expected current collector to be %r, but it's %r" % (self, self._collectors[-1]) - ) - - self.pause() - self.tracers = [] - - # Remove this Collector from the stack, and resume the one underneath - # (if any). - self._collectors.pop() - if self._collectors: - self._collectors[-1].resume() - - def pause(self): - """Pause tracing, but be prepared to `resume`.""" - for tracer in self.tracers: - tracer.stop() - stats = tracer.get_stats() - if stats: - print("\nCoverage.py tracer stats:") - for k in sorted(stats.keys()): - print("%16s: %s" % (k, stats[k])) - if self.threading: - self.threading.settrace(None) - - def resume(self): - """Resume tracing after a `pause`.""" - for tracer in self.tracers: - tracer.start() - if self.threading: - self.threading.settrace(self._installation_trace) - else: - self._start_tracer() - - def save_data(self, covdata): - """Save the collected data to a `CoverageData`. - - Also resets the collector. - - """ - def abs_file_dict(d): - """Return a dict like d, but with keys modified by `abs_file`.""" - return dict((abs_file(k), v) for k, v in iitems(d)) - - if self.branch: - covdata.add_arcs(abs_file_dict(self.data)) - else: - covdata.add_lines(abs_file_dict(self.data)) - covdata.add_file_tracers(abs_file_dict(self.file_tracers)) - - self.reset() - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/config.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,366 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Config file for coverage.py""" - -import collections -import os -import re -import sys - -from coverage.backward import configparser, iitems, string_class -from coverage.misc import CoverageException - - -class HandyConfigParser(configparser.RawConfigParser): - """Our specialization of ConfigParser.""" - - def __init__(self, section_prefix): - configparser.RawConfigParser.__init__(self) - self.section_prefix = section_prefix - - def read(self, filename): - """Read a file name as UTF-8 configuration data.""" - kwargs = {} - if sys.version_info >= (3, 2): - kwargs['encoding'] = "utf-8" - return configparser.RawConfigParser.read(self, filename, **kwargs) - - def has_option(self, section, option): - section = self.section_prefix + section - return configparser.RawConfigParser.has_option(self, section, option) - - def has_section(self, section): - section = self.section_prefix + section - return configparser.RawConfigParser.has_section(self, section) - - def options(self, section): - section = self.section_prefix + section - return configparser.RawConfigParser.options(self, section) - - def get_section(self, section): - """Get the contents of a section, as a dictionary.""" - d = {} - for opt in self.options(section): - d[opt] = self.get(section, opt) - return d - - def get(self, section, *args, **kwargs): - """Get a value, replacing environment variables also. - - The arguments are the same as `RawConfigParser.get`, but in the found - value, ``$WORD`` or ``${WORD}`` are replaced by the value of the - environment variable ``WORD``. - - Returns the finished value. - - """ - section = self.section_prefix + section - v = configparser.RawConfigParser.get(self, section, *args, **kwargs) - def dollar_replace(m): - """Called for each $replacement.""" - # Only one of the groups will have matched, just get its text. - word = next(w for w in m.groups() if w is not None) # pragma: part covered - if word == "$": - return "$" - else: - return os.environ.get(word, '') - - dollar_pattern = r"""(?x) # Use extended regex syntax - \$(?: # A dollar sign, then - (?P<v1>\w+) | # a plain word, - {(?P<v2>\w+)} | # or a {-wrapped word, - (?P<char>[$]) # or a dollar sign. - ) - """ - v = re.sub(dollar_pattern, dollar_replace, v) - return v - - def getlist(self, section, option): - """Read a list of strings. - - The value of `section` and `option` is treated as a comma- and newline- - separated list of strings. Each value is stripped of whitespace. - - Returns the list of strings. - - """ - value_list = self.get(section, option) - values = [] - for value_line in value_list.split('\n'): - for value in value_line.split(','): - value = value.strip() - if value: - values.append(value) - return values - - def getregexlist(self, section, option): - """Read a list of full-line regexes. - - The value of `section` and `option` is treated as a newline-separated - list of regexes. Each value is stripped of whitespace. - - Returns the list of strings. - - """ - line_list = self.get(section, option) - value_list = [] - for value in line_list.splitlines(): - value = value.strip() - try: - re.compile(value) - except re.error as e: - raise CoverageException( - "Invalid [%s].%s value %r: %s" % (section, option, value, e) - ) - if value: - value_list.append(value) - return value_list - - -# The default line exclusion regexes. -DEFAULT_EXCLUDE = [ - r'(?i)#\s*pragma[:\s]?\s*no\s*cover', -] - -# The default partial branch regexes, to be modified by the user. -DEFAULT_PARTIAL = [ - r'(?i)#\s*pragma[:\s]?\s*no\s*branch', -] - -# The default partial branch regexes, based on Python semantics. -# These are any Python branching constructs that can't actually execute all -# their branches. -DEFAULT_PARTIAL_ALWAYS = [ - 'while (True|1|False|0):', - 'if (True|1|False|0):', -] - - -class CoverageConfig(object): - """Coverage.py configuration. - - The attributes of this class are the various settings that control the - operation of coverage.py. - - """ - def __init__(self): - """Initialize the configuration attributes to their defaults.""" - # Metadata about the config. - self.attempted_config_files = [] - self.config_files = [] - - # Defaults for [run] - self.branch = False - self.concurrency = None - self.cover_pylib = False - self.data_file = ".coverage" - self.debug = [] - self.note = None - self.parallel = False - self.plugins = [] - self.source = None - self.timid = False - - # Defaults for [report] - self.exclude_list = DEFAULT_EXCLUDE[:] - self.fail_under = 0 - self.ignore_errors = False - self.include = None - self.omit = None - self.partial_always_list = DEFAULT_PARTIAL_ALWAYS[:] - self.partial_list = DEFAULT_PARTIAL[:] - self.precision = 0 - self.show_missing = False - self.skip_covered = False - - # Defaults for [html] - self.extra_css = None - self.html_dir = "htmlcov" - self.html_title = "Coverage report" - - # Defaults for [xml] - self.xml_output = "coverage.xml" - self.xml_package_depth = 99 - - # Defaults for [paths] - self.paths = {} - - # Options for plugins - self.plugin_options = {} - - MUST_BE_LIST = ["omit", "include", "debug", "plugins"] - - def from_args(self, **kwargs): - """Read config values from `kwargs`.""" - for k, v in iitems(kwargs): - if v is not None: - if k in self.MUST_BE_LIST and isinstance(v, string_class): - v = [v] - setattr(self, k, v) - - def from_file(self, filename, section_prefix=""): - """Read configuration from a .rc file. - - `filename` is a file name to read. - - Returns True or False, whether the file could be read. - - """ - self.attempted_config_files.append(filename) - - cp = HandyConfigParser(section_prefix) - try: - files_read = cp.read(filename) - except configparser.Error as err: - raise CoverageException("Couldn't read config file %s: %s" % (filename, err)) - if not files_read: - return False - - self.config_files.extend(files_read) - - try: - for option_spec in self.CONFIG_FILE_OPTIONS: - self._set_attr_from_config_option(cp, *option_spec) - except ValueError as err: - raise CoverageException("Couldn't read config file %s: %s" % (filename, err)) - - # Check that there are no unrecognized options. - all_options = collections.defaultdict(set) - for option_spec in self.CONFIG_FILE_OPTIONS: - section, option = option_spec[1].split(":") - all_options[section].add(option) - - for section, options in iitems(all_options): - if cp.has_section(section): - for unknown in set(cp.options(section)) - options: - if section_prefix: - section = section_prefix + section - raise CoverageException( - "Unrecognized option '[%s] %s=' in config file %s" % ( - section, unknown, filename - ) - ) - - # [paths] is special - if cp.has_section('paths'): - for option in cp.options('paths'): - self.paths[option] = cp.getlist('paths', option) - - # plugins can have options - for plugin in self.plugins: - if cp.has_section(plugin): - self.plugin_options[plugin] = cp.get_section(plugin) - - return True - - CONFIG_FILE_OPTIONS = [ - # These are *args for _set_attr_from_config_option: - # (attr, where, type_="") - # - # attr is the attribute to set on the CoverageConfig object. - # where is the section:name to read from the configuration file. - # type_ is the optional type to apply, by using .getTYPE to read the - # configuration value from the file. - - # [run] - ('branch', 'run:branch', 'boolean'), - ('concurrency', 'run:concurrency'), - ('cover_pylib', 'run:cover_pylib', 'boolean'), - ('data_file', 'run:data_file'), - ('debug', 'run:debug', 'list'), - ('include', 'run:include', 'list'), - ('note', 'run:note'), - ('omit', 'run:omit', 'list'), - ('parallel', 'run:parallel', 'boolean'), - ('plugins', 'run:plugins', 'list'), - ('source', 'run:source', 'list'), - ('timid', 'run:timid', 'boolean'), - - # [report] - ('exclude_list', 'report:exclude_lines', 'regexlist'), - ('fail_under', 'report:fail_under', 'int'), - ('ignore_errors', 'report:ignore_errors', 'boolean'), - ('include', 'report:include', 'list'), - ('omit', 'report:omit', 'list'), - ('partial_always_list', 'report:partial_branches_always', 'regexlist'), - ('partial_list', 'report:partial_branches', 'regexlist'), - ('precision', 'report:precision', 'int'), - ('show_missing', 'report:show_missing', 'boolean'), - ('skip_covered', 'report:skip_covered', 'boolean'), - - # [html] - ('extra_css', 'html:extra_css'), - ('html_dir', 'html:directory'), - ('html_title', 'html:title'), - - # [xml] - ('xml_output', 'xml:output'), - ('xml_package_depth', 'xml:package_depth', 'int'), - ] - - def _set_attr_from_config_option(self, cp, attr, where, type_=''): - """Set an attribute on self if it exists in the ConfigParser.""" - section, option = where.split(":") - if cp.has_option(section, option): - method = getattr(cp, 'get' + type_) - setattr(self, attr, method(section, option)) - - def get_plugin_options(self, plugin): - """Get a dictionary of options for the plugin named `plugin`.""" - return self.plugin_options.get(plugin, {}) - - def set_option(self, option_name, value): - """Set an option in the configuration. - - `option_name` is a colon-separated string indicating the section and - option name. For example, the ``branch`` option in the ``[run]`` - section of the config file would be indicated with `"run:branch"`. - - `value` is the new value for the option. - - """ - - # Check all the hard-coded options. - for option_spec in self.CONFIG_FILE_OPTIONS: - attr, where = option_spec[:2] - if where == option_name: - setattr(self, attr, value) - return - - # See if it's a plugin option. - plugin_name, _, key = option_name.partition(":") - if key and plugin_name in self.plugins: - self.plugin_options.setdefault(plugin_name, {})[key] = value - return - - # If we get here, we didn't find the option. - raise CoverageException("No such option: %r" % option_name) - - def get_option(self, option_name): - """Get an option from the configuration. - - `option_name` is a colon-separated string indicating the section and - option name. For example, the ``branch`` option in the ``[run]`` - section of the config file would be indicated with `"run:branch"`. - - Returns the value of the option. - - """ - - # Check all the hard-coded options. - for option_spec in self.CONFIG_FILE_OPTIONS: - attr, where = option_spec[:2] - if where == option_name: - return getattr(self, attr) - - # See if it's a plugin option. - plugin_name, _, key = option_name.partition(":") - if key and plugin_name in self.plugins: - return self.plugin_options.get(plugin_name, {}).get(key) - - # If we get here, we didn't find the option. - raise CoverageException("No such option: %r" % option_name) - -# -# eflag: FileType = Python2
--- a/DebugClients/Python/coverage/control.py Thu Sep 15 21:49:13 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1196 +0,0 @@ -# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 -# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt - -"""Core control stuff for coverage.py.""" - -import atexit -import inspect -import os -import platform -import sys -import traceback - -from coverage import env, files -from coverage.annotate import AnnotateReporter -from coverage.backward import string_class, iitems -from coverage.collector import Collector -from coverage.config import CoverageConfig -from coverage.data import CoverageData, CoverageDataFiles -from coverage.debug import DebugControl -from coverage.files import TreeMatcher, FnmatchMatcher -from coverage.files import PathAliases, find_python_files, prep_patterns -from coverage.files import ModuleMatcher, abs_file -from coverage.html import HtmlReporter -from coverage.misc import CoverageException, bool_or_none, join_regex -from coverage.misc import file_be_gone -from coverage.monkey import patch_multiprocessing -from coverage.plugin import FileReporter -from coverage.plugin_support import Plugins -from coverage.python import PythonFileReporter -from coverage.results import Analysis, Numbers -from coverage.summary import SummaryReporter -from coverage.xmlreport import XmlReporter - - -# Pypy has some unusual stuff in the "stdlib". Consider those locations -# when deciding where the stdlib is. -try: - import _structseq -except ImportError: - _structseq = None - - -class Coverage(object): - """Programmatic access to coverage.py. - - To use:: - - from coverage import Coverage - - cov = Coverage() - cov.start() - #.. call your code .. - cov.stop() - cov.html_report(directory='covhtml') - - """ - def __init__( - self, data_file=None, data_suffix=None, cover_pylib=None, - auto_data=False, timid=None, branch=None, config_file=True, - source=None, omit=None, include=None, debug=None, - concurrency=None, - ): - """ - `data_file` is the base name of the data file to use, defaulting to - ".coverage". `data_suffix` is appended (with a dot) to `data_file` to - create the final file name. If `data_suffix` is simply True, then a - suffix is created with the machine and process identity included. - - `cover_pylib` is a boolean determining whether Python code installed - with the Python interpreter is measured. This includes the Python - standard library and any packages installed with the interpreter. - - If `auto_data` is true, then any existing data file will be read when - coverage measurement starts, and data will be saved automatically when - measurement stops. - - If `timid` is true, then a slower and simpler trace function will be - used. This is important for some environments where manipulation of - tracing functions breaks the faster trace function. - - If `branch` is true, then branch coverage will be measured in addition - to the usual statement coverage. - - `config_file` determines what configuration file to read: - - * If it is ".coveragerc", it is interpreted as if it were True, - for backward compatibility. - - * If it is a string, it is the name of the file to read. If the - file can't be read, it is an error. - - * If it is True, then a few standard files names are tried - (".coveragerc", "setup.cfg"). It is not an error for these files - to not be found. - - * If it is False, then no configuration file is read. - - `source` is a list of file paths or package names. Only code located - in the trees indicated by the file paths or package names will be - measured. - - `include` and `omit` are lists of file name patterns. Files that match - `include` will be measured, files that match `omit` will not. Each - will also accept a single string argument. - - `debug` is a list of strings indicating what debugging information is - desired. - - `concurrency` is a string indicating the concurrency library being used - in the measured code. Without this, coverage.py will get incorrect - results. Valid strings are "greenlet", "eventlet", "gevent", or - "thread" (the default). - - .. versionadded:: 4.0 - The `concurrency` parameter. - - """ - # Build our configuration from a number of sources: - # 1: defaults: - self.config = CoverageConfig() - - # 2: from the rcfile, .coveragerc or setup.cfg file: - if config_file: - did_read_rc = False - # Some API users were specifying ".coveragerc" to mean the same as <