Fixes for TabNanny and some code cleanup. Source doku regenerated. Py2 comp.

Thu, 30 May 2013 18:52:46 +0200

author
T.Rzepka <Tobias.Rzepka@gmail.com>
date
Thu, 30 May 2013 18:52:46 +0200
branch
Py2 comp.
changeset 2680
110ac646a3a0
parent 2679
122a9ffdeefb
child 2684
b1d8db9a31bc

Fixes for TabNanny and some code cleanup. Source doku regenerated.

APIs/Python3/eric5.api 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.IconEditor.cursors.cursors_rc.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.PySideImporter.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.UtilitiesPython2.PySideImporter.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.UtilitiesPython2.Tabnanny.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.UtilitiesPython2.TabnannyChecker.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.UtilitiesPython2.Tools.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Utilities.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.UtilitiesPython2.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.html file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Pep8/Pep8Checker.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Tabnanny/Tabnanny.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py file | annotate | diff | comparison | revisions
UtilitiesPython2/Tabnanny.py file | annotate | diff | comparison | revisions
UtilitiesPython2/TabnannyChecker.py file | annotate | diff | comparison | revisions
UtilitiesPython2/Tools.py file | annotate | diff | comparison | revisions
UtilitiesPython2/__init__.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
install.py file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Thu May 30 15:33:23 2013 +0200
+++ b/APIs/Python3/eric5.api	Thu May 30 18:52:46 2013 +0200
@@ -3704,7 +3704,6 @@
 eric5.Plugins.AboutPlugin.AboutDialog.titleText?7
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.Pep8Checker.report_error_args?4(line_number, offset, code, check, *args)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.Pep8Checker?1(filename, lines, repeat=False, select="", ignore="")
-eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.Pep8Py2Checker?1(filename, lines, repeat=False, select="", ignore="")
 eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog.Pep8CodeSelectionDialog.getSelectedCodes?4()
 eric5.Plugins.CheckerPlugins.Pep8.Pep8CodeSelectionDialog.Pep8CodeSelectionDialog?1(codes, showFixCodes, parent=None)
 eric5.Plugins.CheckerPlugins.Pep8.Pep8Dialog.Pep8Dialog.filenameRole?7
@@ -8283,26 +8282,6 @@
 eric5.Utilities.win32_Kill?4(pid)
 eric5.Utilities.win32_getRealName?4()
 eric5.Utilities.writeEncodedFile?4(filename, text, orig_coding)
