Updated pyflakes to version 0.7.3.

Thu, 16 Jan 2014 18:28:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 16 Jan 2014 18:28:34 +0100
changeset 3208
884465a61753
parent 3207
6cf664694e3c
child 3210
8f4fe6f76729

Updated pyflakes to version 0.7.3.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
APIs/Python3/eric5.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.pyflakes.checker.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.pyflakes.messages.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Utilities.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Utilities.pyflakes.html file | annotate | diff | comparison | revisions
Utilities/pyflakes/__init__.py file | annotate | diff | comparison | revisions
Utilities/pyflakes/checker.py file | annotate | diff | comparison | revisions
Utilities/pyflakes/messages.py file | annotate | diff | comparison | revisions
Utilities/pyflakes/translations.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
i18n/eric5_cs.ts file | annotate | diff | comparison | revisions
i18n/eric5_de.qm file | annotate | diff | comparison | revisions
i18n/eric5_de.ts file | annotate | diff | comparison | revisions
i18n/eric5_en.ts file | annotate | diff | comparison | revisions
i18n/eric5_es.ts file | annotate | diff | comparison | revisions
i18n/eric5_fr.ts file | annotate | diff | comparison | revisions
i18n/eric5_it.ts file | annotate | diff | comparison | revisions
i18n/eric5_ru.ts file | annotate | diff | comparison | revisions
i18n/eric5_tr.ts file | annotate | diff | comparison | revisions
i18n/eric5_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Wed Jan 15 19:16:06 2014 +0100
+++ b/APIs/Python3/eric5.api	Thu Jan 16 18:28:34 2014 +0100
@@ -6065,7 +6065,7 @@
 eric5.Preferences.Prefs.projectBrowserColourDefaults?7
 eric5.Preferences.Prefs.projectBrowserFlagsDefaults?7
 eric5.Preferences.Prefs.projectDefaults?7
-eric5.Preferences.Prefs.py3flakesDefaults?7
+eric5.Preferences.Prefs.pyflakesDefaults?7
 eric5.Preferences.Prefs.qtDefaults?7
 eric5.Preferences.Prefs.resetLayout?7
 eric5.Preferences.Prefs.shellDefaults?7
@@ -8377,106 +8377,125 @@
 eric5.Utilities.parseString?4(s, rx)
 eric5.Utilities.prepareQtMacBundle?4(toolname, version, args)
 eric5.Utilities.py2compile?4(fileName, checkFlakes=False, txt="")
-eric5.Utilities.py3flakes.checker.Binding?1(name, source)
-eric5.Utilities.py3flakes.checker.Checker.ASSIGN?4(node)
-eric5.Utilities.py3flakes.checker.Checker.ATTRIBUTES?7
-eric5.Utilities.py3flakes.checker.Checker.AUGASSIGN?4(node)
-eric5.Utilities.py3flakes.checker.Checker.BOOLOP?7
-eric5.Utilities.py3flakes.checker.Checker.CALL?7
-eric5.Utilities.py3flakes.checker.Checker.CLASSDEF?4(node)
-eric5.Utilities.py3flakes.checker.Checker.COMPREHENSION?7
-eric5.Utilities.py3flakes.checker.Checker.DICTCOMP?4(node)
-eric5.Utilities.py3flakes.checker.Checker.EXCEPTHANDLER?4(node)
-eric5.Utilities.py3flakes.checker.Checker.FOR?4(node)
-eric5.Utilities.py3flakes.checker.Checker.FUNCTIONDEF?4(node)
-eric5.Utilities.py3flakes.checker.Checker.GLOBAL?4(node)
-eric5.Utilities.py3flakes.checker.Checker.IMPORT?4(node)
-eric5.Utilities.py3flakes.checker.Checker.IMPORTFROM?4(node)
-eric5.Utilities.py3flakes.checker.Checker.INVERT?7
-eric5.Utilities.py3flakes.checker.Checker.ISNOT?7
-eric5.Utilities.py3flakes.checker.Checker.LAMBDA?4(node)
-eric5.Utilities.py3flakes.checker.Checker.LISTCOMP?4(node)
-eric5.Utilities.py3flakes.checker.Checker.LOAD?7
-eric5.Utilities.py3flakes.checker.Checker.MOD?7
-eric5.Utilities.py3flakes.checker.Checker.NAME?4(node)
-eric5.Utilities.py3flakes.checker.Checker.NONLOCAL?7
-eric5.Utilities.py3flakes.checker.Checker.PASS?7
-eric5.Utilities.py3flakes.checker.Checker.RETURN?7
-eric5.Utilities.py3flakes.checker.Checker.SETCOMP?7
-eric5.Utilities.py3flakes.checker.Checker.SLICE?7
-eric5.Utilities.py3flakes.checker.Checker.STARRED?4(node)
-eric5.Utilities.py3flakes.checker.Checker.TRY?7
-eric5.Utilities.py3flakes.checker.Checker._runDeferred?5(deferred)
-eric5.Utilities.py3flakes.checker.Checker.addArgs?4()
-eric5.Utilities.py3flakes.checker.Checker.addBinding?4(lineno, value, reportRedef=True)
-eric5.Utilities.py3flakes.checker.Checker.checkUnusedAssignments?4()
-eric5.Utilities.py3flakes.checker.Checker.check_dead_scopes?4()
-eric5.Utilities.py3flakes.checker.Checker.collectLoopVars?4()
-eric5.Utilities.py3flakes.checker.Checker.deferAssignment?4(callable)
-eric5.Utilities.py3flakes.checker.Checker.deferFunction?4(callable)
-eric5.Utilities.py3flakes.checker.Checker.handleAssignName?4(node)
-eric5.Utilities.py3flakes.checker.Checker.handleBody?4(tree)
-eric5.Utilities.py3flakes.checker.Checker.handleChildren?4(tree)
-eric5.Utilities.py3flakes.checker.Checker.handleNode?4(node, parent)
-eric5.Utilities.py3flakes.checker.Checker.ignore?4(node)
-eric5.Utilities.py3flakes.checker.Checker.isDocstring?4(node)
-eric5.Utilities.py3flakes.checker.Checker.nodeDepth?7
-eric5.Utilities.py3flakes.checker.Checker.popScope?4()
-eric5.Utilities.py3flakes.checker.Checker.pushClassScope?4()
-eric5.Utilities.py3flakes.checker.Checker.pushFunctionScope?4()
-eric5.Utilities.py3flakes.checker.Checker.report?4(messageClass, *args, **kwargs)
-eric5.Utilities.py3flakes.checker.Checker.runFunction?4()
-eric5.Utilities.py3flakes.checker.Checker.scope?4()
-eric5.Utilities.py3flakes.checker.Checker.scope?7
-eric5.Utilities.py3flakes.checker.Checker.traceTree?7
-eric5.Utilities.py3flakes.checker.Checker?1(module, filename='(none)')
-eric5.Utilities.py3flakes.checker.ExportBinding.names?4()
-eric5.Utilities.py3flakes.checker.FunctionDefinition.is_property?7
-eric5.Utilities.py3flakes.checker.FunctionScope?1()
-eric5.Utilities.py3flakes.checker.Importation?1(name, source)
-eric5.Utilities.py3flakes.checker.Scope.importStarred?7
-eric5.Utilities.py3flakes.checker.Scope?1()
-eric5.Utilities.py3flakes.checker._MAGIC_GLOBALS?8
-eric5.Utilities.py3flakes.messages.DuplicateArgument.message?7
-eric5.Utilities.py3flakes.messages.DuplicateArgument.message_id?7
-eric5.Utilities.py3flakes.messages.DuplicateArgument?1(filename, lineno, name)
-eric5.Utilities.py3flakes.messages.ImportShadowedByLoopVar.message?7
-eric5.Utilities.py3flakes.messages.ImportShadowedByLoopVar.message_id?7
-eric5.Utilities.py3flakes.messages.ImportShadowedByLoopVar?1(filename, lineno, name, orig_lineno)
-eric5.Utilities.py3flakes.messages.ImportStarUsed.message?7
-eric5.Utilities.py3flakes.messages.ImportStarUsed.message_id?7
-eric5.Utilities.py3flakes.messages.ImportStarUsed?1(filename, lineno, modname)
-eric5.Utilities.py3flakes.messages.LateFutureImport.message?7
-eric5.Utilities.py3flakes.messages.LateFutureImport.message_id?7
-eric5.Utilities.py3flakes.messages.LateFutureImport?1(filename, lineno, names)
-eric5.Utilities.py3flakes.messages.Message.getMessageData?4()
-eric5.Utilities.py3flakes.messages.Message.message?7
-eric5.Utilities.py3flakes.messages.Message.message_args?7
-eric5.Utilities.py3flakes.messages.Message.message_id?7
-eric5.Utilities.py3flakes.messages.Message?1(filename, lineno)
-eric5.Utilities.py3flakes.messages.RedefinedFunction.message?7
-eric5.Utilities.py3flakes.messages.RedefinedFunction.message_id?7
-eric5.Utilities.py3flakes.messages.RedefinedFunction?1(filename, lineno, name, orig_lineno)
-eric5.Utilities.py3flakes.messages.RedefinedWhileUnused.message?7
-eric5.Utilities.py3flakes.messages.RedefinedWhileUnused.message_id?7
-eric5.Utilities.py3flakes.messages.RedefinedWhileUnused?1(filename, lineno, name, orig_lineno)
-eric5.Utilities.py3flakes.messages.UndefinedExport.message?7
-eric5.Utilities.py3flakes.messages.UndefinedExport.message_id?7
-eric5.Utilities.py3flakes.messages.UndefinedExport?1(filename, lineno, name)
-eric5.Utilities.py3flakes.messages.UndefinedLocal.message?7
-eric5.Utilities.py3flakes.messages.UndefinedLocal.message_id?7
-eric5.Utilities.py3flakes.messages.UndefinedLocal?1(filename, lineno, name, orig_lineno)
-eric5.Utilities.py3flakes.messages.UndefinedName.message?7
-eric5.Utilities.py3flakes.messages.UndefinedName.message_id?7
-eric5.Utilities.py3flakes.messages.UndefinedName?1(filename, lineno, name)
-eric5.Utilities.py3flakes.messages.UnusedImport.message?7
-eric5.Utilities.py3flakes.messages.UnusedImport.message_id?7
-eric5.Utilities.py3flakes.messages.UnusedImport?1(filename, lineno, name)
-eric5.Utilities.py3flakes.messages.UnusedVariable.message?7
-eric5.Utilities.py3flakes.messages.UnusedVariable.message_id?7
-eric5.Utilities.py3flakes.messages.UnusedVariable?1(filename, lineno, name)
-eric5.Utilities.py3flakes.translations._messages?8
-eric5.Utilities.py3flakes.translations.getTranslatedFlakesMessage?4(message_id, message_args)
+eric5.Utilities.pyflakes.checker.Checker.AND?7
+eric5.Utilities.pyflakes.checker.Checker.ASSIGN?4(node)
+eric5.Utilities.pyflakes.checker.Checker.AUGASSIGN?4(node)
+eric5.Utilities.pyflakes.checker.Checker.BOOLOP?7
+eric5.Utilities.pyflakes.checker.Checker.CLASSDEF?4(node)
+eric5.Utilities.pyflakes.checker.Checker.COMPREHENSION?7
+eric5.Utilities.pyflakes.checker.Checker.CONTINUE?7
+eric5.Utilities.pyflakes.checker.Checker.DICTCOMP?4(node)
+eric5.Utilities.pyflakes.checker.Checker.EXCEPTHANDLER?4(node)
+eric5.Utilities.pyflakes.checker.Checker.FOR?4(node)
+eric5.Utilities.pyflakes.checker.Checker.FUNCTIONDEF?4(node)
+eric5.Utilities.pyflakes.checker.Checker.GENERATOREXP?4(node)
+eric5.Utilities.pyflakes.checker.Checker.GLOBAL?4(node)
+eric5.Utilities.pyflakes.checker.Checker.IMPORT?4(node)
+eric5.Utilities.pyflakes.checker.Checker.IMPORTFROM?4(node)
+eric5.Utilities.pyflakes.checker.Checker.LAMBDA?4(node)
+eric5.Utilities.pyflakes.checker.Checker.LISTCOMP?4(node)
+eric5.Utilities.pyflakes.checker.Checker.LOAD?7
+eric5.Utilities.pyflakes.checker.Checker.NAME?4(node)
+eric5.Utilities.pyflakes.checker.Checker.NONLOCAL?7
+eric5.Utilities.pyflakes.checker.Checker.NUM?7
+eric5.Utilities.pyflakes.checker.Checker.RETURN?7
+eric5.Utilities.pyflakes.checker.Checker.SETCOMP?7
+eric5.Utilities.pyflakes.checker.Checker.SLICE?7
+eric5.Utilities.pyflakes.checker.Checker.TRY?4(node)
+eric5.Utilities.pyflakes.checker.Checker.TRYEXCEPT?7
+eric5.Utilities.pyflakes.checker.Checker._customBuiltIns?8
+eric5.Utilities.pyflakes.checker.Checker._getDoctestExamples?8
+eric5.Utilities.pyflakes.checker.Checker.addArgs?4()
+eric5.Utilities.pyflakes.checker.Checker.addBinding?4(node, value, reportRedef=True)
+eric5.Utilities.pyflakes.checker.Checker.builtIns?7
+eric5.Utilities.pyflakes.checker.Checker.checkDeadScopes?4()
+eric5.Utilities.pyflakes.checker.Checker.checkUnusedAssignments?4()
+eric5.Utilities.pyflakes.checker.Checker.collectLoopVars?4()
+eric5.Utilities.pyflakes.checker.Checker.deferAssignment?4(callable)
+eric5.Utilities.pyflakes.checker.Checker.deferFunction?4(callable)
+eric5.Utilities.pyflakes.checker.Checker.descendantOf?4(node, ancestors, stop=None)
+eric5.Utilities.pyflakes.checker.Checker.differentForks?4(lnode, rnode)
+eric5.Utilities.pyflakes.checker.Checker.getCommonAncestor?4(lnode, rnode, stop=None)
+eric5.Utilities.pyflakes.checker.Checker.getDocstring?4(node)
+eric5.Utilities.pyflakes.checker.Checker.getNodeHandler?4(node_class)
+eric5.Utilities.pyflakes.checker.Checker.handleChildren?4(tree)
+eric5.Utilities.pyflakes.checker.Checker.handleDoctests?4(node)
+eric5.Utilities.pyflakes.checker.Checker.handleNode?4(node, parent)
+eric5.Utilities.pyflakes.checker.Checker.handleNodeDelete?4(node)
+eric5.Utilities.pyflakes.checker.Checker.handleNodeLoad?4(node)
+eric5.Utilities.pyflakes.checker.Checker.handleNodeStore?4(node)
+eric5.Utilities.pyflakes.checker.Checker.hasParent?4(node, kind)
+eric5.Utilities.pyflakes.checker.Checker.ignore?4(node)
+eric5.Utilities.pyflakes.checker.Checker.isDocstring?4(node)
+eric5.Utilities.pyflakes.checker.Checker.nodeDepth?7
+eric5.Utilities.pyflakes.checker.Checker.offset?7
+eric5.Utilities.pyflakes.checker.Checker.onFork?4(parent, lnode, rnode, items)
+eric5.Utilities.pyflakes.checker.Checker.popScope?4()
+eric5.Utilities.pyflakes.checker.Checker.pushClassScope?4()
+eric5.Utilities.pyflakes.checker.Checker.pushFunctionScope?4()
+eric5.Utilities.pyflakes.checker.Checker.pushScope?4(scopeClass=FunctionScope)
+eric5.Utilities.pyflakes.checker.Checker.report?4(messageClass, *args, **kwargs)
+eric5.Utilities.pyflakes.checker.Checker.runDeferred?4(deferred)
+eric5.Utilities.pyflakes.checker.Checker.runFunction?4()
+eric5.Utilities.pyflakes.checker.Checker.scope?4()
+eric5.Utilities.pyflakes.checker.Checker.traceTree?7
+eric5.Utilities.pyflakes.checker.Checker.withDoctest?7
+eric5.Utilities.pyflakes.checker.Checker?1(tree, filename='(none)', builtins=None)
+eric5.Utilities.pyflakes.checker.FunctionScope.alwaysUsed?7
+eric5.Utilities.pyflakes.checker.FunctionScope.usesLocals?7
+eric5.Utilities.pyflakes.checker.Scope.importStarred?7
+eric5.Utilities.pyflakes.checker._MAGIC_GLOBALS?8
+eric5.Utilities.pyflakes.checker.getNodeName?4(node)
+eric5.Utilities.pyflakes.checker.getNodeType?4(node_class)
+eric5.Utilities.pyflakes.checker.iter_child_nodes?4(node)
+eric5.Utilities.pyflakes.checker.names?4(self)
+eric5.Utilities.pyflakes.checker.unusedAssignments?4(self)
+eric5.Utilities.pyflakes.messages.DoctestSyntaxError.message?7
+eric5.Utilities.pyflakes.messages.DoctestSyntaxError.message_id?7
+eric5.Utilities.pyflakes.messages.DoctestSyntaxError?1(filename, loc, position=None)
+eric5.Utilities.pyflakes.messages.DuplicateArgument.message?7
+eric5.Utilities.pyflakes.messages.DuplicateArgument.message_id?7
+eric5.Utilities.pyflakes.messages.DuplicateArgument?1(filename, loc, name)
+eric5.Utilities.pyflakes.messages.ImportShadowedByLoopVar.message?7
+eric5.Utilities.pyflakes.messages.ImportShadowedByLoopVar.message_id?7
+eric5.Utilities.pyflakes.messages.ImportShadowedByLoopVar?1(filename, loc, name, orig_loc)
+eric5.Utilities.pyflakes.messages.ImportStarUsed.message?7
+eric5.Utilities.pyflakes.messages.ImportStarUsed.message_id?7
+eric5.Utilities.pyflakes.messages.ImportStarUsed?1(filename, loc, modname)
+eric5.Utilities.pyflakes.messages.LateFutureImport.message?7
+eric5.Utilities.pyflakes.messages.LateFutureImport.message_id?7
+eric5.Utilities.pyflakes.messages.LateFutureImport?1(filename, loc, names)
+eric5.Utilities.pyflakes.messages.Message.getMessageData?4()
+eric5.Utilities.pyflakes.messages.Message.message?7
+eric5.Utilities.pyflakes.messages.Message.message_args?7
+eric5.Utilities.pyflakes.messages.Message.message_id?7
+eric5.Utilities.pyflakes.messages.Message?1(filename, loc)
+eric5.Utilities.pyflakes.messages.Redefined.message?7
+eric5.Utilities.pyflakes.messages.Redefined.message_id?7
+eric5.Utilities.pyflakes.messages.Redefined?1(filename, loc, name, orig_loc)
+eric5.Utilities.pyflakes.messages.RedefinedInListComp.message?7
+eric5.Utilities.pyflakes.messages.RedefinedInListComp.message_id?7
+eric5.Utilities.pyflakes.messages.RedefinedInListComp?1(filename, loc, name, orig_loc)
+eric5.Utilities.pyflakes.messages.RedefinedWhileUnused.message?7
+eric5.Utilities.pyflakes.messages.RedefinedWhileUnused.message_id?7
+eric5.Utilities.pyflakes.messages.RedefinedWhileUnused?1(filename, loc, name, orig_loc)
+eric5.Utilities.pyflakes.messages.UndefinedExport.message?7
+eric5.Utilities.pyflakes.messages.UndefinedExport.message_id?7
+eric5.Utilities.pyflakes.messages.UndefinedExport?1(filename, loc, name)
+eric5.Utilities.pyflakes.messages.UndefinedLocal.message?7
+eric5.Utilities.pyflakes.messages.UndefinedLocal.message_id?7
+eric5.Utilities.pyflakes.messages.UndefinedLocal?1(filename, loc, name, orig_loc)
+eric5.Utilities.pyflakes.messages.UndefinedName.message?7
+eric5.Utilities.pyflakes.messages.UndefinedName.message_id?7
+eric5.Utilities.pyflakes.messages.UndefinedName?1(filename, loc, name)
+eric5.Utilities.pyflakes.messages.UnusedImport.message?7
+eric5.Utilities.pyflakes.messages.UnusedImport.message_id?7
+eric5.Utilities.pyflakes.messages.UnusedImport?1(filename, loc, name)
+eric5.Utilities.pyflakes.messages.UnusedVariable.message?7
+eric5.Utilities.pyflakes.messages.UnusedVariable.message_id?7
+eric5.Utilities.pyflakes.messages.UnusedVariable?1(filename, loc, names)
+eric5.Utilities.pyflakes.translations._messages?8
+eric5.Utilities.pyflakes.translations.getTranslatedFlakesMessage?4(message_id, message_args)
 eric5.Utilities.readEncodedFile?4(filename)
 eric5.Utilities.readEncodedFileWithHash?4(filename)
 eric5.Utilities.readStringFromStream?4(stream)
