Did some more string format conversions.

Thu, 29 Jul 2010 11:02:09 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 29 Jul 2010 11:02:09 +0200
changeset 428
58405c24aa09
parent 427
6af5d12cfecb
child 429
dcc623c99907

Did some more string format conversions.

Project/ProjectTranslationsBrowser.py file | annotate | diff | comparison | revisions
Project/PropertiesDialog.py file | annotate | diff | comparison | revisions
PyUnit/UnittestDialog.py file | annotate | diff | comparison | revisions
QScintilla/APIsManager.py file | annotate | diff | comparison | revisions
QScintilla/Lexers/__init__.py file | annotate | diff | comparison | revisions
QScintilla/MiniEditor.py file | annotate | diff | comparison | revisions
QScintilla/Shell.py file | annotate | diff | comparison | revisions
QScintilla/SpellCheckingDialog.py file | annotate | diff | comparison | revisions
QScintilla/Terminal.py file | annotate | diff | comparison | revisions
SqlBrowser/SqlBrowser.py file | annotate | diff | comparison | revisions
SqlBrowser/SqlBrowserWidget.py file | annotate | diff | comparison | revisions
Tasks/TaskViewer.py file | annotate | diff | comparison | revisions
Templates/TemplateMultipleVariablesDialog.py file | annotate | diff | comparison | revisions
Tools/TRSingleApplication.py file | annotate | diff | comparison | revisions
Tools/UIPreviewer.py file | annotate | diff | comparison | revisions
UI/FindFileNameDialog.py file | annotate | diff | comparison | revisions
Utilities/ClassBrowsers/idlclbr.py file | annotate | diff | comparison | revisions
Utilities/ClassBrowsers/pyclbr.py file | annotate | diff | comparison | revisions
Utilities/ClassBrowsers/rbclbr.py file | annotate | diff | comparison | revisions
Utilities/ModuleParser.py file | annotate | diff | comparison | revisions
Utilities/py3flakes/checker.py file | annotate | diff | comparison | revisions
Utilities/uic.py file | annotate | diff | comparison | revisions
compileUiFiles.py file | annotate | diff | comparison | revisions
eric5-trpreviewer.py file | annotate | diff | comparison | revisions
eric5config.py file | annotate | diff | comparison | revisions
uninstall.py file | annotate | diff | comparison | revisions
--- a/Project/ProjectTranslationsBrowser.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Project/ProjectTranslationsBrowser.py	Thu Jul 29 11:02:09 2010 +0200
@@ -657,7 +657,7 @@
         @return flag indicating success
         """
         path, ext = os.path.splitext(self.project.pfile)
-        pfile = '%s_e4x.pro' % path
+        pfile = '{0}_e4x.pro'.format(path)
         
         # only consider files satisfying the filter criteria
         _sources = [s for s in self.project.pdata["SOURCES"] \
@@ -710,19 +710,19 @@
             pf = open(pfile, "w", encoding = "utf-8")
             for key, list in sections:
                 if len(list) > 0:
-                    pf.write('%s = ' % key)
+                    pf.write('{0} = '.format(key))
                     last = len(list) - 1
                     if last > 0:
-                        pf.write('%s \\%s' % \
-                            (list[0].replace(os.sep, '/'), "\n"))
+                        pf.write('{0} \\{1}'.format(
+                            list[0].replace(os.sep, '/'), "\n"))
                         for i in range(1, last):
-                            pf.write('\t%s \\%s' % \
-                                (list[i].replace(os.sep, '/'), "\n"))
-                        pf.write('\t%s %s%s' % \
-                            (list[last].replace(os.sep, '/'), "\n", "\n"))
+                            pf.write('\t{0} \\{1}'.format(
+                                list[i].replace(os.sep, '/'), "\n"))
+                        pf.write('\t{0} {1}{2}'.format(
+                            list[last].replace(os.sep, '/'), "\n", "\n"))
                     else:
-                        pf.write('%s %s%s' % \
-                            (list[0].replace(os.sep, '/'), "\n", "\n"))
+                        pf.write('{0} {1}{2}'.format(
+                            list[0].replace(os.sep, '/'), "\n", "\n"))
                 
             pf.close()
             self.tmpProject = pfile
@@ -743,7 +743,7 @@
         pylupdate process.
         """
         if self.pylupdateProc is not None:
