summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCheryl Sabella <cheryl.sabella@gmail.com>2019-07-16 20:58:25 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2019-07-16 20:58:25 (GMT)
commitf8d4cc7dbbf54b9c5435c3080582a4aa421a067d (patch)
tree05eee5cc0b10e339d602250362c7786147a91fff
parentf69d5c61981ea97d251db515c7ff280fcc17182d (diff)
downloadcpython-f8d4cc7dbbf54b9c5435c3080582a4aa421a067d.zip
cpython-f8d4cc7dbbf54b9c5435c3080582a4aa421a067d.tar.gz
cpython-f8d4cc7dbbf54b9c5435c3080582a4aa421a067d.tar.bz2
bpo-27452: IDLE: Cleanup config.py code (GH-14577)
-rw-r--r--Lib/idlelib/config.py35
-rw-r--r--Lib/idlelib/idle_test/test_config.py13
-rw-r--r--Misc/NEWS.d/next/IDLE/2019-07-03-22-47-44.bpo-27452.nePPLi.rst1
3 files changed, 10 insertions, 39 deletions
diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py
index 2233dac..0c55c9a 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 255210d..492f2f6 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 0000000..ddd37bb
--- /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