--- a/APIs/Python3/eric5.bas	Wed Jan 15 19:16:06 2014 +0100
+++ b/APIs/Python3/eric5.bas	Thu Jan 16 18:28:34 2014 +0100
@@ -64,6 +64,7 @@
 ChatWidget QWidget Ui_ChatWidget
 ChromeImporter BookmarksImporter
 Class ClbrBaseClasses.Class VisibilityMixin
+ClassDefinition Definition
 ClassItem UMLItem
 ClassModel UMLModel
 ClassScope Scope
@@ -127,11 +128,13 @@
 DebuggerPython3Page ConfigurationPageBase Ui_DebuggerPython3Page
 DebuggerPythonPage ConfigurationPageBase Ui_DebuggerPythonPage
 DebuggerRubyPage ConfigurationPageBase Ui_DebuggerRubyPage
+Definition Binding
 DeleteFilesConfirmationDialog QDialog Ui_DeleteFilesConfirmationDialog
 DiffDialog QWidget Ui_DiffDialog
 DiffReport StandardReport
 DiffWindow E5MainWindow
 DirectorySyncHandler SyncHandler
+DoctestSyntaxError Message
 DownloadAskActionDialog QDialog Ui_DownloadAskActionDialog
 DownloadItem QWidget Ui_DownloadItem
 DownloadManager QDialog Ui_DownloadManager
@@ -260,6 +263,7 @@
 Function ClbrBaseClasses.Function VisibilityMixin
 FunctionDefinition Binding
 FunctionScope Scope
+GeneratorScope Scope
 GotoDialog QDialog Ui_GotoDialog
 Gpg HgExtension
 GpgProjectHelper HgExtensionProjectHelper
@@ -571,7 +575,9 @@
 Rebase HgExtension
 RebaseProjectHelper HgExtensionProjectHelper
 RecursionError OverflowError ValueError
+Redefined Message
 RedefinedFunction Message
+RedefinedInListComp Message
 RedefinedWhileUnused Message
 Redirector QObject
 RemoveBookmarksCommand QUndoCommand
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Wed Jan 15 19:16:06 2014 +0100
+++ b/Documentation/Help/source.qhp	Thu Jan 16 18:28:34 2014 +0100
@@ -1506,11 +1506,8 @@
       <keyword name="BinaryModel.setValue" id="BinaryModel.setValue" ref="eric5.UI.NumbersWidget.html#BinaryModel.setValue" />
       <keyword name="Binding" id="Binding" ref="eric5.Utilities.pyflakes.checker.html#Binding" />
       <keyword name="Binding" id="Binding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding" />
-      <keyword name="Binding (Constructor)" id="Binding (Constructor)" ref="eric5.Utilities.pyflakes.checker.html#Binding.__init__" />
       <keyword name="Binding (Constructor)" id="Binding (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding.__init__" />
-      <keyword name="Binding.__repr__" id="Binding.__repr__" ref="eric5.Utilities.pyflakes.checker.html#Binding.__repr__" />
       <keyword name="Binding.__repr__" id="Binding.__repr__" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding.__repr__" />
-      <keyword name="Binding.__str__" id="Binding.__str__" ref="eric5.Utilities.pyflakes.checker.html#Binding.__str__" />
       <keyword name="Binding.__str__" id="Binding.__str__" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Binding.__str__" />
       <keyword name="BookmarkActionSelectionDialog" id="BookmarkActionSelectionDialog" ref="eric5.Helpviewer.UrlBar.BookmarkActionSelectionDialog.html#BookmarkActionSelectionDialog" />
       <keyword name="BookmarkActionSelectionDialog (Constructor)" id="BookmarkActionSelectionDialog (Constructor)" ref="eric5.Helpviewer.UrlBar.BookmarkActionSelectionDialog.html#BookmarkActionSelectionDialog.__init__" />
@@ -1996,6 +1993,7 @@
       <keyword name="Checker.FOR" id="Checker.FOR" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.FOR" />
       <keyword name="Checker.FUNCTIONDEF" id="Checker.FUNCTIONDEF" ref="eric5.Utilities.pyflakes.checker.html#Checker.FUNCTIONDEF" />
       <keyword name="Checker.FUNCTIONDEF" id="Checker.FUNCTIONDEF" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.FUNCTIONDEF" />
+      <keyword name="Checker.GENERATOREXP" id="Checker.GENERATOREXP" ref="eric5.Utilities.pyflakes.checker.html#Checker.GENERATOREXP" />
       <keyword name="Checker.GLOBAL" id="Checker.GLOBAL" ref="eric5.Utilities.pyflakes.checker.html#Checker.GLOBAL" />
       <keyword name="Checker.GLOBAL" id="Checker.GLOBAL" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.GLOBAL" />
       <keyword name="Checker.IMPORT" id="Checker.IMPORT" ref="eric5.Utilities.pyflakes.checker.html#Checker.IMPORT" />
@@ -2008,8 +2006,7 @@
       <keyword name="Checker.LISTCOMP" id="Checker.LISTCOMP" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.LISTCOMP" />
       <keyword name="Checker.NAME" id="Checker.NAME" ref="eric5.Utilities.pyflakes.checker.html#Checker.NAME" />
       <keyword name="Checker.NAME" id="Checker.NAME" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.NAME" />
-      <keyword name="Checker.STARRED" id="Checker.STARRED" ref="eric5.Utilities.pyflakes.checker.html#Checker.STARRED" />
-      <keyword name="Checker._runDeferred" id="Checker._runDeferred" ref="eric5.Utilities.pyflakes.checker.html#Checker._runDeferred" />
+      <keyword name="Checker.TRY" id="Checker.TRY" ref="eric5.Utilities.pyflakes.checker.html#Checker.TRY" />
       <keyword name="Checker._runDeferred" id="Checker._runDeferred" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker._runDeferred" />
       <keyword name="Checker.addArgs" id="Checker.addArgs" ref="eric5.Utilities.pyflakes.checker.html#Checker.addArgs" />
       <keyword name="Checker.addArgs" id="Checker.addArgs" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.addArgs" />
@@ -2017,13 +2014,13 @@
       <keyword name="Checker.addBinding" id="Checker.addBinding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.addBinding" />
       <keyword name="Checker.build_tokens_line" id="Checker.build_tokens_line" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.build_tokens_line" />
       <keyword name="Checker.build_tokens_line" id="Checker.build_tokens_line" ref="eric5.UtilitiesPython2.pep8.html#Checker.build_tokens_line" />
+      <keyword name="Checker.checkDeadScopes" id="Checker.checkDeadScopes" ref="eric5.Utilities.pyflakes.checker.html#Checker.checkDeadScopes" />
       <keyword name="Checker.checkUnusedAssignments" id="Checker.checkUnusedAssignments" ref="eric5.Utilities.pyflakes.checker.html#Checker.checkUnusedAssignments" />
       <keyword name="Checker.checkUnusedAssignments" id="Checker.checkUnusedAssignments" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.checkUnusedAssignments" />
       <keyword name="Checker.check_all" id="Checker.check_all" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.check_all" />
       <keyword name="Checker.check_all" id="Checker.check_all" ref="eric5.UtilitiesPython2.pep8.html#Checker.check_all" />
       <keyword name="Checker.check_ast" id="Checker.check_ast" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.check_ast" />
       <keyword name="Checker.check_ast" id="Checker.check_ast" ref="eric5.UtilitiesPython2.pep8.html#Checker.check_ast" />
-      <keyword name="Checker.check_dead_scopes" id="Checker.check_dead_scopes" ref="eric5.Utilities.pyflakes.checker.html#Checker.check_dead_scopes" />
       <keyword name="Checker.check_dead_scopes" id="Checker.check_dead_scopes" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.check_dead_scopes" />
       <keyword name="Checker.check_logical" id="Checker.check_logical" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.check_logical" />
       <keyword name="Checker.check_logical" id="Checker.check_logical" ref="eric5.UtilitiesPython2.pep8.html#Checker.check_logical" />
@@ -2035,24 +2032,34 @@
       <keyword name="Checker.deferAssignment" id="Checker.deferAssignment" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.deferAssignment" />
       <keyword name="Checker.deferFunction" id="Checker.deferFunction" ref="eric5.Utilities.pyflakes.checker.html#Checker.deferFunction" />
       <keyword name="Checker.deferFunction" id="Checker.deferFunction" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.deferFunction" />
+      <keyword name="Checker.descendantOf" id="Checker.descendantOf" ref="eric5.Utilities.pyflakes.checker.html#Checker.descendantOf" />
+      <keyword name="Checker.differentForks" id="Checker.differentForks" ref="eric5.Utilities.pyflakes.checker.html#Checker.differentForks" />
       <keyword name="Checker.generate_tokens" id="Checker.generate_tokens" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.generate_tokens" />
       <keyword name="Checker.generate_tokens" id="Checker.generate_tokens" ref="eric5.UtilitiesPython2.pep8.html#Checker.generate_tokens" />
-      <keyword name="Checker.handleAssignName" id="Checker.handleAssignName" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleAssignName" />
-      <keyword name="Checker.handleBody" id="Checker.handleBody" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleBody" />
+      <keyword name="Checker.getCommonAncestor" id="Checker.getCommonAncestor" ref="eric5.Utilities.pyflakes.checker.html#Checker.getCommonAncestor" />
+      <keyword name="Checker.getDocstring" id="Checker.getDocstring" ref="eric5.Utilities.pyflakes.checker.html#Checker.getDocstring" />
+      <keyword name="Checker.getNodeHandler" id="Checker.getNodeHandler" ref="eric5.Utilities.pyflakes.checker.html#Checker.getNodeHandler" />
       <keyword name="Checker.handleChildren" id="Checker.handleChildren" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleChildren" />
       <keyword name="Checker.handleChildren" id="Checker.handleChildren" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.handleChildren" />
+      <keyword name="Checker.handleDoctests" id="Checker.handleDoctests" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleDoctests" />
       <keyword name="Checker.handleNode" id="Checker.handleNode" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleNode" />
       <keyword name="Checker.handleNode" id="Checker.handleNode" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.handleNode" />
+      <keyword name="Checker.handleNodeDelete" id="Checker.handleNodeDelete" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleNodeDelete" />
+      <keyword name="Checker.handleNodeLoad" id="Checker.handleNodeLoad" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleNodeLoad" />
+      <keyword name="Checker.handleNodeStore" id="Checker.handleNodeStore" ref="eric5.Utilities.pyflakes.checker.html#Checker.handleNodeStore" />
+      <keyword name="Checker.hasParent" id="Checker.hasParent" ref="eric5.Utilities.pyflakes.checker.html#Checker.hasParent" />
       <keyword name="Checker.ignore" id="Checker.ignore" ref="eric5.Utilities.pyflakes.checker.html#Checker.ignore" />
       <keyword name="Checker.ignore" id="Checker.ignore" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.ignore" />
       <keyword name="Checker.isDocstring" id="Checker.isDocstring" ref="eric5.Utilities.pyflakes.checker.html#Checker.isDocstring" />
       <keyword name="Checker.isDocstring" id="Checker.isDocstring" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.isDocstring" />
+      <keyword name="Checker.onFork" id="Checker.onFork" ref="eric5.Utilities.pyflakes.checker.html#Checker.onFork" />
       <keyword name="Checker.popScope" id="Checker.popScope" ref="eric5.Utilities.pyflakes.checker.html#Checker.popScope" />
       <keyword name="Checker.popScope" id="Checker.popScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.popScope" />
       <keyword name="Checker.pushClassScope" id="Checker.pushClassScope" ref="eric5.Utilities.pyflakes.checker.html#Checker.pushClassScope" />
       <keyword name="Checker.pushClassScope" id="Checker.pushClassScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.pushClassScope" />
       <keyword name="Checker.pushFunctionScope" id="Checker.pushFunctionScope" ref="eric5.Utilities.pyflakes.checker.html#Checker.pushFunctionScope" />
       <keyword name="Checker.pushFunctionScope" id="Checker.pushFunctionScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.pushFunctionScope" />
+      <keyword name="Checker.pushScope" id="Checker.pushScope" ref="eric5.Utilities.pyflakes.checker.html#Checker.pushScope" />
       <keyword name="Checker.readline" id="Checker.readline" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.readline" />
       <keyword name="Checker.readline" id="Checker.readline" ref="eric5.UtilitiesPython2.pep8.html#Checker.readline" />
       <keyword name="Checker.readline_check_physical" id="Checker.readline_check_physical" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.readline_check_physical" />
@@ -2061,6 +2068,7 @@
       <keyword name="Checker.report" id="Checker.report" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.report" />
       <keyword name="Checker.report_invalid_syntax" id="Checker.report_invalid_syntax" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.report_invalid_syntax" />
       <keyword name="Checker.report_invalid_syntax" id="Checker.report_invalid_syntax" ref="eric5.UtilitiesPython2.pep8.html#Checker.report_invalid_syntax" />
+      <keyword name="Checker.runDeferred" id="Checker.runDeferred" ref="eric5.Utilities.pyflakes.checker.html#Checker.runDeferred" />
       <keyword name="Checker.runFunction" id="Checker.runFunction" ref="eric5.Utilities.pyflakes.checker.html#Checker.runFunction" />
       <keyword name="Checker.runFunction" id="Checker.runFunction" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Checker.runFunction" />
       <keyword name="Checker.run_check" id="Checker.run_check" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#Checker.run_check" />
@@ -2093,6 +2101,7 @@
       <keyword name="Class.getMethod" id="Class.getMethod" ref="eric5.Utilities.ModuleParser.html#Class.getMethod" />
       <keyword name="Class.setEndLine" id="Class.setEndLine" ref="eric5.Utilities.ModuleParser.html#Class.setEndLine" />
       <keyword name="ClassBrowsers (Package)" id="ClassBrowsers (Package)" ref="index-eric5.Utilities.ClassBrowsers.html" />
+      <keyword name="ClassDefinition" id="ClassDefinition" ref="eric5.Utilities.pyflakes.checker.html#ClassDefinition" />
       <keyword name="ClassItem" id="ClassItem" ref="eric5.Graphics.ClassItem.html#ClassItem" />
       <keyword name="ClassItem (Constructor)" id="ClassItem (Constructor)" ref="eric5.Graphics.ClassItem.html#ClassItem.__init__" />
       <keyword name="ClassItem (Module)" id="ClassItem (Module)" ref="eric5.Graphics.ClassItem.html" />
@@ -3381,6 +3390,7 @@
       <keyword name="DebuggerRubyPage.on_rubyInterpreterButton_clicked" id="DebuggerRubyPage.on_rubyInterpreterButton_clicked" ref="eric5.Preferences.ConfigurationPages.DebuggerRubyPage.html#DebuggerRubyPage.on_rubyInterpreterButton_clicked" />
       <keyword name="DebuggerRubyPage.save" id="DebuggerRubyPage.save" ref="eric5.Preferences.ConfigurationPages.DebuggerRubyPage.html#DebuggerRubyPage.save" />
       <keyword name="DefaultSearchEngines (Package)" id="DefaultSearchEngines (Package)" ref="index-eric5.Helpviewer.OpenSearch.DefaultSearchEngines.html" />
+      <keyword name="Definition" id="Definition" ref="eric5.Utilities.pyflakes.checker.html#Definition" />
       <keyword name="DeleteFilesConfirmationDialog" id="DeleteFilesConfirmationDialog" ref="eric5.UI.DeleteFilesConfirmationDialog.html#DeleteFilesConfirmationDialog" />
       <keyword name="DeleteFilesConfirmationDialog (Constructor)" id="DeleteFilesConfirmationDialog (Constructor)" ref="eric5.UI.DeleteFilesConfirmationDialog.html#DeleteFilesConfirmationDialog.__init__" />
       <keyword name="DeleteFilesConfirmationDialog (Module)" id="DeleteFilesConfirmationDialog (Module)" ref="eric5.UI.DeleteFilesConfirmationDialog.html" />
@@ -3531,6 +3541,8 @@
       <keyword name="DocStyleContext.ssource" id="DocStyleContext.ssource" ref="eric5.UtilitiesPython2.DocStyleCheckerPy2.html#DocStyleContext.ssource" />
       <keyword name="DocStyleContext.start" id="DocStyleContext.start" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleContext.start" />
       <keyword name="DocStyleContext.start" id="DocStyleContext.start" ref="eric5.UtilitiesPython2.DocStyleCheckerPy2.html#DocStyleContext.start" />
+      <keyword name="DoctestSyntaxError" id="DoctestSyntaxError" ref="eric5.Utilities.pyflakes.messages.html#DoctestSyntaxError" />
+      <keyword name="DoctestSyntaxError (Constructor)" id="DoctestSyntaxError (Constructor)" ref="eric5.Utilities.pyflakes.messages.html#DoctestSyntaxError.__init__" />
       <keyword name="DocumentationPlugins (Package)" id="DocumentationPlugins (Package)" ref="index-eric5.Plugins.DocumentationPlugins.html" />
       <keyword name="DocumentationTools (Package)" id="DocumentationTools (Package)" ref="index-eric5.DocumentationTools.html" />
       <keyword name="Download (Package)" id="Download (Package)" ref="index-eric5.Helpviewer.Download.html" />
@@ -4824,7 +4836,6 @@
       <keyword name="ExceptionsFilterDialog.on_exceptionList_itemSelectionChanged" id="ExceptionsFilterDialog.on_exceptionList_itemSelectionChanged" ref="eric5.Debugger.ExceptionsFilterDialog.html#ExceptionsFilterDialog.on_exceptionList_itemSelectionChanged" />
       <keyword name="ExportBinding" id="ExportBinding" ref="eric5.Utilities.pyflakes.checker.html#ExportBinding" />
       <keyword name="ExportBinding" id="ExportBinding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#ExportBinding" />
-      <keyword name="ExportBinding.names" id="ExportBinding.names" ref="eric5.Utilities.pyflakes.checker.html#ExportBinding.names" />
       <keyword name="ExportBinding.names" id="ExportBinding.names" ref="eric5.UtilitiesPython2.py2flakes.checker.html#ExportBinding.names" />
       <keyword name="ExporterBase" id="ExporterBase" ref="eric5.QScintilla.Exporters.ExporterBase.html#ExporterBase" />
       <keyword name="ExporterBase (Constructor)" id="ExporterBase (Constructor)" ref="eric5.QScintilla.Exporters.ExporterBase.html#ExporterBase.__init__" />