-            self.__readStdout(self.pylupdateProc, '%s: ' % self.pylupdate)
+            self.__readStdout(self.pylupdateProc, '{0}: '.format(self.pylupdate))
         else:
             return
         
@@ -779,7 +779,7 @@
         pylupdate process.
         """
         if self.pylupdateProc is not None:
-            self.__readStderr(self.pylupdateProc, '%s: ' % self.pylupdate)
+            self.__readStderr(self.pylupdateProc, '{0}: '.format(self.pylupdate))
         else:
             return
         
--- a/Project/PropertiesDialog.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Project/PropertiesDialog.py	Thu Jul 29 11:02:09 2010 +0200
@@ -231,9 +231,9 @@
         if fn:
             self.project.name = fn
             if Preferences.getProject("CompressedProjectFiles"):
-                fn = "%s.e4pz" % fn
+                fn = "{0}.e4pz".format(fn)
             else:
-                fn = "%s.e4p" % fn
+                fn = "{0}.e4p".format(fn)
             self.project.pfile = os.path.join(self.project.ppath, fn)
         else:
             self.project.pfile = ""
--- a/PyUnit/UnittestDialog.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/PyUnit/UnittestDialog.py	Thu Jul 29 11:02:09 2010 +0200
@@ -153,9 +153,9 @@
         """
         if self.dbs:
             pyExtensions = \
-                ' '.join(["*%s" % ext for ext in self.dbs.getExtensions('Python')])
+                ' '.join(["*{0}".format(ext) for ext in self.dbs.getExtensions('Python')])
             py3Extensions = \
-                ' '.join(["*%s" % ext for ext in self.dbs.getExtensions('Python3')])
+                ' '.join(["*{0}".format(ext) for ext in self.dbs.getExtensions('Python3')])
             filter = self.trUtf8("Python3 Files ({1});;Python2 Files ({0});;All Files (*)")\
                 .format(pyExtensions, py3Extensions)
         else:
@@ -276,7 +276,7 @@
                 else:
                     mainScript = os.path.abspath(prog)
                 cover = coverage(
-                    data_file = "%s.coverage" % os.path.splitext(mainScript)[0])
+                    data_file = "{0}.coverage".format(os.path.splitext(mainScript)[0]))
                 cover.use_cache(True)
                 if self.coverageEraseCheckBox.isChecked():
                     cover.erase()
@@ -423,7 +423,7 @@
         @param doc documentation of the started test (string)
         """
         if doc:
-            self.testsListWidget.insertItem(0, "    %s" % doc)
+            self.testsListWidget.insertItem(0, "    {0}".format(doc))
         self.testsListWidget.insertItem(0, test)
         if self.dbs is None or self.localCheckBox.isChecked():
             QApplication.processEvents()
@@ -592,4 +592,4 @@
             QApplication.exit()
             return True
         
-        return False
\ No newline at end of file
+        return False
--- a/QScintilla/APIsManager.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/QScintilla/APIsManager.py	Thu Jul 29 11:02:09 2010 +0200
@@ -34,7 +34,7 @@
         @param parent reference to the parent object (QObject)
         """
         QObject.__init__(self, parent)
-        self.setObjectName("APIs_%s" % language)
+        self.setObjectName("APIs_{0}".format(language))
         
         self.__inPreparation = False
         self.__language = language
