Merged with default branch. QtWebEngine

Fri, 11 Mar 2016 19:44:05 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 11 Mar 2016 19:44:05 +0100
branch
QtWebEngine
changeset 4839
322f2107902d
parent 4838
daa974f7dbac (current diff)
parent 4837
57d8b7abde6c (diff)
child 4840
69ee7965ba27

Merged with default branch.

--- a/APIs/Python3/eric6.api	Fri Mar 11 19:26:27 2016 +0100
+++ b/APIs/Python3/eric6.api	Fri Mar 11 19:44:05 2016 +0100
@@ -309,6 +309,7 @@
 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)
@@ -1920,6 +1921,7 @@
 eric6.Globals.toByteArray?4(value)
 eric6.Globals.toDict?4(value)
 eric6.Globals.toList?4(value)
+eric6.Globals.translate?4(*args)
 eric6.Graphics.ApplicationDiagramBuilder.ApplicationDiagramBuilder.buildDiagram?4()
 eric6.Graphics.ApplicationDiagramBuilder.ApplicationDiagramBuilder.getPersistenceData?4()
 eric6.Graphics.ApplicationDiagramBuilder.ApplicationDiagramBuilder.parsePersistenceData?4(version, data)
@@ -4279,6 +4281,7 @@
 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()
@@ -4328,12 +4331,16 @@
 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)
+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)
@@ -4344,9 +4351,12 @@
 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)
@@ -8919,6 +8929,7 @@
 eric6.Utilities.ClassBrowsers.jsclbr.Function?1(module, name, file, lineno, signature='', separator=', ')
 eric6.Utilities.ClassBrowsers.jsclbr.SUPPORTED_TYPES?7
 eric6.Utilities.ClassBrowsers.jsclbr.VisibilityMixin?1()
+eric6.Utilities.ClassBrowsers.jsclbr.Visitor.call?4()
 eric6.Utilities.ClassBrowsers.jsclbr.Visitor.parse?4()
 eric6.Utilities.ClassBrowsers.jsclbr.Visitor.visit_const?4(node)
 eric6.Utilities.ClassBrowsers.jsclbr.Visitor.visit_function?4(node)
--- a/DebugClients/Python/DebugClientBase.py	Fri Mar 11 19:26:27 2016 +0100
+++ b/DebugClients/Python/DebugClientBase.py	Fri Mar 11 19:44:05 2016 +0100
@@ -1887,8 +1887,7 @@
         """
         completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?'
         
-        completions = []
-        state = 0
+        completions = set()
         # find position of last delim character
         pos = -1
         while pos >= -len(text):
@@ -1900,20 +1899,38 @@
                 break
             pos -= 1
         
+        # Get local and global completions
         try:
-            comp = self.complete(text, state)
+            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.append(comp)
+            completions.add(comp)
             state += 1
             try:
-                comp = self.complete(text, state)
+                comp = completer(text, state)
             except Exception:
                 comp = None
-            
-        self.write("%s%s||%s\n" % (DebugProtocol.ResponseCompletion,
-                                   unicode(completions), text))
 
     def startDebugger(self, filename=None, host=None, port=None,
                       enableTrace=1, exceptions=1, tracePython=0, redirect=1):
--- a/DebugClients/Python/FlexCompleter.py	Fri Mar 11 19:26:27 2016 +0100
+++ b/DebugClients/Python/FlexCompleter.py	Fri Mar 11 19:44:05 2016 +0100
@@ -162,6 +162,18 @@
         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.
@@ -173,14 +185,13 @@
         import keyword
         matches = []
         n = len(text)
-        for list in [keyword.kwlist,
-                     __builtin__.__dict__.keys(),
-                     self.namespace.keys()]:
-            for word in list:
-                if word[:n] == text and \
-                   word != "__builtins__" and \
-                   word not in matches:
-                    matches.append(word)
+        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):
@@ -212,8 +223,16 @@
         if not m:
             return
         expr, attr = m.group(1, 3)
-        object = eval(expr, self.namespace)
-        words = dir(object)
+        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__)
@@ -221,10 +240,11 @@
         n = len(attr)
         for word in words:
             try:
-                if word[:n] == attr and word != "__builtins__":
-                    match = "%s.%s" % (expr, word)
-                    if match not in matches:
-                        matches.append(match)
+                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
--- a/DebugClients/Python3/DebugClientBase.py	Fri Mar 11 19:26:27 2016 +0100
+++ b/DebugClients/Python3/DebugClientBase.py	Fri Mar 11 19:44:05 2016 +0100
@@ -1937,8 +1937,7 @@
         """
         completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?'
         