@@ -5109,8 +5120,8 @@
       <keyword name="FunctionDefinition" id="FunctionDefinition" ref="eric5.UtilitiesPython2.py2flakes.checker.html#FunctionDefinition" />
       <keyword name="FunctionScope" id="FunctionScope" ref="eric5.Utilities.pyflakes.checker.html#FunctionScope" />
       <keyword name="FunctionScope" id="FunctionScope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#FunctionScope" />
-      <keyword name="FunctionScope (Constructor)" id="FunctionScope (Constructor)" ref="eric5.Utilities.pyflakes.checker.html#FunctionScope.__init__" />
       <keyword name="FunctionScope (Constructor)" id="FunctionScope (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#FunctionScope.__init__" />
+      <keyword name="GeneratorScope" id="GeneratorScope" ref="eric5.Utilities.pyflakes.checker.html#GeneratorScope" />
       <keyword name="Globals (Package)" id="Globals (Package)" ref="index-eric5.Globals.html" />
       <keyword name="GotoDialog" id="GotoDialog" ref="eric5.QScintilla.GotoDialog.html#GotoDialog" />
       <keyword name="GotoDialog (Constructor)" id="GotoDialog (Constructor)" ref="eric5.QScintilla.GotoDialog.html#GotoDialog.__init__" />
@@ -6835,7 +6846,6 @@
       <keyword name="ImportStarUsed (Constructor)" id="ImportStarUsed (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#ImportStarUsed.__init__" />
       <keyword name="Importation" id="Importation" ref="eric5.Utilities.pyflakes.checker.html#Importation" />
       <keyword name="Importation" id="Importation" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Importation" />
-      <keyword name="Importation (Constructor)" id="Importation (Constructor)" ref="eric5.Utilities.pyflakes.checker.html#Importation.__init__" />
       <keyword name="Importation (Constructor)" id="Importation (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Importation.__init__" />
       <keyword name="ImportsDiagramBuilder" id="ImportsDiagramBuilder" ref="eric5.Graphics.ImportsDiagramBuilder.html#ImportsDiagramBuilder" />
       <keyword name="ImportsDiagramBuilder (Constructor)" id="ImportsDiagramBuilder (Constructor)" ref="eric5.Graphics.ImportsDiagramBuilder.html#ImportsDiagramBuilder.__init__" />
@@ -9622,10 +9632,12 @@
       <keyword name="RebaseProjectHelper.initMenu" id="RebaseProjectHelper.initMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.ProjectHelper.html#RebaseProjectHelper.initMenu" />
       <keyword name="RebaseProjectHelper.menuTitle" id="RebaseProjectHelper.menuTitle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.ProjectHelper.html#RebaseProjectHelper.menuTitle" />
       <keyword name="RecursionError" id="RecursionError" ref="eric5.Graphics.GraphicsUtilities.html#RecursionError" />
-      <keyword name="RedefinedFunction" id="RedefinedFunction" ref="eric5.Utilities.pyflakes.messages.html#RedefinedFunction" />
+      <keyword name="Redefined" id="Redefined" ref="eric5.Utilities.pyflakes.messages.html#Redefined" />
+      <keyword name="Redefined (Constructor)" id="Redefined (Constructor)" ref="eric5.Utilities.pyflakes.messages.html#Redefined.__init__" />
       <keyword name="RedefinedFunction" id="RedefinedFunction" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedFunction" />
-      <keyword name="RedefinedFunction (Constructor)" id="RedefinedFunction (Constructor)" ref="eric5.Utilities.pyflakes.messages.html#RedefinedFunction.__init__" />
       <keyword name="RedefinedFunction (Constructor)" id="RedefinedFunction (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedFunction.__init__" />
+      <keyword name="RedefinedInListComp" id="RedefinedInListComp" ref="eric5.Utilities.pyflakes.messages.html#RedefinedInListComp" />
+      <keyword name="RedefinedInListComp (Constructor)" id="RedefinedInListComp (Constructor)" ref="eric5.Utilities.pyflakes.messages.html#RedefinedInListComp.__init__" />
       <keyword name="RedefinedWhileUnused" id="RedefinedWhileUnused" ref="eric5.Utilities.pyflakes.messages.html#RedefinedWhileUnused" />
       <keyword name="RedefinedWhileUnused" id="RedefinedWhileUnused" ref="eric5.UtilitiesPython2.py2flakes.messages.html#RedefinedWhileUnused" />
       <keyword name="RedefinedWhileUnused (Constructor)" id="RedefinedWhileUnused (Constructor)" ref="eric5.Utilities.pyflakes.messages.html#RedefinedWhileUnused.__init__" />
@@ -9665,9 +9677,7 @@
       <keyword name="SchemeAccessHandler.createRequest" id="SchemeAccessHandler.createRequest" ref="eric5.Helpviewer.Network.SchemeAccessHandler.html#SchemeAccessHandler.createRequest" />
       <keyword name="Scope" id="Scope" ref="eric5.Utilities.pyflakes.checker.html#Scope" />
       <keyword name="Scope" id="Scope" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Scope" />
-      <keyword name="Scope (Constructor)" id="Scope (Constructor)" ref="eric5.Utilities.pyflakes.checker.html#Scope.__init__" />
       <keyword name="Scope (Constructor)" id="Scope (Constructor)" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Scope.__init__" />
-      <keyword name="Scope.__repr__" id="Scope.__repr__" ref="eric5.Utilities.pyflakes.checker.html#Scope.__repr__" />
       <keyword name="Scope.__repr__" id="Scope.__repr__" ref="eric5.UtilitiesPython2.py2flakes.checker.html#Scope.__repr__" />
       <keyword name="SearchReplaceSlidingWidget" id="SearchReplaceSlidingWidget" ref="eric5.QScintilla.SearchReplaceWidget.html#SearchReplaceSlidingWidget" />
       <keyword name="SearchReplaceSlidingWidget (Constructor)" id="SearchReplaceSlidingWidget (Constructor)" ref="eric5.QScintilla.SearchReplaceWidget.html#SearchReplaceSlidingWidget.__init__" />
@@ -11753,7 +11763,6 @@
       <keyword name="UMLSceneSizeDialog.getData" id="UMLSceneSizeDialog.getData" ref="eric5.Graphics.UMLSceneSizeDialog.html#UMLSceneSizeDialog.getData" />
       <keyword name="Uid" id="Uid" ref="eric5.Utilities.binplistlib.html#Uid" />
       <keyword name="Uid.__repr__" id="Uid.__repr__" ref="eric5.Utilities.binplistlib.html#Uid.__repr__" />
-      <keyword name="UnBinding" id="UnBinding" ref="eric5.Utilities.pyflakes.checker.html#UnBinding" />
       <keyword name="UnBinding" id="UnBinding" ref="eric5.UtilitiesPython2.py2flakes.checker.html#UnBinding" />
       <keyword name="UndefinedExport" id="UndefinedExport" ref="eric5.Utilities.pyflakes.messages.html#UndefinedExport" />
       <keyword name="UndefinedExport" id="UndefinedExport" ref="eric5.UtilitiesPython2.py2flakes.messages.html#UndefinedExport" />
@@ -12768,13 +12777,19 @@
       <keyword name="__getMasterPassword" id="__getMasterPassword" ref="eric5.Utilities.crypto.__init__.html#__getMasterPassword" />
       <keyword name="__getPygmentsLexer" id="__getPygmentsLexer" ref="eric5.QScintilla.Lexers.__init__.html#__getPygmentsLexer" />
       <keyword name="__initChannelModesDict" id="__initChannelModesDict" ref="eric5.Network.IRC.IrcUtilities.html#__initChannelModesDict" />
+      <keyword name="__init__" id="__init__" ref="eric5.Utilities.pyflakes.checker.html#__init__" />
+      <keyword name="__init___1" id="__init___1" ref="eric5.Utilities.pyflakes.checker.html#__init___1" />
+      <keyword name="__init___2" id="__init___2" ref="eric5.Utilities.pyflakes.checker.html#__init___2" />
       <keyword name="__messageBox" id="__messageBox" ref="eric5.E5Gui.E5MessageBox.html#__messageBox" />
       <keyword name="__readShortcut" id="__readShortcut" ref="eric5.Preferences.Shortcuts.html#__readShortcut" />
       <keyword name="__render" id="__render" ref="eric5.Helpviewer.HelpSnap.html#__render" />
       <keyword name="__reorderFilter" id="__reorderFilter" ref="eric5.E5Gui.E5FileDialog.html#__reorderFilter" />
+      <keyword name="__repr__" id="__repr__" ref="eric5.Utilities.pyflakes.checker.html#__repr__" />
+      <keyword name="__repr___1" id="__repr___1" ref="eric5.Utilities.pyflakes.checker.html#__repr___1" />
       <keyword name="__saveShortcut" id="__saveShortcut" ref="eric5.Preferences.Shortcuts.html#__saveShortcut" />
       <keyword name="__setAction" id="__setAction" ref="eric5.Preferences.Shortcuts.html#__setAction" />
       <keyword name="__showwarning" id="__showwarning" ref="eric5.Utilities.__init__.html#__showwarning" />
+      <keyword name="__str__" id="__str__" ref="eric5.Utilities.pyflakes.checker.html#__str__" />
       <keyword name="_add_check" id="_add_check" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#_add_check" />
       <keyword name="_add_check" id="_add_check" ref="eric5.UtilitiesPython2.pep8.html#_add_check" />
       <keyword name="_buildChildrenLists" id="_buildChildrenLists" ref="eric5.Graphics.GraphicsUtilities.html#_buildChildrenLists" />
@@ -13062,6 +13077,9 @@
       <keyword name="getLexer" id="getLexer" ref="eric5.QScintilla.Lexers.__init__.html#getLexer" />
       <keyword name="getMessage" id="getMessage" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#getMessage" />
       <keyword name="getMultiProject" id="getMultiProject" ref="eric5.Preferences.__init__.html#getMultiProject" />
+      <keyword name="getNodeName" id="getNodeName" ref="eric5.Utilities.pyflakes.checker.html#getNodeName" />
+      <keyword name="getNodeType" id="getNodeType" ref="eric5.Utilities.pyflakes.checker.html#getNodeType" />
+      <keyword name="getNodeType_1" id="getNodeType_1" ref="eric5.Utilities.pyflakes.checker.html#getNodeType_1" />
       <keyword name="getOpenFileFiltersList" id="getOpenFileFiltersList" ref="eric5.QScintilla.Lexers.__init__.html#getOpenFileFiltersList" />
       <keyword name="getOpenFileName" id="getOpenFileName" ref="eric5.E5Gui.E5FileDialog.html#getOpenFileName" />
       <keyword name="getOpenFileNameAndFilter" id="getOpenFileNameAndFilter" ref="eric5.E5Gui.E5FileDialog.html#getOpenFileNameAndFilter" />
@@ -13177,6 +13195,7 @@
       <keyword name="is_stream_binary_plist" id="is_stream_binary_plist" ref="eric5.Utilities.binplistlib.html#is_stream_binary_plist" />
       <keyword name="isatty" id="isatty" ref="eric5.DebugClients.Ruby.AsyncFile.html#isatty" />
       <keyword name="isinpath" id="isinpath" ref="eric5.Utilities.__init__.html#isinpath" />
+      <keyword name="iter_child_nodes" id="iter_child_nodes" ref="eric5.Utilities.pyflakes.checker.html#iter_child_nodes" />
       <keyword name="iter_child_nodes" id="iter_child_nodes" ref="eric5.UtilitiesPython2.py2flakes.checker.html#iter_child_nodes" />
       <keyword name="joinext" id="joinext" ref="eric5.Utilities.__init__.html#joinext" />
       <keyword name="jsclbr (Module)" id="jsclbr (Module)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html" />
@@ -13227,6 +13246,7 @@
       <keyword name="missing_whitespace_around_operator" id="missing_whitespace_around_operator" ref="eric5.UtilitiesPython2.pep8.html#missing_whitespace_around_operator" />
       <keyword name="mute_string" id="mute_string" ref="eric5.Plugins.CheckerPlugins.CodeStyleChecker.pep8.html#mute_string" />
       <keyword name="mute_string" id="mute_string" ref="eric5.UtilitiesPython2.pep8.html#mute_string" />
+      <keyword name="names" id="names" ref="eric5.Utilities.pyflakes.checker.html#names" />
       <keyword name="normabsjoinpath" id="normabsjoinpath" ref="eric5.Utilities.__init__.html#normabsjoinpath" />
       <keyword name="normabspath" id="normabspath" ref="eric5.Utilities.__init__.html#normabspath" />
       <keyword name="normalizeCode" id="normalizeCode" ref="eric5.UtilitiesPython2.Tools.html#normalizeCode" />
@@ -13423,6 +13443,7 @@
       <keyword name="uninstall (Module)" id="uninstall (Module)" ref="eric5.uninstall.html" />
       <keyword name="uninstallEric" id="uninstallEric" ref="eric5.uninstall.html#uninstallEric" />
       <keyword name="unregisterLexer" id="unregisterLexer" ref="eric5.QScintilla.Lexers.__init__.html#unregisterLexer" />
+      <keyword name="unusedAssignments" id="unusedAssignments" ref="eric5.Utilities.pyflakes.checker.html#unusedAssignments" />
       <keyword name="usage" id="usage" ref="eric5.Toolbox.Startup.html#usage" />
       <keyword name="usage" id="usage" ref="eric5.eric5_api.html#usage" />
       <keyword name="usage" id="usage" ref="eric5.eric5_doc.html#usage" />
@@ -14217,9 +14238,6 @@
       <file>eric5.Utilities.crypto.__init__.html</file>
       <file>eric5.Utilities.crypto.py3AES.html</file>
       <file>eric5.Utilities.crypto.py3PBKDF2.html</file>
-      <file>eric5.Utilities.py3flakes.checker.html</file>
-      <file>eric5.Utilities.py3flakes.messages.html</file>
-      <file>eric5.Utilities.py3flakes.translations.html</file>
       <file>eric5.Utilities.pyflakes.checker.html</file>
       <file>eric5.Utilities.pyflakes.messages.html</file>
       <file>eric5.Utilities.pyflakes.translations.html</file>
@@ -14371,7 +14389,6 @@
       <file>index-eric5.Utilities.ClassBrowsers.html</file>
       <file>index-eric5.Utilities.crypto.html</file>
       <file>index-eric5.Utilities.html</file>
-      <file>index-eric5.Utilities.py3flakes.html</file>
       <file>index-eric5.Utilities.pyflakes.html</file>
       <file>index-eric5.UtilitiesPython2.html</file>
       <file>index-eric5.UtilitiesPython2.py2flakes.html</file>
--- a/Documentation/Source/eric5.Utilities.pyflakes.checker.html	Wed Jan 15 19:16:06 2014 +0100
+++ b/Documentation/Source/eric5.Utilities.pyflakes.checker.html	Thu Jan 16 18:28:34 2014 +0100
@@ -40,9 +40,15 @@
 <td><a href="#Checker">Checker</a></td>
 <td>Class to check the cleanliness and sanity of Python code.</td>
 </tr><tr>
+<td><a href="#ClassDefinition">ClassDefinition</a></td>
+<td>Represents a class definition.</td>
+</tr><tr>
 <td><a href="#ClassScope">ClassScope</a></td>
 <td>Class representing a name scope for a class.</td>
 </tr><tr>
+<td><a href="#Definition">Definition</a></td>
+<td>A binding that defines a function or a class.</td>
+</tr><tr>
 <td><a href="#ExportBinding">ExportBinding</a></td>
 <td>A binding created by an __all__ assignment.</td>
 </tr><tr>
@@ -52,6 +58,9 @@
 <td><a href="#FunctionScope">FunctionScope</a></td>
 <td>Class representing a name scope for a function.</td>
 </tr><tr>
+<td><a href="#GeneratorScope">GeneratorScope</a></td>
+<td>Class representing a name scope for a generator function.</td>
+</tr><tr>
 <td><a href="#Importation">Importation</a></td>
 <td>A binding created by an import statement.</td>
 </tr><tr>
@@ -60,14 +69,47 @@
 </tr><tr>
 <td><a href="#Scope">Scope</a></td>
 <td>Class defining the scope base class.</td>
-</tr><tr>
-<td><a href="#UnBinding">UnBinding</a></td>
-<td>Created by the 'del' operator.</td>
 </tr>
 </table>
 <h3>Functions</h3>
 <table>
-<tr><td>None</td></tr>
+<tr>
+<td><a href="#__init__">__init__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#__init___1">__init__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#__init___2">__init__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#__repr__">__repr__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#__repr___1">__repr__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#__str__">__str__</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#getNodeName">getNodeName</a></td>
+<td>Module function for getting the name of a node.</td>
+</tr><tr>
+<td><a href="#getNodeType">getNodeType</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#getNodeType_1">getNodeType</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#iter_child_nodes">iter_child_nodes</a></td>
+<td>Yield all direct child nodes of *node*, that is, all fields that are nodes and all items of fields that are lists of nodes.</td>
+</tr><tr>
+<td><a href="#names">names</a></td>
+<td>Return a list of the names referenced by this binding.</td>
+</tr><tr>
+<td><a href="#unusedAssignments">unusedAssignments</a></td>
+<td>Return a generator for the assignments which have not been used.</td>
+</tr>
 </table>
 <hr /><hr />
 <a NAME="Argument" ID="Argument"></a>
@@ -147,30 +189,12 @@
 </table>
 <h3>Methods</h3>
 <table>
-<tr>
-<td><a href="#Binding.__init__">Binding</a></td>
-<td></td>
-</tr><tr>
-<td><a href="#Binding.__repr__">__repr__</a></td>
-<td></td>
-</tr><tr>
-<td><a href="#Binding.__str__">__str__</a></td>
-<td></td>
-</tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Static Methods</h3>
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="Binding.__init__" ID="Binding.__init__"></a>
-<h4>Binding (Constructor)</h4>
-<b>Binding</b>(<i>name, source</i>)
-<a NAME="Binding.__repr__" ID="Binding.__repr__"></a>
-<h4>Binding.__repr__</h4>
-<b>__repr__</b>(<i></i>)
-<a NAME="Binding.__str__" ID="Binding.__str__"></a>
-<h4>Binding.__str__</h4>
-<b>__str__</b>(<i></i>)
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -183,7 +207,7 @@
 object
 <h3>Class Attributes</h3>
 <table>
-<tr><td>ATTRIBUTES</td></tr><tr><td>BOOLOP</td></tr><tr><td>CALL</td></tr><tr><td>COMPREHENSION</td></tr><tr><td>INVERT</td></tr><tr><td>ISNOT</td></tr><tr><td>LOAD</td></tr><tr><td>MOD</td></tr><tr><td>NONLOCAL</td></tr><tr><td>PASS</td></tr><tr><td>RETURN</td></tr><tr><td>SETCOMP</td></tr><tr><td>SLICE</td></tr><tr><td>TRY</td></tr><tr><td>nodeDepth</td></tr><tr><td>scope</td></tr><tr><td>traceTree</td></tr>
+<tr><td>AND</td></tr><tr><td>BOOLOP</td></tr><tr><td>COMPREHENSION</td></tr><tr><td>CONTINUE</td></tr><tr><td>LOAD</td></tr><tr><td>NONLOCAL</td></tr><tr><td>NUM</td></tr><tr><td>RETURN</td></tr><tr><td>SETCOMP</td></tr><tr><td>SLICE</td></tr><tr><td>TRYEXCEPT</td></tr><tr><td>_customBuiltIns</td></tr><tr><td>_getDoctestExamples</td></tr><tr><td>builtIns</td></tr><tr><td>nodeDepth</td></tr><tr><td>offset</td></tr><tr><td>traceTree</td></tr><tr><td>withDoctest</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -216,6 +240,9 @@
 <td><a href="#Checker.FUNCTIONDEF">FUNCTIONDEF</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#Checker.GENERATOREXP">GENERATOREXP</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.GLOBAL">GLOBAL</a></td>
 <td>Keep track of globals declarations.</td>
 </tr><tr>