--- a/QScintilla/Lexers/__init__.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/QScintilla/Lexers/__init__.py	Thu Jul 29 11:02:09 2010 +0200
@@ -42,7 +42,7 @@
     """
     global LexerRegistry
     if name in LexerRegistry:
-        raise KeyError('Lexer "%s" already registered.' % name)
+        raise KeyError('Lexer "{0}" already registered.'.format(name))
     else:
         LexerRegistry[name] = [displayString, filenameSample, getLexerFunc, 
                                openFilters, saveFilters, defaultAssocs[:]]
--- a/QScintilla/MiniEditor.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/QScintilla/MiniEditor.py	Thu Jul 29 11:02:09 2010 +0200
@@ -2063,7 +2063,7 @@
             return
         
         if pyname:
-            self.apiLanguage = "Pygments|%s" % pyname
+            self.apiLanguage = "Pygments|{0}".format(pyname)
         else:
             self.apiLanguage = self.lexer_.language()
         self.__textEdit.setLexer(self.lexer_)
@@ -2073,7 +2073,7 @@
                          self.__styleNeeded)
         
         # get the font for style 0 and set it as the default font
-        key = 'Scintilla/%s/style0/font' % self.lexer_.language()
+        key = 'Scintilla/{0}/style0/font'.format(self.lexer_.language())
         fdesc = Preferences.Prefs.settings.value(key)
         if fdesc is not None:
             font = QFont(fdesc[0], int(fdesc[1]))
@@ -2187,7 +2187,7 @@
         if wc is None:
             regExp = QRegExp('[^\w_]', cs)
         else:
-            regExp = QRegExp('[^%s]' % re.escape(wc), cs)
+            regExp = QRegExp('[^{0}]'.format(re.escape(wc)), cs)
         start = regExp.lastIndexIn(text, index) + 1
         end = regExp.indexIn(text, index)
         if start == end + 1 and index > 0:
--- a/QScintilla/Shell.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/QScintilla/Shell.py	Thu Jul 29 11:02:09 2010 +0200
@@ -239,7 +239,7 @@
             return
         
         # get the font for style 0 and set it as the default font
-        key = 'Scintilla/%s/style0/font' % self.lexer_.language()
+        key = 'Scintilla/{0}/style0/font'.format(self.lexer_.language())
         fdesc = Preferences.Prefs.settings.value(key)
         if fdesc is not None:
             font = QFont(fdesc[0], int(fdesc[1]))
@@ -1095,7 +1095,7 @@
                         return
                     cmd = ''
             elif cmd == 'languages':
-                s = '%s\n' % ', '.join(self.clientLanguages)
+                s = '{0}\n'.format(', '.join(self.clientLanguages))
                 self.__write(s)
                 self.__clientStatement(False)
                 return
--- a/QScintilla/SpellCheckingDialog.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/QScintilla/SpellCheckingDialog.py	Thu Jul 29 11:02:09 2010 +0200
@@ -26,7 +26,7 @@
         self.setupUi(self)
         
         self.__spell = spellChecker
-        self.languageLabel.setText("<b>%s</b>" % self.__spell.getLanguage())
+        self.languageLabel.setText("<b>{0}</b>".format(self.__spell.getLanguage()))
         if not self.__spell.initCheck(startPos, endPos):
             self.__enableButtons(False)
         else:
--- a/QScintilla/Terminal.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/QScintilla/Terminal.py	Thu Jul 29 11:02:09 2010 +0200
@@ -251,7 +251,7 @@
             return
         
         # get the font for style 0 and set it as the default font
-        key = 'Scintilla/%s/style0/font' % self.lexer_.language()
+        key = 'Scintilla/{0}/style0/font'.format(self.lexer_.language())
         fdesc = Preferences.Prefs.settings.value(key)
         if fdesc is not None:
             font = QFont(fdesc[0], int(fdesc[1]))
@@ -745,7 +745,7 @@
             return
         else:
             if not cmd.endswith("\n"):
-                cmd = "%s\n" % cmd
+                cmd = "{0}\n".format(cmd)
             self.__send(cmd)
         
     def __useHistory(self):
--- a/SqlBrowser/SqlBrowser.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/SqlBrowser/SqlBrowser.py	Thu Jul 29 11:02:09 2010 +0200
@@ -60,7 +60,7 @@
                                                url.host(), url.port(-1))
             if err.type() != QSqlError.NoError:
                 self.__warnings.append(
-                    self.trUtf8("Unable to open connection: %s" % err.text()))
+                    self.trUtf8("Unable to open connection: {0}".format(err.text())))
         
         QTimer.singleShot(0, self.__uiStartUp)
     
@@ -178,4 +178,4 @@
         """
         Private slot to show info about Qt.
         """
-        QMessageBox.aboutQt(self, self.trUtf8("SQL Browser"))
\ No newline at end of file
+        QMessageBox.aboutQt(self, self.trUtf8("SQL Browser"))
--- a/SqlBrowser/SqlBrowserWidget.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/SqlBrowser/SqlBrowserWidget.py	Thu Jul 29 11:02:09 2010 +0200
@@ -125,14 +125,14 @@
         
         self.__class__.cCount += 1
         db = QSqlDatabase.addDatabase(driver.upper(), 
-                                      "Browser%d" % self.__class__.cCount)
+                                      "Browser{0:d}".format(self.__class__.cCount))
         db.setDatabaseName(dbName)
         db.setHostName(host)
         db.setPort(port)
         if not db.open(user, password):
             err = db.lastError()
             db = QSqlDatabase()
-            QSqlDatabase.removeDatabase("Browser%d" % self.__class__.cCount)
+            QSqlDatabase.removeDatabase("Browser{0:d}".format(self.__class__.cCount))
         
         self.connections.refresh()
         
@@ -203,7 +203,7 @@
                 model.setData(model.index(i, 1), 
                               QVariant.typeToName(fld.type()))
             else:
-                model.setData(model.index(i, 1), "%s1 (%s)" % (\
+                model.setData(model.index(i, 1), "{0} ({1})".format(
                                                  QVariant.typeToName(fld.type()), 
                                                  fld.typeID()))
             if fld.length() < 0:
--- a/Tasks/TaskViewer.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Tasks/TaskViewer.py	Thu Jul 29 11:02:09 2010 +0200
@@ -68,7 +68,7 @@
             self.filename = self.project.getRelativePath(self.filename)
             
         QTreeWidgetItem.__init__(self, ["", "", self.description, self.filename, 
-            (self.lineno and "%6d" % self.lineno or "")])
+            (self.lineno and "{0:6d}".format(self.lineno) or "")])
         
         if self.completed:
             self.setIcon(0, UI.PixmapCache.getIcon("taskCompleted.png"))
--- a/Templates/TemplateMultipleVariablesDialog.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Templates/TemplateMultipleVariablesDialog.py	Thu Jul 29 11:02:09 2010 +0200
@@ -49,7 +49,7 @@
         self.variablesEntries = {}
         row = 0
         for var in variables:
-            l = QLabel("%s:" % var, self.top)
+            l = QLabel("{0}:".format(var), self.top)
             self.grid.addWidget(l, row, 0, Qt.Alignment(Qt.AlignTop))
             if var.find(":") >= 0:
                 formatStr = var[1:-1].split(":")[1]
--- a/Tools/TRSingleApplication.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Tools/TRSingleApplication.py	Thu Jul 29 11:02:09 2010 +0200
@@ -108,9 +108,9 @@
             elif ext == '.qm':
                 qmFiles.append(arg)
         
-        cmd = "%s%s\n" % (SALoadForm, str(uiFiles))
+        cmd = "{0}{1}\n".format(SALoadForm, str(uiFiles))
         self.sendCommand(cmd)
-        cmd = "%s%s\n" % (SALoadTranslation, str(qmFiles))
+        cmd = "{0}{1}\n".format(SALoadTranslation, str(qmFiles))
         self.sendCommand(cmd)
         
-        self.disconnect()
\ No newline at end of file
+        self.disconnect()
--- a/Tools/UIPreviewer.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Tools/UIPreviewer.py	Thu Jul 29 11:02:09 2010 +0200
@@ -424,7 +424,7 @@
         filters = ""
         formats = QImageWriter.supportedImageFormats()
         for format in formats:
-            filters = "%s*.%s " % (filters, bytes(format).decode().lower())
+            filters = "{0}*.{1} ".format(filters, bytes(format).decode().lower())
         filter = self.trUtf8("Images ({0})").format(filters[:-1])
         
         fname = QFileDialog.getSaveFileName(\
@@ -438,7 +438,7 @@
         ext = QFileInfo(fname).suffix().upper()
         if not ext:
             ext = defaultExt
-            fname.append(".%s" % defaultExt.lower())
+            fname.append(".{0}".format(defaultExt.lower()))
         
         pix = QPixmap.grabWidget(self.mainWidget)
         self.__updateChildren(self.lastStyle)
--- a/UI/FindFileNameDialog.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/UI/FindFileNameDialog.py	Thu Jul 29 11:02:09 2010 +0200
@@ -92,8 +92,8 @@
         if not fileName:
             return
         fileExt = self.fileExtEdit.text()
-        patternFormat = fileExt and "%s%s%s*" or "%s*%s%s"
-        fileNamePattern = patternFormat % (fileName, os.extsep,
+        patternFormat = fileExt and "{0}{1}{2}*" or "{0}*{1}{2}"
+        fileNamePattern = patternFormat.format(fileName, os.extsep,
             fileExt and fileExt or '*')
             
         searchPaths = []
@@ -237,4 +237,4 @@
         self.fileNameEdit.selectAll()
         self.fileNameEdit.setFocus()
         
-        QWidget.show(self)
\ No newline at end of file
+        QWidget.show(self)
--- a/Utilities/ClassBrowsers/idlclbr.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Utilities/ClassBrowsers/idlclbr.py	Thu Jul 29 11:02:09 2010 +0200
@@ -242,7 +242,7 @@
                              file, lineno, meth_sig)
                 if meth_name in dict_counts:
                     dict_counts[meth_name] += 1
-                    meth_name = "%s_%d" % (meth_name, dict_counts[meth_name])
+                    meth_name = "{0}_{1:d}".format(meth_name, dict_counts[meth_name])
                 else:
                     dict_counts[meth_name] = 0
                 dict[meth_name] = f
--- a/Utilities/ClassBrowsers/pyclbr.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Utilities/ClassBrowsers/pyclbr.py	Thu Jul 29 11:02:09 2010 +0200
@@ -306,7 +306,7 @@
                              file, lineno, meth_sig)
                 if meth_name in dict_counts:
                     dict_counts[meth_name] += 1
-                    meth_name = "%s_%d" % (meth_name, dict_counts[meth_name])
+                    meth_name = "{0}_{1:d}".format(meth_name, dict_counts[meth_name])
                 else:
                     dict_counts[meth_name] = 0
                 dict[meth_name] = f
@@ -358,7 +358,7 @@
             if not classstack:
                 if class_name in dict_counts:
                     dict_counts[class_name] += 1
-                    class_name = "%s_%d" % (class_name, dict_counts[class_name])
+                    class_name = "{0}_{1:d}".format(class_name, dict_counts[class_name])
                 else:
                     dict_counts[class_name] = 0
                 dict[class_name] = cur_class
--- a/Utilities/ClassBrowsers/rbclbr.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Utilities/ClassBrowsers/rbclbr.py	Thu Jul 29 11:02:09 2010 +0200
@@ -331,7 +331,7 @@
                              file, lineno, meth_sig)
                 if meth_name in dict_counts:
                     dict_counts[meth_name] += 1
-                    meth_name = "%s_%d" % (meth_name, dict_counts[meth_name])
+                    meth_name = "{0}_{1:d}".format(meth_name, dict_counts[meth_name])
                 else:
                     dict_counts[meth_name] = 0
                 dict[meth_name] = f
--- a/Utilities/ModuleParser.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Utilities/ModuleParser.py	Thu Jul 29 11:02:09 2010 +0200
@@ -385,7 +385,7 @@
         """
         if name in self.classes:
             self.classes_counts[name] += 1
