From 470a123910c1f1d71f379d1ffdd84f2161c3bc20 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 29 Jul 2010 14:17:12 +0000 Subject: #1090076: explain the behavior of *vars* in get() better. --- Doc/library/configparser.rst | 16 +++++++++------- Lib/configparser.py | 11 ++++++----- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst index f77a5b8..25e3cbe 100644 --- a/Doc/library/configparser.rst +++ b/Doc/library/configparser.rst @@ -44,7 +44,7 @@ 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 and retrieval. +Additional defaults can be provided on initialization. For example:: @@ -92,8 +92,7 @@ value of ``my_pictures`` and ``%(home_dir)s/lumberjack`` as the value of manner by both parsers. Default values can be specified by passing them as a dictionary when -constructing the :class:`SafeConfigParser`. Additional defaults may be passed -to the :meth:`get` method which will override all others. +constructing the :class:`SafeConfigParser`. Sections are normally stored in an :class:`collections.OrderedDict` which maintains the order of all keys. An alternative dictionary type can be passed @@ -418,10 +417,13 @@ for the interpolation. .. method:: ConfigParser.get(section, option, raw=False, vars=None) - Get an *option* value for the named *section*. All the ``'%'`` - interpolations are expanded in the return values, based on the defaults - passed into the :meth:`__init__` method, 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=False, vars=None) diff --git a/Lib/configparser.py b/Lib/configparser.py index 7ad24d8..6e38f26 100644 --- a/Lib/configparser.py +++ b/Lib/configparser.py @@ -661,11 +661,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. """ -- cgit v0.12