diff options
-rw-r--r-- | Doc/library/configparser.rst | 29 | ||||
-rw-r--r-- | Doc/library/logging.rst | 38 | ||||
-rw-r--r-- | Doc/library/shlex.rst | 2 | ||||
-rw-r--r-- | Lib/configparser.py (renamed from Lib/ConfigParser.py) | 0 | ||||
-rw-r--r-- | Lib/distutils/command/upload.py | 2 | ||||
-rw-r--r-- | Lib/distutils/dist.py | 2 | ||||
-rw-r--r-- | Lib/idlelib/configHandler.py | 2 | ||||
-rw-r--r-- | Lib/logging/config.py | 4 | ||||
-rw-r--r-- | Lib/test/test___all__.py | 2 | ||||
-rw-r--r-- | Lib/test/test_cfgparser.py | 36 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
11 files changed, 61 insertions, 58 deletions
diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst index a7ad2e7..75bfd92 100644 --- a/Doc/library/configparser.rst +++ b/Doc/library/configparser.rst @@ -1,15 +1,14 @@ - -:mod:`ConfigParser` --- Configuration file parser +:mod:`configparser` --- Configuration file parser ================================================= -.. module:: ConfigParser +.. module:: configparser :synopsis: Configuration file parser. + .. moduleauthor:: Ken Manheimer <klm@zope.com> .. moduleauthor:: Barry Warsaw <bwarsaw@python.org> .. moduleauthor:: Eric S. Raymond <esr@thyrsus.com> .. sectionauthor:: Christopher G. Petrilli <petrilli@amber.org> - .. index:: pair: .ini; file pair: configuration; file @@ -213,9 +212,9 @@ RawConfigParser Objects load the required file or files using :meth:`readfp` before calling :meth:`read` for any optional files:: - import ConfigParser, os + import configparser, os - config = ConfigParser.ConfigParser() + config = configparser.ConfigParser() config.readfp(open('defaults.cfg')) config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')]) @@ -342,9 +341,9 @@ Examples An example of writing to a configuration file:: - import ConfigParser + import configparser - config = ConfigParser.RawConfigParser() + config = configparser.RawConfigParser() # When adding sections or items, add them in the reverse order of # how you want them to be displayed in the actual file. @@ -367,9 +366,9 @@ An example of writing to a configuration file:: An example of reading the configuration file again:: - import ConfigParser + import configparser - config = ConfigParser.RawConfigParser() + config = configparser.RawConfigParser() config.read('example.cfg') # getfloat() raises an exception if the value is not a float @@ -386,9 +385,9 @@ An example of reading the configuration file again:: To get interpolation, you will need to use a :class:`ConfigParser` or :class:`SafeConfigParser`:: - import ConfigParser + import configparser - config = ConfigParser.ConfigParser() + config = configparser.ConfigParser() config.read('example.cfg') # Set the third, optional argument of get to 1 if you wish to use raw mode. @@ -403,10 +402,10 @@ To get interpolation, you will need to use a :class:`ConfigParser` or Defaults are available in all three types of ConfigParsers. They are used in interpolation if an option used is not defined elsewhere. :: - import ConfigParser + import configparser # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each - config = ConfigParser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'}) + config = configparser.SafeConfigParser({'bar': 'Life', 'baz': 'hard'}) config.read('example.cfg') print(config.get('Section1', 'foo')) # -> "Python is fun!" @@ -419,7 +418,7 @@ The function ``opt_move`` below can be used to move options between sections:: def opt_move(config, section1, section2, option): try: config.set(section2, option, config.get(section1, option, 1)) - except ConfigParser.NoSectionError: + except configparser.NoSectionError: # Create non-existent section config.add_section(section2) opt_move(config, section1, section2, option) diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index 365776a..cac29e9 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -2202,12 +2202,12 @@ in :mod:`logging` itself) and defining handlers which are declared either in .. function:: fileConfig(fname[, defaults]) - Reads the logging configuration from a ConfigParser-format file named *fname*. - This function can be called several times from an application, allowing an end - user the ability to select from various pre-canned configurations (if the - developer provides a mechanism to present the choices and load the chosen - configuration). Defaults to be passed to ConfigParser can be specified in the - *defaults* argument. + Reads the logging configuration from a :mod:`configparser`\-format file named + *fname*. This function can be called several times from an application, + allowing an end user the ability to select from various pre-canned + configurations (if the developer provides a mechanism to present the choices + and load the chosen configuration). Defaults to be passed to the ConfigParser + can be specified in the *defaults* argument. .. function:: listen([port]) @@ -2237,18 +2237,20 @@ in :mod:`logging` itself) and defining handlers which are declared either in Configuration file format ^^^^^^^^^^^^^^^^^^^^^^^^^ -The configuration file format understood by :func:`fileConfig` is based on -ConfigParser functionality. The file must contain sections called ``[loggers]``, -``[handlers]`` and ``[formatters]`` which identify by name the entities of each -type which are defined in the file. For each such entity, there is a separate -section which identified how that entity is configured. Thus, for a logger named -``log01`` in the ``[loggers]`` section, the relevant configuration details are -held in a section ``[logger_log01]``. Similarly, a handler called ``hand01`` in -the ``[handlers]`` section will have its configuration held in a section called -``[handler_hand01]``, while a formatter called ``form01`` in the -``[formatters]`` section will have its configuration specified in a section -called ``[formatter_form01]``. The root logger configuration must be specified -in a section called ``[logger_root]``. +The configuration file format understood by :func:`fileConfig` is +based on :mod:`configparser` functionality. The file must contain +sections called ``[loggers]``, ``[handlers]`` and ``[formatters]`` +which identify by name the entities of each type which are defined in +the file. For each such entity, there is a separate section which +identified how that entity is configured. Thus, for a logger named +``log01`` in the ``[loggers]`` section, the relevant configuration +details are held in a section ``[logger_log01]``. Similarly, a handler +called ``hand01`` in the ``[handlers]`` section will have its +configuration held in a section called ``[handler_hand01]``, while a +formatter called ``form01`` in the ``[formatters]`` section will have +its configuration specified in a section called +``[formatter_form01]``. The root logger configuration must be +specified in a section called ``[logger_root]``. Examples of these sections in the file are given below. :: diff --git a/Doc/library/shlex.rst b/Doc/library/shlex.rst index 7d88610..1b1e6fe 100644 --- a/Doc/library/shlex.rst +++ b/Doc/library/shlex.rst @@ -55,7 +55,7 @@ The :mod:`shlex` module defines the following class: .. seealso:: - Module :mod:`ConfigParser` + Module :mod:`configparser` Parser for configuration files similar to the Windows :file:`.ini` files. diff --git a/Lib/ConfigParser.py b/Lib/configparser.py index 5e36cc9..5e36cc9 100644 --- a/Lib/ConfigParser.py +++ b/Lib/configparser.py diff --git a/Lib/distutils/command/upload.py b/Lib/distutils/command/upload.py index 34b6692..23999ae 100644 --- a/Lib/distutils/command/upload.py +++ b/Lib/distutils/command/upload.py @@ -10,7 +10,7 @@ from hashlib import md5 import os import socket import platform -import ConfigParser +import configparser import httplib import base64 import urlparse diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py index ade2ab7..847eb90 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -349,7 +349,7 @@ Common commands: (see '--help-commands' for more) def parse_config_files (self, filenames=None): - from ConfigParser import ConfigParser + from configparser import ConfigParser if filenames is None: filenames = self.find_config_files() diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py index 9b995cf..8b58bbe 100644 --- a/Lib/idlelib/configHandler.py +++ b/Lib/idlelib/configHandler.py @@ -21,7 +21,7 @@ import os import sys from idlelib import macosxSupport -from ConfigParser import ConfigParser, NoOptionError, NoSectionError +from configparser import ConfigParser, NoOptionError, NoSectionError class InvalidConfigType(Exception): pass class InvalidConfigSet(Exception): pass diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 172f069..006d669 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -62,9 +62,9 @@ def fileConfig(fname, defaults=None): rather than a filename, in which case the file-like object will be read using readfp. """ - import ConfigParser + import configparser - cp = ConfigParser.ConfigParser(defaults) + cp = configparser.ConfigParser(defaults) if hasattr(cp, 'readfp') and hasattr(fname, 'readline'): cp.readfp(fname) else: diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index ab8480f..f6da4fe 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -34,7 +34,7 @@ class AllTest(unittest.TestCase): self.check_all("BaseHTTPServer") self.check_all("CGIHTTPServer") - self.check_all("ConfigParser") + self.check_all("configparser") self.check_all("Cookie") self.check_all("Queue") self.check_all("SimpleHTTPServer") diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index a2da556..70bf0ac 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -1,4 +1,4 @@ -import ConfigParser +import configparser import io import unittest import collections @@ -89,7 +89,7 @@ class TestCaseBase(unittest.TestCase): "remove_option() failed to report non-existance of option" " that was removed") - self.assertRaises(ConfigParser.NoSectionError, + self.assertRaises(configparser.NoSectionError, cf.remove_option, 'No Such Section', 'foo') eq(cf.get('Long Line', 'foo'), @@ -142,17 +142,17 @@ class TestCaseBase(unittest.TestCase): def test_parse_errors(self): self.newconfig() - self.parse_error(ConfigParser.ParsingError, + self.parse_error(configparser.ParsingError, "[Foo]\n extra-spaces: splat\n") - self.parse_error(ConfigParser.ParsingError, + self.parse_error(configparser.ParsingError, "[Foo]\n extra-spaces= splat\n") - self.parse_error(ConfigParser.ParsingError, + self.parse_error(configparser.ParsingError, "[Foo]\noption-without-value\n") - self.parse_error(ConfigParser.ParsingError, + self.parse_error(configparser.ParsingError, "[Foo]\n:value-without-option-name\n") - self.parse_error(ConfigParser.ParsingError, + self.parse_error(configparser.ParsingError, "[Foo]\n=value-without-option-name\n") - self.parse_error(ConfigParser.MissingSectionHeaderError, + self.parse_error(configparser.MissingSectionHeaderError, "No Section!\n") def parse_error(self, exc, src): @@ -165,13 +165,13 @@ class TestCaseBase(unittest.TestCase): "new ConfigParser should have no defined sections") self.failIf(cf.has_section("Foo"), "new ConfigParser should have no acknowledged sections") - self.assertRaises(ConfigParser.NoSectionError, + self.assertRaises(configparser.NoSectionError, cf.options, "Foo") - self.assertRaises(ConfigParser.NoSectionError, + self.assertRaises(configparser.NoSectionError, cf.set, "foo", "bar", "value") - self.get_error(ConfigParser.NoSectionError, "foo", "bar") + self.get_error(configparser.NoSectionError, "foo", "bar") cf.add_section("foo") - self.get_error(ConfigParser.NoOptionError, "foo", "bar") + self.get_error(configparser.NoOptionError, "foo", "bar") def get_error(self, exc, section, option): try: @@ -210,7 +210,7 @@ class TestCaseBase(unittest.TestCase): def test_weird_errors(self): cf = self.newconfig() cf.add_section("Foo") - self.assertRaises(ConfigParser.DuplicateSectionError, + self.assertRaises(configparser.DuplicateSectionError, cf.add_section, "Foo") def test_write(self): @@ -314,7 +314,7 @@ class TestCaseBase(unittest.TestCase): class ConfigParserTestCase(TestCaseBase): - config_class = ConfigParser.ConfigParser + config_class = configparser.ConfigParser def test_interpolation(self): cf = self.get_interpolation_config() @@ -325,11 +325,11 @@ class ConfigParserTestCase(TestCaseBase): "something with lots of interpolation (9 steps)") eq(cf.get("Foo", "bar10"), "something with lots of interpolation (10 steps)") - self.get_error(ConfigParser.InterpolationDepthError, "Foo", "bar11") + self.get_error(configparser.InterpolationDepthError, "Foo", "bar11") def test_interpolation_missing_value(self): cf = self.get_interpolation_config() - e = self.get_error(ConfigParser.InterpolationError, + e = self.get_error(configparser.InterpolationError, "Interpolation Error", "name") self.assertEqual(e.reference, "reference") self.assertEqual(e.section, "Interpolation Error") @@ -365,7 +365,7 @@ class ConfigParserTestCase(TestCaseBase): class RawConfigParserTestCase(TestCaseBase): - config_class = ConfigParser.RawConfigParser + config_class = configparser.RawConfigParser def test_interpolation(self): cf = self.get_interpolation_config() @@ -400,7 +400,7 @@ class RawConfigParserTestCase(TestCaseBase): class SafeConfigParserTestCase(ConfigParserTestCase): - config_class = ConfigParser.SafeConfigParser + config_class = configparser.SafeConfigParser def test_safe_interpolation(self): # See http://www.python.org/sf/511737 @@ -28,6 +28,8 @@ Extension Modules Library ------- +- The ConfigParser module has been renamed to configparser. + - Issue 2865: webbrowser.open() works again in a KDE environment. - The multifile module has been removed. |