diff options
author | Georg Brandl <georg@python.org> | 2008-05-25 07:25:25 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-25 07:25:25 (GMT) |
commit | 392c6fc02d90f211dadc72448a07d9281260cb70 (patch) | |
tree | 8cc4d563ee077ef83612a67a02ce36f5c2397d37 | |
parent | 995ee9dab0a89b139e08a55fc64a60aaddc0d5c0 (diff) | |
download | cpython-392c6fc02d90f211dadc72448a07d9281260cb70.zip cpython-392c6fc02d90f211dadc72448a07d9281260cb70.tar.gz cpython-392c6fc02d90f211dadc72448a07d9281260cb70.tar.bz2 |
ConfigParser renaming reversal part 3: move module into place and adapt imports.
-rw-r--r-- | Doc/library/configparser.rst | 42 | ||||
-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/lib-old/ConfigParser.py) | 0 | ||||
-rw-r--r-- | Lib/distutils/command/upload.py | 6 | ||||
-rw-r--r-- | Lib/distutils/config.py | 6 | ||||
-rw-r--r-- | Lib/distutils/dist.py | 6 | ||||
-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-- | Lib/test/test_py3kwarn.py | 41 | ||||
-rw-r--r-- | Misc/NEWS | 7 | ||||
-rw-r--r-- | Misc/cheatsheet | 2 |
14 files changed, 68 insertions, 126 deletions
diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst index 6a4e049..ec9aec2 100644 --- a/Doc/library/configparser.rst +++ b/Doc/library/configparser.rst @@ -1,10 +1,7 @@ -:mod:`configparser` --- Configuration file parser +:mod:`ConfigParser` --- Configuration file parser ================================================= .. module:: ConfigParser - :synopsis: Old name for the configparser module. - -.. module:: configparser :synopsis: Configuration file parser. .. moduleauthor:: Ken Manheimer <klm@zope.com> @@ -13,9 +10,10 @@ .. sectionauthor:: Christopher G. Petrilli <petrilli@amber.org> .. note:: - The :mod:`ConfigParser` module has been renamed to :mod:`configparser` in - Python 3.0. It is importable under both names in Python 2.6 and the rest of - the 2.x series. + + The :mod:`ConfigParser` module has been renamed to `configparser` in Python + 3.0. The :term:`2to3` tool will automatically adapt imports when converting + your sources to 3.0. .. index:: pair: .ini; file @@ -233,9 +231,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')]) @@ -375,10 +373,10 @@ 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. # In addition, please note that using RawConfigParser's and the raw @@ -393,16 +391,16 @@ An example of writing to a configuration file:: config.set('Section1', 'baz', 'fun') config.set('Section1', 'bar', 'Python') config.set('Section1', 'foo', '%(bar)s is %(baz)s!') - + # Writing our configuration file to 'example.cfg' with open('example.cfg', 'wb') as configfile: config.write(configfile) 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 @@ -419,9 +417,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. @@ -433,15 +431,15 @@ To get interpolation, you will need to use a :class:`ConfigParser` or print config.get('Section1', 'foo', 0, {'bar': 'Documentation', 'baz': 'evil'}) -Defaults are available in all three types of ConfigParsers. They are used in +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!" config.remove_option('Section1', 'bar') config.remove_option('Section1', 'baz') @@ -452,7 +450,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 bca1ece..1f7c59b 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -2240,12 +2240,12 @@ in :mod:`logging` itself) and defining handlers which are declared either in .. function:: fileConfig(fname[, defaults]) - 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. + 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. .. function:: listen([port]) @@ -2275,20 +2275,18 @@ 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 :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]``. +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]``. Examples of these sections in the file are given below. :: diff --git a/Doc/library/shlex.rst b/Doc/library/shlex.rst index 1dfafbd..0ae77c1 100644 --- a/Doc/library/shlex.rst +++ b/Doc/library/shlex.rst @@ -63,7 +63,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/lib-old/ConfigParser.py b/Lib/ConfigParser.py index 65c6ae2..65c6ae2 100644 --- a/Lib/lib-old/ConfigParser.py +++ b/Lib/ConfigParser.py diff --git a/Lib/distutils/command/upload.py b/Lib/distutils/command/upload.py index 92c4bf2..8805d41 100644 --- a/Lib/distutils/command/upload.py +++ b/Lib/distutils/command/upload.py @@ -14,11 +14,7 @@ import httplib import base64 import urlparse import cStringIO as StringIO -try: - from configparser import ConfigParser -except ImportError: - # For backward-compatibility with Python versions < 2.6. - from ConfigParser import ConfigParser +from ConfigParser import ConfigParser class upload(PyPIRCCommand): diff --git a/Lib/distutils/config.py b/Lib/distutils/config.py index e07f8ac..e3a4c57 100644 --- a/Lib/distutils/config.py +++ b/Lib/distutils/config.py @@ -5,11 +5,7 @@ that uses .pypirc in the distutils.command package. """ import os import sys -try: - from configparser import ConfigParser -except ImportError: - # For backward-compatibility with Python versions < 2.6. - from ConfigParser import ConfigParser +from ConfigParser import ConfigParser from distutils.cmd import Command diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py index 6299919..0a21380 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -358,11 +358,7 @@ Common commands: (see '--help-commands' for more) def parse_config_files (self, filenames=None): - try: - from configparser import ConfigParser - except ImportError: - # For backward-compatibility with Python versions < 2.6. - 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 bdce85d..3fc2a60 100644 --- a/Lib/idlelib/configHandler.py +++ b/Lib/idlelib/configHandler.py @@ -21,7 +21,7 @@ import os import sys import string 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 dc13723..c95842c 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -65,9 +65,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 57933d2..1076c61 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -37,7 +37,7 @@ class AllTest(unittest.TestCase): self.check_all("BaseHTTPServer") self.check_all("Bastion") self.check_all("CGIHTTPServer") - self.check_all("configparser") + self.check_all("ConfigParser") self.check_all("Cookie") self.check_all("MimeWriter") self.check_all("Queue") diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index 4dfa795..a8b5d7c 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -1,4 +1,4 @@ -import configparser +import ConfigParser import StringIO import unittest import UserDict @@ -94,7 +94,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'), @@ -147,17 +147,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): @@ -170,13 +170,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: @@ -215,7 +215,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): @@ -324,7 +324,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() @@ -335,11 +335,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") @@ -375,7 +375,7 @@ class ConfigParserTestCase(TestCaseBase): class RawConfigParserTestCase(TestCaseBase): - config_class = configparser.RawConfigParser + config_class = ConfigParser.RawConfigParser def test_interpolation(self): cf = self.get_interpolation_config() @@ -410,7 +410,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 diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py index a456154..180342b 100644 --- a/Lib/test/test_py3kwarn.py +++ b/Lib/test/test_py3kwarn.py @@ -213,48 +213,9 @@ class TestStdlibRemovals(unittest.TestCase): self.assertEquals(str(w.message), msg) -class TestStdlibRenames(unittest.TestCase): - - renames = {'ConfigParser': 'configparser'} - - def check_rename(self, module_name, new_module_name): - """Make sure that: - - A DeprecationWarning is raised when importing using the - old 2.x module name. - - The module can be imported using the new 3.x name. - - The warning message specify both names. - """ - with CleanImport(module_name): - with catch_warning(record=False) as w: - warnings.filterwarnings("error", ".+ renamed to", - DeprecationWarning) - try: - __import__(module_name, level=0) - except DeprecationWarning as exc: - self.assert_(module_name in exc.args[0]) - self.assert_(new_module_name in exc.args[0]) - else: - self.fail("DeprecationWarning not raised for %s" % - module_name) - with CleanImport(new_module_name): - try: - __import__(new_module_name, level=0) - except ImportError: - self.fail("cannot import %s with its 3.x name, %s" % - module_name, new_module_name) - except DeprecationWarning: - self.fail("unexpected DeprecationWarning raised for %s" % - module_name) - - def test_module_renames(self): - for module_name, new_module_name in self.renames.items(): - self.check_rename(module_name, new_module_name) - - def test_main(): run_unittest(TestPy3KWarnings, - TestStdlibRemovals, - TestStdlibRenames) + TestStdlibRemovals) if __name__ == '__main__': test_main() @@ -135,9 +135,6 @@ Library - The DEVICE, GL, gl, and cgen modules (which indirectly includes cgensupport) have been deprecated for removal in Python 3.0. -- The ConfigParser module has been renamed 'configparser'. The old - name is now deprecated. - - The CL, CL_old, and cl modules for IRIX have been deprecated for removal in Python 3.0. @@ -1904,13 +1901,13 @@ Library Extension Modules ----------------- -- Patch #1657: added select.epoll and select.kqueue +- Patch #1657: added select.epoll and select.kqueue. - Patch #1506171: added operator.methodcaller(). - Patch #1826: operator.attrgetter() now supports dotted attribute paths. -- Patch #1957: syslogmodule: Release GIL when calling syslog(3) +- Patch #1957: syslogmodule: Release GIL when calling syslog(3). - Bug #2112: mmap.error is now a subclass of EnvironmentError and not a direct EnvironmentError. diff --git a/Misc/cheatsheet b/Misc/cheatsheet index 15c4d00..cb0702a 100644 --- a/Misc/cheatsheet +++ b/Misc/cheatsheet @@ -1862,7 +1862,7 @@ codecs Lookup existing Unicode encodings and register new ones. colorsys Conversion functions between RGB and other color systems. commands Tools for executing UNIX commands . compileall Force "compilation" of all .py files in a directory. -configparser Configuration file parser (much like windows .ini files) +ConfigParser Configuration file parser (much like windows .ini files) copy Generic shallow and deep copying operations. copy_reg Helper to provide extensibility for pickle/cPickle. csv Read and write files with comma separated values. |