summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2009-03-03 05:00:37 (GMT)
committerRaymond Hettinger <python@rcn.com>2009-03-03 05:00:37 (GMT)
commite89b8e98327da833f92299e1876d2903b6e585ca (patch)
tree1d7d50611390dcea9ad6674aee499f7c91c0c5fc
parent88a9164cdba48dba05b6ebe1076ba641b4a50ffa (diff)
downloadcpython-e89b8e98327da833f92299e1876d2903b6e585ca.zip
cpython-e89b8e98327da833f92299e1876d2903b6e585ca.tar.gz
cpython-e89b8e98327da833f92299e1876d2903b6e585ca.tar.bz2
Backport 70111: Let configparser use ordered dicts by default.
-rw-r--r--Doc/library/configparser.rst17
-rw-r--r--Lib/ConfigParser.py8
-rw-r--r--Misc/NEWS2
3 files changed, 26 insertions, 1 deletions
diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst
index bab44d4..0c5bb15 100644
--- a/Doc/library/configparser.rst
+++ b/Doc/library/configparser.rst
@@ -75,6 +75,9 @@ write-back, as will be the keys within each section.
.. versionchanged:: 2.6
*dict_type* was added.
+ .. versionchanged:: 2.7
+ The default *dict_type* is :class:`collections.OrderedDict`.
+
.. class:: ConfigParser([defaults[, dict_type]])
@@ -91,6 +94,14 @@ write-back, as will be the keys within each section.
option names to lower case), the values ``foo %(bar)s`` and ``foo %(BAR)s`` are
equivalent.
+ .. versionadded:: 2.3
+
+ .. versionchanged:: 2.6
+ *dict_type* was added.
+
+ .. versionchanged:: 2.7
+ The default *dict_type* is :class:`collections.OrderedDict`.
+
.. class:: SafeConfigParser([defaults[, dict_type]])
@@ -103,6 +114,12 @@ write-back, as will be the keys within each section.
.. versionadded:: 2.3
+ .. versionchanged:: 2.6
+ *dict_type* was added.
+
+ .. versionchanged:: 2.7
+ The default *dict_type* is :class:`collections.OrderedDict`.
+
.. exception:: NoSectionError
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py
index b6af6f9..1861b5a 100644
--- a/Lib/ConfigParser.py
+++ b/Lib/ConfigParser.py
@@ -87,6 +87,12 @@ ConfigParser -- responsible for parsing a list of
write the configuration state in .ini format
"""
+try:
+ from collections import OrderedDict as _default_dict
+except ImportError:
+ # fallback for setup.py which hasn't yet built _collections
+ _default_dict = dict
+
import re
__all__ = ["NoSectionError", "DuplicateSectionError", "NoOptionError",
@@ -215,7 +221,7 @@ class MissingSectionHeaderError(ParsingError):
class RawConfigParser:
- def __init__(self, defaults=None, dict_type=dict):
+ def __init__(self, defaults=None, dict_type=_default_dict):
self._dict = dict_type
self._sections = self._dict()
self._defaults = self._dict()
diff --git a/Misc/NEWS b/Misc/NEWS
index 70160bb..d91164f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -172,6 +172,8 @@ Library
- The _asdict() for method for namedtuples now returns an OrderedDict().
+- The configparser module now defaults to using an ordered dictionary.
+
- Issue #4308: httplib.IncompleteRead's repr doesn't include all of the data all
ready received.