-eric5.UtilitiesPython2.Tabnanny.NannyNag.get_line?4()
-eric5.UtilitiesPython2.Tabnanny.NannyNag.get_lineno?4()
-eric5.UtilitiesPython2.Tabnanny.NannyNag.get_msg?4()
-eric5.UtilitiesPython2.Tabnanny.NannyNag?1(lineno, msg, line)
-eric5.UtilitiesPython2.Tabnanny.Whitespace.equal?4(other)
-eric5.UtilitiesPython2.Tabnanny.Whitespace.indent_level?4(tabsize)
-eric5.UtilitiesPython2.Tabnanny.Whitespace.less?4(other)
-eric5.UtilitiesPython2.Tabnanny.Whitespace.longest_run_of_spaces?4()
-eric5.UtilitiesPython2.Tabnanny.Whitespace.not_equal_witness?4(other)
-eric5.UtilitiesPython2.Tabnanny.Whitespace.not_less_witness?4(other)
-eric5.UtilitiesPython2.Tabnanny.Whitespace?1(ws)
-eric5.UtilitiesPython2.Tabnanny.check?4(filename, codestring)
-eric5.UtilitiesPython2.Tabnanny.format_witnesses?4(w)
-eric5.UtilitiesPython2.Tabnanny.process_tokens?4(tokens)
-eric5.UtilitiesPython2.Tools.coding_regexps?7
-eric5.UtilitiesPython2.Tools.decode?4(text)
-eric5.UtilitiesPython2.Tools.extractLineFlags?4(line, startComment=")
-eric5.UtilitiesPython2.Tools.get_coding?4(text)
-eric5.UtilitiesPython2.Tools.normalizeCode?4(codestring)
-eric5.UtilitiesPython2.Tools.readEncodedFile?4(filename)
 eric5.VCS.CommandOptionsDialog.vcsCommandOptionsDialog.getOptions?4()
 eric5.VCS.CommandOptionsDialog.vcsCommandOptionsDialog?1(vcs, parent=None)
 eric5.VCS.ProjectBrowserHelper.VcsProjectBrowserHelper._VCSAdd?5()
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu May 30 15:33:23 2013 +0200
+++ b/Documentation/Help/source.qhp	Thu May 30 18:52:46 2013 +0200
@@ -950,18 +950,13 @@
             <section title="eric5.Utilities.FtpUtilities" ref="eric5.Utilities.FtpUtilities.html" />
             <section title="eric5.Utilities.ModuleParser" ref="eric5.Utilities.ModuleParser.html" />
             <section title="eric5.Utilities.PasswordChecker" ref="eric5.Utilities.PasswordChecker.html" />
+            <section title="eric5.Utilities.PySideImporter" ref="eric5.Utilities.PySideImporter.html" />
             <section title="eric5.Utilities.SyntaxCheck" ref="eric5.Utilities.SyntaxCheck.html" />
             <section title="eric5.Utilities.__init__" ref="eric5.Utilities.__init__.html" />
             <section title="eric5.Utilities.binplistlib" ref="eric5.Utilities.binplistlib.html" />
             <section title="eric5.Utilities.compatibility_fixes" ref="eric5.Utilities.compatibility_fixes.html" />
             <section title="eric5.Utilities.uic" ref="eric5.Utilities.uic.html" />
           </section>
-          <section title="eric5.UtilitiesPython2" ref="index-eric5.UtilitiesPython2.html">
-            <section title="eric5.UtilitiesPython2.PySideImporter" ref="eric5.UtilitiesPython2.PySideImporter.html" />
-            <section title="eric5.UtilitiesPython2.Tabnanny" ref="eric5.UtilitiesPython2.Tabnanny.html" />
-            <section title="eric5.UtilitiesPython2.TabnannyChecker" ref="eric5.UtilitiesPython2.TabnannyChecker.html" />
-            <section title="eric5.UtilitiesPython2.Tools" ref="eric5.UtilitiesPython2.Tools.html" />
-          </section>
           <section title="eric5.VCS" ref="index-eric5.VCS.html">
             <section title="eric5.VCS.CommandOptionsDialog" ref="eric5.VCS.CommandOptionsDialog.html" />
             <section title="eric5.VCS.ProjectBrowserHelper" ref="eric5.VCS.ProjectBrowserHelper.html" />
@@ -7471,15 +7466,10 @@
       <keyword name="MultiProjectWriter (Module)" id="MultiProjectWriter (Module)" ref="eric5.E5XML.MultiProjectWriter.html" />
       <keyword name="MultiProjectWriter.writeXML" id="MultiProjectWriter.writeXML" ref="eric5.E5XML.MultiProjectWriter.html#MultiProjectWriter.writeXML" />
       <keyword name="NannyNag" id="NannyNag" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag" />
-      <keyword name="NannyNag" id="NannyNag" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag" />
       <keyword name="NannyNag (Constructor)" id="NannyNag (Constructor)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.__init__" />
-      <keyword name="NannyNag (Constructor)" id="NannyNag (Constructor)" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.__init__" />
       <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_line" />
-      <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.get_line" />
       <keyword name="NannyNag.get_lineno" id="NannyNag.get_lineno" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_lineno" />
-      <keyword name="NannyNag.get_lineno" id="NannyNag.get_lineno" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.get_lineno" />
       <keyword name="NannyNag.get_msg" id="NannyNag.get_msg" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_msg" />
-      <keyword name="NannyNag.get_msg" id="NannyNag.get_msg" ref="eric5.UtilitiesPython2.Tabnanny.html#NannyNag.get_msg" />
       <keyword name="Network (Package)" id="Network (Package)" ref="index-eric5.Helpviewer.Network.html" />
       <keyword name="Network (Package)" id="Network (Package)" ref="index-eric5.Network.html" />
       <keyword name="NetworkAccessManager" id="NetworkAccessManager" ref="eric5.Helpviewer.Network.NetworkAccessManager.html#NetworkAccessManager" />
@@ -7910,8 +7900,6 @@
       <keyword name="Pep8Fixer.__getEol" id="Pep8Fixer.__getEol" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.__getEol" />
       <keyword name="Pep8Fixer.fixIssue" id="Pep8Fixer.fixIssue" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.fixIssue" />
       <keyword name="Pep8Fixer.saveFile" id="Pep8Fixer.saveFile" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Fixer.html#Pep8Fixer.saveFile" />
-      <keyword name="Pep8Py2Checker" id="Pep8Py2Checker" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Py2Checker" />
-      <keyword name="Pep8Py2Checker (Constructor)" id="Pep8Py2Checker (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html#Pep8Py2Checker.__init__" />
       <keyword name="Pep8StatisticsDialog" id="Pep8StatisticsDialog" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.html#Pep8StatisticsDialog" />
       <keyword name="Pep8StatisticsDialog (Constructor)" id="Pep8StatisticsDialog (Constructor)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.html#Pep8StatisticsDialog.__init__" />
       <keyword name="Pep8StatisticsDialog (Module)" id="Pep8StatisticsDialog (Module)" ref="eric5.Plugins.CheckerPlugins.Pep8.Pep8StatisticsDialog.html" />
@@ -8855,7 +8843,7 @@
       <keyword name="PyRegExpWizardWidget.on_wordboundButton_clicked" id="PyRegExpWizardWidget.on_wordboundButton_clicked" ref="eric5.Plugins.WizardPlugins.PyRegExpWizard.PyRegExpWizardDialog.html#PyRegExpWizardWidget.on_wordboundButton_clicked" />
       <keyword name="PyRegExpWizardWindow" id="PyRegExpWizardWindow" ref="eric5.Plugins.WizardPlugins.PyRegExpWizard.PyRegExpWizardDialog.html#PyRegExpWizardWindow" />
       <keyword name="PyRegExpWizardWindow (Constructor)" id="PyRegExpWizardWindow (Constructor)" ref="eric5.Plugins.WizardPlugins.PyRegExpWizard.PyRegExpWizardDialog.html#PyRegExpWizardWindow.__init__" />
-      <keyword name="PySideImporter (Module)" id="PySideImporter (Module)" ref="eric5.UtilitiesPython2.PySideImporter.html" />
+      <keyword name="PySideImporter (Module)" id="PySideImporter (Module)" ref="eric5.Utilities.PySideImporter.html" />
       <keyword name="PyUnit (Package)" id="PyUnit (Package)" ref="index-eric5.PyUnit.html" />
       <keyword name="Python (Package)" id="Python (Package)" ref="index-eric5.DebugClients.Python.html" />
       <keyword name="Python3 (Package)" id="Python3 (Package)" ref="index-eric5.DebugClients.Python3.html" />
@@ -10773,15 +10761,12 @@
       <keyword name="TabWidget.setCurrentWidget" id="TabWidget.setCurrentWidget" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.setCurrentWidget" />
       <keyword name="TabWidget.showIndicator" id="TabWidget.showIndicator" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.showIndicator" />
       <keyword name="Tabnanny (Module)" id="Tabnanny (Module)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html" />
-      <keyword name="Tabnanny (Module)" id="Tabnanny (Module)" ref="eric5.UtilitiesPython2.Tabnanny.html" />
       <keyword name="Tabnanny (Package)" id="Tabnanny (Package)" ref="index-eric5.Plugins.CheckerPlugins.Tabnanny.html" />
-      <keyword name="TabnannyChecker (Module)" id="TabnannyChecker (Module)" ref="eric5.UtilitiesPython2.TabnannyChecker.html" />
       <keyword name="TabnannyDialog" id="TabnannyDialog" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog" />
       <keyword name="TabnannyDialog (Constructor)" id="TabnannyDialog (Constructor)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__init__" />
       <keyword name="TabnannyDialog (Module)" id="TabnannyDialog (Module)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html" />
       <keyword name="TabnannyDialog.__createResultItem" id="TabnannyDialog.__createResultItem" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__createResultItem" />
       <keyword name="TabnannyDialog.__finish" id="TabnannyDialog.__finish" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__finish" />
-      <keyword name="TabnannyDialog.__py2check" id="TabnannyDialog.__py2check" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__py2check" />
       <keyword name="TabnannyDialog.__resort" id="TabnannyDialog.__resort" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.__resort" />
       <keyword name="TabnannyDialog.on_buttonBox_clicked" id="TabnannyDialog.on_buttonBox_clicked" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_buttonBox_clicked" />
       <keyword name="TabnannyDialog.on_resultList_itemActivated" id="TabnannyDialog.on_resultList_itemActivated" ref="eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html#TabnannyDialog.on_resultList_itemActivated" />
@@ -11039,7 +11024,6 @@
       <keyword name="ToolGroupConfigurationDialog.on_newButton_clicked" id="ToolGroupConfigurationDialog.on_newButton_clicked" ref="eric5.Preferences.ToolGroupConfigurationDialog.html#ToolGroupConfigurationDialog.on_newButton_clicked" />
       <keyword name="ToolGroupConfigurationDialog.on_upButton_clicked" id="ToolGroupConfigurationDialog.on_upButton_clicked" ref="eric5.Preferences.ToolGroupConfigurationDialog.html#ToolGroupConfigurationDialog.on_upButton_clicked" />
       <keyword name="Toolbox (Package)" id="Toolbox (Package)" ref="index-eric5.Toolbox.html" />
-      <keyword name="Tools (Module)" id="Tools (Module)" ref="eric5.UtilitiesPython2.Tools.html" />
       <keyword name="Tools (Package)" id="Tools (Package)" ref="index-eric5.Tools.html" />
       <keyword name="Translation" id="Translation" ref="eric5.Tools.TRPreviewer.html#Translation" />
       <keyword name="Translation (Constructor)" id="Translation (Constructor)" ref="eric5.Tools.TRPreviewer.html#Translation.__init__" />
@@ -11577,7 +11561,6 @@
       <keyword name="UserPropertiesDialog (Module)" id="UserPropertiesDialog (Module)" ref="eric5.Project.UserPropertiesDialog.html" />
       <keyword name="UserPropertiesDialog.storeData" id="UserPropertiesDialog.storeData" ref="eric5.Project.UserPropertiesDialog.html#UserPropertiesDialog.storeData" />
       <keyword name="Utilities (Package)" id="Utilities (Package)" ref="index-eric5.Utilities.html" />
-      <keyword name="UtilitiesPython2 (Package)" id="UtilitiesPython2 (Package)" ref="index-eric5.UtilitiesPython2.html" />
       <keyword name="VCS (Package)" id="VCS (Package)" ref="index-eric5.VCS.html" />
       <keyword name="VariableDetailDialog" id="VariableDetailDialog" ref="eric5.Debugger.VariableDetailDialog.html#VariableDetailDialog" />
       <keyword name="VariableDetailDialog (Constructor)" id="VariableDetailDialog (Constructor)" ref="eric5.Debugger.VariableDetailDialog.html#VariableDetailDialog.__init__" />
@@ -12133,21 +12116,13 @@
       <keyword name="WebPluginInterface.metaPlugin" id="WebPluginInterface.metaPlugin" ref="eric5.Helpviewer.WebPlugins.WebPluginInterface.html#WebPluginInterface.metaPlugin" />
       <keyword name="WebPlugins (Package)" id="WebPlugins (Package)" ref="index-eric5.Helpviewer.WebPlugins.html" />
       <keyword name="Whitespace" id="Whitespace" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace" />
-      <keyword name="Whitespace" id="Whitespace" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace" />
       <keyword name="Whitespace (Constructor)" id="Whitespace (Constructor)" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.__init__" />
-      <keyword name="Whitespace (Constructor)" id="Whitespace (Constructor)" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.__init__" />
       <keyword name="Whitespace.equal" id="Whitespace.equal" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.equal" />
-      <keyword name="Whitespace.equal" id="Whitespace.equal" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.equal" />
       <keyword name="Whitespace.indent_level" id="Whitespace.indent_level" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.indent_level" />
-      <keyword name="Whitespace.indent_level" id="Whitespace.indent_level" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.indent_level" />
       <keyword name="Whitespace.less" id="Whitespace.less" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.less" />
-      <keyword name="Whitespace.less" id="Whitespace.less" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.less" />
       <keyword name="Whitespace.longest_run_of_spaces" id="Whitespace.longest_run_of_spaces" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.longest_run_of_spaces" />
-      <keyword name="Whitespace.longest_run_of_spaces" id="Whitespace.longest_run_of_spaces" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.longest_run_of_spaces" />
       <keyword name="Whitespace.not_equal_witness" id="Whitespace.not_equal_witness" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.not_equal_witness" />
-      <keyword name="Whitespace.not_equal_witness" id="Whitespace.not_equal_witness" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.not_equal_witness" />
       <keyword name="Whitespace.not_less_witness" id="Whitespace.not_less_witness" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#Whitespace.not_less_witness" />
-      <keyword name="Whitespace.not_less_witness" id="Whitespace.not_less_witness" ref="eric5.UtilitiesPython2.Tabnanny.html#Whitespace.not_less_witness" />
       <keyword name="WidgetArea" id="WidgetArea" ref="eric5.Tools.TRPreviewer.html#WidgetArea" />
       <keyword name="WidgetArea (Constructor)" id="WidgetArea (Constructor)" ref="eric5.Tools.TRPreviewer.html#WidgetArea.__init__" />
       <keyword name="WidgetArea.__findWidget" id="WidgetArea.__findWidget" ref="eric5.Tools.TRPreviewer.html#WidgetArea.__findWidget" />
@@ -12266,7 +12241,6 @@
       <keyword name="bookmarks (Module)" id="bookmarks (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.BookmarksExtension.bookmarks.html" />
       <keyword name="changeRememberedMaster" id="changeRememberedMaster" ref="eric5.Utilities.crypto.__init__.html#changeRememberedMaster" />
       <keyword name="check" id="check" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#check" />
-      <keyword name="check" id="check" ref="eric5.UtilitiesPython2.Tabnanny.html#check" />
       <keyword name="checkBlacklistedVersions" id="checkBlacklistedVersions" ref="eric5.Globals.__init__.html#checkBlacklistedVersions" />
       <keyword name="checkPyside" id="checkPyside" ref="eric5.Utilities.__init__.html#checkPyside" />
       <keyword name="checker (Module)" id="checker (Module)" ref="eric5.Utilities.py2flakes.checker.html" />
@@ -12386,7 +12360,6 @@
       <keyword name="dateFromTime_t" id="dateFromTime_t" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#dateFromTime_t" />
       <keyword name="debug_thread_info" id="debug_thread_info" ref="eric5.DebugClients.Ruby.Debuggee.html#debug_thread_info" />
       <keyword name="decode" id="decode" ref="eric5.Utilities.SyntaxCheck.html#decode" />
-      <keyword name="decode" id="decode" ref="eric5.UtilitiesPython2.Tools.html#decode" />
       <keyword name="decodeBytes" id="decodeBytes" ref="eric5.Utilities.__init__.html#decodeBytes" />
       <keyword name="decodeString" id="decodeString" ref="eric5.Utilities.__init__.html#decodeString" />
       <keyword name="decryptData" id="decryptData" ref="eric5.Utilities.crypto.py3AES.html#decryptData" />
@@ -12443,7 +12416,6 @@
       <keyword name="extractFlags" id="extractFlags" ref="eric5.Utilities.__init__.html#extractFlags" />
       <keyword name="extractFlagsFromFile" id="extractFlagsFromFile" ref="eric5.Utilities.__init__.html#extractFlagsFromFile" />
       <keyword name="extractLineFlags" id="extractLineFlags" ref="eric5.Utilities.SyntaxCheck.html#extractLineFlags" />
-      <keyword name="extractLineFlags" id="extractLineFlags" ref="eric5.UtilitiesPython2.Tools.html#extractLineFlags" />
       <keyword name="extraneous_whitespace" id="extraneous_whitespace" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#extraneous_whitespace" />
       <keyword name="factory" id="factory" ref="eric5.VCS.__init__.html#factory" />
       <keyword name="factory" id="factory" ref="eric5.ViewManager.__init__.html#factory" />
@@ -12458,7 +12430,6 @@
       <keyword name="flush" id="flush" ref="eric5.DebugClients.Ruby.AsyncFile.html#flush" />
       <keyword name="formatTime" id="formatTime" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#formatTime" />
       <keyword name="format_witnesses" id="format_witnesses" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#format_witnesses" />
-      <keyword name="format_witnesses" id="format_witnesses" ref="eric5.UtilitiesPython2.Tabnanny.html#format_witnesses" />
       <keyword name="fromNativeSeparators" id="fromNativeSeparators" ref="eric5.Utilities.__init__.html#fromNativeSeparators" />
       <keyword name="generateDistroInfo" id="generateDistroInfo" ref="eric5.Utilities.__init__.html#generateDistroInfo" />
       <keyword name="generatePluginsVersionInfo" id="generatePluginsVersionInfo" ref="eric5.Utilities.__init__.html#generatePluginsVersionInfo" />
@@ -12579,7 +12550,6 @@
       <keyword name="get_class_members" id="get_class_members" ref="eric5.DebugClients.Python.FlexCompleter.html#get_class_members" />
       <keyword name="get_class_members" id="get_class_members" ref="eric5.DebugClients.Python3.FlexCompleter.html#get_class_members" />
       <keyword name="get_coding" id="get_coding" ref="eric5.Utilities.__init__.html#get_coding" />
-      <keyword name="get_coding" id="get_coding" ref="eric5.UtilitiesPython2.Tools.html#get_coding" />
       <keyword name="get_codingBytes" id="get_codingBytes" ref="eric5.Utilities.SyntaxCheck.html#get_codingBytes" />
       <keyword name="get_count" id="get_count" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_count" />
       <keyword name="get_error_statistics" id="get_error_statistics" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#get_error_statistics" />
@@ -12679,7 +12649,6 @@
       <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.Utilities.SyntaxCheck.html#normalizeCode" />
-      <keyword name="normalizeCode" id="normalizeCode" ref="eric5.UtilitiesPython2.Tools.html#normalizeCode" />
       <keyword name="normcaseabspath" id="normcaseabspath" ref="eric5.Utilities.__init__.html#normcaseabspath" />
       <keyword name="normcasepath" id="normcasepath" ref="eric5.Utilities.__init__.html#normcasepath" />
       <keyword name="normjoinpath" id="normjoinpath" ref="eric5.Utilities.__init__.html#normjoinpath" />
@@ -12704,7 +12673,6 @@
       <keyword name="printerr" id="printerr" ref="eric5.DebugClients.Python3.DebugBase.html#printerr" />
       <keyword name="process_options" id="process_options" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html#process_options" />
       <keyword name="process_tokens" id="process_tokens" ref="eric5.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#process_tokens" />
-      <keyword name="process_tokens" id="process_tokens" ref="eric5.UtilitiesPython2.Tabnanny.html#process_tokens" />
       <keyword name="proxyAuthenticationRequired" id="proxyAuthenticationRequired" ref="eric5.E5Network.E5NetworkProxyFactory.html#proxyAuthenticationRequired" />
       <keyword name="purge (Module)" id="purge (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.PurgeExtension.purge.html" />
       <keyword name="pwConvert" id="pwConvert" ref="eric5.Utilities.crypto.__init__.html#pwConvert" />
@@ -12731,7 +12699,6 @@
       <keyword name="rbclbr (Module)" id="rbclbr (Module)" ref="eric5.Utilities.ClassBrowsers.rbclbr.html" />
       <keyword name="read" id="read" ref="eric5.DebugClients.Ruby.AsyncFile.html#read" />
       <keyword name="readEncodedFile" id="readEncodedFile" ref="eric5.Utilities.SyntaxCheck.html#readEncodedFile" />
-      <keyword name="readEncodedFile" id="readEncodedFile" ref="eric5.UtilitiesPython2.Tools.html#readEncodedFile" />
       <keyword name="readEncodedFileWithHash" id="readEncodedFileWithHash" ref="eric5.Utilities.__init__.html#readEncodedFileWithHash" />
       <keyword name="readModule" id="readModule" ref="eric5.Utilities.ModuleParser.html#readModule" />
       <keyword name="readPlist" id="readPlist" ref="eric5.Utilities.binplistlib.html#readPlist" />
@@ -13625,6 +13592,7 @@
       <file>eric5.Utilities.FtpUtilities.html</file>
       <file>eric5.Utilities.ModuleParser.html</file>
       <file>eric5.Utilities.PasswordChecker.html</file>
+      <file>eric5.Utilities.PySideImporter.html</file>
       <file>eric5.Utilities.SyntaxCheck.html</file>
       <file>eric5.Utilities.__init__.html</file>
       <file>eric5.Utilities.binplistlib.html</file>
@@ -13637,10 +13605,6 @@
       <file>eric5.Utilities.py3flakes.checker.html</file>
       <file>eric5.Utilities.py3flakes.messages.html</file>
       <file>eric5.Utilities.uic.html</file>
-      <file>eric5.UtilitiesPython2.PySideImporter.html</file>
-      <file>eric5.UtilitiesPython2.Tabnanny.html</file>
-      <file>eric5.UtilitiesPython2.TabnannyChecker.html</file>
-      <file>eric5.UtilitiesPython2.Tools.html</file>
       <file>eric5.VCS.CommandOptionsDialog.html</file>
       <file>eric5.VCS.ProjectBrowserHelper.html</file>
       <file>eric5.VCS.ProjectHelper.html</file>
@@ -13776,7 +13740,6 @@
       <file>index-eric5.Utilities.html</file>
       <file>index-eric5.Utilities.py2flakes.html</file>
       <file>index-eric5.Utilities.py3flakes.html</file>
-      <file>index-eric5.UtilitiesPython2.html</file>
       <file>index-eric5.VCS.html</file>
       <file>index-eric5.ViewManager.html</file>
       <file>index-eric5.html</file>
--- a/Documentation/Source/eric5.IconEditor.cursors.cursors_rc.html	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html><head>
-<title>eric5.IconEditor.cursors.cursors_rc</title>
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric5.IconEditor.cursors.cursors_rc</h1>
-
-<h3>Global Attributes</h3>
-<table>
-<tr><td>qt_resource_data</td></tr><tr><td>qt_resource_name</td></tr><tr><td>qt_resource_struct</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#qCleanupResources">qCleanupResources</a></td>
-<td></td>
-</tr><tr>
-<td><a href="#qInitResources">qInitResources</a></td>
-<td></td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="qCleanupResources" ID="qCleanupResources"></a>
-<h2>qCleanupResources</h2>
-<b>qCleanupResources</b>(<i></i>)
-
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="qInitResources" ID="qInitResources"></a>
-<h2>qInitResources</h2>
-<b>qInitResources</b>(<i></i>)
-
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html	Thu May 30 15:33:23 2013 +0200
+++ b/Documentation/Source/eric5.Plugins.CheckerPlugins.Pep8.Pep8Checker.html	Thu May 30 18:52:46 2013 +0200
@@ -32,9 +32,6 @@
 <tr>
 <td><a href="#Pep8Checker">Pep8Checker</a></td>
 <td>Class implementing the PEP 8 checker.</td>
-</tr><tr>
-<td><a href="#Pep8Py2Checker">Pep8Py2Checker</a></td>
-<td>Class implementing the PEP 8 checker interface for Python 2.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -144,58 +141,5 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="Pep8Py2Checker" ID="Pep8Py2Checker"></a>
-<h2>Pep8Py2Checker</h2>
-<p>
-    Class implementing the PEP 8 checker interface for Python 2.
-</p>
-<h3>Derived from</h3>
-object
-<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><a href="#Pep8Py2Checker.__init__">Pep8Py2Checker</a></td>
-<td>Constructor</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="Pep8Py2Checker.__init__" ID="Pep8Py2Checker.__init__"></a>
-<h4>Pep8Py2Checker (Constructor)</h4>
-<b>Pep8Py2Checker</b>(<i>filename, lines, repeat=False, select="", ignore=""</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>filename</i></dt>
-<dd>
-name of the file to check (string)
-</dd><dt><i>lines</i></dt>
-<dd>
-source of the file (list of strings) (ignored)
-</dd><dt><i>repeat=</i></dt>
-<dd>
-flag indicating to repeat message categories (boolean)
-</dd><dt><i>select=</i></dt>
-<dd>
-list of message IDs to check for
-            (comma separated string)
-</dd><dt><i>ignore=</i></dt>
-<dd>
-list of message IDs to ignore
-            (comma separated string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html	Thu May 30 15:33:23 2013 +0200
+++ b/Documentation/Source/eric5.Plugins.CheckerPlugins.Tabnanny.TabnannyDialog.html	Thu May 30 18:52:46 2013 +0200
@@ -66,9 +66,6 @@
 <td><a href="#TabnannyDialog.__finish">__finish</a></td>
 <td>Private slot called when the action or the user pressed the button.</td>
 </tr><tr>
-<td><a href="#TabnannyDialog.__py2check">__py2check</a></td>
-<td>Private method to perform the indentation check for Python 2 files.</td>
-</tr><tr>
 <td><a href="#TabnannyDialog.__resort">__resort</a></td>
 <td>Private method to resort the tree.</td>
 </tr><tr>
@@ -123,25 +120,7 @@
 <b>__finish</b>(<i></i>)
 <p>
         Private slot called when the action or the user pressed the button.
-</p><a NAME="TabnannyDialog.__py2check" ID="TabnannyDialog.__py2check"></a>
-<h4>TabnannyDialog.__py2check</h4>
-<b>__py2check</b>(<i>filename</i>)
-<p>
-        Private method to perform the indentation check for Python 2 files.
-</p><dl>
-<dt><i>filename</i></dt>
-<dd>
-name of the file to be checked (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A tuple indicating status (True = an error was found), the
-            filename, the linenumber and the error message
-            (boolean, string, string, string). The values are only
-            valid, if the status is True.
-</dd>
-</dl><a NAME="TabnannyDialog.__resort" ID="TabnannyDialog.__resort"></a>
+</p><a NAME="TabnannyDialog.__resort" ID="TabnannyDialog.__resort"></a>
 <h4>TabnannyDialog.__resort</h4>
 <b>__resort</b>(<i></i>)
 <p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Utilities.PySideImporter.html	Thu May 30 18:52:46 2013 +0200
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Utilities.PySideImporter</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Utilities.PySideImporter</h1>
+<p>
+Module to check for the presence of PySide by importing it.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.UtilitiesPython2.PySideImporter.html	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric5.UtilitiesPython2.PySideImporter</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric5.UtilitiesPython2.PySideImporter</h1>
-<p>
-Module to check for the presence of PySide by importing it.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.UtilitiesPython2.Tabnanny.html	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,363 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric5.UtilitiesPython2.Tabnanny</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric5.UtilitiesPython2.Tabnanny</h1>
-<p>
-The Tab Nanny despises ambiguous indentation.  She knows no mercy.
-</p><p>
-tabnanny -- Detection of ambiguous indentation
-</p><p>
-For the time being this module is intended to be called as a script.
-However it is possible to import it into an IDE and use the function
-check() described below.
-</p><p>
-Warning: The API provided by this module is likely to change in future
-releases; such changes may not be backward compatible.
-</p><p>
-This is a modified version to make the original tabnanny better suitable
-for being called from within the eric5 IDE.
-</p><dl>
-<dt>Raises <b>ValueError</b>:</dt>
-<dd>
-The tokenize module is too old.
-</dd>
-</dl>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>__all__</td></tr><tr><td>__version__</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#NannyNag">NannyNag</a></td>
-<td>Raised by tokeneater() if detecting an ambiguous indent.</td>
-</tr><tr>
-<td><a href="#Whitespace">Whitespace</a></td>
-<td>Class implementing the whitespace checker.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#check">check</a></td>
-<td>Private function to check one Python source file for whitespace related problems.</td>
-</tr><tr>
-<td><a href="#format_witnesses">format_witnesses</a></td>
-<td>Function to format the witnesses as a readable string.</td>
-</tr><tr>
-<td><a href="#process_tokens">process_tokens</a></td>
-<td>Function processing all tokens generated by a tokenizer run.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="NannyNag" ID="NannyNag"></a>
-<h2>NannyNag</h2>
-<p>
-    Raised by tokeneater() if detecting an ambiguous indent.
-    Captured and handled in check().
-</p>
-<h3>Derived from</h3>
-Exception
-<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><a href="#NannyNag.__init__">NannyNag</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#NannyNag.get_line">get_line</a></td>
-<td>Method to retrieve the offending line.</td>
-</tr><tr>
-<td><a href="#NannyNag.get_lineno">get_lineno</a></td>
-<td>Method to retrieve the line number.</td>
-</tr><tr>
-<td><a href="#NannyNag.get_msg">get_msg</a></td>
-<td>Method to retrieve the message.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="NannyNag.__init__" ID="NannyNag.__init__"></a>
-<h4>NannyNag (Constructor)</h4>
-<b>NannyNag</b>(<i>lineno, msg, line</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>lineno</i></dt>
-<dd>
-Line number of the ambiguous indent.
-</dd><dt><i>msg</i></dt>
-<dd>
-Descriptive message assigned to this problem.
-</dd><dt><i>line</i></dt>
-<dd>
-The offending source line.
-</dd>
-</dl><a NAME="NannyNag.get_line" ID="NannyNag.get_line"></a>
-<h4>NannyNag.get_line</h4>
-<b>get_line</b>(<i></i>)
-<p>
-        Method to retrieve the offending line.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-The line of code (string)
-</dd>
-</dl><a NAME="NannyNag.get_lineno" ID="NannyNag.get_lineno"></a>
-<h4>NannyNag.get_lineno</h4>
-<b>get_lineno</b>(<i></i>)
-<p>
-        Method to retrieve the line number.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-The line number (integer)
-</dd>
-</dl><a NAME="NannyNag.get_msg" ID="NannyNag.get_msg"></a>
-<h4>NannyNag.get_msg</h4>
-<b>get_msg</b>(<i></i>)
-<p>
-        Method to retrieve the message.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-The error message (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="Whitespace" ID="Whitespace"></a>
-<h2>Whitespace</h2>
-<p>
-    Class implementing the whitespace checker.
-</p>
-<h3>Derived from</h3>
-object
-<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><a href="#Whitespace.__init__">Whitespace</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#Whitespace.equal">equal</a></td>
-<td>Method to compare the indentation levels of two Whitespace objects for equality.</td>
-</tr><tr>
-<td><a href="#Whitespace.indent_level">indent_level</a></td>
-<td>Method to determine the indentation level.</td>
-</tr><tr>
-<td><a href="#Whitespace.less">less</a></td>
-<td>Method to compare the indentation level against another Whitespace objects to be smaller.</td>
-</tr><tr>
-<td><a href="#Whitespace.longest_run_of_spaces">longest_run_of_spaces</a></td>
-<td>Method to calculate the length of longest contiguous run of spaces.</td>
-</tr><tr>
-<td><a href="#Whitespace.not_equal_witness">not_equal_witness</a></td>
-<td>Method to calculate a tuple of witnessing tab size.</td>
-</tr><tr>
-<td><a href="#Whitespace.not_less_witness">not_less_witness</a></td>
-<td>Method to calculate a tuple of witnessing tab size.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="Whitespace.__init__" ID="Whitespace.__init__"></a>
-<h4>Whitespace (Constructor)</h4>
-<b>Whitespace</b>(<i>ws</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>ws</i></dt>
-<dd>
-The string to be checked.
-</dd>
-</dl><a NAME="Whitespace.equal" ID="Whitespace.equal"></a>
-<h4>Whitespace.equal</h4>
-<b>equal</b>(<i>other</i>)
-<p>
-        Method to compare the indentation levels of two Whitespace objects for equality.
-</p><dl>
-<dt><i>other</i></dt>
-<dd>
-Whitespace object to compare against.
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-True, if we compare equal against the other Whitespace object.
-</dd>
-</dl><a NAME="Whitespace.indent_level" ID="Whitespace.indent_level"></a>
-<h4>Whitespace.indent_level</h4>
-<b>indent_level</b>(<i>tabsize</i>)
-<p>
-        Method to determine the indentation level.
-</p><dl>
-<dt><i>tabsize</i></dt>
-<dd>
-The length of a tab stop. (integer)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-indentation level (integer)
-</dd>
-</dl><a NAME="Whitespace.less" ID="Whitespace.less"></a>
-<h4>Whitespace.less</h4>
-<b>less</b>(<i>other</i>)
-<p>
-        Method to compare the indentation level against another Whitespace objects to
-        be smaller.
-</p><dl>
-<dt><i>other</i></dt>
-<dd>
-Whitespace object to compare against.
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-True, if we compare less against the other Whitespace object.
-</dd>
-</dl><a NAME="Whitespace.longest_run_of_spaces" ID="Whitespace.longest_run_of_spaces"></a>
-<h4>Whitespace.longest_run_of_spaces</h4>
-<b>longest_run_of_spaces</b>(<i></i>)
-<p>
-        Method to calculate the length of longest contiguous run of spaces.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-The length of longest contiguous run of spaces (whether or not
-            preceding a tab)
-</dd>
-</dl><a NAME="Whitespace.not_equal_witness" ID="Whitespace.not_equal_witness"></a>
-<h4>Whitespace.not_equal_witness</h4>
-<b>not_equal_witness</b>(<i>other</i>)
-<p>
-        Method to calculate a tuple of witnessing tab size.
-</p><p>
-        Intended to be used after not self.equal(other) is known, in which
-        case it will return at least one witnessing tab size.
-</p><dl>
-<dt><i>other</i></dt>
-<dd>
-Whitespace object to calculate against.
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A list of tuples (ts, i1, i2) such that
-            i1 == self.indent_level(ts) != other.indent_level(ts) == i2.
-</dd>
-</dl><a NAME="Whitespace.not_less_witness" ID="Whitespace.not_less_witness"></a>
-<h4>Whitespace.not_less_witness</h4>
-<b>not_less_witness</b>(<i>other</i>)
-<p>
-        Method to calculate a tuple of witnessing tab size.
-</p><p>
-        Intended to be used after not self.less(other is known, in which
-        case it will return at least one witnessing tab size.
-</p><dl>
-<dt><i>other</i></dt>
-<dd>
-Whitespace object to calculate against.
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A list of tuples (ts, i1, i2) such that
-            i1 == self.indent_level(ts) >= other.indent_level(ts) == i2.
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="check" ID="check"></a>
-<h2>check</h2>
-<b>check</b>(<i>filename, codestring</i>)
-<p>
-    Private function to check one Python source file for whitespace related problems.
-</p><dl>
-<dt><i>filename</i></dt>
-<dd>
-source filename (string)
-</dd><dt><i>codestring</i></dt>
-<dd>
-source code (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A tuple indicating status (True = an error was found), the
-        filename, the linenumber and the error message
-        (boolean, string, string, string). The values are only
-        valid, if the status is True.
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="format_witnesses" ID="format_witnesses"></a>
-<h2>format_witnesses</h2>
-<b>format_witnesses</b>(<i>w</i>)
-<p>
-    Function to format the witnesses as a readable string.
-</p><dl>
-<dt><i>w</i></dt>
-<dd>
-A list of witnesses
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-A formated string of the witnesses.
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="process_tokens" ID="process_tokens"></a>
-<h2>process_tokens</h2>
-<b>process_tokens</b>(<i>tokens</i>)
-<p>
-    Function processing all tokens generated by a tokenizer run.
-</p><dl>
-<dt><i>tokens</i></dt>
-<dd>
-list of tokens
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.UtilitiesPython2.TabnannyChecker.html	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric5.UtilitiesPython2.TabnannyChecker</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric5.UtilitiesPython2.TabnannyChecker</h1>
-<p>
-Module implementing the indentation check for Python 2.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric5.UtilitiesPython2.Tools.html	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric5.UtilitiesPython2.Tools</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body><a NAME="top" ID="top"></a>
-<h1>eric5.UtilitiesPython2.Tools</h1>
-<p>
-Module implementing tool functions.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>coding_regexps</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#decode">decode</a></td>
-<td>Function to decode a text.</td>
-</tr><tr>
-<td><a href="#extractLineFlags">extractLineFlags</a></td>
-<td>Function to extract flags starting and ending with '__' from a line comment.</td>
-</tr><tr>
-<td><a href="#get_coding">get_coding</a></td>
-<td>Function to get the coding of a text.</td>
-</tr><tr>
-<td><a href="#normalizeCode">normalizeCode</a></td>
-<td>Function to normalize the given code.</td>
-</tr><tr>
-<td><a href="#readEncodedFile">readEncodedFile</a></td>
-<td>Function to read a file and decode it's contents into proper text.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="decode" ID="decode"></a>
-<h2>decode</h2>
-<b>decode</b>(<i>text</i>)
-<p>
-    Function to decode a text.
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-text to decode (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-decoded text and encoding
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="extractLineFlags" ID="extractLineFlags"></a>
-<h2>extractLineFlags</h2>
-<b>extractLineFlags</b>(<i>line, startComment="</i>)
-<p>
-    Function to extract flags starting and ending with '__' from a line comment.
-</p><dl>
-<dt><i>line</i></dt>
-<dd>
-line to extract flags from (string)
-</dd><dt><i>startComment=</i></dt>
-<dd>
-string identifying the start of the comment (string)
-</dd><dt><i>endComment=</i></dt>
-<dd>
-string identifying the end of a comment (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-list containing the extracted flags (list of strings)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="get_coding" ID="get_coding"></a>
-<h2>get_coding</h2>
-<b>get_coding</b>(<i>text</i>)
-<p>
-    Function to get the coding of a text.
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-text to inspect (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-coding string
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="normalizeCode" ID="normalizeCode"></a>
-<h2>normalizeCode</h2>
-<b>normalizeCode</b>(<i>codestring</i>)
-<p>
-    Function to normalize the given code.
-</p><dl>
-<dt><i>codestring</i></dt>
-<dd>
-code to be normalized (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-normalized code (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="readEncodedFile" ID="readEncodedFile"></a>
-<h2>readEncodedFile</h2>
-<b>readEncodedFile</b>(<i>filename</i>)
-<p>
-    Function to read a file and decode it's contents into proper text.
-</p><dl>
-<dt><i>filename</i></dt>
-<dd>
-name of the file to read (string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-tuple of decoded text and encoding (string, string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric5.Utilities.html	Thu May 30 15:33:23 2013 +0200
+++ b/Documentation/Source/index-eric5.Utilities.html	Thu May 30 18:52:46 2013 +0200
@@ -56,6 +56,9 @@
 <td><a href="eric5.Utilities.PasswordChecker.html">PasswordChecker</a></td>
 <td>Module implementing a checker for password strength</td>
 </tr><tr>
+<td><a href="eric5.Utilities.PySideImporter.html">PySideImporter</a></td>
+<td>Module to check for the presence of PySide by importing it.</td>
+</tr><tr>
 <td><a href="eric5.Utilities.SyntaxCheck.html">SyntaxCheck</a></td>
 <td>Module implementing the syntax check for Python 2/3.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric5.UtilitiesPython2.html	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric5.UtilitiesPython2</title>
-<meta charset="UTF-8">
-<style>
-body {
-    background: #EDECE6;
-    margin: 0em 1em 10em 1em;
-    color: black;
-}
-
-h1 { color: white; background: #85774A; }
-h2 { color: white; background: #85774A; }
-h3 { color: white; background: #9D936E; }
-h4 { color: white; background: #9D936E; }
-    
-a { color: #BA6D36; }
-
-</style>
-</head>
-<body>
-<h1>eric5.UtilitiesPython2</h1>
-<p>
-This package implements some utilities and tools for Python2
-</p>
-
-
-<h3>Modules</h3>
-<table>
-<tr>
-<td><a href="eric5.UtilitiesPython2.PySideImporter.html">PySideImporter</a></td>
-<td>Module to check for the presence of PySide by importing it.</td>
-</tr><tr>
-<td><a href="eric5.UtilitiesPython2.Tabnanny.html">Tabnanny</a></td>
-<td>The Tab Nanny despises ambiguous indentation.</td>
-</tr><tr>
-<td><a href="eric5.UtilitiesPython2.TabnannyChecker.html">TabnannyChecker</a></td>
-<td>Module implementing the indentation check for Python 2.</td>
-</tr><tr>
-<td><a href="eric5.UtilitiesPython2.Tools.html">Tools</a></td>
-<td>Module implementing tool functions.</td>
-</tr>
-</table>
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric5.html	Thu May 30 15:33:23 2013 +0200
+++ b/Documentation/Source/index-eric5.html	Thu May 30 18:52:46 2013 +0200
@@ -117,9 +117,6 @@
 <td><a href="index-eric5.Utilities.html">Utilities</a></td>
 <td>Package implementing various functions/classes needed everywhere within eric5.</td>
 </tr><tr>
-<td><a href="index-eric5.UtilitiesPython2.html">UtilitiesPython2</a></td>
-<td>This package implements some utilities and tools for Python2</td>
-</tr><tr>
 <td><a href="index-eric5.VCS.html">VCS</a></td>
 <td>Module implementing the general part of the interface to version control systems.</td>
 </tr><tr>
--- a/Plugins/CheckerPlugins/Pep8/Pep8Checker.py	Thu May 30 15:33:23 2013 +0200
+++ b/Plugins/CheckerPlugins/Pep8/Pep8Checker.py	Thu May 30 18:52:46 2013 +0200
@@ -12,18 +12,10 @@
 except (NameError):
     pass
 
-import os
 import optparse
 
-from PyQt4.QtCore import QProcess, QCoreApplication
-
 from . import pep8
 
-import Preferences
-import Utilities
-
-from eric5config import getConfig
-
 
 class Pep8Checker(pep8.Checker):
     """
@@ -119,91 +111,3 @@
                 (self.filename, self.line_offset + line_number,
                  offset + 1, text)
             )
-
-
-class Pep8Py2Checker(object):
-    """
-    Class implementing the PEP 8 checker interface for Python 2.
-    """
-    def __init__(self, filename, lines, repeat=False,
-                 select="", ignore=""):
-        """
-        Constructor
-        
-        @param filename name of the file to check (string)
-        @param lines source of the file (list of strings) (ignored)
-        @keyparam repeat flag indicating to repeat message categories (boolean)
-        @keyparam select list of message IDs to check for
-            (comma separated string)
-        @keyparam ignore list of message IDs to ignore
-            (comma separated string)
-        """
-        self.messages = []
-        self.statistics = {}
-        
-        interpreter = Preferences.getDebugger("PythonInterpreter")
-        if interpreter == "" or not Utilities.isExecutable(interpreter):
-            self.messages.append((filename, 1, 1,
-                QCoreApplication.translate("Pep8Py2Checker",
-                    "Python2 interpreter not configured.")))
-            return
-        
-        checker = os.path.join(getConfig('ericDir'),
-                               "UtilitiesPython2", "Pep8Checker.py")
-        
-        args = [checker]
-        if repeat:
-            args.append("-r")
-        if select:
-            args.append("-s")
-            args.append(select)
-        if ignore:
-            args.append("-i")
-            args.append(ignore)
-        args.append("-f")
-        args.append(filename)
-        
-        proc = QProcess()
-        proc.setProcessChannelMode(QProcess.MergedChannels)
-        proc.start(interpreter, args)
-        finished = proc.waitForFinished(15000)
-        if finished:
-            output = \
-                str(proc.readAllStandardOutput(),
-                        Preferences.getSystem("IOEncoding"),
-                        'replace').splitlines()
-            if output[0] == "ERROR":
-                self.messages.append((filename, 1, 1, output[2]))
-                return
-            
-            if output[0] == "NO_PEP8":
-                return
-            
-            index = 0
-            while index < len(output):
-                if output[index] == "PEP8_STATISTICS":
-                    index += 1
-                    break
-                
-                fname = output[index + 1]
-                lineno = int(output[index + 2])
-                position = int(output[index + 3])
-                code = output[index + 4]
-                arglen = int(output[index + 5])
-                args = []
-                argindex = 0
-                while argindex < arglen:
-                    args.append(output[index + 6 + argindex])
-                    argindex += 1
-                index += 6 + arglen
-                
-                text = pep8.getMessage(code, *args)
-                self.messages.append((fname, lineno, position, text))
-            while index < len(output):
-                code, countStr = output[index].split(None, 1)
-                self.statistics[code] = int(countStr)
-                index += 1
-        else:
-            self.messages.append((filename, 1, 1,
-                QCoreApplication.translate("Pep8Py2Checker",
-                    "Python2 interpreter did not finish within 15s.")))
--- a/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py	Thu May 30 15:33:23 2013 +0200
+++ b/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py	Thu May 30 18:52:46 2013 +0200
@@ -43,7 +43,10 @@
 __version__ = "6_eric"
 
 import tokenize
-import io
+try:
+    import StringIO as io
+except (ImportError):
+    import io    # __IGNORE_WARNING__    
 
 import Utilities
 
@@ -111,11 +114,9 @@
     if not text:
         try:
             text = Utilities.readEncodedFile(file)[0]
+            text = Utilities.normalizeCode(text)
         except (UnicodeError, IOError) as msg:
             return (True, file, "1", "Error: {0}".format(str(msg)))
-            
-        # convert eols
-        text = Utilities.convertLineEnds(text, "\n")
     
     source = io.StringIO(text)
     try:
--- a/Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py	Thu May 30 15:33:23 2013 +0200
+++ b/Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py	Thu May 30 18:52:46 2013 +0200
@@ -9,14 +9,14 @@
 
 from __future__ import unicode_literals    # __IGNORE_WARNING__
 try:
-    str = unicode
+    str = unicode   # __IGNORE_WARNING__
 except (NameError):
     pass
 
 import os
 import fnmatch
 
-from PyQt4.QtCore import pyqtSlot, Qt, QProcess
+from PyQt4.QtCore import pyqtSlot, Qt
 from PyQt4.QtGui import QDialog, QDialogButtonBox, QTreeWidgetItem, QApplication, \
     QHeaderView
 
@@ -27,8 +27,6 @@
 import Utilities
 import Preferences
 
-from eric5config import getConfig
-
 
 class TabnannyDialog(QDialog, Ui_TabnannyDialog):
     """
@@ -118,24 +116,20 @@
             files = fn
         elif os.path.isdir(fn):
             files = []
-            for ext in Preferences.getPython("Python3Extensions"):
-                files.extend(Utilities.direntries(fn, 1, '*{0}'.format(ext), 0))
-            for ext in Preferences.getPython("PythonExtensions"):
-                files.extend(Utilities.direntries(fn, 1, '*{0}'.format(ext), 0))
+            extensions = set(Preferences.getPython("PythonExtensions") +
+                Preferences.getPython("Python3Extensions"))
+            for ext in extensions:
+                files.extend(Utilities.direntries(fn, True, '*{0}'.format(ext), 0))
         else:
             files = [fn]
-        py3files = [f for f in files \
-                    if f.endswith(tuple(Preferences.getPython("Python3Extensions")))]
-        py2files = [f for f in files \
-                    if f.endswith(tuple(Preferences.getPython("PythonExtensions")))]
         
-        if len(py3files) + len(py2files) > 0:
-            self.checkProgress.setMaximum(len(py3files) + len(py2files))
+        if len(files) > 0:
+            self.checkProgress.setMaximum(len(files))
             QApplication.processEvents()
             
             # now go through all the files
             progress = 0
-            for file in py3files + py2files:
+            for file in files:
                 self.checkProgress.setValue(progress)
                 QApplication.processEvents()
                 self.__resort()
@@ -145,29 +139,16 @@
                 
                 try:
                     source = Utilities.readEncodedFile(file)[0]
-                    # convert eols
-                    source = Utilities.convertLineEnds(source, "\n")
+                    source = Utilities.normalizeCode(source)
                 except (UnicodeError, IOError) as msg:
                     self.noResults = False
-                    self.__createResultItem(file, "1",
+                    self.__createResultItem(file, 1,
                         "Error: {0}".format(str(msg)).rstrip()[1:-1])
                     progress += 1
                     continue
-                
-                flags = Utilities.extractFlags(source)
-                ext = os.path.splitext(file)[1]
-                if ("FileType" in flags and
-                    flags["FileType"] in ["Python", "Python2"]) or \
-                   file in py2files or \
-                   (ext in [".py", ".pyw"] and \
-                    Preferences.getProject("DeterminePyFromProject") and \
-                    self.__project.isOpen() and \
-                    self.__project.isProjectFile(file) and \
-                    self.__project.getProjectLanguage() in ["Python", "Python2"]):
-                    nok, fname, line, error = self.__py2check(file)
-                else:
-                    from . import Tabnanny
-                    nok, fname, line, error = Tabnanny.check(file, source)
+
+                from . import Tabnanny
+                nok, fname, line, error = Tabnanny.check(file, source)
                 if nok:
                     self.noResults = False
                     self.__createResultItem(fname, line, error.rstrip())
@@ -245,47 +226,3 @@
         lineno = int(itm.text(1))
         
         e5App().getObject("ViewManager").openSourceFile(fn, lineno)
-    
-    ############################################################################
-    ## Python 2 interface below
-    ############################################################################
-    
-    def __py2check(self, filename):
-        """
-        Private method to perform the indentation check for Python 2 files.
-        
-        @param filename name of the file to be checked (string)
-        @return A tuple indicating status (True = an error was found), the
-            filename, the linenumber and the error message
-            (boolean, string, string, string). The values are only
-            valid, if the status is True.
-        """
-        interpreter = Preferences.getDebugger("PythonInterpreter")
-        if interpreter == "" or not Utilities.isExecutable(interpreter):
-            return (True, filename, "1",
-                self.trUtf8("Python2 interpreter not configured."))
-        
-        checker = os.path.join(getConfig('ericDir'),
-                               "UtilitiesPython2", "TabnannyChecker.py")
-        
-        proc = QProcess()
-        proc.setProcessChannelMode(QProcess.MergedChannels)
-        proc.start(interpreter, [checker, filename])
-        finished = proc.waitForFinished(15000)
-        if finished:
-            output = \
-                str(proc.readAllStandardOutput(),
-                        Preferences.getSystem("IOEncoding"),
-                        'replace').splitlines()
-            
-            nok = output[0] == "ERROR"
-            if nok:
-                fn = output[1]
-                line = output[2]
-                error = output[3]
-                return (True, fn, line, error)
-            else:
-                return (False, None, None, None)
-        
-        return (True, filename, "1",
-            self.trUtf8("Python2 interpreter did not finish within 15s."))
--- a/UtilitiesPython2/Tabnanny.py	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,390 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-The Tab Nanny despises ambiguous indentation.  She knows no mercy.
-
-tabnanny -- Detection of ambiguous indentation
-
-For the time being this module is intended to be called as a script.
-However it is possible to import it into an IDE and use the function
-check() described below.
-
-Warning: The API provided by this module is likely to change in future
-releases; such changes may not be backward compatible.
-
-This is a modified version to make the original tabnanny better suitable
-for being called from within the eric5 IDE.
-
-@exception ValueError The tokenize module is too old.
-"""
-
-# Released to the public domain, by Tim Peters, 15 April 1998.
-
-# XXX Note: this is now a standard library module.
-# XXX The API needs to undergo changes however; the current code is too
-# XXX script-like.  This will be addressed later.
-
-#
-# This is a modified version to make the original tabnanny better suitable
-# for being called from within the eric4 IDE. The modifications are as
-# follows:
-#
-# - there is no main function anymore
-# - check function has been modified to only accept a filename and return
-#   a tuple indicating status (1 = an error was found), the filename, the
-#   linenumber and the error message (boolean, string, string, string). The
-#   values are only valid, if the status equals 1.
-#
-# Modifications copyright (c) 2003 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-__version__ = "6_eric5"
-
-import tokenize
-import cStringIO
-
-if not hasattr(tokenize, 'NL'):
-    raise ValueError("tokenize.NL doesn't exist -- tokenize module too old")
-
-__all__ = ["check", "NannyNag", "process_tokens"]
-
-
-class NannyNag(Exception):
-    """
-    Raised by tokeneater() if detecting an ambiguous indent.
-    Captured and handled in check().
-    """
-    def __init__(self, lineno, msg, line):
-        """
-        Constructor
-        
-        @param lineno Line number of the ambiguous indent.
-        @param msg Descriptive message assigned to this problem.
-        @param line The offending source line.
-        """
-        self.lineno, self.msg, self.line = lineno, msg, line
-        
-    def get_lineno(self):
-        """
-        Method to retrieve the line number.
-        
-        @return The line number (integer)
-        """
-        return self.lineno
-        
-    def get_msg(self):
-        """
-        Method to retrieve the message.
-        
-        @return The error message (string)
-        """
-        return self.msg
-        
-    def get_line(self):
-        """
-        Method to retrieve the offending line.
-        
-        @return The line of code (string)
-        """
-        return self.line
-
-
-def check(filename, codestring):
-    """
-    Private function to check one Python source file for whitespace related problems.
-    
-    @param filename source filename (string)
-    @param codestring source code (string)
-    @return A tuple indicating status (True = an error was found), the
-        filename, the linenumber and the error message
-        (boolean, string, string, string). The values are only
-        valid, if the status is True.
-    """
-    global indents, check_equal
-    indents = [Whitespace("")]
-    check_equal = 0
-
-    source = cStringIO.StringIO(codestring)
-    try:
-        process_tokens(tokenize.generate_tokens(source.readline))
-    
-    except tokenize.TokenError, msg:
-        return (True, filename, "1", "Token Error: %s" % unicode(msg))
-    
-    except IndentationError, err:
-        return (True, filename, err.lineno, "Indentation Error: %s" % unicode(err.msg))
-    
-    except NannyNag, nag:
-        badline = nag.get_lineno()
-        line = nag.get_line()
-        return (True, filename, str(badline), line)
-    
-    except Exception, err:
-        return (True, filename, "1", "Unspecific Error: %s" % unicode(err))
-    
-    return (False, None, None, None)
-
-
-class Whitespace(object):
-    """
-    Class implementing the whitespace checker.
-    """
-    # the characters used for space and tab
-    S, T = ' \t'
-
-    # members:
-    #   raw
-    #       the original string
-    #   n
-    #       the number of leading whitespace characters in raw
-    #   nt
-    #       the number of tabs in raw[:n]
-    #   norm
-    #       the normal form as a pair (count, trailing), where:
-    #       count
-    #           a tuple such that raw[:n] contains count[i]
-    #           instances of S * i + T
-    #       trailing
-    #           the number of trailing spaces in raw[:n]
-    #       It's A Theorem that m.indent_level(t) ==
-    #       n.indent_level(t) for all t >= 1 iff m.norm == n.norm.
-    #   is_simple
-    #       true iff raw[:n] is of the form (T*)(S*)
-
-    def __init__(self, ws):
-        """
-        Constructor
-        
-        @param ws The string to be checked.
-        """
-        self.raw = ws
-        S, T = Whitespace.S, Whitespace.T
-        count = []
-        b = n = nt = 0
-        for ch in self.raw:
-            if ch == S:
-                n = n + 1
-                b = b + 1
-            elif ch == T:
-                n = n + 1
-                nt = nt + 1
-                if b >= len(count):
-                    count = count + [0] * (b - len(count) + 1)
-                count[b] = count[b] + 1
-                b = 0
-            else:
-                break
-        self.n = n
-        self.nt = nt
-        self.norm = tuple(count), b
-        self.is_simple = len(count) <= 1
-
-    # return length of longest contiguous run of spaces (whether or not
-    # preceding a tab)
-    def longest_run_of_spaces(self):
-        """
-        Method to calculate the length of longest contiguous run of spaces.
-        
-        @return The length of longest contiguous run of spaces (whether or not
-            preceding a tab)
-        """
-        count, trailing = self.norm
-        return max(len(count) - 1, trailing)
-
-    def indent_level(self, tabsize):
-        """
-        Method to determine the indentation level.
-        
-        @param tabsize The length of a tab stop. (integer)
-        @return indentation level (integer)
-        """
-        # count, il = self.norm
-        # for i in range(len(count)):
-        #    if count[i]:
-        #        il = il + (i/tabsize + 1)*tabsize * count[i]
-        # return il
-
-        # quicker:
-        # il = trailing + sum (i/ts + 1)*ts*count[i] =
-        # trailing + ts * sum (i/ts + 1)*count[i] =
-        # trailing + ts * sum i/ts*count[i] + count[i] =
-        # trailing + ts * [(sum i/ts*count[i]) + (sum count[i])] =
-        # trailing + ts * [(sum i/ts*count[i]) + num_tabs]
-        # and note that i/ts*count[i] is 0 when i < ts
-
-        count, trailing = self.norm
-        il = 0
-        for i in range(tabsize, len(count)):
-            il = il + i / tabsize * count[i]
-        return trailing + tabsize * (il + self.nt)
-
-    # return true iff self.indent_level(t) == other.indent_level(t)
-    # for all t >= 1
-    def equal(self, other):
-        """
-        Method to compare the indentation levels of two Whitespace objects for equality.
-        
-        @param other Whitespace object to compare against.
-        @return True, if we compare equal against the other Whitespace object.
-        """
-        return self.norm == other.norm
-
-    # return a list of tuples (ts, i1, i2) such that
-    # i1 == self.indent_level(ts) != other.indent_level(ts) == i2.
-    # Intended to be used after not self.equal(other) is known, in which
-    # case it will return at least one witnessing tab size.
-    def not_equal_witness(self, other):
-        """
-        Method to calculate a tuple of witnessing tab size.
-        
-        Intended to be used after not self.equal(other) is known, in which
-        case it will return at least one witnessing tab size.
-        
-        @param other Whitespace object to calculate against.
-        @return A list of tuples (ts, i1, i2) such that
-            i1 == self.indent_level(ts) != other.indent_level(ts) == i2.
-        """
-        n = max(self.longest_run_of_spaces(),
-                other.longest_run_of_spaces()) + 1
-        a = []
-        for ts in range(1, n + 1):
-            if self.indent_level(ts) != other.indent_level(ts):
-                a.append((ts,
-                           self.indent_level(ts),
-                           other.indent_level(ts)))
-        return a
-
-    # Return True iff self.indent_level(t) < other.indent_level(t)
-    # for all t >= 1.
-    # The algorithm is due to Vincent Broman.
-    # Easy to prove it's correct.
-    # XXXpost that.
-    # Trivial to prove n is sharp (consider T vs ST).
-    # Unknown whether there's a faster general way.  I suspected so at
-    # first, but no longer.
-    # For the special (but common!) case where M and N are both of the
-    # form (T*)(S*), M.less(N) iff M.len() < N.len() and
-    # M.num_tabs() <= N.num_tabs(). Proof is easy but kinda long-winded.
-    # XXXwrite that up.
-    # Note that M is of the form (T*)(S*) iff len(M.norm[0]) <= 1.
-    def less(self, other):
-        """
-        Method to compare the indentation level against another Whitespace objects to
-        be smaller.
-        
-        @param other Whitespace object to compare against.
-        @return True, if we compare less against the other Whitespace object.
-        """
-        if self.n >= other.n:
-            return False
-        if self.is_simple and other.is_simple:
-            return self.nt <= other.nt
-        n = max(self.longest_run_of_spaces(),
-                other.longest_run_of_spaces()) + 1
-        # the self.n >= other.n test already did it for ts=1
-        for ts in range(2, n + 1):
-            if self.indent_level(ts) >= other.indent_level(ts):
-                return False
-        return True
-
-    # return a list of tuples (ts, i1, i2) such that
-    # i1 == self.indent_level(ts) >= other.indent_level(ts) == i2.
-    # Intended to be used after not self.less(other) is known, in which
-    # case it will return at least one witnessing tab size.
-    def not_less_witness(self, other):
-        """
-        Method to calculate a tuple of witnessing tab size.
-        
-        Intended to be used after not self.less(other is known, in which
-        case it will return at least one witnessing tab size.
-        
-        @param other Whitespace object to calculate against.
-        @return A list of tuples (ts, i1, i2) such that
-            i1 == self.indent_level(ts) >= other.indent_level(ts) == i2.
-        """
-        n = max(self.longest_run_of_spaces(),
-                other.longest_run_of_spaces()) + 1
-        a = []
-        for ts in range(1, n + 1):
-            if self.indent_level(ts) >= other.indent_level(ts):
-                a.append((ts,
-                           self.indent_level(ts),
-                           other.indent_level(ts)))
-        return a
-
-
-def format_witnesses(w):
-    """
-    Function to format the witnesses as a readable string.
-    
-    @param w A list of witnesses
-    @return A formated string of the witnesses.
-    """
-    firsts = map(lambda tup: str(tup[0]), w)
-    prefix = "at tab size"
-    if len(w) > 1:
-        prefix = prefix + "s"
-    return prefix + " " + ', '.join(firsts)
-
-
-def process_tokens(tokens):
-    """
-    Function processing all tokens generated by a tokenizer run.
-    
-    @param tokens list of tokens
-    """
-    INDENT = tokenize.INDENT
-    DEDENT = tokenize.DEDENT
-    NEWLINE = tokenize.NEWLINE
-    JUNK = tokenize.COMMENT, tokenize.NL
-    indents = [Whitespace("")]
-    check_equal = 0
-    
-    for (type, token, start, end, line) in tokens:
-        if type == NEWLINE:
-            # a program statement, or ENDMARKER, will eventually follow,
-            # after some (possibly empty) run of tokens of the form
-            #     (NL | COMMENT)* (INDENT | DEDENT+)?
-            # If an INDENT appears, setting check_equal is wrong, and will
-            # be undone when we see the INDENT.
-            check_equal = 1
-
-        elif type == INDENT:
-            check_equal = 0
-            thisguy = Whitespace(token)
-            if not indents[-1].less(thisguy):
-                witness = indents[-1].not_less_witness(thisguy)
-                msg = "indent not greater e.g. " + format_witnesses(witness)
-                raise NannyNag(start[0], msg, line)
-            indents.append(thisguy)
-
-        elif type == DEDENT:
-            # there's nothing we need to check here!  what's important is
-            # that when the run of DEDENTs ends, the indentation of the
-            # program statement (or ENDMARKER) that triggered the run is
-            # equal to what's left at the top of the indents stack
-
-            # Ouch!  This assert triggers if the last line of the source
-            # is indented *and* lacks a newline -- then DEDENTs pop out
-            # of thin air.
-            # assert check_equal  # else no earlier NEWLINE, or an earlier INDENT
-            check_equal = 1
-
-            del indents[-1]
-
-        elif check_equal and type not in JUNK:
-            # this is the first "real token" following a NEWLINE, so it
-            # must be the first token of the next program statement, or an
-            # ENDMARKER; the "line" argument exposes the leading whitespace
-            # for this statement; in the case of ENDMARKER, line is an empty
-            # string, so will properly match the empty string with which the
-            # "indents" stack was seeded
-            check_equal = 0
-            thisguy = Whitespace(line)
-            if not indents[-1].equal(thisguy):
-                witness = indents[-1].not_equal_witness(thisguy)
-                msg = "indent not equal e.g. " + format_witnesses(witness)
-                raise NannyNag(start[0], msg, line)
-    
-#
-# eflag: FileType = Python2
--- a/UtilitiesPython2/TabnannyChecker.py	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the indentation check for Python 2.
-"""
-
-import sys
-
-import Tabnanny
-
-from Tools import readEncodedFile, normalizeCode
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print "ERROR"
-        print ""
-        print ""
-        print "No file name given."
-    else:
-        filename = sys.argv[-1]
-        try:
-            codestring = readEncodedFile(filename)[0]
-            codestring = normalizeCode(codestring)
-            
-            nok, fname, line, error = Tabnanny.check(filename, codestring)
-        except IOError, msg:
-            # fake an indentation error
-            nok, fname, line, error = \
-                True, filename, "1", "I/O Error: %s" % unicode(msg)
-        
-        if nok:
-            print "ERROR"
-        else:
-            print "NO_ERROR"
-        print fname
-        print line
-        print error
-    
-    sys.exit(0)
-
-#
-# eflag: FileType = Python2
--- a/UtilitiesPython2/Tools.py	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing tool functions.
-"""
-
-import re
-from codecs import BOM_UTF8, BOM_UTF16, BOM_UTF32
-
-coding_regexps = [
-    (2, re.compile(r'''coding[:=]\s*([-\w_.]+)''')),
-    (1, re.compile(r'''<\?xml.*\bencoding\s*=\s*['"]([-\w_.]+)['"]\?>''')),
-]
-
-
-def get_coding(text):
-    """
-    Function to get the coding of a text.
-    
-    @param text text to inspect (string)
-    @return coding string
-    """
-    lines = text.splitlines()
-    for coding in coding_regexps:
-        coding_re = coding[1]
-        head = lines[:coding[0]]
-        for l in head:
-            m = coding_re.search(l)
-            if m:
-                return m.group(1).lower()
-    return None
-
-
-def decode(text):
-    """
-    Function to decode a text.
-    
-    @param text text to decode (string)
-    @return decoded text and encoding
-    """
-    try:
-        if text.startswith(BOM_UTF8):
-            # UTF-8 with BOM
-            return unicode(text[len(BOM_UTF8):], 'utf-8'), 'utf-8-bom'
-        elif text.startswith(BOM_UTF16):
-            # UTF-16 with BOM
-            return unicode(text[len(BOM_UTF16):], 'utf-16'), 'utf-16'
-        elif text.startswith(BOM_UTF32):
-            # UTF-32 with BOM
-            return unicode(text[len(BOM_UTF32):], 'utf-32'), 'utf-32'
-        coding = get_coding(text)
-        if coding:
-            return unicode(text, coding), coding
-    except (UnicodeError, LookupError):
-        pass
-    
-    # Assume UTF-8
-    try:
-        return unicode(text, 'utf-8'), 'utf-8-guessed'
-    except (UnicodeError, LookupError):
-        pass
-    
-    # Assume Latin-1 (behaviour before 3.7.1)
-    return unicode(text, "latin-1"), 'latin-1-guessed'
-
-
-def readEncodedFile(filename):
-    """
-    Function to read a file and decode it's contents into proper text.
-    
-    @param filename name of the file to read (string)
-    @return tuple of decoded text and encoding (string, string)
-    """
-    f = open(filename)
-    text = f.read()
-    f.close()
-    return decode(text)
-
-
-def normalizeCode(codestring):
-    """
-    Function to normalize the given code.
-    
-    @param codestring code to be normalized (string)
-    @return normalized code (string)
-    """
-    if type(codestring) == type(u""):
-        codestring = codestring.encode('utf-8')
-    codestring = codestring.replace("\r\n", "\n").replace("\r", "\n")
-
-    if codestring and codestring[-1] != '\n':
-        codestring = codestring + '\n'
-    
-    return codestring
-
-
-def extractLineFlags(line, startComment="#", endComment=""):
-    """
-    Function to extract flags starting and ending with '__' from a line comment.
-    
-    @param line line to extract flags from (string)
-    @keyparam startComment string identifying the start of the comment (string)
-    @keyparam endComment string identifying the end of a comment (string)
-    @return list containing the extracted flags (list of strings)
-    """
-    flags = []
-    
-    pos = line.rfind(startComment)
-    if pos >= 0:
-        comment = line[pos + len(startComment):].strip()
-        if endComment:
-            comment = comment.replace("endComment", "")
-        flags = [f.strip() for f in comment.split()
-                 if (f.startswith("__") and f.endswith("__"))]
-    return flags
-
-#
-# eflag: FileType = Python2
--- a/UtilitiesPython2/__init__.py	Thu May 30 15:33:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-This package implements some utilities and tools for Python2
-"""
--- a/eric5.e4p	Thu May 30 15:33:23 2013 +0200
+++ b/eric5.e4p	Thu May 30 18:52:46 2013 +0200
@@ -798,10 +798,6 @@
     <Source>ThirdParty/Pygments/pygments/lexers/_asybuiltins.py</Source>
     <Source>ThirdParty/Pygments/pygments/styles/monokai.py</Source>
     <Source>Preferences/ConfigurationPages/TrayStarterPage.py</Source>
-    <Source>UtilitiesPython2/__init__.py</Source>
-    <Source>UtilitiesPython2/Tools.py</Source>
-    <Source>UtilitiesPython2/Tabnanny.py</Source>
-    <Source>UtilitiesPython2/TabnannyChecker.py</Source>
     <Source>ThirdParty/Pygments/pygments/lexers/hdl.py</Source>
     <Source>Plugins/CheckerPlugins/Pep8/__init__.py</Source>
     <Source>Plugins/CheckerPlugins/Pep8/pep8.py</Source>
--- a/install.py	Thu May 30 15:33:23 2013 +0200
+++ b/install.py	Thu May 30 18:52:46 2013 +0200
@@ -10,6 +10,11 @@
 """
 
 from __future__ import unicode_literals    # __IGNORE_WARNING__
+from __future__ import print_function    # __IGNORE_WARNING__
+try:
+    import io
+except (ImportError):
+    import StringIO as io
 
 import sys
 import os
@@ -20,6 +25,7 @@
 import shutil
 import fnmatch
 import distutils.sysconfig
+import codecs
 
 # Define the globals.
 progName = None
@@ -73,9 +79,10 @@
     global currDir
     
     if sys.platform.startswith("win"):
+        # different meaning of input between Py2 and Py3
         try:
             input("Press enter to continue...")
-        except EOFError:
+        except (EOFError, SyntaxError):
             pass
     
     os.chdir(currDir)
@@ -177,8 +184,8 @@
     @param name the name of the file.
     @param text the contents to copy to the file.
     """
-    f = open(name, "w", encoding="utf-8")
-    f.write(text)
+    f = open(name, "w")
+    f.write(codecs.encode(text, "utf-8"))
     f.close()
 
 
@@ -299,7 +306,7 @@
     if not os.path.exists(fname):
         if not os.path.exists(pdir):
             os.mkdir(pdir,  0o755)
-        f = open(fname, "w", encoding="utf-8")
+        f = open(fname, "w")
         f.write(
 '''# -*- coding: utf-8 -*-
 
@@ -783,7 +790,10 @@
     print('Checking dependencies')
     
     # perform dependency checks
-    if sys.version_info < (3, 1, 0):
+    if sys.version_info < (2, 6, 0):
+        print('Sorry, you must have Python 2.6.0 or higher or Python 3.1.0 or higher.')
+        exit(5)
+    elif sys.version_info < (3, 1, 0):
         print('Sorry, you must have Python 3.1.0 or higher.')
         exit(5)
     if sys.version_info > (3, 9, 9):
@@ -794,7 +804,7 @@
     try:
         import xml.etree            # __IGNORE_WARNING__
     except ImportError as msg:
-        print('Your Python3 installation is missing the XML module.')
+        print('Your Python installation is missing the XML module.')
         print('Please install it and try again.')
         exit(5)
     
@@ -1114,20 +1124,23 @@
     
     if doCompile:
         print("\nCompiling source files ...")
+        # Hide compile errors (mainly because of Py2/Py3 differences)
+        sys.stdout = io.StringIO()
         if distDir:
             compileall.compile_dir(sourceDir,
                 ddir=os.path.join(distDir, modDir, cfg['ericDir']),
-                rx=re.compile(r"DebugClients[\\/]Python[\\/]|UtilitiesPython2[\\/]"),
+                rx=re.compile(r"DebugClients[\\/]Python[\\/]"),
                 quiet=True)
             py_compile.compile(configName,
                                dfile=os.path.join(distDir, modDir, "eric5config.py"))
         else:
             compileall.compile_dir(sourceDir,
                 ddir=os.path.join(modDir, cfg['ericDir']),
-                rx=re.compile(r"DebugClients[\\/]Python[\\/]|UtilitiesPython2[\\/]"),
+                rx=re.compile(r"DebugClients[\\/]Python[\\/]"),
                 quiet=True)
             py_compile.compile(configName,
                                dfile=os.path.join(modDir, "eric5config.py"))
+        sys.stdout = sys.__stdout__
     print("\nInstalling eric5 ...")
     res = installEric()
     

eric ide

mercurial