diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst index e14068c8719..16c8219cddb 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 0366fa20002..d25819b4e3b 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 c8be7afd547..7b4a05f713a 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 3f041c734f1..3e2175f0495 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 f373eeb0ba7..07b4e19795f 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;