From f8d4cc7dbbf54b9c5435c3080582a4aa421a067d Mon Sep 17 00:00:00 2001 From: Cheryl Sabella Date: Tue, 16 Jul 2019 16:58:25 -0400 Subject: [PATCH] bpo-27452: IDLE: Cleanup config.py code (GH-14577) --- Lib/idlelib/config.py | 35 +++++-------------- Lib/idlelib/idle_test/test_config.py | 13 ------- .../2019-07-03-22-47-44.bpo-27452.nePPLi.rst | 1 + 3 files changed, 10 insertions(+), 39 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2019-07-03-22-47-44.bpo-27452.nePPLi.rst diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py index 2233dacd66..0c55c9a7d7 100644 --- a/Lib/idlelib/config.py +++ b/Lib/idlelib/config.py @@ -123,17 +123,11 @@ class IdleUserConfParser(IdleConfParser): 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 @@ class IdleUserConfParser(IdleConfParser): 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 @@ class IdleConf: 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 255210df7d..492f2f6489 100644 --- a/Lib/idlelib/idle_test/test_config.py +++ b/Lib/idlelib/idle_test/test_config.py @@ -159,19 +159,6 @@ class IdleUserConfParserTest(unittest.TestCase): 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 0000000000..ddd37bb865 --- /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 -- 2.40.0