@@ -234,24 +261,21 @@
 <td><a href="#Checker.NAME">NAME</a></td>
 <td>Handle occurrence of Name (which can be a load/store/delete access.)</td>
 </tr><tr>
-<td><a href="#Checker.STARRED">STARRED</a></td>
+<td><a href="#Checker.TRY">TRY</a></td>
 <td></td>
 </tr><tr>
-<td><a href="#Checker._runDeferred">_runDeferred</a></td>
-<td>Run the callables in deferred using their associated scope stack.</td>
-</tr><tr>
 <td><a href="#Checker.addArgs">addArgs</a></td>
 <td></td>
 </tr><tr>
 <td><a href="#Checker.addBinding">addBinding</a></td>
 <td>Called when a binding is altered.</td>
 </tr><tr>
+<td><a href="#Checker.checkDeadScopes">checkDeadScopes</a></td>
+<td>Look at scopes which have been fully examined and report names in them which were imported but unused.</td>
+</tr><tr>
 <td><a href="#Checker.checkUnusedAssignments">checkUnusedAssignments</a></td>
 <td>Check to see if any assignments have not been used.</td>
 </tr><tr>
-<td><a href="#Checker.check_dead_scopes">check_dead_scopes</a></td>
-<td>Look at scopes which have been fully examined and report names in them which were imported but unused.</td>
-</tr><tr>
 <td><a href="#Checker.collectLoopVars">collectLoopVars</a></td>
 <td></td>
 </tr><tr>
@@ -261,24 +285,51 @@
 <td><a href="#Checker.deferFunction">deferFunction</a></td>
 <td>Schedule a function handler to be called just before completion.</td>
 </tr><tr>
-<td><a href="#Checker.handleAssignName">handleAssignName</a></td>
+<td><a href="#Checker.descendantOf">descendantOf</a></td>
 <td></td>
 </tr><tr>
-<td><a href="#Checker.handleBody">handleBody</a></td>
+<td><a href="#Checker.differentForks">differentForks</a></td>
+<td>True, if lnode and rnode are located on different forks of IF/TRY</td>
+</tr><tr>
+<td><a href="#Checker.getCommonAncestor">getCommonAncestor</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.getDocstring">getDocstring</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.getNodeHandler">getNodeHandler</a></td>
 <td></td>
 </tr><tr>
 <td><a href="#Checker.handleChildren">handleChildren</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#Checker.handleDoctests">handleDoctests</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.handleNode">handleNode</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#Checker.handleNodeDelete">handleNodeDelete</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleNodeLoad">handleNodeLoad</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.handleNodeStore">handleNodeStore</a></td>
+<td></td>
+</tr><tr>
+<td><a href="#Checker.hasParent">hasParent</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.ignore">ignore</a></td>
 <td></td>
 </tr><tr>
 <td><a href="#Checker.isDocstring">isDocstring</a></td>
 <td>Determine if the given node is a docstring, as long as it is at the correct place in the node tree.</td>
 </tr><tr>
+<td><a href="#Checker.onFork">onFork</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.popScope">popScope</a></td>
 <td></td>
 </tr><tr>
@@ -288,9 +339,15 @@
 <td><a href="#Checker.pushFunctionScope">pushFunctionScope</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#Checker.pushScope">pushScope</a></td>
+<td></td>
+</tr><tr>
 <td><a href="#Checker.report">report</a></td>
 <td></td>
 </tr><tr>
+<td><a href="#Checker.runDeferred">runDeferred</a></td>
+<td>Run the callables in deferred using their associated scope stack.</td>
+</tr><tr>
 <td><a href="#Checker.runFunction">runFunction</a></td>
 <td></td>
 </tr><tr>
@@ -304,16 +361,19 @@
 </table>
 <a NAME="Checker.__init__" ID="Checker.__init__"></a>
 <h4>Checker (Constructor)</h4>
-<b>Checker</b>(<i>module, filename='(none)'</i>)
+<b>Checker</b>(<i>tree, filename='(none)', builtins=None</i>)
 <p>
         Constructor
 </p><dl>
-<dt><i>module</i></dt>
+<dt><i>tree</i></dt>
 <dd>
 parsed module tree or module source code
 </dd><dt><i>filename</i></dt>
 <dd>
 name of the module file (string)
+</dd><dt><i>builtins</i></dt>
+<dd>
+set of names to be treated as builtins (set of string)
 </dd>
 </dl><a NAME="Checker.ASSIGN" ID="Checker.ASSIGN"></a>
 <h4>Checker.ASSIGN</h4>
@@ -342,6 +402,9 @@
 </p><a NAME="Checker.FUNCTIONDEF" ID="Checker.FUNCTIONDEF"></a>
 <h4>Checker.FUNCTIONDEF</h4>
 <b>FUNCTIONDEF</b>(<i>node</i>)
+<a NAME="Checker.GENERATOREXP" ID="Checker.GENERATOREXP"></a>
+<h4>Checker.GENERATOREXP</h4>
+<b>GENERATOREXP</b>(<i>node</i>)
 <a NAME="Checker.GLOBAL" ID="Checker.GLOBAL"></a>
 <h4>Checker.GLOBAL</h4>
 <b>GLOBAL</b>(<i>node</i>)
@@ -364,47 +427,34 @@
 <b>NAME</b>(<i>node</i>)
 <p>
         Handle occurrence of Name (which can be a load/store/delete access.)
-</p><a NAME="Checker.STARRED" ID="Checker.STARRED"></a>
-<h4>Checker.STARRED</h4>
-<b>STARRED</b>(<i>node</i>)
-<a NAME="Checker._runDeferred" ID="Checker._runDeferred"></a>
-<h4>Checker._runDeferred</h4>
-<b>_runDeferred</b>(<i>deferred</i>)
-<p>
-        Run the callables in deferred using their associated scope stack.
-</p><a NAME="Checker.addArgs" ID="Checker.addArgs"></a>
+</p><a NAME="Checker.TRY" ID="Checker.TRY"></a>
+<h4>Checker.TRY</h4>
+<b>TRY</b>(<i>node</i>)
+<a NAME="Checker.addArgs" ID="Checker.addArgs"></a>
 <h4>Checker.addArgs</h4>
 <b>addArgs</b>(<i></i>)
 <a NAME="Checker.addBinding" ID="Checker.addBinding"></a>
 <h4>Checker.addBinding</h4>
-<b>addBinding</b>(<i>lineno, value, reportRedef=True</i>)
+<b>addBinding</b>(<i>node, value, reportRedef=True</i>)
 <p>
         Called when a binding is altered.
-</p><dl>
-<dt><i>lineno</i></dt>
-<dd>
-line of the statement responsible for the change
-            (integer)
-</dd><dt><i>value</i></dt>
-<dd>
-the optional new value, a Binding instance, associated
-            with the binding; if None, the binding is deleted if it exists
-</dd><dt><i>reportRedef</i></dt>
-<dd>
-flag indicating if rebinding while unused will be
-            reported (boolean)
-</dd>
-</dl><a NAME="Checker.checkUnusedAssignments" ID="Checker.checkUnusedAssignments"></a>
+</p><p>
+        - `node` is the statement responsible for the change
+        - `value` is the optional new value, a Binding instance, associated
+          with the binding; if None, the binding is deleted if it exists.
+        - if `reportRedef` is True (default), rebinding while unused will be
+          reported.
+</p><a NAME="Checker.checkDeadScopes" ID="Checker.checkDeadScopes"></a>
+<h4>Checker.checkDeadScopes</h4>
+<b>checkDeadScopes</b>(<i></i>)
+<p>
+        Look at scopes which have been fully examined and report names in them
+        which were imported but unused.
+</p><a NAME="Checker.checkUnusedAssignments" ID="Checker.checkUnusedAssignments"></a>
 <h4>Checker.checkUnusedAssignments</h4>
 <b>checkUnusedAssignments</b>(<i></i>)
 <p>
                 Check to see if any assignments have not been used.
-</p><a NAME="Checker.check_dead_scopes" ID="Checker.check_dead_scopes"></a>
-<h4>Checker.check_dead_scopes</h4>
-<b>check_dead_scopes</b>(<i></i>)
-<p>
-        Look at scopes which have been fully examined and report names in them
-        which were imported but unused.
 </p><a NAME="Checker.collectLoopVars" ID="Checker.collectLoopVars"></a>
 <h4>Checker.collectLoopVars</h4>
 <b>collectLoopVars</b>(<i></i>)
@@ -424,18 +474,44 @@
         because code later in the file might modify the global scope. When
         `callable` is called, the scope at the time this is called will be
         restored, however it will contain any new bindings added to it.
-</p><a NAME="Checker.handleAssignName" ID="Checker.handleAssignName"></a>
-<h4>Checker.handleAssignName</h4>
-<b>handleAssignName</b>(<i>node</i>)
-<a NAME="Checker.handleBody" ID="Checker.handleBody"></a>
-<h4>Checker.handleBody</h4>
-<b>handleBody</b>(<i>tree</i>)
+</p><a NAME="Checker.descendantOf" ID="Checker.descendantOf"></a>
+<h4>Checker.descendantOf</h4>
+<b>descendantOf</b>(<i>node, ancestors, stop=None</i>)
+<a NAME="Checker.differentForks" ID="Checker.differentForks"></a>
+<h4>Checker.differentForks</h4>
+<b>differentForks</b>(<i>lnode, rnode</i>)
+<p>
+True, if lnode and rnode are located on different forks of IF/TRY
+</p><a NAME="Checker.getCommonAncestor" ID="Checker.getCommonAncestor"></a>
+<h4>Checker.getCommonAncestor</h4>
+<b>getCommonAncestor</b>(<i>lnode, rnode, stop=None</i>)
+<a NAME="Checker.getDocstring" ID="Checker.getDocstring"></a>
+<h4>Checker.getDocstring</h4>
+<b>getDocstring</b>(<i>node</i>)
+<a NAME="Checker.getNodeHandler" ID="Checker.getNodeHandler"></a>
+<h4>Checker.getNodeHandler</h4>
+<b>getNodeHandler</b>(<i>node_class</i>)
 <a NAME="Checker.handleChildren" ID="Checker.handleChildren"></a>
 <h4>Checker.handleChildren</h4>
 <b>handleChildren</b>(<i>tree</i>)
+<a NAME="Checker.handleDoctests" ID="Checker.handleDoctests"></a>
+<h4>Checker.handleDoctests</h4>
+<b>handleDoctests</b>(<i>node</i>)
 <a NAME="Checker.handleNode" ID="Checker.handleNode"></a>
 <h4>Checker.handleNode</h4>
 <b>handleNode</b>(<i>node, parent</i>)
+<a NAME="Checker.handleNodeDelete" ID="Checker.handleNodeDelete"></a>
+<h4>Checker.handleNodeDelete</h4>
+<b>handleNodeDelete</b>(<i>node</i>)
+<a NAME="Checker.handleNodeLoad" ID="Checker.handleNodeLoad"></a>
+<h4>Checker.handleNodeLoad</h4>
+<b>handleNodeLoad</b>(<i>node</i>)
+<a NAME="Checker.handleNodeStore" ID="Checker.handleNodeStore"></a>
+<h4>Checker.handleNodeStore</h4>
+<b>handleNodeStore</b>(<i>node</i>)
+<a NAME="Checker.hasParent" ID="Checker.hasParent"></a>
+<h4>Checker.hasParent</h4>
+<b>hasParent</b>(<i>node, kind</i>)
 <a NAME="Checker.ignore" ID="Checker.ignore"></a>
 <h4>Checker.ignore</h4>
 <b>ignore</b>(<i>node</i>)
@@ -445,7 +521,10 @@
 <p>
         Determine if the given node is a docstring, as long as it is at the
         correct place in the node tree.
-</p><a NAME="Checker.popScope" ID="Checker.popScope"></a>
+</p><a NAME="Checker.onFork" ID="Checker.onFork"></a>
+<h4>Checker.onFork</h4>
+<b>onFork</b>(<i>parent, lnode, rnode, items</i>)
+<a NAME="Checker.popScope" ID="Checker.popScope"></a>
 <h4>Checker.popScope</h4>
 <b>popScope</b>(<i></i>)
 <a NAME="Checker.pushClassScope" ID="Checker.pushClassScope"></a>
@@ -454,10 +533,18 @@
 <a NAME="Checker.pushFunctionScope" ID="Checker.pushFunctionScope"></a>
 <h4>Checker.pushFunctionScope</h4>
 <b>pushFunctionScope</b>(<i></i>)
+<a NAME="Checker.pushScope" ID="Checker.pushScope"></a>
+<h4>Checker.pushScope</h4>
+<b>pushScope</b>(<i>scopeClass=FunctionScope</i>)
 <a NAME="Checker.report" ID="Checker.report"></a>
 <h4>Checker.report</h4>
 <b>report</b>(<i>messageClass, *args, **kwargs</i>)
-<a NAME="Checker.runFunction" ID="Checker.runFunction"></a>
+<a NAME="Checker.runDeferred" ID="Checker.runDeferred"></a>
+<h4>Checker.runDeferred</h4>
+<b>runDeferred</b>(<i>deferred</i>)
+<p>
+        Run the callables in deferred using their associated scope stack.
+</p><a NAME="Checker.runFunction" ID="Checker.runFunction"></a>
 <h4>Checker.runFunction</h4>
 <b>runFunction</b>(<i></i>)
 <a NAME="Checker.scope" ID="Checker.scope"></a>
@@ -466,6 +553,32 @@
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="ClassDefinition" ID="ClassDefinition"></a>
+<h2>ClassDefinition</h2>
+<p>
+    Represents a class definition.
+</p>
+<h3>Derived from</h3>
+Definition
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="ClassScope" ID="ClassScope"></a>
 <h2>ClassScope</h2>
 <p>
@@ -492,6 +605,32 @@
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="Definition" ID="Definition"></a>
+<h2>Definition</h2>
+<p>
+    A binding that defines a function or a class.
+</p>
+<h3>Derived from</h3>
+Binding
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="ExportBinding" ID="ExportBinding"></a>
 <h2>ExportBinding</h2>
 <p>
@@ -519,21 +658,13 @@
 </table>
 <h3>Methods</h3>
 <table>
-<tr>
-<td><a href="#ExportBinding.names">names</a></td>
-<td>Return a list of the names referenced by this binding.</td>
-</tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Static Methods</h3>
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="ExportBinding.names" ID="ExportBinding.names"></a>
-<h4>ExportBinding.names</h4>
-<b>names</b>(<i></i>)
-<p>
-        Return a list of the names referenced by this binding.
-</p>
+
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="FunctionDefinition" ID="FunctionDefinition"></a>
@@ -542,10 +673,10 @@
     Represents a function definition.
 </p>
 <h3>Derived from</h3>
-Binding
+Definition
 <h3>Class Attributes</h3>
 <table>
-<tr><td>is_property</td></tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -571,6 +702,32 @@
 Scope
 <h3>Class Attributes</h3>
 <table>
+<tr><td>alwaysUsed</td></tr><tr><td>usesLocals</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="GeneratorScope" ID="GeneratorScope"></a>
+<h2>GeneratorScope</h2>
+<p>
+    Class representing a name scope for a generator function.
+</p>
+<h3>Derived from</h3>
+Scope
+<h3>Class Attributes</h3>
+<table>
 <tr><td>None</td></tr>
 </table>
 <h3>Class Methods</h3>
@@ -579,18 +736,12 @@
 </table>
 <h3>Methods</h3>
 <table>
-<tr>
-<td><a href="#FunctionScope.__init__">FunctionScope</a></td>
-<td></td>
-</tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Static Methods</h3>
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="FunctionScope.__init__" ID="FunctionScope.__init__"></a>
-<h4>FunctionScope (Constructor)</h4>
-<b>FunctionScope</b>(<i></i>)
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -611,18 +762,12 @@
 </table>
 <h3>Methods</h3>
 <table>
-<tr>
-<td><a href="#Importation.__init__">Importation</a></td>
-<td></td>
-</tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Static Methods</h3>
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="Importation.__init__" ID="Importation.__init__"></a>
-<h4>Importation (Constructor)</h4>
-<b>Importation</b>(<i>name, source</i>)
 
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
@@ -669,44 +814,6 @@
 </table>
 <h3>Methods</h3>
 <table>
-<tr>
-<td><a href="#Scope.__init__">Scope</a></td>
-<td></td>
-</tr><tr>
-<td><a href="#Scope.__repr__">__repr__</a></td>
-<td></td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="Scope.__init__" ID="Scope.__init__"></a>
-<h4>Scope (Constructor)</h4>
-<b>Scope</b>(<i></i>)
-<a NAME="Scope.__repr__" ID="Scope.__repr__"></a>
-<h4>Scope.__repr__</h4>
-<b>__repr__</b>(<i></i>)
-
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="UnBinding" ID="UnBinding"></a>
-<h2>UnBinding</h2>
-<p>
-    Created by the 'del' operator.
-</p>
-<h3>Derived from</h3>
-Binding
-<h3>Class Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Class Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-<table>
 <tr><td>None</td></tr>
 </table>
 <h3>Static Methods</h3>
