blob: 024d27cb84dd5cf42dda734692859e28d622c4dc [file] [log] [blame]
Alexandre Vassalotti1d1eaa42008-05-14 22:59:42 +00001:mod:`configparser` --- Configuration file parser
Georg Brandl116aa622007-08-15 14:28:22 +00002=================================================
3
Alexandre Vassalotti1d1eaa42008-05-14 22:59:42 +00004.. module:: configparser
Georg Brandl116aa622007-08-15 14:28:22 +00005 :synopsis: Configuration file parser.
Alexandre Vassalotti1d1eaa42008-05-14 22:59:42 +00006
Georg Brandl116aa622007-08-15 14:28:22 +00007.. moduleauthor:: Ken Manheimer <klm@zope.com>
8.. moduleauthor:: Barry Warsaw <bwarsaw@python.org>
9.. moduleauthor:: Eric S. Raymond <esr@thyrsus.com>
Łukasz Langa26d513c2010-11-10 18:57:39 +000010.. moduleauthor:: Łukasz Langa <lukasz@langa.pl>
Georg Brandl116aa622007-08-15 14:28:22 +000011.. sectionauthor:: Christopher G. Petrilli <petrilli@amber.org>
Łukasz Langa26d513c2010-11-10 18:57:39 +000012.. sectionauthor:: Łukasz Langa <lukasz@langa.pl>
Georg Brandl116aa622007-08-15 14:28:22 +000013
Georg Brandl116aa622007-08-15 14:28:22 +000014.. index::
15 pair: .ini; file
16 pair: configuration; file
17 single: ini file
18 single: Windows ini file
19
Łukasz Langa7f64c8a2010-12-16 01:16:22 +000020This module provides the :class:`ConfigParser` class which implements a basic
21configuration language which provides a structure similar to what's found in
22Microsoft Windows INI files. You can use this to write Python programs which
23can be customized by end users easily.
Georg Brandl116aa622007-08-15 14:28:22 +000024
Georg Brandle720c0a2009-04-27 16:20:50 +000025.. note::
Georg Brandl116aa622007-08-15 14:28:22 +000026
Georg Brandle720c0a2009-04-27 16:20:50 +000027 This library does *not* interpret or write the value-type prefixes used in
28 the Windows Registry extended version of INI syntax.
Georg Brandl116aa622007-08-15 14:28:22 +000029
Łukasz Langa26d513c2010-11-10 18:57:39 +000030.. seealso::
31
32 Module :mod:`shlex`
33 Support for a creating Unix shell-like mini-languages which can be used
34 as an alternate format for application configuration files.
35
Łukasz Langab6a6f5f2010-12-03 16:28:00 +000036 Module :mod:`json`
37 The json module implements a subset of JavaScript syntax which can also
38 be used for this purpose.
39
Georg Brandlbb27c122010-11-11 07:26:40 +000040
Łukasz Langa26d513c2010-11-10 18:57:39 +000041Quick Start
42-----------
43
Georg Brandlbb27c122010-11-11 07:26:40 +000044Let's take a very basic configuration file that looks like this:
Łukasz Langa26d513c2010-11-10 18:57:39 +000045
Georg Brandlbb27c122010-11-11 07:26:40 +000046.. code-block:: ini
Łukasz Langa26d513c2010-11-10 18:57:39 +000047
Georg Brandlbb27c122010-11-11 07:26:40 +000048 [DEFAULT]
Łukasz Langab6a6f5f2010-12-03 16:28:00 +000049 ServerAliveInterval = 45
50 Compression = yes
51 CompressionLevel = 9
52 ForwardX11 = yes
Łukasz Langa26d513c2010-11-10 18:57:39 +000053
Georg Brandlbb27c122010-11-11 07:26:40 +000054 [bitbucket.org]
Łukasz Langab6a6f5f2010-12-03 16:28:00 +000055 User = hg
Łukasz Langa26d513c2010-11-10 18:57:39 +000056
Georg Brandlbb27c122010-11-11 07:26:40 +000057 [topsecret.server.com]
Łukasz Langab6a6f5f2010-12-03 16:28:00 +000058 Port = 50022
59 ForwardX11 = no
Łukasz Langa26d513c2010-11-10 18:57:39 +000060
Fred Drake5a7c11f2010-11-13 05:24:17 +000061The structure of INI files is described `in the following section
62<#supported-ini-file-structure>`_. Essentially, the file
Łukasz Langa26d513c2010-11-10 18:57:39 +000063consists of sections, each of which contains keys with values.
Georg Brandlbb27c122010-11-11 07:26:40 +000064:mod:`configparser` classes can read and write such files. Let's start by
Łukasz Langa26d513c2010-11-10 18:57:39 +000065creating the above configuration file programatically.
66
Łukasz Langa26d513c2010-11-10 18:57:39 +000067.. doctest::
68
Georg Brandlbb27c122010-11-11 07:26:40 +000069 >>> import configparser
Łukasz Langa7f64c8a2010-12-16 01:16:22 +000070 >>> config = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +000071 >>> config['DEFAULT'] = {'ServerAliveInterval': '45',
72 ... 'Compression': 'yes',
73 ... 'CompressionLevel': '9'}
74 >>> config['bitbucket.org'] = {}
75 >>> config['bitbucket.org']['User'] = 'hg'
76 >>> config['topsecret.server.com'] = {}
77 >>> topsecret = config['topsecret.server.com']
78 >>> topsecret['Port'] = '50022' # mutates the parser
79 >>> topsecret['ForwardX11'] = 'no' # same here
80 >>> config['DEFAULT']['ForwardX11'] = 'yes'
81 >>> with open('example.ini', 'w') as configfile:
82 ... config.write(configfile)
83 ...
Łukasz Langa26d513c2010-11-10 18:57:39 +000084
Fred Drake5a7c11f2010-11-13 05:24:17 +000085As you can see, we can treat a config parser much like a dictionary.
86There are differences, `outlined later <#mapping-protocol-access>`_, but
87the behavior is very close to what you would expect from a dictionary.
Łukasz Langa26d513c2010-11-10 18:57:39 +000088
Fred Drake5a7c11f2010-11-13 05:24:17 +000089Now that we have created and saved a configuration file, let's read it
90back and explore the data it holds.
Łukasz Langa26d513c2010-11-10 18:57:39 +000091
Łukasz Langa26d513c2010-11-10 18:57:39 +000092.. doctest::
93
Georg Brandlbb27c122010-11-11 07:26:40 +000094 >>> import configparser
Łukasz Langa7f64c8a2010-12-16 01:16:22 +000095 >>> config = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +000096 >>> config.sections()
97 []
98 >>> config.read('example.ini')
99 ['example.ini']
100 >>> config.sections()
101 ['bitbucket.org', 'topsecret.server.com']
102 >>> 'bitbucket.org' in config
103 True
104 >>> 'bytebong.com' in config
105 False
106 >>> config['bitbucket.org']['User']
107 'hg'
108 >>> config['DEFAULT']['Compression']
109 'yes'
110 >>> topsecret = config['topsecret.server.com']
111 >>> topsecret['ForwardX11']
112 'no'
113 >>> topsecret['Port']
114 '50022'
115 >>> for key in config['bitbucket.org']: print(key)
116 ...
117 user
118 compressionlevel
119 serveraliveinterval
120 compression
121 forwardx11
122 >>> config['bitbucket.org']['ForwardX11']
123 'yes'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000124
Fred Drake5a7c11f2010-11-13 05:24:17 +0000125As we can see above, the API is pretty straightforward. The only bit of magic
Łukasz Langa26d513c2010-11-10 18:57:39 +0000126involves the ``DEFAULT`` section which provides default values for all other
Fred Drake5a7c11f2010-11-13 05:24:17 +0000127sections [1]_. Note also that keys in sections are
128case-insensitive and stored in lowercase [1]_.
Georg Brandlbb27c122010-11-11 07:26:40 +0000129
Łukasz Langa26d513c2010-11-10 18:57:39 +0000130
131Supported Datatypes
132-------------------
133
134Config parsers do not guess datatypes of values in configuration files, always
Georg Brandlbb27c122010-11-11 07:26:40 +0000135storing them internally as strings. This means that if you need other
136datatypes, you should convert on your own:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000137
Łukasz Langa26d513c2010-11-10 18:57:39 +0000138.. doctest::
139
Georg Brandlbb27c122010-11-11 07:26:40 +0000140 >>> int(topsecret['Port'])
141 50022
142 >>> float(topsecret['CompressionLevel'])
143 9.0
Łukasz Langa26d513c2010-11-10 18:57:39 +0000144
Fred Drake5a7c11f2010-11-13 05:24:17 +0000145Extracting Boolean values is not that simple, though. Passing the value
146to ``bool()`` would do no good since ``bool('False')`` is still
147``True``. This is why config parsers also provide :meth:`getboolean`.
148This method is case-insensitive and recognizes Boolean values from
149``'yes'``/``'no'``, ``'on'``/``'off'`` and ``'1'``/``'0'`` [1]_.
150For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000151
Łukasz Langa26d513c2010-11-10 18:57:39 +0000152.. doctest::
153
Georg Brandlbb27c122010-11-11 07:26:40 +0000154 >>> topsecret.getboolean('ForwardX11')
155 False
156 >>> config['bitbucket.org'].getboolean('ForwardX11')
157 True
158 >>> config.getboolean('bitbucket.org', 'Compression')
159 True
Łukasz Langa26d513c2010-11-10 18:57:39 +0000160
161Apart from :meth:`getboolean`, config parsers also provide equivalent
Fred Drake5a7c11f2010-11-13 05:24:17 +0000162:meth:`getint` and :meth:`getfloat` methods, but these are far less
163useful since conversion using :func:`int` and :func:`float` is
164sufficient for these types.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000165
Georg Brandlbb27c122010-11-11 07:26:40 +0000166
Łukasz Langa26d513c2010-11-10 18:57:39 +0000167Fallback Values
168---------------
169
Fred Drake5a7c11f2010-11-13 05:24:17 +0000170As with a dictionary, you can use a section's :meth:`get` method to
Łukasz Langa26d513c2010-11-10 18:57:39 +0000171provide fallback values:
172
Łukasz Langa26d513c2010-11-10 18:57:39 +0000173.. doctest::
174
Georg Brandlbb27c122010-11-11 07:26:40 +0000175 >>> topsecret.get('Port')
176 '50022'
177 >>> topsecret.get('CompressionLevel')
178 '9'
179 >>> topsecret.get('Cipher')
180 >>> topsecret.get('Cipher', '3des-cbc')
181 '3des-cbc'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000182
Fred Drake5a7c11f2010-11-13 05:24:17 +0000183Please note that default values have precedence over fallback values.
184For instance, in our example the ``'CompressionLevel'`` key was
185specified only in the ``'DEFAULT'`` section. If we try to get it from
186the section ``'topsecret.server.com'``, we will always get the default,
187even if we specify a fallback:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000188
Łukasz Langa26d513c2010-11-10 18:57:39 +0000189.. doctest::
190
Georg Brandlbb27c122010-11-11 07:26:40 +0000191 >>> topsecret.get('CompressionLevel', '3')
192 '9'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000193
194One more thing to be aware of is that the parser-level :meth:`get` method
195provides a custom, more complex interface, maintained for backwards
Fred Drake5a7c11f2010-11-13 05:24:17 +0000196compatibility. When using this method, a fallback value can be provided via
197the ``fallback`` keyword-only argument:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000198
Łukasz Langa26d513c2010-11-10 18:57:39 +0000199.. doctest::
200
Georg Brandlbb27c122010-11-11 07:26:40 +0000201 >>> config.get('bitbucket.org', 'monster',
202 ... fallback='No such things as monsters')
203 'No such things as monsters'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000204
205The same ``fallback`` argument can be used with the :meth:`getint`,
206:meth:`getfloat` and :meth:`getboolean` methods, for example:
207
Łukasz Langa26d513c2010-11-10 18:57:39 +0000208.. doctest::
209
Georg Brandlbb27c122010-11-11 07:26:40 +0000210 >>> 'BatchMode' in topsecret
211 False
212 >>> topsecret.getboolean('BatchMode', fallback=True)
213 True
214 >>> config['DEFAULT']['BatchMode'] = 'no'
215 >>> topsecret.getboolean('BatchMode', fallback=True)
216 False
217
Łukasz Langa26d513c2010-11-10 18:57:39 +0000218
219Supported INI File Structure
220----------------------------
221
Georg Brandl96a60ae2010-07-28 13:13:46 +0000222A configuration file consists of sections, each led by a ``[section]`` header,
Fred Drakea4923622010-08-09 12:52:45 +0000223followed by key/value entries separated by a specific string (``=`` or ``:`` by
Georg Brandlbb27c122010-11-11 07:26:40 +0000224default [1]_). By default, section names are case sensitive but keys are not
Fred Drake5a7c11f2010-11-13 05:24:17 +0000225[1]_. Leading and trailing whitespace is removed from keys and values.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000226Values can be omitted, in which case the key/value delimiter may also be left
227out. Values can also span multiple lines, as long as they are indented deeper
228than the first line of the value. Depending on the parser's mode, blank lines
229may be treated as parts of multiline values or ignored.
Georg Brandl96a60ae2010-07-28 13:13:46 +0000230
Fred Drake5a7c11f2010-11-13 05:24:17 +0000231Configuration files may include comments, prefixed by specific
232characters (``#`` and ``;`` by default [1]_). Comments may appear on
Łukasz Langab25a7912010-12-17 01:32:29 +0000233their own on an otherwise empty line, possibly indented. [1]_
Georg Brandl96a60ae2010-07-28 13:13:46 +0000234
Georg Brandlbb27c122010-11-11 07:26:40 +0000235For example:
Georg Brandl116aa622007-08-15 14:28:22 +0000236
Georg Brandlbb27c122010-11-11 07:26:40 +0000237.. code-block:: ini
Georg Brandl116aa622007-08-15 14:28:22 +0000238
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000239 [Simple Values]
Łukasz Langab25a7912010-12-17 01:32:29 +0000240 key=value
241 spaces in keys=allowed
242 spaces in values=allowed as well
243 spaces around the delimiter = obviously
244 you can also use : to delimit keys from values
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000245
246 [All Values Are Strings]
247 values like this: 1000000
248 or this: 3.14159265359
249 are they treated as numbers? : no
250 integers, floats and booleans are held as: strings
251 can use the API to get converted values directly: true
Georg Brandl116aa622007-08-15 14:28:22 +0000252
Georg Brandl96a60ae2010-07-28 13:13:46 +0000253 [Multiline Values]
254 chorus: I'm a lumberjack, and I'm okay
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000255 I sleep all night and I work all day
Georg Brandl116aa622007-08-15 14:28:22 +0000256
Georg Brandl96a60ae2010-07-28 13:13:46 +0000257 [No Values]
258 key_without_value
259 empty string value here =
Georg Brandl116aa622007-08-15 14:28:22 +0000260
Łukasz Langab25a7912010-12-17 01:32:29 +0000261 [You can use comments]
262 # like this
263 ; or this
264
265 # By default only in an empty line.
266 # Inline comments can be harmful because they prevent users
267 # from using the delimiting characters as parts of values.
268 # That being said, this can be customized.
Georg Brandl96a60ae2010-07-28 13:13:46 +0000269
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000270 [Sections Can Be Indented]
271 can_values_be_as_well = True
272 does_that_mean_anything_special = False
273 purpose = formatting for readability
274 multiline_values = are
275 handled just fine as
276 long as they are indented
277 deeper than the first line
278 of a value
279 # Did I mention we can indent comments, too?
Georg Brandl116aa622007-08-15 14:28:22 +0000280
Georg Brandl96a60ae2010-07-28 13:13:46 +0000281
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000282Interpolation of values
283-----------------------
Georg Brandl96a60ae2010-07-28 13:13:46 +0000284
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000285On top of the core functionality, :class:`ConfigParser` supports
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000286interpolation. This means values can be preprocessed before returning them
287from ``get()`` calls.
288
289.. class:: BasicInterpolation()
290
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000291 The default implementation used by :class:`ConfigParser`. It enables
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000292 values to contain format strings which refer to other values in the same
293 section, or values in the special default section [1]_. Additional default
294 values can be provided on initialization.
295
296 For example:
297
298 .. code-block:: ini
299
300 [Paths]
301 home_dir: /Users
302 my_dir: %(home_dir)s/lumberjack
303 my_pictures: %(my_dir)s/Pictures
304
305
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000306 In the example above, :class:`ConfigParser` with *interpolation* set to
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000307 ``BasicInterpolation()`` would resolve ``%(home_dir)s`` to the value of
308 ``home_dir`` (``/Users`` in this case). ``%(my_dir)s`` in effect would
309 resolve to ``/Users/lumberjack``. All interpolations are done on demand so
310 keys used in the chain of references do not have to be specified in any
311 specific order in the configuration file.
312
313 With ``interpolation`` set to ``None``, the parser would simply return
314 ``%(my_dir)s/Pictures`` as the value of ``my_pictures`` and
315 ``%(home_dir)s/lumberjack`` as the value of ``my_dir``.
316
317.. class:: ExtendedInterpolation()
318
319 An alternative handler for interpolation which implements a more advanced
320 syntax, used for instance in ``zc.buildout``. Extended interpolation is
321 using ``${section:option}`` to denote a value from a foreign section.
322 Interpolation can span multiple levels. For convenience, if the ``section:``
323 part is omitted, interpolation defaults to the current section (and possibly
324 the default values from the special section).
325
326 For example, the configuration specified above with basic interpolation,
327 would look like this with extended interpolation:
328
329 .. code-block:: ini
330
331 [Paths]
332 home_dir: /Users
333 my_dir: ${home_dir}/lumberjack
334 my_pictures: ${my_dir}/Pictures
335
336 Values from other sections can be fetched as well:
337
338 .. code-block:: ini
339
340 [Common]
341 home_dir: /Users
342 library_dir: /Library
343 system_dir: /System
344 macports_dir: /opt/local
345
346 [Frameworks]
347 Python: 3.2
348 path: ${Common:system_dir}/Library/Frameworks/
349
350 [Arthur]
351 nickname: Two Sheds
352 last_name: Jackson
353 my_dir: ${Common:home_dir}/twosheds
354 my_pictures: ${my_dir}/Pictures
355 python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python}
Georg Brandlbb27c122010-11-11 07:26:40 +0000356
Łukasz Langa26d513c2010-11-10 18:57:39 +0000357Mapping Protocol Access
358-----------------------
Georg Brandl96a60ae2010-07-28 13:13:46 +0000359
Łukasz Langa26d513c2010-11-10 18:57:39 +0000360.. versionadded:: 3.2
Georg Brandl96a60ae2010-07-28 13:13:46 +0000361
Łukasz Langa26d513c2010-11-10 18:57:39 +0000362Mapping protocol access is a generic name for functionality that enables using
Georg Brandlbb27c122010-11-11 07:26:40 +0000363custom objects as if they were dictionaries. In case of :mod:`configparser`,
Łukasz Langa26d513c2010-11-10 18:57:39 +0000364the mapping interface implementation is using the
365``parser['section']['option']`` notation.
366
367``parser['section']`` in particular returns a proxy for the section's data in
Georg Brandlbb27c122010-11-11 07:26:40 +0000368the parser. This means that the values are not copied but they are taken from
369the original parser on demand. What's even more important is that when values
Łukasz Langa26d513c2010-11-10 18:57:39 +0000370are changed on a section proxy, they are actually mutated in the original
371parser.
372
373:mod:`configparser` objects behave as close to actual dictionaries as possible.
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300374The mapping interface is complete and adheres to the
375:class:`~collections.abc.MutableMapping` ABC.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000376However, there are a few differences that should be taken into account:
377
Georg Brandlbb27c122010-11-11 07:26:40 +0000378* By default, all keys in sections are accessible in a case-insensitive manner
379 [1]_. E.g. ``for option in parser["section"]`` yields only ``optionxform``'ed
380 option key names. This means lowercased keys by default. At the same time,
Fred Drake5a7c11f2010-11-13 05:24:17 +0000381 for a section that holds the key ``'a'``, both expressions return ``True``::
Łukasz Langa26d513c2010-11-10 18:57:39 +0000382
Georg Brandlbb27c122010-11-11 07:26:40 +0000383 "a" in parser["section"]
384 "A" in parser["section"]
Łukasz Langa26d513c2010-11-10 18:57:39 +0000385
Georg Brandlbb27c122010-11-11 07:26:40 +0000386* All sections include ``DEFAULTSECT`` values as well which means that
387 ``.clear()`` on a section may not leave the section visibly empty. This is
Łukasz Langa26d513c2010-11-10 18:57:39 +0000388 because default values cannot be deleted from the section (because technically
Georg Brandlbb27c122010-11-11 07:26:40 +0000389 they are not there). If they are overriden in the section, deleting causes
390 the default value to be visible again. Trying to delete a default value
391 causes a ``KeyError``.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000392
Łukasz Langa3a8479a2012-12-31 03:38:39 +0100393* ``DEFAULTSECT`` cannot be removed from the parser:
394
395 * trying to delete it raises ``ValueError``,
396
397 * ``parser.clear()`` leaves it intact,
398
399 * ``parser.popitem()`` never returns it.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000400
Łukasz Langa71b37a52010-12-17 21:56:32 +0000401* ``parser.get(section, option, **kwargs)`` - the second argument is **not**
402 a fallback value. Note however that the section-level ``get()`` methods are
403 compatible both with the mapping protocol and the classic configparser API.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000404
Łukasz Langa71b37a52010-12-17 21:56:32 +0000405* ``parser.items()`` is compatible with the mapping protocol (returns a list of
406 *section_name*, *section_proxy* pairs including the DEFAULTSECT). However,
407 this method can also be invoked with arguments: ``parser.items(section, raw,
408 vars)``. The latter call returns a list of *option*, *value* pairs for
409 a specified ``section``, with all interpolations expanded (unless
410 ``raw=True`` is provided).
Łukasz Langa26d513c2010-11-10 18:57:39 +0000411
412The mapping protocol is implemented on top of the existing legacy API so that
Łukasz Langa71b37a52010-12-17 21:56:32 +0000413subclasses overriding the original interface still should have mappings working
414as expected.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000415
Georg Brandlbb27c122010-11-11 07:26:40 +0000416
Łukasz Langa26d513c2010-11-10 18:57:39 +0000417Customizing Parser Behaviour
418----------------------------
419
420There are nearly as many INI format variants as there are applications using it.
421:mod:`configparser` goes a long way to provide support for the largest sensible
Georg Brandlbb27c122010-11-11 07:26:40 +0000422set of INI styles available. The default functionality is mainly dictated by
Łukasz Langa26d513c2010-11-10 18:57:39 +0000423historical background and it's very likely that you will want to customize some
424of the features.
425
Fred Drake5a7c11f2010-11-13 05:24:17 +0000426The most common way to change the way a specific config parser works is to use
Łukasz Langa26d513c2010-11-10 18:57:39 +0000427the :meth:`__init__` options:
428
429* *defaults*, default value: ``None``
430
431 This option accepts a dictionary of key-value pairs which will be initially
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000432 put in the ``DEFAULT`` section. This makes for an elegant way to support
433 concise configuration files that don't specify values which are the same as
434 the documented default.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000435
Fred Drake5a7c11f2010-11-13 05:24:17 +0000436 Hint: if you want to specify default values for a specific section, use
Łukasz Langa26d513c2010-11-10 18:57:39 +0000437 :meth:`read_dict` before you read the actual file.
438
439* *dict_type*, default value: :class:`collections.OrderedDict`
440
441 This option has a major impact on how the mapping protocol will behave and how
Fred Drake5a7c11f2010-11-13 05:24:17 +0000442 the written configuration files look. With the default ordered
Łukasz Langa26d513c2010-11-10 18:57:39 +0000443 dictionary, every section is stored in the order they were added to the
Georg Brandlbb27c122010-11-11 07:26:40 +0000444 parser. Same goes for options within sections.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000445
446 An alternative dictionary type can be used for example to sort sections and
Georg Brandlbb27c122010-11-11 07:26:40 +0000447 options on write-back. You can also use a regular dictionary for performance
Łukasz Langa26d513c2010-11-10 18:57:39 +0000448 reasons.
449
450 Please note: there are ways to add a set of key-value pairs in a single
Georg Brandlbb27c122010-11-11 07:26:40 +0000451 operation. When you use a regular dictionary in those operations, the order
452 of the keys may be random. For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000453
Łukasz Langa26d513c2010-11-10 18:57:39 +0000454 .. doctest::
455
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000456 >>> parser = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000457 >>> parser.read_dict({'section1': {'key1': 'value1',
458 ... 'key2': 'value2',
459 ... 'key3': 'value3'},
460 ... 'section2': {'keyA': 'valueA',
461 ... 'keyB': 'valueB',
462 ... 'keyC': 'valueC'},
463 ... 'section3': {'foo': 'x',
464 ... 'bar': 'y',
465 ... 'baz': 'z'}
466 ... })
467 >>> parser.sections()
468 ['section3', 'section2', 'section1']
469 >>> [option for option in parser['section3']]
470 ['baz', 'foo', 'bar']
Łukasz Langa26d513c2010-11-10 18:57:39 +0000471
472 In these operations you need to use an ordered dictionary as well:
473
Łukasz Langa26d513c2010-11-10 18:57:39 +0000474 .. doctest::
475
Georg Brandlbb27c122010-11-11 07:26:40 +0000476 >>> from collections import OrderedDict
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000477 >>> parser = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000478 >>> parser.read_dict(
479 ... OrderedDict((
480 ... ('s1',
481 ... OrderedDict((
482 ... ('1', '2'),
483 ... ('3', '4'),
484 ... ('5', '6'),
485 ... ))
486 ... ),
487 ... ('s2',
488 ... OrderedDict((
489 ... ('a', 'b'),
490 ... ('c', 'd'),
491 ... ('e', 'f'),
492 ... ))
493 ... ),
494 ... ))
495 ... )
496 >>> parser.sections()
497 ['s1', 's2']
498 >>> [option for option in parser['s1']]
499 ['1', '3', '5']
500 >>> [option for option in parser['s2'].values()]
501 ['b', 'd', 'f']
Łukasz Langa26d513c2010-11-10 18:57:39 +0000502
503* *allow_no_value*, default value: ``False``
504
505 Some configuration files are known to include settings without values, but
506 which otherwise conform to the syntax supported by :mod:`configparser`. The
Fred Drake5a7c11f2010-11-13 05:24:17 +0000507 *allow_no_value* parameter to the constructor can be used to
Łukasz Langa26d513c2010-11-10 18:57:39 +0000508 indicate that such values should be accepted:
509
Łukasz Langa26d513c2010-11-10 18:57:39 +0000510 .. doctest::
511
Georg Brandlbb27c122010-11-11 07:26:40 +0000512 >>> import configparser
Łukasz Langa26d513c2010-11-10 18:57:39 +0000513
Georg Brandlbb27c122010-11-11 07:26:40 +0000514 >>> sample_config = """
515 ... [mysqld]
516 ... user = mysql
517 ... pid-file = /var/run/mysqld/mysqld.pid
518 ... skip-external-locking
519 ... old_passwords = 1
520 ... skip-bdb
Łukasz Langab25a7912010-12-17 01:32:29 +0000521 ... # we don't need ACID today
522 ... skip-innodb
Georg Brandlbb27c122010-11-11 07:26:40 +0000523 ... """
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000524 >>> config = configparser.ConfigParser(allow_no_value=True)
Georg Brandlbb27c122010-11-11 07:26:40 +0000525 >>> config.read_string(sample_config)
Łukasz Langa26d513c2010-11-10 18:57:39 +0000526
Georg Brandlbb27c122010-11-11 07:26:40 +0000527 >>> # Settings with values are treated as before:
528 >>> config["mysqld"]["user"]
529 'mysql'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000530
Georg Brandlbb27c122010-11-11 07:26:40 +0000531 >>> # Settings without values provide None:
532 >>> config["mysqld"]["skip-bdb"]
Łukasz Langa26d513c2010-11-10 18:57:39 +0000533
Georg Brandlbb27c122010-11-11 07:26:40 +0000534 >>> # Settings which aren't specified still raise an error:
535 >>> config["mysqld"]["does-not-exist"]
536 Traceback (most recent call last):
537 ...
538 KeyError: 'does-not-exist'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000539
540* *delimiters*, default value: ``('=', ':')``
541
542 Delimiters are substrings that delimit keys from values within a section. The
Ned Deily0995c472013-07-14 12:43:16 -0700543 first occurrence of a delimiting substring on a line is considered a delimiter.
Fred Drake5a7c11f2010-11-13 05:24:17 +0000544 This means values (but not keys) can contain the delimiters.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000545
546 See also the *space_around_delimiters* argument to
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000547 :meth:`ConfigParser.write`.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000548
Łukasz Langab25a7912010-12-17 01:32:29 +0000549* *comment_prefixes*, default value: ``('#', ';')``
Łukasz Langa26d513c2010-11-10 18:57:39 +0000550
Łukasz Langab25a7912010-12-17 01:32:29 +0000551* *inline_comment_prefixes*, default value: ``None``
552
553 Comment prefixes are strings that indicate the start of a valid comment within
554 a config file. *comment_prefixes* are used only on otherwise empty lines
555 (optionally indented) whereas *inline_comment_prefixes* can be used after
556 every valid value (e.g. section names, options and empty lines as well). By
557 default inline comments are disabled and ``'#'`` and ``';'`` are used as
558 prefixes for whole line comments.
559
560 .. versionchanged:: 3.2
561 In previous versions of :mod:`configparser` behaviour matched
562 ``comment_prefixes=('#',';')`` and ``inline_comment_prefixes=(';',)``.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000563
564 Please note that config parsers don't support escaping of comment prefixes so
Łukasz Langab25a7912010-12-17 01:32:29 +0000565 using *inline_comment_prefixes* may prevent users from specifying option
566 values with characters used as comment prefixes. When in doubt, avoid setting
567 *inline_comment_prefixes*. In any circumstances, the only way of storing
568 comment prefix characters at the beginning of a line in multiline values is to
569 interpolate the prefix, for example::
Łukasz Langa26d513c2010-11-10 18:57:39 +0000570
Łukasz Langab25a7912010-12-17 01:32:29 +0000571 >>> from configparser import ConfigParser, ExtendedInterpolation
572 >>> parser = ConfigParser(interpolation=ExtendedInterpolation())
573 >>> # the default BasicInterpolation could be used as well
574 >>> parser.read_string("""
575 ... [DEFAULT]
576 ... hash = #
577 ...
578 ... [hashes]
579 ... shebang =
580 ... ${hash}!/usr/bin/env python
581 ... ${hash} -*- coding: utf-8 -*-
582 ...
583 ... extensions =
584 ... enabled_extension
585 ... another_extension
586 ... #disabled_by_comment
587 ... yet_another_extension
588 ...
589 ... interpolation not necessary = if # is not at line start
590 ... even in multiline values = line #1
591 ... line #2
592 ... line #3
593 ... """)
594 >>> print(parser['hashes']['shebang'])
Łukasz Langa26d513c2010-11-10 18:57:39 +0000595
Łukasz Langab25a7912010-12-17 01:32:29 +0000596 #!/usr/bin/env python
597 # -*- coding: utf-8 -*-
598 >>> print(parser['hashes']['extensions'])
599
600 enabled_extension
601 another_extension
602 yet_another_extension
603 >>> print(parser['hashes']['interpolation not necessary'])
604 if # is not at line start
605 >>> print(parser['hashes']['even in multiline values'])
606 line #1
607 line #2
608 line #3
609
610* *strict*, default value: ``True``
611
612 When set to ``True``, the parser will not allow for any section or option
Łukasz Langa26d513c2010-11-10 18:57:39 +0000613 duplicates while reading from a single source (using :meth:`read_file`,
Łukasz Langab25a7912010-12-17 01:32:29 +0000614 :meth:`read_string` or :meth:`read_dict`). It is recommended to use strict
Łukasz Langa26d513c2010-11-10 18:57:39 +0000615 parsers in new applications.
616
Łukasz Langab25a7912010-12-17 01:32:29 +0000617 .. versionchanged:: 3.2
618 In previous versions of :mod:`configparser` behaviour matched
619 ``strict=False``.
620
Łukasz Langa26d513c2010-11-10 18:57:39 +0000621* *empty_lines_in_values*, default value: ``True``
622
Fred Drake5a7c11f2010-11-13 05:24:17 +0000623 In config parsers, values can span multiple lines as long as they are
624 indented more than the key that holds them. By default parsers also let
625 empty lines to be parts of values. At the same time, keys can be arbitrarily
626 indented themselves to improve readability. In consequence, when
627 configuration files get big and complex, it is easy for the user to lose
628 track of the file structure. Take for instance:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000629
Georg Brandlbb27c122010-11-11 07:26:40 +0000630 .. code-block:: ini
Łukasz Langa26d513c2010-11-10 18:57:39 +0000631
Georg Brandlbb27c122010-11-11 07:26:40 +0000632 [Section]
633 key = multiline
634 value with a gotcha
Łukasz Langa26d513c2010-11-10 18:57:39 +0000635
Georg Brandlbb27c122010-11-11 07:26:40 +0000636 this = is still a part of the multiline value of 'key'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000637
Georg Brandlbb27c122010-11-11 07:26:40 +0000638 This can be especially problematic for the user to see if she's using a
639 proportional font to edit the file. That is why when your application does
640 not need values with empty lines, you should consider disallowing them. This
641 will make empty lines split keys every time. In the example above, it would
Łukasz Langa26d513c2010-11-10 18:57:39 +0000642 produce two keys, ``key`` and ``this``.
643
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000644* *default_section*, default value: ``configparser.DEFAULTSECT`` (that is:
645 ``"DEFAULT"``)
646
647 The convention of allowing a special section of default values for other
648 sections or interpolation purposes is a powerful concept of this library,
649 letting users create complex declarative configurations. This section is
650 normally called ``"DEFAULT"`` but this can be customized to point to any
651 other valid section name. Some typical values include: ``"general"`` or
652 ``"common"``. The name provided is used for recognizing default sections when
653 reading from any source and is used when writing configuration back to
654 a file. Its current value can be retrieved using the
655 ``parser_instance.default_section`` attribute and may be modified at runtime
656 (i.e. to convert files from one format to another).
657
658* *interpolation*, default value: ``configparser.BasicInterpolation``
659
660 Interpolation behaviour may be customized by providing a custom handler
661 through the *interpolation* argument. ``None`` can be used to turn off
662 interpolation completely, ``ExtendedInterpolation()`` provides a more
663 advanced variant inspired by ``zc.buildout``. More on the subject in the
664 `dedicated documentation section <#interpolation-of-values>`_.
Łukasz Langab25a7912010-12-17 01:32:29 +0000665 :class:`RawConfigParser` has a default value of ``None``.
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000666
Łukasz Langa26d513c2010-11-10 18:57:39 +0000667
Fred Drake5a7c11f2010-11-13 05:24:17 +0000668More advanced customization may be achieved by overriding default values of
669these parser attributes. The defaults are defined on the classes, so they
670may be overriden by subclasses or by attribute assignment.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000671
Fred Drake5a7c11f2010-11-13 05:24:17 +0000672.. attribute:: BOOLEAN_STATES
Łukasz Langa26d513c2010-11-10 18:57:39 +0000673
674 By default when using :meth:`getboolean`, config parsers consider the
675 following values ``True``: ``'1'``, ``'yes'``, ``'true'``, ``'on'`` and the
Georg Brandlbb27c122010-11-11 07:26:40 +0000676 following values ``False``: ``'0'``, ``'no'``, ``'false'``, ``'off'``. You
677 can override this by specifying a custom dictionary of strings and their
Fred Drake5a7c11f2010-11-13 05:24:17 +0000678 Boolean outcomes. For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000679
Łukasz Langa26d513c2010-11-10 18:57:39 +0000680 .. doctest::
681
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000682 >>> custom = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000683 >>> custom['section1'] = {'funky': 'nope'}
684 >>> custom['section1'].getboolean('funky')
685 Traceback (most recent call last):
686 ...
687 ValueError: Not a boolean: nope
688 >>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False}
689 >>> custom['section1'].getboolean('funky')
690 False
Łukasz Langa26d513c2010-11-10 18:57:39 +0000691
Fred Drake5a7c11f2010-11-13 05:24:17 +0000692 Other typical Boolean pairs include ``accept``/``reject`` or
Łukasz Langa26d513c2010-11-10 18:57:39 +0000693 ``enabled``/``disabled``.
694
Fred Drake5a7c11f2010-11-13 05:24:17 +0000695.. method:: optionxform(option)
Łukasz Langa26d513c2010-11-10 18:57:39 +0000696
Fred Drake5a7c11f2010-11-13 05:24:17 +0000697 This method transforms option names on every read, get, or set
698 operation. The default converts the name to lowercase. This also
699 means that when a configuration file gets written, all keys will be
700 lowercase. Override this method if that's unsuitable.
701 For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000702
Łukasz Langa26d513c2010-11-10 18:57:39 +0000703 .. doctest::
704
Georg Brandlbb27c122010-11-11 07:26:40 +0000705 >>> config = """
706 ... [Section1]
707 ... Key = Value
708 ...
709 ... [Section2]
710 ... AnotherKey = Value
711 ... """
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000712 >>> typical = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000713 >>> typical.read_string(config)
714 >>> list(typical['Section1'].keys())
715 ['key']
716 >>> list(typical['Section2'].keys())
717 ['anotherkey']
718 >>> custom = configparser.RawConfigParser()
719 >>> custom.optionxform = lambda option: option
720 >>> custom.read_string(config)
721 >>> list(custom['Section1'].keys())
722 ['Key']
723 >>> list(custom['Section2'].keys())
724 ['AnotherKey']
725
Łukasz Langa66c908e2011-01-28 11:57:30 +0000726.. attribute:: SECTCRE
727
728 A compiled regular expression used to parse section headers. The default
729 matches ``[section]`` to the name ``"section"``. Whitespace is considered part
730 of the section name, thus ``[ larch ]`` will be read as a section of name
731 ``" larch "``. Override this attribute if that's unsuitable. For example:
732
733 .. doctest::
734
735 >>> config = """
736 ... [Section 1]
737 ... option = value
738 ...
739 ... [ Section 2 ]
740 ... another = val
741 ... """
742 >>> typical = ConfigParser()
743 >>> typical.read_string(config)
744 >>> typical.sections()
745 ['Section 1', ' Section 2 ']
746 >>> custom = ConfigParser()
747 >>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
748 >>> custom.read_string(config)
749 >>> custom.sections()
750 ['Section 1', 'Section 2']
751
752 .. note::
753
754 While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing
755 option lines, it's not recommended to override it because that would
756 interfere with constructor options *allow_no_value* and *delimiters*.
757
Łukasz Langa26d513c2010-11-10 18:57:39 +0000758
759Legacy API Examples
760-------------------
761
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000762Mainly because of backwards compatibility concerns, :mod:`configparser`
763provides also a legacy API with explicit ``get``/``set`` methods. While there
764are valid use cases for the methods outlined below, mapping protocol access is
765preferred for new projects. The legacy API is at times more advanced,
766low-level and downright counterintuitive.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000767
768An example of writing to a configuration file::
769
770 import configparser
771
772 config = configparser.RawConfigParser()
773
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000774 # Please note that using RawConfigParser's set functions, you can assign
775 # non-string values to keys internally, but will receive an error when
776 # attempting to write to a file or when you get it in non-raw mode. Setting
777 # values using the mapping protocol or ConfigParser's set() does not allow
778 # such assignments to take place.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000779 config.add_section('Section1')
R David Murray1a1883d2012-09-29 14:40:23 -0400780 config.set('Section1', 'an_int', '15')
781 config.set('Section1', 'a_bool', 'true')
782 config.set('Section1', 'a_float', '3.1415')
Łukasz Langa26d513c2010-11-10 18:57:39 +0000783 config.set('Section1', 'baz', 'fun')
784 config.set('Section1', 'bar', 'Python')
785 config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
786
787 # Writing our configuration file to 'example.cfg'
788 with open('example.cfg', 'w') as configfile:
789 config.write(configfile)
790
791An example of reading the configuration file again::
792
793 import configparser
794
795 config = configparser.RawConfigParser()
796 config.read('example.cfg')
797
798 # getfloat() raises an exception if the value is not a float
799 # getint() and getboolean() also do this for their respective types
R David Murray1a1883d2012-09-29 14:40:23 -0400800 a_float = config.getfloat('Section1', 'a_float')
801 an_int = config.getint('Section1', 'an_int')
802 print(a_float + an_int)
Łukasz Langa26d513c2010-11-10 18:57:39 +0000803
804 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
805 # This is because we are using a RawConfigParser().
R David Murray1a1883d2012-09-29 14:40:23 -0400806 if config.getboolean('Section1', 'a_bool'):
Łukasz Langa26d513c2010-11-10 18:57:39 +0000807 print(config.get('Section1', 'foo'))
808
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000809To get interpolation, use :class:`ConfigParser`::
Łukasz Langa26d513c2010-11-10 18:57:39 +0000810
811 import configparser
812
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000813 cfg = configparser.ConfigParser()
Łukasz Langa26d513c2010-11-10 18:57:39 +0000814 cfg.read('example.cfg')
815
Éric Araujo941afed2011-09-01 02:47:34 +0200816 # Set the optional *raw* argument of get() to True if you wish to disable
Łukasz Langa26d513c2010-11-10 18:57:39 +0000817 # interpolation in a single get operation.
818 print(cfg.get('Section1', 'foo', raw=False)) # -> "Python is fun!"
819 print(cfg.get('Section1', 'foo', raw=True)) # -> "%(bar)s is %(baz)s!"
820
Éric Araujo941afed2011-09-01 02:47:34 +0200821 # The optional *vars* argument is a dict with members that will take
Łukasz Langa26d513c2010-11-10 18:57:39 +0000822 # precedence in interpolation.
823 print(cfg.get('Section1', 'foo', vars={'bar': 'Documentation',
824 'baz': 'evil'}))
825
Éric Araujo941afed2011-09-01 02:47:34 +0200826 # The optional *fallback* argument can be used to provide a fallback value
Łukasz Langa26d513c2010-11-10 18:57:39 +0000827 print(cfg.get('Section1', 'foo'))
828 # -> "Python is fun!"
829
830 print(cfg.get('Section1', 'foo', fallback='Monty is not.'))
831 # -> "Python is fun!"
832
833 print(cfg.get('Section1', 'monster', fallback='No such things as monsters.'))
834 # -> "No such things as monsters."
835
836 # A bare print(cfg.get('Section1', 'monster')) would raise NoOptionError
837 # but we can also use:
838
839 print(cfg.get('Section1', 'monster', fallback=None))
840 # -> None
841
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000842Default values are available in both types of ConfigParsers. They are used in
843interpolation if an option used is not defined elsewhere. ::
Łukasz Langa26d513c2010-11-10 18:57:39 +0000844
845 import configparser
846
847 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000848 config = configparser.ConfigParser({'bar': 'Life', 'baz': 'hard'})
Łukasz Langa26d513c2010-11-10 18:57:39 +0000849 config.read('example.cfg')
850
851 print(config.get('Section1', 'foo')) # -> "Python is fun!"
852 config.remove_option('Section1', 'bar')
853 config.remove_option('Section1', 'baz')
854 print(config.get('Section1', 'foo')) # -> "Life is hard!"
855
Georg Brandlbb27c122010-11-11 07:26:40 +0000856
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000857.. _configparser-objects:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000858
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000859ConfigParser Objects
860--------------------
Georg Brandl96a60ae2010-07-28 13:13:46 +0000861
Łukasz Langab25a7912010-12-17 01:32:29 +0000862.. class:: ConfigParser(defaults=None, dict_type=collections.OrderedDict, allow_no_value=False, delimiters=('=', ':'), comment_prefixes=('#', ';'), inline_comment_prefixes=None, strict=True, empty_lines_in_values=True, default_section=configparser.DEFAULTSECT, interpolation=BasicInterpolation())
Georg Brandl116aa622007-08-15 14:28:22 +0000863
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000864 The main configuration parser. When *defaults* is given, it is initialized
Georg Brandl96a60ae2010-07-28 13:13:46 +0000865 into the dictionary of intrinsic defaults. When *dict_type* is given, it
866 will be used to create the dictionary objects for the list of sections, for
867 the options within a section, and for the default values.
868
Fred Drake5a7c11f2010-11-13 05:24:17 +0000869 When *delimiters* is given, it is used as the set of substrings that
Georg Brandl96a60ae2010-07-28 13:13:46 +0000870 divide keys from values. When *comment_prefixes* is given, it will be used
Łukasz Langab25a7912010-12-17 01:32:29 +0000871 as the set of substrings that prefix comments in otherwise empty lines.
872 Comments can be indented. When *inline_comment_prefixes* is given, it will be
873 used as the set of substrings that prefix comments in non-empty lines.
874
Łukasz Langab25a7912010-12-17 01:32:29 +0000875 When *strict* is ``True`` (the default), the parser won't allow for
Fred Drakea4923622010-08-09 12:52:45 +0000876 any section or option duplicates while reading from a single source (file,
877 string or dictionary), raising :exc:`DuplicateSectionError` or
Fred Drake5a7c11f2010-11-13 05:24:17 +0000878 :exc:`DuplicateOptionError`. When *empty_lines_in_values* is ``False``
Fred Drakea4923622010-08-09 12:52:45 +0000879 (default: ``True``), each empty line marks the end of an option. Otherwise,
880 internal empty lines of a multiline option are kept as part of the value.
881 When *allow_no_value* is ``True`` (default: ``False``), options without
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000882 values are accepted; the value held for these is ``None`` and they are
883 serialized without the trailing delimiter.
Fred Drake03c44a32010-02-19 06:08:41 +0000884
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000885 When *default_section* is given, it specifies the name for the special
886 section holding default values for other sections and interpolation purposes
887 (normally named ``"DEFAULT"``). This value can be retrieved and changed on
888 runtime using the ``default_section`` instance attribute.
889
890 Interpolation behaviour may be customized by providing a custom handler
891 through the *interpolation* argument. ``None`` can be used to turn off
892 interpolation completely, ``ExtendedInterpolation()`` provides a more
893 advanced variant inspired by ``zc.buildout``. More on the subject in the
894 `dedicated documentation section <#interpolation-of-values>`_.
895
896 All option names used in interpolation will be passed through the
897 :meth:`optionxform` method just like any other option name reference. For
898 example, using the default implementation of :meth:`optionxform` (which
899 converts option names to lower case), the values ``foo %(bar)s`` and ``foo
900 %(BAR)s`` are equivalent.
Georg Brandl116aa622007-08-15 14:28:22 +0000901
Raymond Hettinger231b7f12009-03-03 00:23:19 +0000902 .. versionchanged:: 3.1
Raymond Hettinger0663a1e2009-03-02 23:06:00 +0000903 The default *dict_type* is :class:`collections.OrderedDict`.
904
Fred Drake03c44a32010-02-19 06:08:41 +0000905 .. versionchanged:: 3.2
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000906 *allow_no_value*, *delimiters*, *comment_prefixes*, *strict*,
907 *empty_lines_in_values*, *default_section* and *interpolation* were
908 added.
Georg Brandl116aa622007-08-15 14:28:22 +0000909
Fred Drake03c44a32010-02-19 06:08:41 +0000910
Georg Brandlbb27c122010-11-11 07:26:40 +0000911 .. method:: defaults()
Georg Brandl116aa622007-08-15 14:28:22 +0000912
Georg Brandlbb27c122010-11-11 07:26:40 +0000913 Return a dictionary containing the instance-wide defaults.
Georg Brandl116aa622007-08-15 14:28:22 +0000914
915
Georg Brandlbb27c122010-11-11 07:26:40 +0000916 .. method:: sections()
Georg Brandl116aa622007-08-15 14:28:22 +0000917
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000918 Return a list of the sections available; the *default section* is not
919 included in the list.
Georg Brandl116aa622007-08-15 14:28:22 +0000920
921
Georg Brandlbb27c122010-11-11 07:26:40 +0000922 .. method:: add_section(section)
Georg Brandl116aa622007-08-15 14:28:22 +0000923
Georg Brandlbb27c122010-11-11 07:26:40 +0000924 Add a section named *section* to the instance. If a section by the given
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000925 name already exists, :exc:`DuplicateSectionError` is raised. If the
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +0000926 *default section* name is passed, :exc:`ValueError` is raised. The name
927 of the section must be a string; if not, :exc:`TypeError` is raised.
928
929 .. versionchanged:: 3.2
930 Non-string section names raise :exc:`TypeError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000931
Georg Brandl116aa622007-08-15 14:28:22 +0000932
Georg Brandlbb27c122010-11-11 07:26:40 +0000933 .. method:: has_section(section)
Georg Brandl116aa622007-08-15 14:28:22 +0000934
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000935 Indicates whether the named *section* is present in the configuration.
936 The *default section* is not acknowledged.
Georg Brandl116aa622007-08-15 14:28:22 +0000937
Georg Brandl116aa622007-08-15 14:28:22 +0000938
Georg Brandlbb27c122010-11-11 07:26:40 +0000939 .. method:: options(section)
Georg Brandl116aa622007-08-15 14:28:22 +0000940
Georg Brandlbb27c122010-11-11 07:26:40 +0000941 Return a list of options available in the specified *section*.
Georg Brandl116aa622007-08-15 14:28:22 +0000942
Georg Brandl116aa622007-08-15 14:28:22 +0000943
Georg Brandlbb27c122010-11-11 07:26:40 +0000944 .. method:: has_option(section, option)
Georg Brandl116aa622007-08-15 14:28:22 +0000945
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000946 If the given *section* exists, and contains the given *option*, return
Łukasz Langa71b37a52010-12-17 21:56:32 +0000947 :const:`True`; otherwise return :const:`False`. If the specified
948 *section* is :const:`None` or an empty string, DEFAULT is assumed.
Georg Brandl116aa622007-08-15 14:28:22 +0000949
Georg Brandl116aa622007-08-15 14:28:22 +0000950
Georg Brandlbb27c122010-11-11 07:26:40 +0000951 .. method:: read(filenames, encoding=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000952
Georg Brandlbb27c122010-11-11 07:26:40 +0000953 Attempt to read and parse a list of filenames, returning a list of
954 filenames which were successfully parsed. If *filenames* is a string, it
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000955 is treated as a single filename. If a file named in *filenames* cannot
956 be opened, that file will be ignored. This is designed so that you can
957 specify a list of potential configuration file locations (for example,
958 the current directory, the user's home directory, and some system-wide
959 directory), and all existing configuration files in the list will be
960 read. If none of the named files exist, the :class:`ConfigParser`
961 instance will contain an empty dataset. An application which requires
962 initial values to be loaded from a file should load the required file or
963 files using :meth:`read_file` before calling :meth:`read` for any
964 optional files::
Georg Brandl116aa622007-08-15 14:28:22 +0000965
Georg Brandlbb27c122010-11-11 07:26:40 +0000966 import configparser, os
Georg Brandl8dcaa732010-07-29 12:17:40 +0000967
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000968 config = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000969 config.read_file(open('defaults.cfg'))
970 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')],
971 encoding='cp1250')
Georg Brandl116aa622007-08-15 14:28:22 +0000972
Georg Brandlbb27c122010-11-11 07:26:40 +0000973 .. versionadded:: 3.2
974 The *encoding* parameter. Previously, all files were read using the
975 default encoding for :func:`open`.
Georg Brandl116aa622007-08-15 14:28:22 +0000976
Georg Brandl116aa622007-08-15 14:28:22 +0000977
Georg Brandlbb27c122010-11-11 07:26:40 +0000978 .. method:: read_file(f, source=None)
Georg Brandl73753d32009-09-22 13:53:14 +0000979
Łukasz Langadaab1c82011-04-27 18:10:05 +0200980 Read and parse configuration data from *f* which must be an iterable
Łukasz Langaba702da2011-04-28 12:02:05 +0200981 yielding Unicode strings (for example files opened in text mode).
Georg Brandl116aa622007-08-15 14:28:22 +0000982
Georg Brandlbb27c122010-11-11 07:26:40 +0000983 Optional argument *source* specifies the name of the file being read. If
Fred Drake5a7c11f2010-11-13 05:24:17 +0000984 not given and *f* has a :attr:`name` attribute, that is used for
985 *source*; the default is ``'<???>'``.
Fred Drakea4923622010-08-09 12:52:45 +0000986
Georg Brandlbb27c122010-11-11 07:26:40 +0000987 .. versionadded:: 3.2
Łukasz Langa43ae6192011-04-27 18:13:42 +0200988 Replaces :meth:`readfp`.
989
Georg Brandlbb27c122010-11-11 07:26:40 +0000990 .. method:: read_string(string, source='<string>')
Fred Drakea4923622010-08-09 12:52:45 +0000991
Fred Drake5a7c11f2010-11-13 05:24:17 +0000992 Parse configuration data from a string.
Fred Drakea4923622010-08-09 12:52:45 +0000993
Fred Drake5a7c11f2010-11-13 05:24:17 +0000994 Optional argument *source* specifies a context-specific name of the
995 string passed. If not given, ``'<string>'`` is used. This should
996 commonly be a filesystem path or a URL.
Fred Drakea4923622010-08-09 12:52:45 +0000997
Georg Brandlbb27c122010-11-11 07:26:40 +0000998 .. versionadded:: 3.2
Georg Brandl67b21b72010-08-17 15:07:14 +0000999
Fred Drakea4923622010-08-09 12:52:45 +00001000
Georg Brandlbb27c122010-11-11 07:26:40 +00001001 .. method:: read_dict(dictionary, source='<dict>')
Fred Drakea4923622010-08-09 12:52:45 +00001002
Łukasz Langa71b37a52010-12-17 21:56:32 +00001003 Load configuration from any object that provides a dict-like ``items()``
1004 method. Keys are section names, values are dictionaries with keys and
1005 values that should be present in the section. If the used dictionary
1006 type preserves order, sections and their keys will be added in order.
1007 Values are automatically converted to strings.
Fred Drakea4923622010-08-09 12:52:45 +00001008
Georg Brandlbb27c122010-11-11 07:26:40 +00001009 Optional argument *source* specifies a context-specific name of the
1010 dictionary passed. If not given, ``<dict>`` is used.
Georg Brandl116aa622007-08-15 14:28:22 +00001011
Łukasz Langa71b37a52010-12-17 21:56:32 +00001012 This method can be used to copy state between parsers.
1013
Georg Brandlbb27c122010-11-11 07:26:40 +00001014 .. versionadded:: 3.2
Georg Brandl67b21b72010-08-17 15:07:14 +00001015
Georg Brandl116aa622007-08-15 14:28:22 +00001016
Ezio Melottie927e252012-09-08 20:46:01 +03001017 .. method:: get(section, option, *, raw=False, vars=None[, fallback])
Georg Brandl116aa622007-08-15 14:28:22 +00001018
Georg Brandlbb27c122010-11-11 07:26:40 +00001019 Get an *option* value for the named *section*. If *vars* is provided, it
1020 must be a dictionary. The *option* is looked up in *vars* (if provided),
1021 *section*, and in *DEFAULTSECT* in that order. If the key is not found
1022 and *fallback* is provided, it is used as a fallback value. ``None`` can
1023 be provided as a *fallback* value.
Georg Brandl470a1232010-07-29 14:17:12 +00001024
Georg Brandlbb27c122010-11-11 07:26:40 +00001025 All the ``'%'`` interpolations are expanded in the return values, unless
1026 the *raw* argument is true. Values for interpolation keys are looked up
1027 in the same manner as the option.
Georg Brandl116aa622007-08-15 14:28:22 +00001028
Georg Brandlbb27c122010-11-11 07:26:40 +00001029 .. versionchanged:: 3.2
1030 Arguments *raw*, *vars* and *fallback* are keyword only to protect
1031 users from trying to use the third argument as the *fallback* fallback
1032 (especially when using the mapping protocol).
Georg Brandl116aa622007-08-15 14:28:22 +00001033
Łukasz Langa26d513c2010-11-10 18:57:39 +00001034
Ezio Melottie927e252012-09-08 20:46:01 +03001035 .. method:: getint(section, option, *, raw=False, vars=None[, fallback])
Fred Drakecc645b92010-09-04 04:35:34 +00001036
Georg Brandlbb27c122010-11-11 07:26:40 +00001037 A convenience method which coerces the *option* in the specified *section*
1038 to an integer. See :meth:`get` for explanation of *raw*, *vars* and
1039 *fallback*.
Fred Drakecc645b92010-09-04 04:35:34 +00001040
1041
Ezio Melottie927e252012-09-08 20:46:01 +03001042 .. method:: getfloat(section, option, *, raw=False, vars=None[, fallback])
Fred Drakecc645b92010-09-04 04:35:34 +00001043
Georg Brandlbb27c122010-11-11 07:26:40 +00001044 A convenience method which coerces the *option* in the specified *section*
1045 to a floating point number. See :meth:`get` for explanation of *raw*,
1046 *vars* and *fallback*.
Fred Drakecc645b92010-09-04 04:35:34 +00001047
1048
Ezio Melottie927e252012-09-08 20:46:01 +03001049 .. method:: getboolean(section, option, *, raw=False, vars=None[, fallback])
Fred Drakecc645b92010-09-04 04:35:34 +00001050
Georg Brandlbb27c122010-11-11 07:26:40 +00001051 A convenience method which coerces the *option* in the specified *section*
1052 to a Boolean value. Note that the accepted values for the option are
Fred Drake5a7c11f2010-11-13 05:24:17 +00001053 ``'1'``, ``'yes'``, ``'true'``, and ``'on'``, which cause this method to
1054 return ``True``, and ``'0'``, ``'no'``, ``'false'``, and ``'off'``, which
Georg Brandlbb27c122010-11-11 07:26:40 +00001055 cause it to return ``False``. These string values are checked in a
1056 case-insensitive manner. Any other value will cause it to raise
1057 :exc:`ValueError`. See :meth:`get` for explanation of *raw*, *vars* and
1058 *fallback*.
Fred Drakecc645b92010-09-04 04:35:34 +00001059
1060
Ezio Melottie0add762012-09-14 06:32:35 +03001061 .. method:: items(raw=False, vars=None)
1062 items(section, raw=False, vars=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001063
Łukasz Langa71b37a52010-12-17 21:56:32 +00001064 When *section* is not given, return a list of *section_name*,
1065 *section_proxy* pairs, including DEFAULTSECT.
1066
1067 Otherwise, return a list of *name*, *value* pairs for the options in the
1068 given *section*. Optional arguments have the same meaning as for the
Georg Brandlbb27c122010-11-11 07:26:40 +00001069 :meth:`get` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001070
Łukasz Langa72547622011-05-09 18:49:42 +02001071 .. versionchanged:: 3.2
Łukasz Langa72547622011-05-09 18:49:42 +02001072 Items present in *vars* no longer appear in the result. The previous
1073 behaviour mixed actual parser options with variables provided for
1074 interpolation.
Georg Brandl116aa622007-08-15 14:28:22 +00001075
Georg Brandlbb27c122010-11-11 07:26:40 +00001076 .. method:: set(section, option, value)
Georg Brandl116aa622007-08-15 14:28:22 +00001077
Georg Brandlbb27c122010-11-11 07:26:40 +00001078 If the given section exists, set the given option to the specified value;
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +00001079 otherwise raise :exc:`NoSectionError`. *option* and *value* must be
1080 strings; if not, :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001081
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001082
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001083 .. method:: write(fileobject, space_around_delimiters=True)
1084
1085 Write a representation of the configuration to the specified :term:`file
1086 object`, which must be opened in text mode (accepting strings). This
1087 representation can be parsed by a future :meth:`read` call. If
1088 *space_around_delimiters* is true, delimiters between
1089 keys and values are surrounded by spaces.
1090
1091
1092 .. method:: remove_option(section, option)
1093
1094 Remove the specified *option* from the specified *section*. If the
1095 section does not exist, raise :exc:`NoSectionError`. If the option
1096 existed to be removed, return :const:`True`; otherwise return
1097 :const:`False`.
1098
1099
1100 .. method:: remove_section(section)
1101
1102 Remove the specified *section* from the configuration. If the section in
1103 fact existed, return ``True``. Otherwise return ``False``.
1104
1105
1106 .. method:: optionxform(option)
1107
1108 Transforms the option name *option* as found in an input file or as passed
1109 in by client code to the form that should be used in the internal
1110 structures. The default implementation returns a lower-case version of
1111 *option*; subclasses may override this or client code can set an attribute
1112 of this name on instances to affect this behavior.
1113
1114 You don't need to subclass the parser to use this method, you can also
1115 set it on an instance, to a function that takes a string argument and
1116 returns a string. Setting it to ``str``, for example, would make option
1117 names case sensitive::
1118
1119 cfgparser = ConfigParser()
1120 cfgparser.optionxform = str
1121
1122 Note that when reading configuration files, whitespace around the option
1123 names is stripped before :meth:`optionxform` is called.
1124
1125
1126 .. method:: readfp(fp, filename=None)
1127
1128 .. deprecated:: 3.2
1129 Use :meth:`read_file` instead.
1130
Łukasz Langaba702da2011-04-28 12:02:05 +02001131 .. versionchanged:: 3.2
1132 :meth:`readfp` now iterates on *f* instead of calling ``f.readline()``.
1133
1134 For existing code calling :meth:`readfp` with arguments which don't
1135 support iteration, the following generator may be used as a wrapper
1136 around the file-like object::
1137
1138 def readline_generator(f):
1139 line = f.readline()
1140 while line:
1141 yield line
1142 line = f.readline()
1143
1144 Instead of ``parser.readfp(f)`` use
1145 ``parser.read_file(readline_generator(f))``.
1146
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001147
1148.. data:: MAX_INTERPOLATION_DEPTH
1149
1150 The maximum depth for recursive interpolation for :meth:`get` when the *raw*
1151 parameter is false. This is relevant only when the default *interpolation*
1152 is used.
1153
1154
1155.. _rawconfigparser-objects:
1156
1157RawConfigParser Objects
1158-----------------------
1159
Ezio Melottie927e252012-09-08 20:46:01 +03001160.. class:: RawConfigParser(defaults=None, dict_type=collections.OrderedDict, \
1161 allow_no_value=False, *, delimiters=('=', ':'), \
1162 comment_prefixes=('#', ';'), \
1163 inline_comment_prefixes=None, strict=True, \
1164 empty_lines_in_values=True, \
1165 default_section=configparser.DEFAULTSECT[, \
1166 interpolation])
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001167
Łukasz Langa7f64c8a2010-12-16 01:16:22 +00001168 Legacy variant of the :class:`ConfigParser` with interpolation disabled
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +00001169 by default and unsafe ``add_section`` and ``set`` methods.
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001170
1171 .. note::
Łukasz Langa7f64c8a2010-12-16 01:16:22 +00001172 Consider using :class:`ConfigParser` instead which checks types of
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001173 the values to be stored internally. If you don't want interpolation, you
Łukasz Langa7f64c8a2010-12-16 01:16:22 +00001174 can use ``ConfigParser(interpolation=None)``.
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001175
1176
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +00001177 .. method:: add_section(section)
1178
1179 Add a section named *section* to the instance. If a section by the given
1180 name already exists, :exc:`DuplicateSectionError` is raised. If the
1181 *default section* name is passed, :exc:`ValueError` is raised.
1182
1183 Type of *section* is not checked which lets users create non-string named
1184 sections. This behaviour is unsupported and may cause internal errors.
1185
1186
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001187 .. method:: set(section, option, value)
1188
1189 If the given section exists, set the given option to the specified value;
1190 otherwise raise :exc:`NoSectionError`. While it is possible to use
1191 :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters
1192 set to true) for *internal* storage of non-string values, full
1193 functionality (including interpolation and output to files) can only be
1194 achieved using string values.
1195
1196 This method lets users assign non-string values to keys internally. This
1197 behaviour is unsupported and will cause errors when attempting to write
1198 to a file or get it in non-raw mode. **Use the mapping protocol API**
1199 which does not allow such assignments to take place.
1200
1201
Łukasz Langa26d513c2010-11-10 18:57:39 +00001202Exceptions
1203----------
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001204
Łukasz Langa26d513c2010-11-10 18:57:39 +00001205.. exception:: Error
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001206
Fred Drake5a7c11f2010-11-13 05:24:17 +00001207 Base class for all other :mod:`configparser` exceptions.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001208
Georg Brandl48310cd2009-01-03 21:18:54 +00001209
Łukasz Langa26d513c2010-11-10 18:57:39 +00001210.. exception:: NoSectionError
Georg Brandl48310cd2009-01-03 21:18:54 +00001211
Łukasz Langa26d513c2010-11-10 18:57:39 +00001212 Exception raised when a specified section is not found.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001213
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001214
Łukasz Langa26d513c2010-11-10 18:57:39 +00001215.. exception:: DuplicateSectionError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001216
Łukasz Langa26d513c2010-11-10 18:57:39 +00001217 Exception raised if :meth:`add_section` is called with the name of a section
1218 that is already present or in strict parsers when a section if found more
1219 than once in a single input file, string or dictionary.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001220
Łukasz Langa26d513c2010-11-10 18:57:39 +00001221 .. versionadded:: 3.2
1222 Optional ``source`` and ``lineno`` attributes and arguments to
1223 :meth:`__init__` were added.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001224
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001225
Łukasz Langa26d513c2010-11-10 18:57:39 +00001226.. exception:: DuplicateOptionError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001227
Łukasz Langa26d513c2010-11-10 18:57:39 +00001228 Exception raised by strict parsers if a single option appears twice during
1229 reading from a single file, string or dictionary. This catches misspellings
1230 and case sensitivity-related errors, e.g. a dictionary may have two keys
1231 representing the same case-insensitive configuration key.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001232
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001233
Łukasz Langa26d513c2010-11-10 18:57:39 +00001234.. exception:: NoOptionError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001235
Łukasz Langa26d513c2010-11-10 18:57:39 +00001236 Exception raised when a specified option is not found in the specified
1237 section.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001238
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001239
Łukasz Langa26d513c2010-11-10 18:57:39 +00001240.. exception:: InterpolationError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001241
Łukasz Langa26d513c2010-11-10 18:57:39 +00001242 Base class for exceptions raised when problems occur performing string
1243 interpolation.
Georg Brandl48310cd2009-01-03 21:18:54 +00001244
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001245
Łukasz Langa26d513c2010-11-10 18:57:39 +00001246.. exception:: InterpolationDepthError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001247
Łukasz Langa26d513c2010-11-10 18:57:39 +00001248 Exception raised when string interpolation cannot be completed because the
Georg Brandlbb27c122010-11-11 07:26:40 +00001249 number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of
Łukasz Langa26d513c2010-11-10 18:57:39 +00001250 :exc:`InterpolationError`.
Fred Drake03c44a32010-02-19 06:08:41 +00001251
Fred Drake03c44a32010-02-19 06:08:41 +00001252
Łukasz Langa26d513c2010-11-10 18:57:39 +00001253.. exception:: InterpolationMissingOptionError
Fred Drake03c44a32010-02-19 06:08:41 +00001254
Georg Brandlbb27c122010-11-11 07:26:40 +00001255 Exception raised when an option referenced from a value does not exist.
1256 Subclass of :exc:`InterpolationError`.
Fred Drake03c44a32010-02-19 06:08:41 +00001257
Fred Drake03c44a32010-02-19 06:08:41 +00001258
Łukasz Langa26d513c2010-11-10 18:57:39 +00001259.. exception:: InterpolationSyntaxError
Fred Drake03c44a32010-02-19 06:08:41 +00001260
Georg Brandlbb27c122010-11-11 07:26:40 +00001261 Exception raised when the source text into which substitutions are made does
1262 not conform to the required syntax. Subclass of :exc:`InterpolationError`.
Fred Drake03c44a32010-02-19 06:08:41 +00001263
Łukasz Langa26d513c2010-11-10 18:57:39 +00001264
1265.. exception:: MissingSectionHeaderError
1266
Georg Brandlbb27c122010-11-11 07:26:40 +00001267 Exception raised when attempting to parse a file which has no section
1268 headers.
Łukasz Langa26d513c2010-11-10 18:57:39 +00001269
1270
1271.. exception:: ParsingError
1272
1273 Exception raised when errors occur attempting to parse a file.
1274
1275 .. versionchanged:: 3.2
1276 The ``filename`` attribute and :meth:`__init__` argument were renamed to
1277 ``source`` for consistency.
1278
Georg Brandlbb27c122010-11-11 07:26:40 +00001279
1280.. rubric:: Footnotes
1281
1282.. [1] Config parsers allow for heavy customization. If you are interested in
1283 changing the behaviour outlined by the footnote reference, consult the
1284 `Customizing Parser Behaviour`_ section.