-            name = "%s_%d" % (name, self.classes_counts[name])
+            name = "{0}_{1:d}".format(name, self.classes_counts[name])
         else:
             self.classes_counts[name] = 0
         self.classes[name] = _class
@@ -399,7 +399,7 @@
         """
         if name in self.modules:
             self.modules_counts[name] += 1
-            name = "%s_%d" % (name, self.modules_counts[name])
+            name = "{0}_{1:d}".format(name, self.modules_counts[name])
         else:
             self.modules_counts[name] = 0
         self.modules[name] = module
@@ -413,7 +413,7 @@
         """
         if name in self.functions:
             self.functions_counts[name] += 1
-            name = "%s_%d" % (name, self.functions_counts[name])
+            name = "{0}_{1:d}".format(name, self.functions_counts[name])
         else:
             self.functions_counts[name] = 0
         self.functions[name] = function
--- a/Utilities/py3flakes/checker.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Utilities/py3flakes/checker.py	Thu Jul 29 11:02:09 2010 +0200
@@ -104,7 +104,8 @@
     importStarred = False       # set to True when import * is found
 
     def __repr__(self):
-        return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), dict.__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__()
--- a/Utilities/uic.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/Utilities/uic.py	Thu Jul 29 11:02:09 2010 +0200
@@ -93,6 +93,6 @@
         @param py_file suggested name for the compile source file (string)
         @return tuple of directory name (string) and source file name (string)
         """
-        return py_dir, "Ui_%s" % py_file
+        return py_dir, "Ui_{0}".format(py_file)
     
     compileUiDir(dir, recurse, pyName)
--- a/compileUiFiles.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/compileUiFiles.py	Thu Jul 29 11:02:09 2010 +0200
@@ -91,7 +91,7 @@
         @param py_file suggested name for the compile source file (string)
         @return tuple of directory name (string) and source file name (string)
         """
