[Python-checkins] bpo-27452: IDLE: Cleanup config.py code (GH-14577)

Terry Jan Reedy webhook-mailer at python.org
Tue Jul 16 16:58:31 EDT 2019


https://github.com/python/cpython/commit/f8d4cc7dbbf54b9c5435c3080582a4aa421a067d
commit: f8d4cc7dbbf54b9c5435c3080582a4aa421a067d
branch: master
author: Cheryl Sabella <cheryl.sabella at gmail.com>
committer: Terry Jan Reedy <tjreedy at udel.edu>
date: 2019-07-16T16:58:25-04:00
summary:

bpo-27452: IDLE: Cleanup config.py code (GH-14577)

files:
A Misc/NEWS.d/next/IDLE/2019-07-03-22-47-44.bpo-27452.nePPLi.rst
M Lib/idlelib/config.py
M Lib/idlelib/idle_test/test_config.py

diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py
index 2233dacd66ba..0c55c9a7d75d 100644
--- a/Lib/idlelib/config.py
+++ b/Lib/idlelib/config.py
@@ -123,17 +123,11 @@ def IsEmpty(self):
         self.RemoveEmptySections()
         return not self.sections()
 
-    def RemoveFile(self):
-        "Remove user config file self.file from disk if it exists."
-        if os.path.exists(self.file):
-            os.remove(self.file)
-
     def Save(self):
         """Update user configuration file.
 
         If self not empty after removing empty sections, write the file
         to disk. Otherwise, remove the file from disk if it exists.
-
         """
         fname = self.file
         if fname:
@@ -145,8 +139,8 @@ def Save(self):
                     cfgFile = open(fname, 'w')
                 with cfgFile:
                     self.write(cfgFile)
-            else:
-                self.RemoveFile()
+            elif os.path.exists(self.file):
+                os.remove(self.file)
 
 class IdleConf:
     """Hold config parsers for all idle config files in singleton instance.
@@ -171,24 +165,13 @@ def __init__(self, _utest=False):
 
     def CreateConfigHandlers(self):
         "Populate default and user config parser dictionaries."
-        #build idle install path
-        if __name__ != '__main__': # we were imported
-            idleDir = os.path.dirname(__file__)
-        else: # we were exec'ed (for testing only)
-            idleDir = os.path.abspath(sys.path[0])
-        self.userdir = userDir = self.GetUserCfgDir()
-
-        defCfgFiles = {}
-        usrCfgFiles = {}
-        # TODO eliminate these temporaries by combining loops
-        for cfgType in self.config_types: #build config file names
-            defCfgFiles[cfgType] = os.path.join(
-                    idleDir, 'config-' + cfgType + '.def')
-            usrCfgFiles[cfgType] = os.path.join(
-                    userDir, 'config-' + cfgType + '.cfg')
-        for cfgType in self.config_types: #create config parsers
-            self.defaultCfg[cfgType] = IdleConfParser(defCfgFiles[cfgType])
-            self.userCfg[cfgType] = IdleUserConfParser(usrCfgFiles[cfgType])
+        idledir = os.path.dirname(__file__)
+        self.userdir = userdir = self.GetUserCfgDir()
+        for cfg_type in self.config_types:
+            self.defaultCfg[cfg_type] = IdleConfParser(
+                os.path.join(idledir, f'config-{cfg_type}.def'))
+            self.userCfg[cfg_type] = IdleUserConfParser(
+                os.path.join(userdir, f'config-{cfg_type}.cfg'))
 
     def GetUserCfgDir(self):
         """Return a filesystem directory for storing user config files.
diff --git a/Lib/idlelib/idle_test/test_config.py b/Lib/idlelib/idle_test/test_config.py
index 255210df7d96..492f2f648924 100644
--- a/Lib/idlelib/idle_test/test_config.py
+++ b/Lib/idlelib/idle_test/test_config.py
@@ -159,19 +159,6 @@ def test_is_empty(self):
         self.assertFalse(parser.IsEmpty())
         self.assertCountEqual(parser.sections(), ['Foo'])
 
-    def test_remove_file(self):
-        with tempfile.TemporaryDirectory() as tdir:
-            path = os.path.join(tdir, 'test.cfg')
-            parser = self.new_parser(path)
-            parser.RemoveFile()  # Should not raise exception.
-
-            parser.AddSection('Foo')
-            parser.SetOption('Foo', 'bar', 'true')
-            parser.Save()
-            self.assertTrue(os.path.exists(path))
-            parser.RemoveFile()
-            self.assertFalse(os.path.exists(path))
-
     def test_save(self):
         with tempfile.TemporaryDirectory() as tdir:
             path = os.path.join(tdir, 'test.cfg')
diff --git a/Misc/NEWS.d/next/IDLE/2019-07-03-22-47-44.bpo-27452.nePPLi.rst b/Misc/NEWS.d/next/IDLE/2019-07-03-22-47-44.bpo-27452.nePPLi.rst
new file mode 100644
index 000000000000..ddd37bb86505
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2019-07-03-22-47-44.bpo-27452.nePPLi.rst
@@ -0,0 +1 @@
+Cleanup ``config.py`` by inlining ``RemoveFile`` and simplifying the handling of ``file`` in ``CreateConfigHandlers``.
\ No newline at end of file



More information about the Python-checkins mailing list