@@ -715,5 +822,86 @@
 </table>
 
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="__init__" ID="__init__"></a>
+<h2>__init__</h2>
+<b>__init__</b>(<i>self, name, source</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="__init___1" ID="__init___1"></a>
+<h2>__init__</h2>
+<b>__init__</b>(<i>self, name, source</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="__init___2" ID="__init___2"></a>
+<h2>__init__</h2>
+<b>__init__</b>(<i>self</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="__repr__" ID="__repr__"></a>
+<h2>__repr__</h2>
+<b>__repr__</b>(<i>self</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="__repr___1" ID="__repr___1"></a>
+<h2>__repr__</h2>
+<b>__repr__</b>(<i>self</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="__str__" ID="__str__"></a>
+<h2>__str__</h2>
+<b>__str__</b>(<i>self</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="getNodeName" ID="getNodeName"></a>
+<h2>getNodeName</h2>
+<b>getNodeName</b>(<i>node</i>)
+<p>
+    Module function for getting the name of a node.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="getNodeType" ID="getNodeType"></a>
+<h2>getNodeType</h2>
+<b>getNodeType</b>(<i>node_class</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="getNodeType_1" ID="getNodeType_1"></a>
+<h2>getNodeType</h2>
+<b>getNodeType</b>(<i>node_class</i>)
+
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="iter_child_nodes" ID="iter_child_nodes"></a>
+<h2>iter_child_nodes</h2>
+<b>iter_child_nodes</b>(<i>node</i>)
+<p>
+        Yield all direct child nodes of *node*, that is, all fields that
+        are nodes and all items of fields that are lists of nodes.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="names" ID="names"></a>
+<h2>names</h2>
+<b>names</b>(<i>self</i>)
+<p>
+        Return a list of the names referenced by this binding.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="unusedAssignments" ID="unusedAssignments"></a>
+<h2>unusedAssignments</h2>
+<b>unusedAssignments</b>(<i>self</i>)
+<p>
+        Return a generator for the assignments which have not been used.
+</p>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Utilities.pyflakes.messages.html	Wed Jan 15 19:16:06 2014 +0100
+++ b/Documentation/Source/eric5.Utilities.pyflakes.messages.html	Thu Jan 16 18:28:34 2014 +0100
@@ -30,6 +30,9 @@
 <h3>Classes</h3>
 <table>
 <tr>
+<td><a href="#DoctestSyntaxError">DoctestSyntaxError</a></td>
+<td>Class defining the "Doctest syntax Error" message.</td>
+</tr><tr>
 <td><a href="#DuplicateArgument">DuplicateArgument</a></td>
 <td>Class defining the "Duplicate Argument" message.</td>
 </tr><tr>
@@ -45,8 +48,11 @@
 <td><a href="#Message">Message</a></td>
 <td>Class defining the base for all specific message classes.</td>
 </tr><tr>
-<td><a href="#RedefinedFunction">RedefinedFunction</a></td>
-<td>Class defining the "Redefined Function" message.</td>
+<td><a href="#Redefined">Redefined</a></td>
+<td>Class defining the "Redefined" message.</td>
+</tr><tr>
+<td><a href="#RedefinedInListComp">RedefinedInListComp</a></td>
+<td>Class defining the "Redefined In List Comprehension" message.</td>
 </tr><tr>
 <td><a href="#RedefinedWhileUnused">RedefinedWhileUnused</a></td>
 <td>Class defining the "Redefined While Unused" message.</td>
@@ -72,6 +78,51 @@
 <tr><td>None</td></tr>
 </table>
 <hr /><hr />
+<a NAME="DoctestSyntaxError" ID="DoctestSyntaxError"></a>
+<h2>DoctestSyntaxError</h2>
+<p>
+    Class defining the "Doctest syntax Error" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr><tr><td>message_id</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DoctestSyntaxError.__init__">DoctestSyntaxError</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DoctestSyntaxError.__init__" ID="DoctestSyntaxError.__init__"></a>
+<h4>DoctestSyntaxError (Constructor)</h4>
+<b>DoctestSyntaxError</b>(<i>filename, loc, position=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>loc</i></dt>
+<dd>
+location of the issue
+</dd><dt><i>position</i></dt>
+<dd>
+position of the syntax error
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="DuplicateArgument" ID="DuplicateArgument"></a>
 <h2>DuplicateArgument</h2>
 <p>
@@ -100,16 +151,16 @@
 </table>
 <a NAME="DuplicateArgument.__init__" ID="DuplicateArgument.__init__"></a>
 <h4>DuplicateArgument (Constructor)</h4>
-<b>DuplicateArgument</b>(<i>filename, lineno, name</i>)
+<b>DuplicateArgument</b>(<i>filename, loc, name</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 name of the duplicate argument (string)
@@ -145,22 +196,22 @@
 </table>
 <a NAME="ImportShadowedByLoopVar.__init__" ID="ImportShadowedByLoopVar.__init__"></a>
 <h4>ImportShadowedByLoopVar (Constructor)</h4>
-<b>ImportShadowedByLoopVar</b>(<i>filename, lineno, name, orig_lineno</i>)
+<b>ImportShadowedByLoopVar</b>(<i>filename, loc, name, orig_loc</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 name of the shadowed import (string)
-</dd><dt><i>orig_lineno</i></dt>
+</dd><dt><i>orig_loc</i></dt>
 <dd>
-line number of the import (integer)
+location of the import
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -193,16 +244,16 @@
 </table>
 <a NAME="ImportStarUsed.__init__" ID="ImportStarUsed.__init__"></a>
 <h4>ImportStarUsed (Constructor)</h4>
-<b>ImportStarUsed</b>(<i>filename, lineno, modname</i>)
+<b>ImportStarUsed</b>(<i>filename, loc, modname</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>modname</i></dt>
 <dd>
 name of the module imported using star import (string)
@@ -238,16 +289,16 @@
 </table>
 <a NAME="LateFutureImport.__init__" ID="LateFutureImport.__init__"></a>
 <h4>LateFutureImport (Constructor)</h4>
-<b>LateFutureImport</b>(<i>filename, lineno, names</i>)
+<b>LateFutureImport</b>(<i>filename, loc, names</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>names</i></dt>
 <dd>
 names of the imported futures (string)
@@ -289,16 +340,16 @@
 </table>
 <a NAME="Message.__init__" ID="Message.__init__"></a>
 <h4>Message (Constructor)</h4>
-<b>Message</b>(<i>filename, lineno</i>)
+<b>Message</b>(<i>filename, loc</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd>
 </dl><a NAME="Message.__str__" ID="Message.__str__"></a>
 <h4>Message.__str__</h4>
@@ -324,10 +375,10 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="RedefinedFunction" ID="RedefinedFunction"></a>
-<h2>RedefinedFunction</h2>
+<a NAME="Redefined" ID="Redefined"></a>
+<h2>Redefined</h2>
 <p>
-    Class defining the "Redefined Function" message.
+    Class defining the "Redefined" message.
 </p>
 <h3>Derived from</h3>
 Message
@@ -342,7 +393,7 @@
 <h3>Methods</h3>
 <table>
 <tr>
-<td><a href="#RedefinedFunction.__init__">RedefinedFunction</a></td>
+<td><a href="#Redefined.__init__">Redefined</a></td>
 <td>Constructor</td>
 </tr>
 </table>
@@ -350,24 +401,72 @@
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="RedefinedFunction.__init__" ID="RedefinedFunction.__init__"></a>
-<h4>RedefinedFunction (Constructor)</h4>
-<b>RedefinedFunction</b>(<i>filename, lineno, name, orig_lineno</i>)
+<a NAME="Redefined.__init__" ID="Redefined.__init__"></a>
+<h4>Redefined (Constructor)</h4>
+<b>Redefined</b>(<i>filename, loc, name, orig_loc</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 name of the redefined function (string)
-</dd><dt><i>orig_lineno</i></dt>
+</dd><dt><i>orig_loc</i></dt>
 <dd>
-line number of the original definition (integer)
+location of the original definition
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="RedefinedInListComp" ID="RedefinedInListComp"></a>
+<h2>RedefinedInListComp</h2>
+<p>
+    Class defining the "Redefined In List Comprehension" message.
+</p>
+<h3>Derived from</h3>
+Message
+<h3>Class Attributes</h3>
+<table>
+<tr><td>message</td></tr><tr><td>message_id</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#RedefinedInListComp.__init__">RedefinedInListComp</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="RedefinedInListComp.__init__" ID="RedefinedInListComp.__init__"></a>
+<h4>RedefinedInListComp (Constructor)</h4>
+<b>RedefinedInListComp</b>(<i>filename, loc, name, orig_loc</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>filename</i></dt>
+<dd>
+name of the file (string)
+</dd><dt><i>loc</i></dt>
+<dd>
+location of the issue
+</dd><dt><i>name</i></dt>
+<dd>
+name of the redefined object (string)
+</dd><dt><i>orig_loc</i></dt>
+<dd>
+location of the original definition
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -400,22 +499,22 @@
 </table>
 <a NAME="RedefinedWhileUnused.__init__" ID="RedefinedWhileUnused.__init__"></a>
 <h4>RedefinedWhileUnused (Constructor)</h4>
-<b>RedefinedWhileUnused</b>(<i>filename, lineno, name, orig_lineno</i>)
+<b>RedefinedWhileUnused</b>(<i>filename, loc, name, orig_loc</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 name of the redefined object (string)
-</dd><dt><i>orig_lineno</i></dt>
+</dd><dt><i>orig_loc</i></dt>
 <dd>
-line number of the original definition (integer)
+location of the original definition
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -448,16 +547,16 @@
 </table>
 <a NAME="UndefinedExport.__init__" ID="UndefinedExport.__init__"></a>
 <h4>UndefinedExport (Constructor)</h4>
-<b>UndefinedExport</b>(<i>filename, lineno, name</i>)
+<b>UndefinedExport</b>(<i>filename, loc, name</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 undefined exported name (string)
@@ -493,22 +592,22 @@
 </table>
 <a NAME="UndefinedLocal.__init__" ID="UndefinedLocal.__init__"></a>
 <h4>UndefinedLocal (Constructor)</h4>
-<b>UndefinedLocal</b>(<i>filename, lineno, name, orig_lineno</i>)
+<b>UndefinedLocal</b>(<i>filename, loc, name, orig_loc</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 name of the prematurely referenced variable (string)
-</dd><dt><i>orig_lineno</i></dt>
+</dd><dt><i>orig_loc</i></dt>
 <dd>
-line number of the variable definition (integer)
+location of the variable definition
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -541,16 +640,16 @@
 </table>
 <a NAME="UndefinedName.__init__" ID="UndefinedName.__init__"></a>
 <h4>UndefinedName (Constructor)</h4>
-<b>UndefinedName</b>(<i>filename, lineno, name</i>)
+<b>UndefinedName</b>(<i>filename, loc, name</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 undefined name (string)
@@ -586,16 +685,16 @@
 </table>
 <a NAME="UnusedImport.__init__" ID="UnusedImport.__init__"></a>
 <h4>UnusedImport (Constructor)</h4>
-<b>UnusedImport</b>(<i>filename, lineno, name</i>)
+<b>UnusedImport</b>(<i>filename, loc, name</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
+location of the issue
 </dd><dt><i>name</i></dt>
 <dd>
 name of the unused import (string)
@@ -634,19 +733,19 @@
 </table>
 <a NAME="UnusedVariable.__init__" ID="UnusedVariable.__init__"></a>
 <h4>UnusedVariable (Constructor)</h4>
-<b>UnusedVariable</b>(<i>filename, lineno, name</i>)
+<b>UnusedVariable</b>(<i>filename, loc, names</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>filename</i></dt>
 <dd>
 name of the file (string)
-</dd><dt><i>lineno</i></dt>
+</dd><dt><i>loc</i></dt>
 <dd>
-line number (integer)
-</dd><dt><i>name</i></dt>
+location of the issue
+</dd><dt><i>names</i></dt>
 <dd>
-name of the unused variable (string)
+names of unused variable (string)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/index-eric5.Utilities.html	Wed Jan 15 19:16:06 2014 +0100
+++ b/Documentation/Source/index-eric5.Utilities.html	Thu Jan 16 18:28:34 2014 +0100
@@ -34,7 +34,7 @@
 <td>Package implementing cryptography related functionality.</td>
 </tr><tr>
 <td><a href="index-eric5.Utilities.pyflakes.html">pyflakes</a></td>
-<td>Package containg the pyflakes Python3 port adapted for Qt.</td>
+<td>Package containing pyflakes adapted to eric5.</td>
 </tr>
 </table>
 
--- a/Documentation/Source/index-eric5.Utilities.pyflakes.html	Wed Jan 15 19:16:06 2014 +0100
+++ b/Documentation/Source/index-eric5.Utilities.pyflakes.html	Thu Jan 16 18:28:34 2014 +0100
@@ -21,7 +21,7 @@
 <body>
 <h1>eric5.Utilities.pyflakes</h1>
 <p>
-Package containg the pyflakes Python3 port adapted for Qt.
+Package containing pyflakes adapted to eric5.
 </p>
 
 
--- a/Utilities/pyflakes/__init__.py	Wed Jan 15 19:16:06 2014 +0100
+++ b/Utilities/pyflakes/__init__.py	Thu Jan 16 18:28:34 2014 +0100
@@ -4,7 +4,7 @@
 #
 
 """
-Package containg the pyflakes Python3 port adapted for Qt.
+Package containing pyflakes adapted to eric5.
 """
 
-__version__ = '0.5.0'
+__version__ = '0.7.3'
--- a/Utilities/pyflakes/checker.py	Wed Jan 15 19:16:06 2014 +0100
+++ b/Utilities/pyflakes/checker.py	Thu Jan 16 18:28:34 2014 +0100
@@ -4,15 +4,63 @@
 #
 # Original (c) 2005-2010 Divmod, Inc.
 #
-# This module is based on pyflakes for Python2 but was heavily hacked to
-# work with Python3 and eric5
+# This module is based on pyflakes for Python2 and Python3, but was modified to
+# be integrated into eric5
+
+import doctest
+import os
+import sys
+try:
+    builtin_vars = dir(__import__('builtins'))
+    PY2 = False
+    ## added for eric5
+    basestring = str
+    ## end added for eric5
+except ImportError:
+    builtin_vars = dir(__import__('__builtin__'))
+    PY2 = True
+
+try:
+    import ast
+    iter_child_nodes = ast.iter_child_nodes
+except ImportError:     # Python 2.5
+    import _ast as ast
 
-import builtins
-import os.path
-import ast
+    if 'decorator_list' not in ast.ClassDef._fields:
+        # Patch the missing attribute 'decorator_list'
+        ast.ClassDef.decorator_list = ()
+        ast.FunctionDef.decorator_list = property(lambda s: s.decorators)
+
+    def iter_child_nodes(node):
+        """
+        Yield all direct child nodes of *node*, that is, all fields that
+        are nodes and all items of fields that are lists of nodes.
+        """
+        for name in node._fields:
+            field = getattr(node, name, None)
+            if isinstance(field, ast.AST):
+                yield field
+            elif isinstance(field, list):
+                for item in field:
+                    yield item
+# Python >= 3.3 uses ast.Try instead of (ast.TryExcept + ast.TryFinally)
+if hasattr(ast, 'Try'):
+    ast_TryExcept = ast.Try
+    ast_TryFinally = ()
+else:
+    ast_TryExcept = ast.TryExcept
+    ast_TryFinally = ast.TryFinally
 
 from . import messages
 
+if PY2:
+    def getNodeType(node_class):
+        # workaround str.upper() which is locale-dependent
+        return str(unicode(node_class.__name__).upper())
+else:
+    def getNodeType(node_class):
+        return node_class.__name__.upper()
+
 
 class Binding(object):
     """
@@ -31,20 +79,13 @@
         return self.name
 
     def __repr__(self):
-        return '<{0} object {1!r} from line {2!r} at 0x{3:x}>'.format(
+        return '<%s object %r from line %r at 0x%x>' % (
             self.__class__.__name__,
             self.name,
             self.source.lineno,
             id(self))
 
 
-class UnBinding(Binding):
-    '''
-    Created by the 'del' operator.
-    '''
-    pass
-
-
 class Importation(Binding):
     """
     A binding created by an import statement.
@@ -62,6 +103,13 @@
     pass
 
 
+class Definition(Binding):
+    """
+    A binding that defines a function or a class.
+    """
+    pass
+
+
 class Assignment(Binding):
     """
     Represents binding a name with an explicit assignment.
@@ -73,11 +121,18 @@
     pass
 
 
-class FunctionDefinition(Binding):
+class FunctionDefinition(Definition):
     """
     Represents a function definition.
     """
-    is_property = False
+    pass
+
+
+class ClassDefinition(Definition):
+    """
+    Represents a class definition.
+    """
+    pass
 
 
 class ExportBinding(Binding):
@@ -101,10 +156,8 @@
         names = []
         if isinstance(self.source, ast.List):
             for node in self.source.elts:
-                if isinstance(node, (ast.Str, ast.Bytes)):
+                if isinstance(node, ast.Str):
                     names.append(node.s)
-                elif isinstance(node, ast.Num):
-                    names.append(node.n)
         return names
 
 
@@ -115,11 +168,8 @@
     importStarred = False       # set to True when import * is found
 
     def __repr__(self):
-        return '<{0} at 0x{1:x} {2}>'.format(
-            self.__class__.__name__, id(self), dict.__repr__(self))
-
-    def __init__(self):
-        super(Scope, self).__init__()
+        scope_cls = self.__class__.__name__
+        return '<%s at 0x%x %s>' % (scope_cls, id(self), dict.__repr__(self))
 
 
 class ClassScope(Scope):
@@ -133,9 +183,31 @@
     """
     Class representing a name scope for a function.
     """
+    usesLocals = False
+    alwaysUsed = set(['__tracebackhide__',
+                      '__traceback_info__', '__traceback_supplement__'])
+
     def __init__(self):
         super(FunctionScope, self).__init__()
-        self.globals = {}
+        # Simplify: manage the special locals as globals
+        self.globals = self.alwaysUsed.copy()
+
+    def unusedAssignments(self):
+        """
+        Return a generator for the assignments which have not been used.
+        """
+        for name, binding in self.items():
+            if (not binding.used and name not in self.globals
+                    and not self.usesLocals
+                    and isinstance(binding, Assignment)):
+                yield name, binding
+
+
+class GeneratorScope(Scope):
+    """
+    Class representing a name scope for a generator function.
+    """
+    pass
 
 
 class ModuleScope(Scope):
@@ -144,8 +216,20 @@
     """
     pass
 
-# Globally defined names which are not attributes of the builtins module.
-_MAGIC_GLOBALS = ['__file__', '__builtins__']
+# Globally defined names which are not attributes of the builtins module, or
+# are only present on some platforms.
+_MAGIC_GLOBALS = ['__file__', '__builtins__', 'WindowsError']
+
+
+def getNodeName(node):
+    """
+    Module function for getting the name of a node.
+    """
+    # Returns node.id, or node.name, or None
+    if hasattr(node, 'id'):     # One of the many nodes with an id
+        return node.id
+    if hasattr(node, 'name'):   # a ExceptHandler node
+        return node.name
 
 
 class Checker(object):
@@ -153,37 +237,54 @@
     Class to check the cleanliness and sanity of Python code.
     """
     nodeDepth = 0
+    offset = None
     traceTree = False
+    withDoctest = ('PYFLAKES_NODOCTEST' not in os.environ)
 
-    def __init__(self, module, filename='(none)'):
+    builtIns = set(builtin_vars).union(_MAGIC_GLOBALS)
+    _customBuiltIns = os.environ.get('PYFLAKES_BUILTINS')
+    if _customBuiltIns:
+        builtIns.update(_customBuiltIns.split(','))
+    del _customBuiltIns
+
+    def __init__(self, tree, filename='(none)', builtins=None):
         """
         Constructor
         
-        @param module parsed module tree or module source code
+        @param tree parsed module tree or module source code
         @param filename name of the module file (string)
+        @param builtins set of names to be treated as builtins (set of string)
         """
+        self._nodeHandlers = {}
         self._deferredFunctions = []
         self._deferredAssignments = []
-        self.dead_scopes = []
+        self.deadScopes = []
         self.messages = []
         self.filename = filename
+        if builtins:
+            self.builtIns = self.builtIns.union(builtins)
         self.scopeStack = [ModuleScope()]
+        self.exceptHandlers = [()]
         self.futuresAllowed = True
         
-        if isinstance(module, str):
-            module = ast.parse(module, filename, "exec")
-        self.handleBody(module)
-        self._runDeferred(self._deferredFunctions)
+        ## added for eric5
+        if isinstance(tree, basestring):
+            tree = compile(tree, filename, "exec", ast.PyCF_ONLY_AST)
+        ## end added for eric5
+        
+        self.root = tree
+        self.handleChildren(tree)
+        self.runDeferred(self._deferredFunctions)
         # Set _deferredFunctions to None so that deferFunction will fail
         # noisily if called after we've run through the deferred functions.
         self._deferredFunctions = None
-        self._runDeferred(self._deferredAssignments)
+        self.runDeferred(self._deferredAssignments)
         # Set _deferredAssignments to None so that deferAssignment will fail
-        # noisly if called after we've run through the deferred assignments.
+        # noisily if called after we've run through the deferred assignments.
         self._deferredAssignments = None
         del self.scopeStack[1:]
         self.popScope()
-        self.check_dead_scopes()
+        self.checkDeadScopes()
 
     def deferFunction(self, callable):
         '''
@@ -194,47 +295,49 @@
         `callable` is called, the scope at the time this is called will be
         restored, however it will contain any new bindings added to it.
         '''
-        self._deferredFunctions.append((callable, self.scopeStack[:]))
+        self._deferredFunctions.append((callable, self.scopeStack[:],
+                                        self.offset))
 
     def deferAssignment(self, callable):
         """
         Schedule an assignment handler to be called just after deferred
         function handlers.
         """
-        self._deferredAssignments.append((callable, self.scopeStack[:]))
+        self._deferredAssignments.append((callable, self.scopeStack[:],
+                                          self.offset))
 
-    def _runDeferred(self, deferred):
+    def runDeferred(self, deferred):
         """
         Run the callables in deferred using their associated scope stack.
         """
-        for handler, scope in deferred:
+        for handler, scope, offset in deferred:
             self.scopeStack = scope
+            self.offset = offset
             handler()
 
+    @property
     def scope(self):
         return self.scopeStack[-1]
-    scope = property(scope)
 
     def popScope(self):
-        self.dead_scopes.append(self.scopeStack.pop())
+        self.deadScopes.append(self.scopeStack.pop())
 
-    def check_dead_scopes(self):
+    def checkDeadScopes(self):
         """
         Look at scopes which have been fully examined and report names in them
         which were imported but unused.
         """
-        for scope in self.dead_scopes:
+        for scope in self.deadScopes:
             export = isinstance(scope.get('__all__'), ExportBinding)
             if export:
                 all = scope['__all__'].names()
-                if os.path.split(self.filename)[1] != '__init__.py':
+                if not scope.importStarred and \
+                   os.path.basename(self.filename) != '__init__.py':
                     # Look for possible mistakes in the export list
                     undefined = set(all) - set(scope)
                     for name in undefined:
-                        self.report(
-                            messages.UndefinedExport,
-                            scope['__all__'].source.lineno,
-                            name)
+                        self.report(messages.UndefinedExport,
+                                    scope['__all__'].source, name)
             else:
                 all = []
 
@@ -242,149 +345,336 @@
             for importation in scope.values():
                 if isinstance(importation, Importation):
                     if not importation.used and importation.name not in all:
-                        self.report(
-                            messages.UnusedImport,
-                            importation.source.lineno,
-                            importation.name)
+                        self.report(messages.UnusedImport,
+                                    importation.source, importation.name)
+
+    def pushScope(self, scopeClass=FunctionScope):
+        self.scopeStack.append(scopeClass())
 
-    def pushFunctionScope(self):
-        self.scopeStack.append(FunctionScope())
+    def pushFunctionScope(self):    # XXX Deprecated
+        self.pushScope(FunctionScope)
 
-    def pushClassScope(self):
-        self.scopeStack.append(ClassScope())
+    def pushClassScope(self):       # XXX Deprecated
+        self.pushScope(ClassScope)
 
     def report(self, messageClass, *args, **kwargs):
         self.messages.append(messageClass(self.filename, *args, **kwargs))
 
-    def handleBody(self, tree):
-        for node in tree.body:
+    def hasParent(self, node, kind):
+        while hasattr(node, 'parent'):
+            node = node.parent
+            if isinstance(node, kind):
+                return True
+
+    def getCommonAncestor(self, lnode, rnode, stop=None):
+        if not stop:
+            stop = self.root
+        if lnode is rnode:
+            return lnode
+        if stop in (lnode, rnode):
+            return stop
+
+        if not hasattr(lnode, 'parent') or not hasattr(rnode, 'parent'):
+            return
+        if (lnode.level > rnode.level):
+            return self.getCommonAncestor(lnode.parent, rnode, stop)
+        if (rnode.level > lnode.level):
+            return self.getCommonAncestor(lnode, rnode.parent, stop)
+        return self.getCommonAncestor(lnode.parent, rnode.parent, stop)
+
+    def descendantOf(self, node, ancestors, stop=None):
+        for a in ancestors:
+            if self.getCommonAncestor(node, a, stop) not in (stop, None):
+                return True
+        return False
+
+    def onFork(self, parent, lnode, rnode, items):
+        return (self.descendantOf(lnode, items, parent) ^
+                self.descendantOf(rnode, items, parent))
+
+    def differentForks(self, lnode, rnode):
+        """True, if lnode and rnode are located on different forks of IF/TRY"""
+        ancestor = self.getCommonAncestor(lnode, rnode)
+        if isinstance(ancestor, ast.If):
+            for fork in (ancestor.body, ancestor.orelse):
+                if self.onFork(ancestor, lnode, rnode, fork):
+                    return True
+        elif isinstance(ancestor, ast_TryExcept):
+            body = ancestor.body + ancestor.orelse
+            for fork in [body] + [[hdl] for hdl in ancestor.handlers]:
+                if self.onFork(ancestor, lnode, rnode, fork):
+                    return True
+        elif isinstance(ancestor, ast_TryFinally):
+            if self.onFork(ancestor, lnode, rnode, ancestor.body):
+                return True
+        return False
+
+    def addBinding(self, node, value, reportRedef=True):
+        """
+        Called when a binding is altered.
+
+        - `node` is the statement responsible for the change
+        - `value` is the optional new value, a Binding instance, associated
+          with the binding; if None, the binding is deleted if it exists.
+        - if `reportRedef` is True (default), rebinding while unused will be
+          reported.
+        """
+        redefinedWhileUnused = False
+        if not isinstance(self.scope, ClassScope):
+            for scope in self.scopeStack[::-1]:
+                existing = scope.get(value.name)
+                if (isinstance(existing, Importation)
+                        and not existing.used
+                        and (not isinstance(value, Importation) or
+                             value.fullName == existing.fullName)
+                        and reportRedef
+                        and not self.differentForks(node, existing.source)):
+                    redefinedWhileUnused = True
+                    self.report(messages.RedefinedWhileUnused,
+                                node, value.name, existing.source)
+
+        existing = self.scope.get(value.name)
+        if not redefinedWhileUnused and self.hasParent(value.source, ast.ListComp):
+            if (existing and reportRedef
+                    and not self.hasParent(existing.source, (ast.For, ast.ListComp))
+                    and not self.differentForks(node, existing.source)):
+                self.report(messages.RedefinedInListComp,
+                            node, value.name, existing.source)
+
+        if (isinstance(existing, Definition)
+                and not existing.used
+                and not self.differentForks(node, existing.source)):
+            self.report(messages.RedefinedWhileUnused,
+                        node, value.name, existing.source)
+        else:
+            self.scope[value.name] = value
+
+    def getNodeHandler(self, node_class):
+        try:
+            return self._nodeHandlers[node_class]
+        except KeyError:
+            nodeType = getNodeType(node_class)
+        self._nodeHandlers[node_class] = handler = getattr(self, nodeType)
+        return handler
+
+    def handleNodeLoad(self, node):
+        name = getNodeName(node)
+        if not name:
+            return
+        # try local scope
+        try:
+            self.scope[name].used = (self.scope, node)
+        except KeyError:
+            pass
+        else:
+            return
+
+        scopes = [scope for scope in self.scopeStack[:-1]
+                  if isinstance(scope, (FunctionScope, ModuleScope))]
+        if isinstance(self.scope, GeneratorScope) and scopes[-1] != self.scopeStack[-2]:
+            scopes.append(self.scopeStack[-2])
+
+        # try enclosing function scopes and global scope
+        importStarred = self.scope.importStarred
+        for scope in reversed(scopes):
+            importStarred = importStarred or scope.importStarred
+            try:
+                scope[name].used = (self.scope, node)
+            except KeyError:
+                pass
+            else:
+                return
+
+        # look in the built-ins
+        if importStarred or name in self.builtIns:
+            return
+        if name == '__path__' and os.path.basename(self.filename) == '__init__.py':
+            # the special name __path__ is valid only in packages
+            return
+
+        # protected with a NameError handler?
+        if 'NameError' not in self.exceptHandlers[-1]:
+            self.report(messages.UndefinedName, node, name)
+
+    def handleNodeStore(self, node):
+        name = getNodeName(node)
+        if not name:
+            return
+        # if the name hasn't already been defined in the current scope
+        if isinstance(self.scope, FunctionScope) and name not in self.scope:
+            # for each function or module scope above us
+            for scope in self.scopeStack[:-1]:
+                if not isinstance(scope, (FunctionScope, ModuleScope)):
+                    continue
+                # if the name was defined in that scope, and the name has
+                # been accessed already in the current scope, and hasn't
+                # been declared global
+                used = name in scope and scope[name].used
+                if used and used[0] is self.scope and name not in self.scope.globals:
+                    # then it's probably a mistake
+                    self.report(messages.UndefinedLocal,
+                                scope[name].used[1], name, scope[name].source)
+                    break
+
+        parent = getattr(node, 'parent', None)
+        if isinstance(parent, (ast.For, ast.comprehension, ast.Tuple, ast.List)):
+            binding = Binding(name, node)
+        elif (parent is not None and name == '__all__' and
+              isinstance(self.scope, ModuleScope)):
+            binding = ExportBinding(name, parent.value)
+        else:
+            binding = Assignment(name, node)
+        if name in self.scope:
+            binding.used = self.scope[name].used
+        self.addBinding(node, binding)
+
+    def handleNodeDelete(self, node):
+        name = getNodeName(node)
+        if not name:
+            return
+        if isinstance(self.scope, FunctionScope) and name in self.scope.globals:
+            self.scope.globals.remove(name)
+        else:
+            try:
+                del self.scope[name]
+            except KeyError:
+                self.report(messages.UndefinedName, node, name)
+
+    def handleChildren(self, tree):
+        for node in iter_child_nodes(tree):
             self.handleNode(node, tree)
 
-    def handleChildren(self, tree):
-        for node in ast.iter_child_nodes(tree):
-            self.handleNode(node, tree)
-    
     def isDocstring(self, node):
         """
         Determine if the given node is a docstring, as long as it is at the
         correct place in the node tree.
         """
-        return isinstance(node, ast.Str) or \
-               (isinstance(node, ast.Expr) and
-                isinstance(node.value, ast.Str))
-    
+        return isinstance(node, ast.Str) or (isinstance(node, ast.Expr) and
+                                             isinstance(node.value, ast.Str))
+
+    def getDocstring(self, node):
+        if isinstance(node, ast.Expr):
+            node = node.value
+        if not isinstance(node, ast.Str):
+            return (None, None)
+        # Computed incorrectly if the docstring has backslash
+        doctest_lineno = node.lineno - node.s.count('\n') - 1
+        return (node.s, doctest_lineno)
+
     def handleNode(self, node, parent):
-        if node:
-            node.parent = parent
-            if self.traceTree:
-                print('  ' * self.nodeDepth + node.__class__.__name__)
-            self.nodeDepth += 1
-            if self.futuresAllowed and \
-                    not (isinstance(node, ast.ImportFrom) or 
-                         self.isDocstring(node)):
-                self.futuresAllowed = False
-            nodeType = node.__class__.__name__.upper()
+        if node is None:
+            return
+        if self.offset and getattr(node, 'lineno', None) is not None:
+            node.lineno += self.offset[0]
+            node.col_offset += self.offset[1]
+        if self.traceTree:
+            print('  ' * self.nodeDepth + node.__class__.__name__)
+        if self.futuresAllowed and not (isinstance(node, ast.ImportFrom) or
+                                        self.isDocstring(node)):
+            self.futuresAllowed = False
+        self.nodeDepth += 1
+        node.level = self.nodeDepth
+        node.parent = parent
+        try:
+            handler = self.getNodeHandler(node.__class__)
+            handler(node)
+        finally:
+            self.nodeDepth -= 1
+        if self.traceTree:
+            print('  ' * self.nodeDepth + 'end ' + node.__class__.__name__)
+
+    _getDoctestExamples = doctest.DocTestParser().get_examples
+
+    def handleDoctests(self, node):
+        try:
+            docstring, node_lineno = self.getDocstring(node.body[0])
+            if not docstring:
+                return
+            examples = self._getDoctestExamples(docstring)
+        except (ValueError, IndexError):
+            # e.g. line 6 of the docstring for <string> has inconsistent
+            # leading whitespace: ...
+            return
+        node_offset = self.offset or (0, 0)
+        self.pushScope()
+        for example in examples:
             try:
-                handler = getattr(self, nodeType)
-                handler(node)
-            except AttributeError:
-                print(nodeType, "not supported yet. Please report this.")
-            finally:
-                self.nodeDepth -= 1
-            if self.traceTree:
-                print('  ' * self.nodeDepth + 'end ' + node.__class__.__name__)
+                tree = compile(example.source, "<doctest>", "exec", ast.PyCF_ONLY_AST)
+            except SyntaxError:
+                e = sys.exc_info()[1]
+                position = (node_lineno + example.lineno + e.lineno,
+                            example.indent + 4 + e.offset)
+                self.report(messages.DoctestSyntaxError, node, position)
+            else:
+                self.offset = (node_offset[0] + node_lineno + example.lineno,
+                               node_offset[1] + example.indent + 4)
+                self.handleChildren(tree)
+                self.offset = node_offset
+        self.popScope()
 
     def ignore(self, node):
         pass
-    
-    # ast nodes to be ignored
-    PASS = CONTINUE = BREAK = ELLIPSIS = NUM = STR = BYTES = \
-    LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = \
-    ATTRIBUTES = AND = OR = ADD = SUB = MULT = DIV = \
-    MOD = POW = LSHIFT = RSHIFT = BITOR = BITXOR = BITAND = FLOORDIV = \
-    INVERT = NOT = UADD = USUB = EQ = NOTEQ = LT = LTE = GT = GTE = IS = \
-    ISNOT = IN = NOTIN = ignore
 
     # "stmt" type nodes
     RETURN = DELETE = PRINT = WHILE = IF = WITH = WITHITEM = RAISE = \
-    TRY = TRYEXCEPT = TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren
-    
+        TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren
+
+    CONTINUE = BREAK = PASS = ignore
+
     # "expr" type nodes
-    BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \
-    CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren
-    
+    BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = YIELDFROM = \
+        COMPARE = CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = \
+        STARRED = handleChildren
+
+    NUM = STR = BYTES = ELLIPSIS = ignore
+
     # "slice" type nodes
     SLICE = EXTSLICE = INDEX = handleChildren
-    
+
+    # expression contexts are node instances too, though being constants
+    LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = ignore
+
+    # same for operators
+    AND = OR = ADD = SUB = MULT = DIV = MOD = POW = LSHIFT = RSHIFT = \
+        BITOR = BITXOR = BITAND = FLOORDIV = INVERT = NOT = UADD = USUB = \
+        EQ = NOTEQ = LT = LTE = GT = GTE = IS = ISNOT = IN = NOTIN = ignore
+
     # additional node types
     COMPREHENSION = KEYWORD = handleChildren
-    
-    def addBinding(self, lineno, value, reportRedef=True):
-        '''
-        Called when a binding is altered.
 
-        @param lineno line of the statement responsible for the change
-            (integer)
-        @param value the optional new value, a Binding instance, associated
-            with the binding; if None, the binding is deleted if it exists
-        @param reportRedef flag indicating if rebinding while unused will be
-            reported (boolean)
-        '''
-        if (isinstance(self.scope.get(value.name), FunctionDefinition)
-                    and isinstance(value, FunctionDefinition)
-                    and not self.scope.get(value.name).is_property
-                    and not value.is_property):
-            self.report(messages.RedefinedFunction,
-                        lineno, value.name,
-                        self.scope[value.name].source.lineno)
-
-        if not isinstance(self.scope, ClassScope):
-            for scope in self.scopeStack[::-1]:
-                existing = scope.get(value.name)
-                if isinstance(existing, Importation) and \
-                   not existing.used and \
-                   not isinstance(value, UnBinding) and \
-                   (not isinstance(value, Importation) or \
-                    value.fullName == existing.fullName) and \
-                   reportRedef:
-                    self.report(messages.RedefinedWhileUnused,
-                                lineno, value.name,
-                                scope[value.name].source.lineno)
-
-        if isinstance(value, UnBinding):
-            try:
-                del self.scope[value.name]
-            except KeyError:
-                self.report(messages.UndefinedName, lineno, value.name)
-        else:
-            self.scope[value.name] = value
-    
-    ############################################################
-    ## individual handler methods below
-    ############################################################
-    
     def GLOBAL(self, node):
         """
         Keep track of globals declarations.
         """
         if isinstance(self.scope, FunctionScope):
-            self.scope.globals.update(dict.fromkeys(node.names))
-    
+            self.scope.globals.update(node.names)
+
     NONLOCAL = GLOBAL
 
     def LISTCOMP(self, node):
-        for generator in node.generators:
-            self.handleNode(generator, node)
+        # handle generators before element
+        for gen in node.generators:
+            self.handleNode(gen, node)
         self.handleNode(node.elt, node)
-    
-    SETCOMP = GENERATOREXP = LISTCOMP
-    
+
+    def GENERATOREXP(self, node):
+        self.pushScope(GeneratorScope)
+        # handle generators before element
+        for gen in node.generators:
+            self.handleNode(gen, node)
+        self.handleNode(node.elt, node)
+        self.popScope()
+
+    SETCOMP = GENERATOREXP
+
     def DICTCOMP(self, node):
-        for generator in node.generators:
-            self.handleNode(generator, node)
+        self.pushScope(GeneratorScope)
+        for gen in node.generators:
+            self.handleNode(gen, node)
         self.handleNode(node.key, node)
         self.handleNode(node.value, node)
-    
+        self.popScope()
+
     def FOR(self, node):
         """
         Process bindings for loop variables.
@@ -397,7 +687,7 @@
             elif isinstance(n, ast.expr_context):
                 return
             else:
-                for c in ast.iter_child_nodes(n):
+                for c in iter_child_nodes(n):
                     collectLoopVars(c)
 
         collectLoopVars(node.target)
@@ -406,8 +696,8 @@
                     # unused ones will get an unused import warning
                     and self.scope[varn].used):
                 self.report(messages.ImportShadowedByLoopVar,
-                            node.lineno, varn, self.scope[varn].source.lineno)
-        
+                            node, varn, self.scope[varn].source)
+
         self.handleChildren(node)
 
     def NAME(self, node):
@@ -416,143 +706,85 @@
         """
         # Locate the name in locals / function / globals scopes.
         if isinstance(node.ctx, (ast.Load, ast.AugLoad)):
-            # try local scope
-            importStarred = self.scope.importStarred
-            try:
-                self.scope[node.id].used = (self.scope, node.lineno)
-            except KeyError:
-                pass
-            else:
-                return
-
-            # try enclosing function scopes
-            for scope in self.scopeStack[-2:0:-1]:
-                importStarred = importStarred or scope.importStarred
-                if not isinstance(scope, FunctionScope):
-                    continue
-                try:
-                    scope[node.id].used = (self.scope, node.lineno)
-                except KeyError:
-                    pass
-                else:
-                    return
-
-            # try global scope
-            importStarred = importStarred or self.scopeStack[0].importStarred
-            try:
-                self.scopeStack[0][node.id].used = (self.scope, node.lineno)
-            except KeyError:
-                if ((not hasattr(builtins, node.id))
-                        and node.id not in _MAGIC_GLOBALS
-                        and not importStarred):
-                    if (os.path.basename(self.filename) == '__init__.py' and
-                        node.id == '__path__'):
-                        # the special name __path__ is valid only in packages
-                        pass
-                    else:
-                        self.report(messages.UndefinedName,
-                                    node.lineno, node.id)
+            self.handleNodeLoad(node)
+            if (node.id == 'locals' and isinstance(self.scope, FunctionScope)
+                    and isinstance(node.parent, ast.Call)):
+                # we are doing locals() call in current scope
+                self.scope.usesLocals = True
         elif isinstance(node.ctx, (ast.Store, ast.AugStore)):
-            # if the name hasn't already been defined in the current scope
-            if isinstance(self.scope, FunctionScope) and \
-                    node.id not in self.scope:
-                # for each function or module scope above us
-                for scope in self.scopeStack[:-1]:
-                    if not isinstance(scope, (FunctionScope, ModuleScope)):
-                        continue
-                    # if the name was defined in that scope, and the name has
-                    # been accessed already in the current scope, and hasn't
-                    # been declared global
-                    if (node.id in scope
-                            and scope[node.id].used
-                            and scope[node.id].used[0] is self.scope
-                            and node.id not in self.scope.globals):
-                        # then it's probably a mistake
-                        self.report(messages.UndefinedLocal,
-                                    scope[node.id].used[1],
-                                    node.id,
-                                    scope[node.id].source.lineno)
-                        break
-
-            if isinstance(node.parent,
-                          (ast.For, ast.comprehension, ast.Tuple, ast.List)):
-                binding = Binding(node.id, node)
-            elif (node.id == '__all__' and
-                  isinstance(self.scope, ModuleScope)):
-                binding = ExportBinding(node.id, node.parent.value)
-            else:
-                binding = Assignment(node.id, node)
-            if node.id in self.scope:
-                binding.used = self.scope[node.id].used
-            self.addBinding(node.lineno, binding)
+            self.handleNodeStore(node)
         elif isinstance(node.ctx, ast.Del):
-            if isinstance(self.scope, FunctionScope) and \
-                   node.id in self.scope.globals:
-                del self.scope.globals[node.id]
-            else:
-                self.addBinding(node.lineno, UnBinding(node.id, node))
+            self.handleNodeDelete(node)
         else:
-            # must be a Param context -- this only happens for names in
-            # function arguments, but these aren't dispatched through here
-            raise RuntimeError(
-                "Got impossible expression context: {0:r}".format(node.ctx,))
+            # must be a Param context -- this only happens for names in function
+            # arguments, but these aren't dispatched through here
+            raise RuntimeError("Got impossible expression context: %r" % (node.ctx,))
 
     def FUNCTIONDEF(self, node):
-        is_property = False
-        if hasattr(node, "decorator_list"):
-            for decorator in node.decorator_list:
-                self.handleNode(decorator, node)
-                if getattr(decorator, 'id', None) == 'property':
-                    is_property = True
-                if getattr(decorator, 'attr', None) in ('setter', 'deleter'):
-                    is_property = True
-        funcdef = FunctionDefinition(node.name, node)
-        funcdef.is_property = is_property
-        self.addBinding(node.lineno, funcdef)
+        for deco in node.decorator_list:
+            self.handleNode(deco, node)
+        self.addBinding(node, FunctionDefinition(node.name, node))
         self.LAMBDA(node)
+        if self.withDoctest:
+            self.deferFunction(lambda: self.handleDoctests(node))
 
     def LAMBDA(self, node):
-        for default in node.args.defaults + node.args.kw_defaults:
+        args = []
+
+        if PY2:
+            def addArgs(arglist):
+                for arg in arglist:
+                    if isinstance(arg, ast.Tuple):
+                        addArgs(arg.elts)
+                    else:
+                        if arg.id in args:
+                            self.report(messages.DuplicateArgument,
+                                        node, arg.id)
+                        args.append(arg.id)
+            addArgs(node.args.args)
+            defaults = node.args.defaults
+        else:
+            for arg in node.args.args + node.args.kwonlyargs:
+                if arg.arg in args:
+                    self.report(messages.DuplicateArgument,
+                                node, arg.arg)
+                args.append(arg.arg)
+                self.handleNode(arg.annotation, node)
+            if hasattr(node, 'returns'):    # Only for FunctionDefs
+                for annotation in (node.args.varargannotation,
+                                   node.args.kwargannotation, node.returns):
+                    self.handleNode(annotation, node)
+            defaults = node.args.defaults + node.args.kw_defaults
+
+        # vararg/kwarg identifiers are not Name nodes
+        for wildcard in (node.args.vararg, node.args.kwarg):
+            if not wildcard:
+                continue
+            if wildcard in args:
+                self.report(messages.DuplicateArgument, node, wildcard)
+            args.append(wildcard)
+        for default in defaults:
             self.handleNode(default, node)
 
         def runFunction():
-            args = []
 
-            def addArgs(arglist):
-                for arg in arglist:
-                    if isinstance(arg.arg, tuple):
-                        addArgs(arg.arg)
-                    else:
-                        if arg.arg in args:
-                            self.report(messages.DuplicateArgument,
-                                        node.lineno, arg.arg)
-                        args.append(arg.arg)
-            
+            self.pushScope()
+            for name in args:
+                self.addBinding(node, Argument(name, node), reportRedef=False)
+            if isinstance(node.body, list):
+                # case for FunctionDefs
+                for stmt in node.body:
+                    self.handleNode(stmt, node)
+            else:
+                # case for Lambdas
+                self.handleNode(node.body, node)
+
             def checkUnusedAssignments():
                 """
                 Check to see if any assignments have not been used.
                 """
-                for name, binding in self.scope.items():
-                    if (not binding.used and not name in self.scope.globals
-                        and isinstance(binding, Assignment)):
-                        self.report(messages.UnusedVariable,
-                                    binding.source.lineno, name)
-
-            self.pushFunctionScope()
-            addArgs(node.args.args)
-            addArgs(node.args.kwonlyargs)
-            # vararg/kwarg identifiers are not Name nodes
-            if node.args.vararg:
-                args.append(node.args.vararg)
-            if node.args.kwarg:
-                args.append(node.args.kwarg)
-            for name in args:
-                self.addBinding(node.lineno, Argument(name, node),
-                                reportRedef=False)
-            if isinstance(node.body, list):
-                self.handleBody(node)
-            else:
-                self.handleNode(node.body, node)
+                for name, binding in self.scope.unusedAssignments():
+                    self.report(messages.UnusedVariable, binding.source, name)
             self.deferAssignment(checkUnusedAssignments)
             self.popScope()
 
@@ -564,117 +796,80 @@
         classes, and the body of its definition.  Additionally, add its name to
         the current scope.
         """
-        for decorator in getattr(node, "decorator_list", []):
-            self.handleNode(decorator, node)
+        for deco in node.decorator_list:
+            self.handleNode(deco, node)
         for baseNode in node.bases:
             self.handleNode(baseNode, node)
-        self.addBinding(node.lineno, Binding(node.name, node))
-        self.pushClassScope()
-        self.handleBody(node)
+        if not PY2:
+            for keywordNode in node.keywords:
+                self.handleNode(keywordNode, node)
+        self.pushScope(ClassScope)
+        if self.withDoctest:
+            self.deferFunction(lambda: self.handleDoctests(node))
+        for stmt in node.body:
+            self.handleNode(stmt, node)
         self.popScope()
-
-    def handleAssignName(self, node):
-        # special handling for ast.Subscript and ast.Starred
-        if isinstance(node, (ast.Subscript, ast.Starred)):
-            node.value.parent = node
-            self.handleAssignName(node.value)
-            if isinstance(node, ast.Subscript):
-                if isinstance(node.slice, ast.Slice):
-                    self.handleNode(node.slice.lower, node)
-                    self.handleNode(node.slice.upper, node)
-                else:
-                    self.handleNode(node.slice.value, node)
-            return
-        
-        # if the name hasn't already been defined in the current scope
-        if isinstance(node, (ast.Tuple, ast.List)):
-            for elt in node.elts:
-                elt.parent = node
-                self.handleAssignName(elt)
-            return
-        
-        if isinstance(node, ast.Attribute):
-            self.handleNode(node.value, node)
-            return
-        
-        if isinstance(self.scope, FunctionScope) and node.id not in self.scope:
-            # for each function or module scope above us
-            for scope in self.scopeStack[:-1]:
-                if not isinstance(scope, (FunctionScope, ModuleScope)):
-                    continue
-                # if the name was defined in that scope, and the name has
-                # been accessed already in the current scope, and hasn't
-                # been declared global
-                if (node.id in scope
-                        and scope[node.id].used
-                        and scope[node.id].used[0] is self.scope
-                        and node.id not in self.scope.globals):
-                    # then it's probably a mistake
-                    self.report(messages.UndefinedLocal,
-                                scope[node.id].used[1],
-                                node.id,
-                                scope[node.id].source.lineno)
-                    break
-
-        if isinstance(node.parent,
-                      (ast.For, ast.ListComp, ast.GeneratorExp,
-                       ast.Tuple, ast.List)):
-            binding = Binding(node.id, node)
-        elif (node.id == '__all__' and
-              isinstance(self.scope, ModuleScope) and
-              isinstance(node.parent, ast.Assign)):
-            binding = ExportBinding(node.id, node.parent.value)
-        else:
-            binding = Assignment(node.id, node)
-        if node.id in self.scope:
-            binding.used = self.scope[node.id].used
-        self.addBinding(node.lineno, binding)
+        self.addBinding(node, ClassDefinition(node.name, node))
 
     def ASSIGN(self, node):
         self.handleNode(node.value, node)
         for target in node.targets:
             self.handleNode(target, node)
-    
+
     def AUGASSIGN(self, node):
-        # AugAssign is awkward: must set the context explicitly and
-        # visit twice, once with AugLoad context, once with AugStore context
-        node.target.ctx = ast.AugLoad()
+        self.handleNodeLoad(node.target)
+        self.handleNode(node.value, node)
         self.handleNode(node.target, node)
-        self.handleNode(node.value, node)
-        node.target.ctx = ast.AugStore()
-        self.handleNode(node.target, node)
-    
+
     def IMPORT(self, node):
         for alias in node.names:
             name = alias.asname or alias.name
             importation = Importation(name, node)
-            self.addBinding(node.lineno, importation)
+            self.addBinding(node, importation)
 
     def IMPORTFROM(self, node):
         if node.module == '__future__':
             if not self.futuresAllowed:
-                self.report(messages.LateFutureImport, node.lineno,
-                            [n.name for n in node.names])
+                self.report(messages.LateFutureImport,
+                            node, [n.name for n in node.names])
         else:
             self.futuresAllowed = False
 
         for alias in node.names:
             if alias.name == '*':
                 self.scope.importStarred = True
-                self.report(messages.ImportStarUsed, node.lineno, node.module)
+                self.report(messages.ImportStarUsed, node, node.module)
                 continue
             name = alias.asname or alias.name
             importation = Importation(name, node)
             if node.module == '__future__':
-                importation.used = (self.scope, node.lineno)
-            self.addBinding(node.lineno, importation)
-    
+                importation.used = (self.scope, node)
+            self.addBinding(node, importation)
+
+    def TRY(self, node):
+        handler_names = []
+        # List the exception handlers
+        for handler in node.handlers:
+            if isinstance(handler.type, ast.Tuple):
+                for exc_type in handler.type.elts:
+                    handler_names.append(getNodeName(exc_type))
+            elif handler.type:
+                handler_names.append(getNodeName(handler.type))
+        # Memorize the except handlers and process the body
+        self.exceptHandlers.append(handler_names)
+        for child in node.body:
+            self.handleNode(child, node)
+        self.exceptHandlers.pop()
+        # Process the other nodes: "except:", "else:", "finally:"
+        for child in iter_child_nodes(node):
+            if child not in node.body:
+                self.handleNode(child, node)
+
+    TRYEXCEPT = TRY
+
     def EXCEPTHANDLER(self, node):
-        node.type and self.handleNode(node.type, node)
-        if node.name:
-            node.id = node.name
-            self.handleAssignName(node)
-        self.handleBody(node)
-    
-    def STARRED(self, node):
-        self.handleNode(node.value, node)
+        # 3.x: in addition to handling children, we must handle the name of
+        # the exception, which is not a Name node, but a simple string.
+        if isinstance(node.name, str):
+            self.handleNodeStore(node)
+        self.handleChildren(node)
--- a/Utilities/pyflakes/messages.py	Wed Jan 15 19:16:06 2014 +0100
+++ b/Utilities/pyflakes/messages.py	Thu Jan 16 18:28:34 2014 +0100
@@ -4,8 +4,8 @@
 #
 # Original (c) 2005 Divmod, Inc.  See LICENSE file for details
 #
-# This module is based on pyflakes for Python2 but was heavily hacked to
-# work with Python3 and Qt (translatable messages)
+# This module is based on pyflakes for Python2 and Python3, but was modified to
+# be integrated into eric5
 
 """
 Module implementing the messages for pyflakes.
@@ -20,15 +20,16 @@
     message = ''
     message_args = ()
     
-    def __init__(self, filename, lineno):
+    def __init__(self, filename, loc):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         """
         self.filename = filename
-        self.lineno = lineno
+        self.lineno = loc.lineno
+        self.col = getattr(loc, 'col_offset', 0)
     
     def __str__(self):
         """
@@ -56,15 +57,15 @@
     message_id = 'F01'
     message = '%r imported but unused'
     
-    def __init__(self, filename, lineno, name):
+    def __init__(self, filename, loc, name):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name name of the unused import (string)
         """
-        Message.__init__(self, filename, lineno)
+        Message.__init__(self, filename, loc)
         self.message_args = (name,)
 
 
@@ -75,17 +76,37 @@
     message_id = 'F02'
     message = 'redefinition of unused %r from line %r'
     
-    def __init__(self, filename, lineno, name, orig_lineno):
+    def __init__(self, filename, loc, name, orig_loc):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name name of the redefined object (string)
-        @param orig_lineno line number of the original definition (integer)
+        @param orig_loc location of the original definition
         """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
+        Message.__init__(self, filename, loc)
+        self.message_args = (name, orig_loc.lineno)
+
+
+class RedefinedInListComp(Message):
+    """
+    Class defining the "Redefined In List Comprehension" message.
+    """
+    message_id = 'F12'
+    message = 'list comprehension redefines %r from line %r'
+
+    def __init__(self, filename, loc, name, orig_loc):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param loc location of the issue
+        @param name name of the redefined object (string)
+        @param orig_loc location of the original definition
+        """
+        Message.__init__(self, filename, loc)
+        self.message_args = (name, orig_loc.lineno)
 
 
 class ImportShadowedByLoopVar(Message):
@@ -95,17 +116,17 @@
     message_id = 'F03'
     message = 'import %r from line %r shadowed by loop variable'
     
-    def __init__(self, filename, lineno, name, orig_lineno):
+    def __init__(self, filename, loc, name, orig_loc):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name name of the shadowed import (string)
-        @param orig_lineno line number of the import (integer)
+        @param orig_loc location of the import
         """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
+        Message.__init__(self, filename, loc)
+        self.message_args = (name, orig_loc.lineno)
 
 
 class ImportStarUsed(Message):
@@ -115,15 +136,15 @@
     message_id = 'F04'
     message = "'from %s import *' used; unable to detect undefined names"
     
-    def __init__(self, filename, lineno, modname):
+    def __init__(self, filename, loc, modname):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param modname name of the module imported using star import (string)
         """
-        Message.__init__(self, filename, lineno)
+        Message.__init__(self, filename, loc)
         self.message_args = (modname,)
 
 
@@ -134,18 +155,39 @@
     message_id = 'F05'
     message = 'undefined name %r'
     
-    def __init__(self, filename, lineno, name):
+    def __init__(self, filename, loc, name):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name undefined name (string)
         """
-        Message.__init__(self, filename, lineno)
+        Message.__init__(self, filename, loc)
         self.message_args = (name,)
 
 
+class DoctestSyntaxError(Message):
+    """
+    Class defining the "Doctest syntax Error" message.
+    """
+    message_id = 'F13'
+    message = 'syntax error in doctest'
+
+    def __init__(self, filename, loc, position=None):
+        """
+        Constructor
+        
+        @param filename name of the file (string)
+        @param loc location of the issue
+        @param position position of the syntax error
+        """
+        Message.__init__(self, filename, loc)
+        if position:
+            (self.lineno, self.col) = position
+        self.message_args = ()
+
+
 class UndefinedExport(Message):
     """
     Class defining the "Undefined Export" message.
@@ -153,15 +195,15 @@
     message_id = 'F06'
     message = 'undefined name %r in __all__'
     
-    def __init__(self, filename, lineno, name):
+    def __init__(self, filename, loc, name):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name undefined exported name (string)
         """
-        Message.__init__(self, filename, lineno)
+        Message.__init__(self, filename, loc)
         self.message_args = (name,)
 
 
@@ -173,17 +215,17 @@
     message = "local variable %r (defined in enclosing scope on line %r)" \
               " referenced before assignment"
     
-    def __init__(self, filename, lineno, name, orig_lineno):
+    def __init__(self, filename, loc, name, orig_loc):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name name of the prematurely referenced variable (string)
-        @param orig_lineno line number of the variable definition (integer)
+        @param orig_loc location of the variable definition
         """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
+        Message.__init__(self, filename, loc)
+        self.message_args = (name, orig_loc.lineno)
 
 
 class DuplicateArgument(Message):
@@ -193,36 +235,36 @@
     message_id = 'F08'
     message = 'duplicate argument %r in function definition'
     
-    def __init__(self, filename, lineno, name):
+    def __init__(self, filename, loc, name):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name name of the duplicate argument (string)
         """
-        Message.__init__(self, filename, lineno)
+        Message.__init__(self, filename, loc)
         self.message_args = (name,)
 
 
-class RedefinedFunction(Message):
+class Redefined(Message):
     """
-    Class defining the "Redefined Function" message.
+    Class defining the "Redefined" message.
     """
     message_id = 'F09'
-    message = 'redefinition of function %r from line %r'
+    message = 'redefinition of %r from line %r'
     
-    def __init__(self, filename, lineno, name, orig_lineno):
+    def __init__(self, filename, loc, name, orig_loc):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param name name of the redefined function (string)
-        @param orig_lineno line number of the original definition (integer)
+        @param orig_loc location of the original definition
         """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
+        Message.__init__(self, filename, loc)
+        self.message_args = (name, orig_loc.lineno)
 
 
 class LateFutureImport(Message):
@@ -232,15 +274,15 @@
     message_id = 'F10'
     message = 'future import(s) %r after other statements'
     
-    def __init__(self, filename, lineno, names):
+    def __init__(self, filename, loc, names):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
+        @param loc location of the issue
         @param names names of the imported futures (string)
         """
-        Message.__init__(self, filename, lineno)
+        Message.__init__(self, filename, loc)
         self.message_args = (names,)
 
 
@@ -254,13 +296,13 @@
     message_id = 'F11'
     message = 'local variable %r is assigned to but never used'
     
-    def __init__(self, filename, lineno, name):
+    def __init__(self, filename, loc, names):
         """
         Constructor
         
         @param filename name of the file (string)
-        @param lineno line number (integer)
-        @param name name of the unused variable (string)
+        @param loc location of the issue
+        @param names names of unused variable (string)
         """
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name,)
+        Message.__init__(self, filename, loc)
+        self.message_args = (names,)
--- a/Utilities/pyflakes/translations.py	Wed Jan 15 19:16:06 2014 +0100
+++ b/Utilities/pyflakes/translations.py	Thu Jan 16 18:28:34 2014 +0100
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- cod)ing: utf-8 -*-
 
 # Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de>
 #
@@ -39,14 +39,19 @@
         'Duplicate argument {0!r} in function definition.'),
     'F09': QCoreApplication.translate(
         'pyFlakes',
-        'Redefinition of function {0!r} from line {1!r}.'),
+        'Redefinition of {0!r} from line {1!r}.'),
     'F10': QCoreApplication.translate(
         'pyFlakes',
         'Future import(s) {0!r} after other statements.'),
     'F11': QCoreApplication.translate(
         'pyFlakes',
         'Local variable {0!r} is assigned to but never used.'),
-
+    'F12': QCoreApplication.translate(
+        'pyFlakes',
+        'List comprehension redefines {0!r} from line {1!r}.'),
+    'F13': QCoreApplication.translate(
+        'pyFlakes',
+        'Syntax error detected in doctest.'),
 }
 
 
--- a/changelog	Wed Jan 15 19:16:06 2014 +0100
+++ b/changelog	Thu Jan 16 18:28:34 2014 +0100
@@ -2,6 +2,8 @@
 ----------
 Version 5.5.0-xxx:
 - bug fixes
+- Checkers
+  -- updated pyflakes to version 0.7.3
 - Multi Project
   -- added support for the categorisation of projects and changed the
      multi project file format
--- a/i18n/eric5_cs.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_cs.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -63060,7 +63060,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3762"/>
         <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Další varování&lt;/b&gt;&lt;p&gt;Jít na další řádku v aktuálním editoru, která obsahuje py3flakes varovné hlášení.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Další varování&lt;/b&gt;&lt;p&gt;Jít na další řádku v aktuálním editoru, která obsahuje py3flakes varovné hlášení.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
@@ -63075,7 +63075,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3780"/>
         <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Předchozí varování&lt;/b&gt;&lt;p&gt;Jít na předchozí řádku v aktuálním editoru, která obsahuje py3flakes varovné hlášení.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Předchozí varování&lt;/b&gt;&lt;p&gt;Jít na předchozí řádku v aktuálním editoru, která obsahuje py3flakes varovné hlášení.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
@@ -63090,7 +63090,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3796"/>
         <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Vyčistit varovná hlášení&lt;/b&gt;&lt;p&gt;Vyčistí všechna py3flakes varovná hlášení ze všech editorů.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Vyčistit varovná hlášení&lt;/b&gt;&lt;p&gt;Vyčistí všechna py3flakes varovná hlášení ze všech editorů.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
@@ -63850,6 +63850,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileDialog</name>
@@ -64962,65 +64977,80 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished">{0!r} importováno ale nepoužito.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished">Předefinování nepoužitých {0!r} z řádky {1!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished">Import {0!r} z řádky {1!r} zastíněný proměnnou cyklu.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished">použit &apos;from {0} import *&apos;; Nelze dohledat nedefinovaná jména.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished">Neznámé jméno {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished">Neznámé jméno {0!r} v __all__.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished">Je odkazováno na lokální proměnnou {0!r} (definovaná v uzavřeném jmenném prostoru na řádce {1!r}) před tím než byla přiřazena.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished">Duplicitní argument {0!r} v definici funkce.</translation>
     </message>
     <message>
         <location filename="../Utilities/py3flakes/translations.py" line="40"/>
         <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished">Znovu definování funkce {0!r} z řádku {1!r}.</translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <translation type="obsolete">Znovu definování funkce {0!r} z řádku {1!r}.</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished">Future import(y)  {0!r} po ostatních výrazech.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished">Lokální proměnná {0!r} je přiřazena, ale nikde nepoužita.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
Binary file i18n/eric5_de.qm has changed
--- a/i18n/eric5_de.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_de.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -59825,7 +59825,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3762"/>
         <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Nächste Warnung&lt;/b&gt;&lt;p&gt;Gehe zur nächsten Zeile des aktuellen Editors, die eine py3flakes Warning besitzt.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Nächste Warnung&lt;/b&gt;&lt;p&gt;Gehe zur nächsten Zeile des aktuellen Editors, die eine py3flakes Warning besitzt.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
@@ -59840,7 +59840,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3780"/>
         <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Vorherige Warnung&lt;/b&gt;&lt;p&gt;Gehe zur vorherigen Zeile des aktuellen Editors, die eine py3flakes Warning besitzt.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Vorherige Warnung&lt;/b&gt;&lt;p&gt;Gehe zur vorherigen Zeile des aktuellen Editors, die eine py3flakes Warning besitzt.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
@@ -59855,7 +59855,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3796"/>
         <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Warnungen löschen&lt;/b&gt;&lt;p&gt;Löscht die py3flakes Warnungen aller Editoren.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Warnungen löschen&lt;/b&gt;&lt;p&gt;Löscht die py3flakes Warnungen aller Editoren.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
@@ -60615,6 +60615,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Neue Dokumentenansicht&lt;/b&gt;&lt;p&gt;Offnet eine neue Ansicht des aktuellen Dokumentes in einem neuen Abschnitt. Beide Ansichten zeigen das selbe Dokument. Die Cursor lassen sich jedoch unabhängig positionieren.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Nächste Warnung&lt;/b&gt;&lt;p&gt;Gehe zur nächsten Zeile des aktuellen Editors, die eine pyflakes Warnung besitzt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Vorherige Warnung&lt;/b&gt;&lt;p&gt;Gehe zur vorherigen Zeile des aktuellen Editors, die eine pyflakes Warnung besitzt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Warnungen löschen&lt;/b&gt;&lt;p&gt;Löscht die pyflakes Warnungen aller Editoren.&lt;/p&gt;</translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileSidebarsDialog</name>
@@ -61514,65 +61529,80 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation>{0!r} importiert aber nicht benutzt.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation>Redefinition von nicht benutztem {0!r} aus Zeile {1!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation>Import {0!r} aus Zeile {1!r} durch lokale Variable verdeckt.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation>„from {0} import *“ verwendet; nicht definierte Namen können nicht entdeckt werden.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation>Nicht definierter Name {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation>Nicht definierter Name {0!r} in __all__.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation>Lokale Variable {0!r} (definiert im Sichtbarkeitsbereich in Zeile {1!r}) wird vor einer Zuweisung verwendet.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation>Doppeltes Argument {0!r} in Funktionsdefinition.</translation>
     </message>
     <message>
         <location filename="../Utilities/py3flakes/translations.py" line="40"/>
         <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation>Redefinition der Funktion {0!r} aus Zeile {1!r}.</translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <translation type="obsolete">Redefinition der Funktion {0!r} aus Zeile {1!r}.</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation>Future Import(s) {0!r} nach anderen Statements.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation>Lokale Variable {0!r} wurde zugewiesen aber nicht verwendet.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation>keine Nachricht für &apos;{0}&apos; definiert</translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation>Redefinition von {0!r} aus Zeile {1!r}.</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation>Listcomprehension redefiniert {0!r} aus Zeile {1!r}.</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation>Syntaxfehler in Doctest entdeckt.</translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_en.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_en.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -59138,11 +59138,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3762"/>
-        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
         <source>Previous warning message</source>
         <translation type="unfinished"></translation>
@@ -59153,11 +59148,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3780"/>
-        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
         <source>Clear Warning Messages</source>
         <translation type="unfinished"></translation>
@@ -59168,11 +59158,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3796"/>
-        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3810"/>
         <source>Next uncovered line</source>
         <translation type="unfinished"></translation>
@@ -60060,6 +60045,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileSidebarsDialog</name>
@@ -60948,65 +60948,75 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="40"/>
-        <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_es.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_es.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -60081,7 +60081,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3762"/>
         <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Siguiente mensaje de advertencia&lt;/b&gt;&lt;p&gt;Ir a la siguiente línea en el editor actual que contiene una advertencia de py3flakes.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Siguiente mensaje de advertencia&lt;/b&gt;&lt;p&gt;Ir a la siguiente línea en el editor actual que contiene una advertencia de py3flakes.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
@@ -60096,7 +60096,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3780"/>
         <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Mensaje de advertencia anterior&lt;/b&gt;&lt;p&gt;Ir a la línea anterior en el editor actual que contiene una advertencia de py3flakes.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Mensaje de advertencia anterior&lt;/b&gt;&lt;p&gt;Ir a la línea anterior en el editor actual que contiene una advertencia de py3flakes.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
@@ -60111,7 +60111,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3796"/>
         <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Limpiar Mensajes de Advertencia&lt;/b&gt;&lt;p&gt;Limpiar mensajes de advertencia de py3flakes en todos los editores.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Limpiar Mensajes de Advertencia&lt;/b&gt;&lt;p&gt;Limpiar mensajes de advertencia de py3flakes en todos los editores.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
@@ -60871,6 +60871,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Nueva Vista de Documento&lt;/b&gt;&lt;p&gt;Abre una nueva vista del documento actual en una nueva división. Ambas vistas muestran el mismo documento. Sin embargo, los cursores pueden estar ubicados de manera independiente.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileSidebarsDialog</name>
@@ -61833,65 +61848,80 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished">{0!r} se ha importado pero no se ha utilizado.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished">Redefinición de {0!r} no utilizado desde la línea {1!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished">Import {0!r} en la línea {1!r} oculto por variable en un bucle.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished">Se ha utilizado &apos;from {0} import *&apos;; no se pueden detectar nombres sin definir.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished">Nombre sin definir {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished">Nombre sin definir {0!r} en __all__.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished">Variable local {0!r} (definida en ámbito en la línea {1!r}) referenciada antes de asignación.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished">Argumento duplicado {0!r} en definición de función.</translation>
     </message>
     <message>
         <location filename="../Utilities/py3flakes/translations.py" line="40"/>
         <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished">Redefinicion de función {0!r} a partir de la línea {1!r}.</translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <translation type="obsolete">Redefinicion de función {0!r} a partir de la línea {1!r}.</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished">Future import(s) {0!r} despues de otras sentencias.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished">La variable local {0!r} is asignada pero nunca es utilizada.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_fr.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_fr.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -66514,7 +66514,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3762"/>
         <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Message d&apos;avertissement suivant&lt;/b&gt;&lt;p&gt;Aller à la prochaine ligne de l&apos;éditeur courant ayant un avertissement py3flakes.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Message d&apos;avertissement suivant&lt;/b&gt;&lt;p&gt;Aller à la prochaine ligne de l&apos;éditeur courant ayant un avertissement py3flakes.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
@@ -66529,7 +66529,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3780"/>
         <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Message d&apos;avertissement précédente&lt;/b&gt;&lt;p&gt;Aller à la ligne précédente de l&apos;éditeur courant ayant un avertissement py3flakes.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Message d&apos;avertissement précédente&lt;/b&gt;&lt;p&gt;Aller à la ligne précédente de l&apos;éditeur courant ayant un avertissement py3flakes.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
@@ -66544,7 +66544,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3796"/>
         <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Vider messages d&apos;avertissement&lt;/b&gt;&lt;p&gt;Vider messages d&apos;avertissement py3flakes de tous les éditeurs.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Vider messages d&apos;avertissement&lt;/b&gt;&lt;p&gt;Vider messages d&apos;avertissement py3flakes de tous les éditeurs.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
@@ -67305,6 +67305,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileDialog</name>
@@ -68571,65 +68586,75 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="40"/>
-        <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_it.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_it.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -63588,7 +63588,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3762"/>
         <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Messaggio di warning successivo&lt;/b&gt;&lt;p&gt;Vai alla linea seguente dell&apos;editor che ha un warning di py3flakes.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Messaggio di warning successivo&lt;/b&gt;&lt;p&gt;Vai alla linea seguente dell&apos;editor che ha un warning di py3flakes.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
@@ -63603,7 +63603,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3780"/>
         <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Messaggio di warning precedente&lt;/b&gt;&lt;p&gt;Vai alla linea precedente dell&apos;editor che ha un warning di py3flakes.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Messaggio di warning precedente&lt;/b&gt;&lt;p&gt;Vai alla linea precedente dell&apos;editor che ha un warning di py3flakes.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
@@ -63618,7 +63618,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3796"/>
         <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Pulisci messaggi di warning&lt;/b&gt;&lt;p&gt;Elimina i warning di py3flakes di tutte le finestre.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Pulisci messaggi di warning&lt;/b&gt;&lt;p&gt;Elimina i warning di py3flakes di tutte le finestre.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
@@ -64378,6 +64378,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileDialog</name>
@@ -65493,65 +65508,80 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished">{0!r} importato ma non usato.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished">Ridefinizione di {0!r} inutilizzato dalla linea {1!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished">Import {0!r} dalla linea{1!r} nascsto da una loop variable.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished">&apos;from {0} import *&apos; usato; impossibile rilevare nomi indefiniti.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished">Nome indefinito {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished">Nome indefinito {0!r} in __all__.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished">Variabile locale {0!r} (definita nello scopo dalla linea {1!r}) usata prima di essere assegnata.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished">Argomento duplicato {0!r} nella definizione della funzione.</translation>
     </message>
     <message>
         <location filename="../Utilities/py3flakes/translations.py" line="40"/>
         <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished">Ridefinizione della funzione {0!r} nella linea {1!r}.</translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <translation type="obsolete">Ridefinizione della funzione {0!r} nella linea {1!r}.</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished">Future import(s) {0!r} dopo altre istruzioni.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished">La variabile locale {0!r} è assegata ma mai utilizzata.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_ru.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_ru.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -63768,7 +63768,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3762"/>
         <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Следующее предупреждение&lt;/b&gt;&lt;p&gt;Перейти к следующему предупреждению&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Следующее предупреждение&lt;/b&gt;&lt;p&gt;Перейти к следующему предупреждению&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
@@ -63783,7 +63783,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3780"/>
         <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Предыдущее предупреждение&lt;/b&gt;&lt;p&gt;Перейти к предыдущему предупреждению&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Предыдущее предупреждение&lt;/b&gt;&lt;p&gt;Перейти к предыдущему предупреждению&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
@@ -63798,7 +63798,7 @@
     <message>
         <location filename="../ViewManager/ViewManager.py" line="3796"/>
         <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Очистить предупреждения&lt;/b&gt;&lt;p&gt;Очистить предупреждения во всех окнах редактора.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Очистить предупреждения&lt;/b&gt;&lt;p&gt;Очистить предупреждения во всех окнах редактора.&lt;/p&gt;</translation>
     </message>
     <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
@@ -64558,6 +64558,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileDialog</name>
@@ -65673,65 +65688,80 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished">Модуль {0!r} импортирован но не используется.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished">Переопределение неиспользуемого {0!r} со строки {1!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished">Импорт {0!r} (строка {1!r}) скрывается переменной цикла.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished">Использование &apos;from {0} import *&apos; делает детектирование неопределённых имён невозможным.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished">Неопределённое имя {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished">Неопределённое имя {0!r} в  __all__.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished">Использование неопределённой локальной переменной {0!r} (будет определённа только в строке {1!r}).</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished">Повторное использование аргумента {0!r} в определении функции.</translation>
     </message>
     <message>
         <location filename="../Utilities/py3flakes/translations.py" line="40"/>
         <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished">Переопределение функции {0!r} (строка {1!r}).</translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <translation type="obsolete">Переопределение функции {0!r} (строка {1!r}).</translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished">Импорт {0!r} внутри кода.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished">Неиспользуемая локальная переменная {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_tr.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_tr.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -62267,11 +62267,6 @@
         <translation>So&amp;nraki uyarı mesajı</translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3762"/>
-        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
         <source>Previous warning message</source>
         <translation>Önceki uyarı mesajı</translation>
@@ -62282,11 +62277,6 @@
         <translation>&amp;Önceki uyarı mesajı</translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3780"/>
-        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
         <source>Clear Warning Messages</source>
         <translation type="unfinished"></translation>
@@ -62297,11 +62287,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3796"/>
-        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3810"/>
         <source>Next uncovered line</source>
         <translation>Sonraki kapanmamış satır</translation>
@@ -63225,6 +63210,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileDialog</name>
@@ -64328,65 +64328,75 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished">{0!r}önemli ama kullanılmamış.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished">Tanımlanamayan isim {0!r}.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished"> {0!r} adı __all__ içinde tanımlı edğil.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="40"/>
-        <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished">Yerel değiişken {0!r}e atanır ama kullanılmaz.</translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>
--- a/i18n/eric5_zh_CN.GB2312.ts	Wed Jan 15 19:16:06 2014 +0100
+++ b/i18n/eric5_zh_CN.GB2312.ts	Thu Jan 16 18:28:34 2014 +0100
@@ -66428,11 +66428,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3762"/>
-        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3778"/>
         <source>Previous warning message</source>
         <translation type="unfinished"></translation>
@@ -66443,11 +66438,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3780"/>
-        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a py3flakes warning.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="3794"/>
         <source>Clear Warning Messages</source>
         <translation type="unfinished"></translation>
@@ -66458,11 +66448,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ViewManager/ViewManager.py" line="3796"/>
-        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear py3flakes warning messages of all editors.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ViewManager/ViewManager.py" line="940"/>
         <source>Join Lines</source>
         <translation type="unfinished"></translation>
@@ -67220,6 +67205,21 @@
         <source>&lt;b&gt;New Document View&lt;/b&gt;&lt;p&gt;Opens a new view of the current document in a new split. Both views show the same document. However, the cursors may be positioned independently.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3762"/>
+        <source>&lt;b&gt;Next warning message&lt;/b&gt;&lt;p&gt;Go to next line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3780"/>
+        <source>&lt;b&gt;Previous warning message&lt;/b&gt;&lt;p&gt;Go to previous line of the current editor having a pyflakes warning.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ViewManager/ViewManager.py" line="3796"/>
+        <source>&lt;b&gt;Clear Warning Messages&lt;/b&gt;&lt;p&gt;Clear pyflakes warning messages of all editors.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ViewProfileDialog</name>
@@ -68450,65 +68450,75 @@
 <context>
     <name>pyFlakes</name>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="15"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="15"/>
         <source>{0!r} imported but unused.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="18"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="18"/>
         <source>Redefinition of unused {0!r} from line {1!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="21"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="21"/>
         <source>Import {0!r} from line {1!r} shadowed by loop variable.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="24"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="24"/>
         <source>&apos;from {0} import *&apos; used; unable to detect undefined names.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="27"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="27"/>
         <source>Undefined name {0!r}.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="30"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="30"/>
         <source>Undefined name {0!r} in __all__.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="33"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="33"/>
         <source>Local variable {0!r} (defined in enclosing scope on line {1!r}) referenced before assignment.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="37"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="37"/>
         <source>Duplicate argument {0!r} in function definition.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="40"/>
-        <source>Redefinition of function {0!r} from line {1!r}.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="43"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="43"/>
         <source>Future import(s) {0!r} after other statements.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="46"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="46"/>
         <source>Local variable {0!r} is assigned to but never used.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/py3flakes/translations.py" line="66"/>
+        <location filename="../Utilities/pyflakes/translations.py" line="71"/>
         <source>no message defined for code &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="40"/>
+        <source>Redefinition of {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="49"/>
+        <source>List comprehension redefines {0!r} from line {1!r}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Utilities/pyflakes/translations.py" line="52"/>
+        <source>Syntax error detected in doctest.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>subversion</name>

eric ide

mercurial