summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-08-01 21:06:46 +0000
committerGeorg Brandl <georg@python.org>2010-08-01 21:06:46 +0000
commitd070cc5350178e0ddbd429763b5754c7718a2f70 (patch)
tree3ec6e413065e8f0c9d29074576cc02aa1e72852e
parentf0881ab1fe819dfb833daf7eafc6d488f3d4706a (diff)
downloadcpython-git-d070cc5350178e0ddbd429763b5754c7718a2f70.tar.gz
Merged revisions 83226-83227,83229-83230,83232 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r83226 | georg.brandl | 2010-07-29 16:17:12 +0200 (Do, 29 Jul 2010) | 1 line #1090076: explain the behavior of *vars* in get() better. ........ r83227 | georg.brandl | 2010-07-29 16:23:06 +0200 (Do, 29 Jul 2010) | 1 line Use Py_CLEAR(). ........ r83229 | georg.brandl | 2010-07-29 16:32:22 +0200 (Do, 29 Jul 2010) | 1 line #9407: document configparser.Error. ........ r83230 | georg.brandl | 2010-07-29 16:36:11 +0200 (Do, 29 Jul 2010) | 1 line Use correct directive and name. ........ r83232 | georg.brandl | 2010-07-29 16:49:08 +0200 (Do, 29 Jul 2010) | 1 line #9388: remove ERA_YEAR which is never defined in the source code. ........
-rw-r--r--Doc/library/configparser.rst27
-rw-r--r--Doc/library/itertools.rst2
-rw-r--r--Doc/library/locale.rst4
-rw-r--r--Lib/ConfigParser.py11
-rw-r--r--Objects/unicodeobject.c6
5 files changed, 32 insertions, 18 deletions
diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst
index e14068c871..16c8219cdd 100644
--- a/Doc/library/configparser.rst
+++ b/Doc/library/configparser.rst
@@ -41,6 +41,18 @@ section, or values in a special ``DEFAULT`` section. Additional defaults can be
provided on initialization and retrieval. Lines beginning with ``'#'`` or
``';'`` are ignored and may be used to provide comments.
+Configuration files may include comments, prefixed by specific characters (``#``
+and ``;``). Comments may appear on their own in an otherwise empty line, or may
+be entered in lines holding values or spection names. In the latter case, they
+need to be preceded by a whitespace character to be recognized as a comment.
+(For backwards compatibility, only ``;`` starts an inline comment, while ``#``
+does not.)
+
+On top of the core functionality, :class:`SafeConfigParser` supports
+interpolation. This means values can contain format strings which refer to
+other values in the same section, or values in a special ``DEFAULT`` section.
+Additional defaults can be provided on initialization.
+
For example::
[My Section]
@@ -128,6 +140,11 @@ write-back, as will be the keys within each section.
*allow_no_value* was added.
+.. exception:: Error
+
+ Base class for all other configparser exceptions.
+
+
.. exception:: NoSectionError
Exception raised when a specified section is not found.
@@ -371,11 +388,13 @@ The :class:`ConfigParser` class extends some methods of the
.. method:: ConfigParser.get(section, option[, raw[, vars]])
- Get an *option* value for the named *section*. All the ``'%'`` interpolations
- are expanded in the return values, based on the defaults passed into the
- constructor, as well as the options *vars* provided, unless the *raw* argument
- is true.
+ Get an *option* value for the named *section*. If *vars* is provided, it
+ must be a dictionary. The *option* is looked up in *vars* (if provided),
+ *section*, and in *defaults* in that order.
+ All the ``'%'`` interpolations are expanded in the return values, unless the
+ *raw* argument is true. Values for interpolation keys are looked up in the
+ same manner as the option.
.. method:: ConfigParser.items(section[, raw[, vars]])
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 0366fa2000..d25819b4e3 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -104,7 +104,7 @@ loops that truncate the stream.
yield element
-.. function:: itertools.chain.from_iterable(iterable)
+.. classmethod:: chain.from_iterable(iterable)
Alternate constructor for :func:`chain`. Gets chained inputs from a
single iterable argument that is evaluated lazily. Equivalent to::
diff --git a/Doc/library/locale.rst b/Doc/library/locale.rst
index c8be7afd54..7b4a05f713 100644
--- a/Doc/library/locale.rst
+++ b/Doc/library/locale.rst
@@ -248,10 +248,6 @@ The :mod:`locale` module defines the following exception and functions:
specified, and therefore you should not assume knowledge of it on different
systems.
- .. data:: ERA_YEAR
-
- Get the year in the relevant era of the locale.
-
.. data:: ERA_D_T_FMT
Get a format string for :func:`strftime` to represent dates and times in a
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py
index 3f041c734f..3e2175f049 100644
--- a/Lib/ConfigParser.py
+++ b/Lib/ConfigParser.py
@@ -550,11 +550,12 @@ class ConfigParser(RawConfigParser):
def get(self, section, option, raw=False, vars=None):
"""Get an option value for a given section.
- All % interpolations are expanded in the return values, based on the
- defaults passed into the constructor, unless the optional argument
- `raw' is true. Additional substitutions may be provided using the
- `vars' argument, which must be a dictionary whose contents overrides
- any pre-existing defaults.
+ If `vars' is provided, it must be a dictionary. The option is looked up
+ in `vars' (if provided), `section', and in `defaults' in that order.
+
+ All % interpolations are expanded in the return values, unless the
+ optional argument `raw' is true. Values for interpolation keys are
+ looked up in the same manner as the option.
The section DEFAULT is special.
"""
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index f373eeb0ba..07b4e19795 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -285,8 +285,7 @@ int unicode_resize(register PyUnicodeObject *unicode,
reset:
/* Reset the object caches */
if (unicode->defenc) {
- Py_DECREF(unicode->defenc);
- unicode->defenc = NULL;
+ Py_CLEAR(unicode->defenc);
}
unicode->hash = -1;
@@ -384,8 +383,7 @@ void unicode_dealloc(register PyUnicodeObject *unicode)
unicode->length = 0;
}
if (unicode->defenc) {
- Py_DECREF(unicode->defenc);
- unicode->defenc = NULL;
+ Py_CLEAR(unicode->defenc);
}
/* Add to free list */
*(PyUnicodeObject **)unicode = free_list;