-        completions = []
-        state = 0
+        completions = set()
         # find position of last delim character
         pos = -1
         while pos >= -len(text):
@@ -1950,20 +1949,38 @@
                 break
             pos -= 1
         
+        # Get local and global completions
         try:
-            comp = self.complete(text, state)
+            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("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion,
+                                          str(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.append(comp)
+            completions.add(comp)
             state += 1
             try:
-                comp = self.complete(text, state)
+                comp = completer(text, state)
             except Exception:
                 comp = None
-        
-        self.write("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion,
-                                          str(completions), text))
 
     def startDebugger(self, filename=None, host=None, port=None,
                       enableTrace=True, exceptions=True, tracePython=False,
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Help/source.qhp	Fri Mar 11 19:44:05 2016 +0100
@@ -2020,6 +2020,7 @@
       <keyword name="Checker.check_logical" id="Checker.check_logical" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.check_logical" />
       <keyword name="Checker.check_physical" id="Checker.check_physical" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.check_physical" />
       <keyword name="Checker.generate_tokens" id="Checker.generate_tokens" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.generate_tokens" />
+      <keyword name="Checker.init_checker_state" id="Checker.init_checker_state" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.init_checker_state" />
       <keyword name="Checker.maybe_check_physical" id="Checker.maybe_check_physical" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.maybe_check_physical" />
       <keyword name="Checker.readline" id="Checker.readline" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.readline" />
       <keyword name="Checker.report_invalid_syntax" id="Checker.report_invalid_syntax" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.report_invalid_syntax" />
@@ -2327,6 +2328,7 @@
       <keyword name="Completer" id="Completer" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer" />
       <keyword name="Completer (Constructor)" id="Completer (Constructor)" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer.__init__" />
       <keyword name="Completer (Constructor)" id="Completer (Constructor)" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer.__init__" />
+      <keyword name="Completer._callable_postfix" id="Completer._callable_postfix" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer._callable_postfix" />
       <keyword name="Completer._callable_postfix" id="Completer._callable_postfix" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer._callable_postfix" />
       <keyword name="Completer.attr_matches" id="Completer.attr_matches" ref="eric6.DebugClients.Python.FlexCompleter.html#Completer.attr_matches" />
       <keyword name="Completer.attr_matches" id="Completer.attr_matches" ref="eric6.DebugClients.Python3.FlexCompleter.html#Completer.attr_matches" />
@@ -2721,6 +2723,8 @@
       <keyword name="DebugClientBase.__formatVariablesList" id="DebugClientBase.__formatVariablesList" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.__formatVariablesList" />
       <keyword name="DebugClientBase.__generateFilterObjects" id="DebugClientBase.__generateFilterObjects" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__generateFilterObjects" />
       <keyword name="DebugClientBase.__generateFilterObjects" id="DebugClientBase.__generateFilterObjects" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.__generateFilterObjects" />
+      <keyword name="DebugClientBase.__getCompletionList" id="DebugClientBase.__getCompletionList" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__getCompletionList" />
+      <keyword name="DebugClientBase.__getCompletionList" id="DebugClientBase.__getCompletionList" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.__getCompletionList" />
       <keyword name="DebugClientBase.__getSysPath" id="DebugClientBase.__getSysPath" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__getSysPath" />
       <keyword name="DebugClientBase.__getSysPath" id="DebugClientBase.__getSysPath" ref="eric6.DebugClients.Python3.DebugClientBase.html#DebugClientBase.__getSysPath" />
       <keyword name="DebugClientBase.__interact" id="DebugClientBase.__interact" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.__interact" />
@@ -13280,6 +13284,7 @@
       <keyword name="Visitor" id="Visitor" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor" />
       <keyword name="Visitor (Constructor)" id="Visitor (Constructor)" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor.__init__" />
       <keyword name="Visitor.__visit" id="Visitor.__visit" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor.__visit" />
+      <keyword name="Visitor.call" id="Visitor.call" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor.call" />
       <keyword name="Visitor.parse" id="Visitor.parse" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor.parse" />
       <keyword name="Visitor.visit_const" id="Visitor.visit_const" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_const" />
       <keyword name="Visitor.visit_function" id="Visitor.visit_function" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_function" />
@@ -13522,12 +13527,14 @@
       <keyword name="_debugclient_start_new_thread" id="_debugclient_start_new_thread" ref="eric6.DebugClients.Python.DebugClientThreads.html#_debugclient_start_new_thread" />
       <keyword name="_debugclient_start_new_thread" id="_debugclient_start_new_thread" ref="eric6.DebugClients.Python3.DebugClientThreads.html#_debugclient_start_new_thread" />
       <keyword name="_encode_base64" id="_encode_base64" ref="eric6.UI.EmailDialog.html#_encode_base64" />
+      <keyword name="_get_parameters" id="_get_parameters" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#_get_parameters" />
       <keyword name="_getfullargs" id="_getfullargs" ref="eric6.DebugClients.Python3.DebugUtilities.html#_getfullargs" />
       <keyword name="_indent" id="_indent" ref="eric6.Utilities.ClassBrowsers.pyclbr.html#_indent" />
       <keyword name="_indent" id="_indent" ref="eric6.Utilities.ModuleParser.html#_indent" />
       <keyword name="_is_eol_token" id="_is_eol_token" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#_is_eol_token" />
       <keyword name="_is_eol_token_1" id="_is_eol_token_1" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#_is_eol_token_1" />
       <keyword name="_main" id="_main" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#_main" />
+      <keyword name="_parse_multi_options" id="_parse_multi_options" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#_parse_multi_options" />
       <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric6.Utilities.__init__.html#_percentReplacementFunc" />
       <keyword name="absolutePath" id="absolutePath" ref="eric6.Utilities.__init__.html#absolutePath" />
       <keyword name="absoluteUniversalPath" id="absoluteUniversalPath" ref="eric6.Utilities.__init__.html#absoluteUniversalPath" />
@@ -13540,6 +13547,7 @@
       <keyword name="batchCheck" id="batchCheck" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#batchCheck" />
       <keyword name="binplistlib (Module)" id="binplistlib (Module)" ref="eric6.Utilities.binplistlib.html" />
       <keyword name="blank_lines" id="blank_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#blank_lines" />
+      <keyword name="break_around_binary_operator" id="break_around_binary_operator" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#break_around_binary_operator" />
       <keyword name="changeRememberedMaster" id="changeRememberedMaster" ref="eric6.Utilities.crypto.__init__.html#changeRememberedMaster" />
       <keyword name="check" id="check" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#check" />
       <keyword name="checkBlacklistedVersions" id="checkBlacklistedVersions" ref="eric6.Globals.__init__.html#checkBlacklistedVersions" />
@@ -13917,7 +13925,9 @@
       <keyword name="isMacPlatform" id="isMacPlatform" ref="eric6.Globals.__init__.html#isMacPlatform" />
       <keyword name="isTextFile" id="isTextFile" ref="eric6.Utilities.MimeTypes.html#isTextFile" />
       <keyword name="isWindowsPlatform" id="isWindowsPlatform" ref="eric6.Globals.__init__.html#isWindowsPlatform" />
+      <keyword name="is_binary_operator" id="is_binary_operator" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#is_binary_operator" />
       <keyword name="is_stream_binary_plist" id="is_stream_binary_plist" ref="eric6.Utilities.binplistlib.html#is_stream_binary_plist" />
+      <keyword name="is_string_literal" id="is_string_literal" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#is_string_literal" />
       <keyword name="isinpath" id="isinpath" ref="eric6.Utilities.__init__.html#isinpath" />
       <keyword name="joinAsUnicode" id="joinAsUnicode" ref="eric6.Globals.compatibility_fixes.html#joinAsUnicode" />
       <keyword name="joinext" id="joinext" ref="eric6.Utilities.__init__.html#joinext" />
@@ -13967,6 +13977,7 @@
       <keyword name="mimeType" id="mimeType" ref="eric6.Utilities.MimeTypes.html#mimeType" />
       <keyword name="missing_whitespace" id="missing_whitespace" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#missing_whitespace" />
       <keyword name="missing_whitespace_around_operator" id="missing_whitespace_around_operator" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#missing_whitespace_around_operator" />
+      <keyword name="module_imports_on_top_of_file" id="module_imports_on_top_of_file" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#module_imports_on_top_of_file" />
       <keyword name="mute_string" id="mute_string" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#mute_string" />
       <keyword name="normabsjoinpath" id="normabsjoinpath" ref="eric6.Utilities.__init__.html#normabsjoinpath" />
       <keyword name="normabspath" id="normabspath" ref="eric6.Utilities.__init__.html#normabspath" />
@@ -14150,6 +14161,7 @@
       <keyword name="toSecondLevelDomain" id="toSecondLevelDomain" ref="eric6.Helpviewer.AdBlock.AdBlockRule.html#toSecondLevelDomain" />
       <keyword name="trailing_blank_lines" id="trailing_blank_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#trailing_blank_lines" />
       <keyword name="trailing_whitespace" id="trailing_whitespace" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#trailing_whitespace" />
+      <keyword name="translate" id="translate" ref="eric6.Globals.__init__.html#translate" />
       <keyword name="translations (Module)" id="translations (Module)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html" />
       <keyword name="transplant (Module)" id="transplant (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.transplant.html" />
       <keyword name="uiStartUp" id="uiStartUp" ref="eric6.eric6.html#uiStartUp" />
--- a/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html	Fri Mar 11 19:44:05 2016 +0100
@@ -132,6 +132,9 @@
 <td><a href="#DebugClientBase.__generateFilterObjects">__generateFilterObjects</a></td>
 <td>Private slot to convert a filter string to a list of filter objects.</td>
 </tr><tr>
+<td><a href="#DebugClientBase.__getCompletionList">__getCompletionList</a></td>
+<td>Private method to create a completions list.</td>
+</tr><tr>
 <td><a href="#DebugClientBase.__getSysPath">__getSysPath</a></td>
 <td>Private slot to calculate a path list including the PYTHONPATH environment variable.</td>
 </tr><tr>
@@ -371,6 +374,22 @@
 <dd>
 string of filter patterns separated by ';'
 </dd>
+</dl><a NAME="DebugClientBase.__getCompletionList" ID="DebugClientBase.__getCompletionList"></a>
+<h4>DebugClientBase.__getCompletionList</h4>
+<b>__getCompletionList</b>(<i>text, completer, completions</i>)
+<p>
+        Private method to create a completions list.
+</p><dl>
+<dt><i>text</i></dt>
+<dd>
+text to complete (string)
+</dd><dt><i>completer</i></dt>
+<dd>
+completer methode
+</dd><dt><i>completions</i></dt>
+<dd>
+set where to add new completions strings (set)
+</dd>
 </dl><a NAME="DebugClientBase.__getSysPath" ID="DebugClientBase.__getSysPath"></a>
 <h4>DebugClientBase.__getSysPath</h4>
 <b>__getSysPath</b>(<i>firstEntry</i>)
--- a/Documentation/Source/eric6.DebugClients.Python.FlexCompleter.html	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Source/eric6.DebugClients.Python.FlexCompleter.html	Fri Mar 11 19:44:05 2016 +0100
@@ -143,6 +143,9 @@
 <td><a href="#Completer.__init__">Completer</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#Completer._callable_postfix">_callable_postfix</a></td>
+<td>Protected method to check for a callable.</td>
+</tr><tr>
 <td><a href="#Completer.attr_matches">attr_matches</a></td>
 <td>Public method to compute matches when text contains a dot.</td>
 </tr><tr>
@@ -183,6 +186,24 @@
 <dd>
 raised to indicate a wrong namespace structure
 </dd>
+</dl><a NAME="Completer._callable_postfix" ID="Completer._callable_postfix"></a>
+<h4>Completer._callable_postfix</h4>
+<b>_callable_postfix</b>(<i>val, word</i>)
+<p>
+        Protected method to check for a callable.
+</p><dl>
+<dt><i>val</i></dt>
+<dd>
+value to check (object)
+</dd><dt><i>word</i></dt>
+<dd>
+word to ammend (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+ammended word (string)
+</dd>
 </dl><a NAME="Completer.attr_matches" ID="Completer.attr_matches"></a>
 <h4>Completer.attr_matches</h4>
 <b>attr_matches</b>(<i>text</i>)
--- a/Documentation/Source/eric6.DebugClients.Python3.DebugClientBase.html	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Source/eric6.DebugClients.Python3.DebugClientBase.html	Fri Mar 11 19:44:05 2016 +0100
@@ -132,6 +132,9 @@
 <td><a href="#DebugClientBase.__generateFilterObjects">__generateFilterObjects</a></td>
 <td>Private slot to convert a filter string to a list of filter objects.</td>
 </tr><tr>
+<td><a href="#DebugClientBase.__getCompletionList">__getCompletionList</a></td>
+<td>Private method to create a completions list.</td>
+</tr><tr>
 <td><a href="#DebugClientBase.__getSysPath">__getSysPath</a></td>
 <td>Private slot to calculate a path list including the PYTHONPATH environment variable.</td>
 </tr><tr>
@@ -386,6 +389,22 @@
 <dd>
 string of filter patterns separated by ';'
 </dd>
+</dl><a NAME="DebugClientBase.__getCompletionList" ID="DebugClientBase.__getCompletionList"></a>
+<h4>DebugClientBase.__getCompletionList</h4>
+<b>__getCompletionList</b>(<i>text, completer, completions</i>)
+<p>
+        Private method to create a completions list.
+</p><dl>
+<dt><i>text</i></dt>
+<dd>
+text to complete (string)
+</dd><dt><i>completer</i></dt>
+<dd>
+completer methode
+</dd><dt><i>completions</i></dt>
+<dd>
+set where to add new completions strings (set)
+</dd>
 </dl><a NAME="DebugClientBase.__getSysPath" ID="DebugClientBase.__getSysPath"></a>
 <h4>DebugClientBase.__getSysPath</h4>
 <b>__getSysPath</b>(<i>firstEntry</i>)
--- a/Documentation/Source/eric6.Globals.__init__.html	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Source/eric6.Globals.__init__.html	Fri Mar 11 19:44:05 2016 +0100
@@ -78,6 +78,9 @@
 </tr><tr>
 <td><a href="#toList">toList</a></td>
 <td>Module function to convert a value to a list.</td>
+</tr><tr>
+<td><a href="#translate">translate</a></td>
+<td>Module function to handle different PyQt 4/5 QCoreApplication.translate parameter.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -317,5 +320,24 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="translate" ID="translate"></a>
+<h2>translate</h2>
+<b>translate</b>(<i>*args</i>)
+<p>
+    Module function to handle different PyQt 4/5 QCoreApplication.translate
+    parameter.
+</p><dl>
+<dt><i>args</i></dt>
+<dd>
+tuple of arguments from QCoreApplication.translate (tuple)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+translated string (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html	Fri Mar 11 19:44:05 2016 +0100
@@ -53,6 +53,9 @@
 <td><a href="#_add_check">_add_check</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#_get_parameters">_get_parameters</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#_is_eol_token">_is_eol_token</a></td>
 <td></td>
 </tr><tr>
@@ -62,9 +65,15 @@
 <td><a href="#_main">_main</a></td>
 <td>Parse options and run checks on Python source.</td>
 </tr><tr>
+<td><a href="#_parse_multi_options">_parse_multi_options</a></td>
+<td>Split and strip and discard empties.</td>
+</tr><tr>
 <td><a href="#blank_lines">blank_lines</a></td>
 <td>Separate top-level function and class definitions with two blank lines.</td>
 </tr><tr>
+<td><a href="#break_around_binary_operator">break_around_binary_operator</a></td>
+<td>Avoid breaks before binary operators.</td>
+</tr><tr>
 <td><a href="#comparison_negative">comparison_negative</a></td>
 <td>Negative comparison should be done using "not in" and "is not".</td>
 </tr><tr>
@@ -104,6 +113,12 @@
 <td><a href="#init_checks_registry">init_checks_registry</a></td>
 <td>Register all globally visible functions.</td>
 </tr><tr>
+<td><a href="#is_binary_operator">is_binary_operator</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#is_string_literal">is_string_literal</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#maximum_line_length">maximum_line_length</a></td>
 <td>Limit all lines to a maximum of 79 characters.</td>
 </tr><tr>
@@ -113,6 +128,9 @@
 <td><a href="#missing_whitespace_around_operator">missing_whitespace_around_operator</a></td>
 <td>Surround operators with a single space on either side.</td>
 </tr><tr>
+<td><a href="#module_imports_on_top_of_file">module_imports_on_top_of_file</a></td>
+<td>Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.</td>
+</tr><tr>
 <td><a href="#mute_string">mute_string</a></td>
 <td>Replace contents with 'xxx' to prevent syntax matching.</td>
 </tr><tr>
@@ -138,7 +156,7 @@
 <td>When raising an exception, use "raise ValueError('message')".</td>
 </tr><tr>
 <td><a href="#read_config">read_config</a></td>
-<td>Read both user configuration and local configuration.</td>
+<td>Read and parse configurations</td>
 </tr><tr>
 <td><a href="#readlines">readlines</a></td>
 <td>Read the source code.</td>
@@ -348,6 +366,9 @@
 <td><a href="#Checker.generate_tokens">generate_tokens</a></td>
 <td>Tokenize the file, run physical line checks and yield tokens.</td>
 </tr><tr>
+<td><a href="#Checker.init_checker_state">init_checker_state</a></td>
+<td>Prepares a custom state for the specific checker plugin.</td>
+</tr><tr>
 <td><a href="#Checker.maybe_check_physical">maybe_check_physical</a></td>
 <td>If appropriate (based on token), check current physical line(s).</td>
 </tr><tr>
@@ -398,6 +419,11 @@
 <b>generate_tokens</b>(<i></i>)
 <p>
 Tokenize the file, run physical line checks and yield tokens.
+</p><a NAME="Checker.init_checker_state" ID="Checker.init_checker_state"></a>
+<h4>Checker.init_checker_state</h4>
+<b>init_checker_state</b>(<i>name, argument_names</i>)
+<p>
+ Prepares a custom state for the specific checker plugin.
 </p><a NAME="Checker.maybe_check_physical" ID="Checker.maybe_check_physical"></a>
 <h4>Checker.maybe_check_physical</h4>
 <b>maybe_check_physical</b>(<i>token</i>)
@@ -652,6 +678,12 @@
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="_get_parameters" ID="_get_parameters"></a>
+<h2>_get_parameters</h2>
+<b>_get_parameters</b>(<i>function</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="_is_eol_token" ID="_is_eol_token"></a>
 <h2>_is_eol_token</h2>
 <b>_is_eol_token</b>(<i>token</i>)
@@ -660,7 +692,7 @@
 <hr /><hr />
 <a NAME="_is_eol_token_1" ID="_is_eol_token_1"></a>
 <h2>_is_eol_token</h2>
-<b>_is_eol_token</b>(<i>token</i>)
+<b>_is_eol_token</b>(<i>token, _eol_token=_is_eol_token</i>)
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -672,6 +704,21 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="_parse_multi_options" ID="_parse_multi_options"></a>
+<h2>_parse_multi_options</h2>
+<b>_parse_multi_options</b>(<i>options, split_token=', '</i>)
+<p>
+Split and strip and discard empties.
+</p><p>
+    Turns the following:
+</p><p>
+    A,
+    B,
+</p><p>
+    into ["A", "B"]
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="blank_lines" ID="blank_lines"></a>
 <h2>blank_lines</h2>
 <b>blank_lines</b>(<i>logical_line, blank_lines, indent_level, line_number, blank_before, previous_logical, previous_indent_level</i>)
@@ -697,6 +744,27 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="break_around_binary_operator" ID="break_around_binary_operator"></a>
+<h2>break_around_binary_operator</h2>
+<b>break_around_binary_operator</b>(<i>logical_line, tokens</i>)
+<p>
+    Avoid breaks before binary operators.
+</p><p>
+    The preferred place to break around a binary operator is after the
+    operator, not before it.
+</p><p>
+    W503: (width == 0\n + height == 0)
+    W503: (width == 0\n and height == 0)
+</p><p>
+    Okay: (width == 0 +\n height == 0)
+    Okay: foo(\n    -x)
+    Okay: foo(x\n    [])
+    Okay: x = '''\n''' + ''
+    Okay: foo(x,\n    -y)
+    Okay: foo(x,  # comment\n    -y)
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="comparison_negative" ID="comparison_negative"></a>
 <h2>comparison_negative</h2>
 <b>comparison_negative</b>(<i>logical_line</i>)
@@ -725,7 +793,9 @@
 </p><p>
     Okay: if arg is not None:
     E711: if arg != None:
+    E711: if None == arg:
     E712: if arg == True:
+    E712: if False == arg:
 </p><p>
     Also, beware of writing if x when you really mean if x is not None --
     e.g. when testing whether a variable or argument that defaults to None was
@@ -736,7 +806,7 @@
 <hr /><hr />
 <a NAME="comparison_type" ID="comparison_type"></a>
 <h2>comparison_type</h2>
-<b>comparison_type</b>(<i>logical_line</i>)
+<b>comparison_type</b>(<i>logical_line, noqa</i>)
 <p>
 Object type comparisons should always use isinstance().
 </p><p>
@@ -764,6 +834,9 @@
     on the same line, never do this for multi-clause statements.
     Also avoid folding such long lines!
 </p><p>
+    Always use a def statement instead of an assignment statement that
+    binds a lambda expression directly to a name.
+</p><p>
     Okay: if foo == 'blah':\n    do_blah_thing()
     Okay: do_one()
     Okay: do_two()
@@ -777,9 +850,10 @@
     E701: try: something()
     E701: finally: cleanup()
     E701: if foo == 'blah': one(); two(); three()
-</p><p>
     E702: do_one(); do_two(); do_three()
     E703: do_four();  # useless semicolon
+    E704: def f(x): return 2*x
+    E731: f = lambda x: 2*x
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -851,6 +925,7 @@
     Okay: aaa = [123,\n       123]
     Okay: aaa = ("bbb "\n       "ccc")
     Okay: aaa = "bbb " \\n    "ccc"
+    Okay: aaa = 123  # \\
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -923,12 +998,15 @@
     Okay: a = 1
     Okay: if a == 0:\n    a = 1
     E111:   a = 1
+    E114:   # a = 1
 </p><p>
     Okay: for item in items:\n    pass
     E112: for item in items:\npass
+    E115: for item in items:\n# Hi\n    pass
 </p><p>
     Okay: a = 1\nb = 2
     E113: a = 1\n    b = 2
+    E116: a = 1\n    # b = 2
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -942,6 +1020,18 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="is_binary_operator" ID="is_binary_operator"></a>
+<h2>is_binary_operator</h2>
+<b>is_binary_operator</b>(<i>token_type, text</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="is_string_literal" ID="is_string_literal"></a>
+<h2>is_string_literal</h2>
+<b>is_string_literal</b>(<i>line</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="maximum_line_length" ID="maximum_line_length"></a>
 <h2>maximum_line_length</h2>
 <b>maximum_line_length</b>(<i>physical_line, max_line_length, multiline</i>)
@@ -1010,6 +1100,27 @@
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="module_imports_on_top_of_file" ID="module_imports_on_top_of_file"></a>
+<h2>module_imports_on_top_of_file</h2>
+<b>module_imports_on_top_of_file</b>(<i>logical_line, indent_level, checker_state, noqa</i>)
+<p>
+Imports are always put at the top of the file, just after any module
+    comments and docstrings, and before module globals and constants.
+</p><p>
+    Okay: import os
+    Okay: # this is a comment\nimport os
+    Okay: '''this is a module docstring'''\nimport os
+    Okay: r'''this is a module docstring'''\nimport os
+    Okay: try:\n    import x\nexcept:\n    pass\nelse:\n    pass\nimport y
+    Okay: try:\n    import x\nexcept:\n    pass\nfinally:\n    pass\nimport y
+    E402: a=1\nimport os
+    E402: 'One string'\n"Two string"\nimport os
+    E402: a=1\nfrom sys import x
+</p><p>
+    Okay: if x:\n    import os
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="mute_string" ID="mute_string"></a>
 <h2>mute_string</h2>
 <b>mute_string</b>(<i>text</i>)
@@ -1048,6 +1159,9 @@
 <b>process_options</b>(<i>arglist=None, parse_argv=False, config_file=None, parser=None</i>)
 <p>
 Process options passed either via arglist or via command line args.
+</p><p>
+    Passing in the ``config_file`` parameter allows other tools, such as flake8
+    to specify their own options to be processed in pep8.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -1103,7 +1217,14 @@
 <h2>read_config</h2>
 <b>read_config</b>(<i>options, args, arglist, parser</i>)
 <p>
-Read both user configuration and local configuration.
+Read and parse configurations
+</p><p>
+    If a config file is specified on the command line with the "--config"
+    option, then only it is used for configuration.
+</p><p>
+    Otherwise, the user configuration (~/.config/pep8) and any local
+    configurations in the current directory or above will be merged together
+    (in that order) using the read method of ConfigParser.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -1237,6 +1358,7 @@
     Okay: boolean(a != b)
     Okay: boolean(a <= b)
     Okay: boolean(a >= b)
+    Okay: def foo(arg: int = 42):
 </p><p>
     E251: def complex(real, imag = 0.0):
     E251: return magic(r = real, i = imag)
@@ -1277,6 +1399,7 @@
     E262: x = x + 1  #Increment x
     E262: x = x + 1  #  Increment x
     E265: #Block comment
+    E266: ### Block comment
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
--- a/Documentation/Source/eric6.Utilities.ClassBrowsers.jsclbr.html	Fri Mar 11 19:26:27 2016 +0100
+++ b/Documentation/Source/eric6.Utilities.ClassBrowsers.jsclbr.html	Fri Mar 11 19:44:05 2016 +0100
@@ -213,6 +213,9 @@
 <td><a href="#Visitor.__visit">__visit</a></td>
 <td>Private method implementing the visit logic delegating to interesting methods.</td>
 </tr><tr>
+<td><a href="#Visitor.call">call</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Visitor.parse">parse</a></td>
 <td>Public method to parse the source.</td>
 </tr><tr>
@@ -263,7 +266,10 @@
 <dd>
 root node to visit
 </dd>
-</dl><a NAME="Visitor.parse" ID="Visitor.parse"></a>
+</dl><a NAME="Visitor.call" ID="Visitor.call"></a>
+<h4>Visitor.call</h4>
+<b>call</b>(<i></i>)
+<a NAME="Visitor.parse" ID="Visitor.parse"></a>
 <h4>Visitor.parse</h4>
 <b>parse</b>(<i></i>)
 <p>

eric ide

mercurial