-        return py_dir, "Ui_%s" % py_file
+        return py_dir, "Ui_{0}".format(py_file)
     
     compileUiDir(".", True, pyName)
 
@@ -115,4 +115,4 @@
         print("""An internal error occured.  Please report all the output of the program,
 including the following traceback, to eric5-bugs@eric-ide.python-projects.org.
 """)
-        raise
\ No newline at end of file
+        raise
--- a/eric5-trpreviewer.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/eric5-trpreviewer.py	Thu Jul 29 11:02:09 2010 +0200
@@ -63,7 +63,7 @@
             client.processArgs(sys.argv[1:])
         sys.exit(0)
     elif res < 0:
-        print("eric5-trpreviewer: %s" % client.errstr())
+        print("eric5-trpreviewer: {0}".format(client.errstr()))
         sys.exit(res)
     else:
         res = Startup.simpleAppStartup(sys.argv,
--- a/eric5config.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/eric5config.py	Thu Jul 29 11:02:09 2010 +0200
@@ -40,4 +40,4 @@
     except KeyError:
         pass
 
-    raise AttributeError('"%s" is not a valid configuration value' % name)
\ No newline at end of file
+    raise AttributeError('"{0}" is not a valid configuration value'.format(name))
--- a/uninstall.py	Thu Jul 29 08:50:45 2010 +0200
+++ b/uninstall.py	Thu Jul 29 11:02:09 2010 +0200
@@ -29,7 +29,7 @@
     global progName
 
     print("Usage:")
-    print("    %s [-h]" % (progName))
+    print("    {0} [-h]".format(progName))
     print("where:")
     print("    -h             display this help message")
 
@@ -140,7 +140,7 @@
     try:
         uninstallEric()
     except IOError as msg:
-        sys.stderr.write('IOError: %s\nTry uninstall as root.\n' % msg)
+        sys.stderr.write('IOError: {0}\nTry uninstall as root.\n'.format(msg))
     
     
 if __name__ == "__main__":

eric ide

mercurial