diff options
author | Georg Brandl <georg@python.org> | 2010-08-01 21:06:46 +0000 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2010-08-01 21:06:46 +0000 |
commit | d070cc5350178e0ddbd429763b5754c7718a2f70 (patch) | |
tree | 3ec6e413065e8f0c9d29074576cc02aa1e72852e | |
parent | f0881ab1fe819dfb833daf7eafc6d488f3d4706a (diff) | |
download | cpython-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.rst | 27 | ||||
-rw-r--r-- | Doc/library/itertools.rst | 2 | ||||
-rw-r--r-- | Doc/library/locale.rst | 4 | ||||
-rw-r--r-- | Lib/ConfigParser.py | 11 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 6 |
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; |