blob: 421015a2da41d9a6ae61f86d9d991d060121de82 [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
233their own on an otherwise empty line, or may be entered on lines holding
234values or section names. In the latter case, they need to be preceded
235by a whitespace character to be recognized as a comment. For backwards
236compatibility, by default only ``;`` starts an inline comment, while
237``#`` does not [1]_.
Georg Brandl96a60ae2010-07-28 13:13:46 +0000238
Georg Brandlbb27c122010-11-11 07:26:40 +0000239For example:
Georg Brandl116aa622007-08-15 14:28:22 +0000240
Georg Brandlbb27c122010-11-11 07:26:40 +0000241.. code-block:: ini
Georg Brandl116aa622007-08-15 14:28:22 +0000242
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000243 [Simple Values]
244 key: value
245 spaces in keys: allowed
246 spaces in values: allowed as well
247 you can also use = to delimit keys from values
248
249 [All Values Are Strings]
250 values like this: 1000000
251 or this: 3.14159265359
252 are they treated as numbers? : no
253 integers, floats and booleans are held as: strings
254 can use the API to get converted values directly: true
Georg Brandl116aa622007-08-15 14:28:22 +0000255
Georg Brandl96a60ae2010-07-28 13:13:46 +0000256 [Multiline Values]
257 chorus: I'm a lumberjack, and I'm okay
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000258 I sleep all night and I work all day
Georg Brandl116aa622007-08-15 14:28:22 +0000259
Georg Brandl96a60ae2010-07-28 13:13:46 +0000260 [No Values]
261 key_without_value
262 empty string value here =
Georg Brandl116aa622007-08-15 14:28:22 +0000263
Georg Brandl96a60ae2010-07-28 13:13:46 +0000264 [You can use comments] ; after a useful line
265 ; in an empty line
266 after: a_value ; here's another comment
267 inside: a ;comment
268 multiline ;comment
269 value! ;comment
270
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000271 [Sections Can Be Indented]
272 can_values_be_as_well = True
273 does_that_mean_anything_special = False
274 purpose = formatting for readability
275 multiline_values = are
276 handled just fine as
277 long as they are indented
278 deeper than the first line
279 of a value
280 # Did I mention we can indent comments, too?
Georg Brandl116aa622007-08-15 14:28:22 +0000281
Georg Brandl96a60ae2010-07-28 13:13:46 +0000282
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000283Interpolation of values
284-----------------------
Georg Brandl96a60ae2010-07-28 13:13:46 +0000285
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000286On top of the core functionality, :class:`ConfigParser` supports
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000287interpolation. This means values can be preprocessed before returning them
288from ``get()`` calls.
289
290.. class:: BasicInterpolation()
291
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000292 The default implementation used by :class:`ConfigParser`. It enables
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000293 values to contain format strings which refer to other values in the same
294 section, or values in the special default section [1]_. Additional default
295 values can be provided on initialization.
296
297 For example:
298
299 .. code-block:: ini
300
301 [Paths]
302 home_dir: /Users
303 my_dir: %(home_dir)s/lumberjack
304 my_pictures: %(my_dir)s/Pictures
305
306
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000307 In the example above, :class:`ConfigParser` with *interpolation* set to
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000308 ``BasicInterpolation()`` would resolve ``%(home_dir)s`` to the value of
309 ``home_dir`` (``/Users`` in this case). ``%(my_dir)s`` in effect would
310 resolve to ``/Users/lumberjack``. All interpolations are done on demand so
311 keys used in the chain of references do not have to be specified in any
312 specific order in the configuration file.
313
314 With ``interpolation`` set to ``None``, the parser would simply return
315 ``%(my_dir)s/Pictures`` as the value of ``my_pictures`` and
316 ``%(home_dir)s/lumberjack`` as the value of ``my_dir``.
317
318.. class:: ExtendedInterpolation()
319
320 An alternative handler for interpolation which implements a more advanced
321 syntax, used for instance in ``zc.buildout``. Extended interpolation is
322 using ``${section:option}`` to denote a value from a foreign section.
323 Interpolation can span multiple levels. For convenience, if the ``section:``
324 part is omitted, interpolation defaults to the current section (and possibly
325 the default values from the special section).
326
327 For example, the configuration specified above with basic interpolation,
328 would look like this with extended interpolation:
329
330 .. code-block:: ini
331
332 [Paths]
333 home_dir: /Users
334 my_dir: ${home_dir}/lumberjack
335 my_pictures: ${my_dir}/Pictures
336
337 Values from other sections can be fetched as well:
338
339 .. code-block:: ini
340
341 [Common]
342 home_dir: /Users
343 library_dir: /Library
344 system_dir: /System
345 macports_dir: /opt/local
346
347 [Frameworks]
348 Python: 3.2
349 path: ${Common:system_dir}/Library/Frameworks/
350
351 [Arthur]
352 nickname: Two Sheds
353 last_name: Jackson
354 my_dir: ${Common:home_dir}/twosheds
355 my_pictures: ${my_dir}/Pictures
356 python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python}
Georg Brandlbb27c122010-11-11 07:26:40 +0000357
Łukasz Langa26d513c2010-11-10 18:57:39 +0000358Mapping Protocol Access
359-----------------------
Georg Brandl96a60ae2010-07-28 13:13:46 +0000360
Łukasz Langa26d513c2010-11-10 18:57:39 +0000361.. versionadded:: 3.2
Georg Brandl96a60ae2010-07-28 13:13:46 +0000362
Łukasz Langa26d513c2010-11-10 18:57:39 +0000363Mapping protocol access is a generic name for functionality that enables using
Georg Brandlbb27c122010-11-11 07:26:40 +0000364custom objects as if they were dictionaries. In case of :mod:`configparser`,
Łukasz Langa26d513c2010-11-10 18:57:39 +0000365the mapping interface implementation is using the
366``parser['section']['option']`` notation.
367
368``parser['section']`` in particular returns a proxy for the section's data in
Georg Brandlbb27c122010-11-11 07:26:40 +0000369the parser. This means that the values are not copied but they are taken from
370the original parser on demand. What's even more important is that when values
Łukasz Langa26d513c2010-11-10 18:57:39 +0000371are changed on a section proxy, they are actually mutated in the original
372parser.
373
374:mod:`configparser` objects behave as close to actual dictionaries as possible.
375The mapping interface is complete and adheres to the ``MutableMapping`` ABC.
376However, 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
Éric Araujoff2a4ba2010-11-30 17:20:31 +0000393* Trying to delete the ``DEFAULTSECT`` raises ``ValueError``.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000394
Georg Brandlbb27c122010-11-11 07:26:40 +0000395* There are two parser-level methods in the legacy API that hide the dictionary
396 interface and are incompatible:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000397
Georg Brandlbb27c122010-11-11 07:26:40 +0000398 * ``parser.get(section, option, **kwargs)`` - the second argument is **not** a
399 fallback value
Łukasz Langa26d513c2010-11-10 18:57:39 +0000400
Fred Drake5a7c11f2010-11-13 05:24:17 +0000401 * ``parser.items(section)`` - this returns a list of *option*, *value* pairs
Georg Brandlbb27c122010-11-11 07:26:40 +0000402 for a specified ``section``
Łukasz Langa26d513c2010-11-10 18:57:39 +0000403
404The mapping protocol is implemented on top of the existing legacy API so that
405subclassing the original interface makes the mappings work as expected as well.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000406
Georg Brandlbb27c122010-11-11 07:26:40 +0000407
Łukasz Langa26d513c2010-11-10 18:57:39 +0000408Customizing Parser Behaviour
409----------------------------
410
411There are nearly as many INI format variants as there are applications using it.
412:mod:`configparser` goes a long way to provide support for the largest sensible
Georg Brandlbb27c122010-11-11 07:26:40 +0000413set of INI styles available. The default functionality is mainly dictated by
Łukasz Langa26d513c2010-11-10 18:57:39 +0000414historical background and it's very likely that you will want to customize some
415of the features.
416
Fred Drake5a7c11f2010-11-13 05:24:17 +0000417The most common way to change the way a specific config parser works is to use
Łukasz Langa26d513c2010-11-10 18:57:39 +0000418the :meth:`__init__` options:
419
420* *defaults*, default value: ``None``
421
422 This option accepts a dictionary of key-value pairs which will be initially
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000423 put in the ``DEFAULT`` section. This makes for an elegant way to support
424 concise configuration files that don't specify values which are the same as
425 the documented default.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000426
Fred Drake5a7c11f2010-11-13 05:24:17 +0000427 Hint: if you want to specify default values for a specific section, use
Łukasz Langa26d513c2010-11-10 18:57:39 +0000428 :meth:`read_dict` before you read the actual file.
429
430* *dict_type*, default value: :class:`collections.OrderedDict`
431
432 This option has a major impact on how the mapping protocol will behave and how
Fred Drake5a7c11f2010-11-13 05:24:17 +0000433 the written configuration files look. With the default ordered
Łukasz Langa26d513c2010-11-10 18:57:39 +0000434 dictionary, every section is stored in the order they were added to the
Georg Brandlbb27c122010-11-11 07:26:40 +0000435 parser. Same goes for options within sections.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000436
437 An alternative dictionary type can be used for example to sort sections and
Georg Brandlbb27c122010-11-11 07:26:40 +0000438 options on write-back. You can also use a regular dictionary for performance
Łukasz Langa26d513c2010-11-10 18:57:39 +0000439 reasons.
440
441 Please note: there are ways to add a set of key-value pairs in a single
Georg Brandlbb27c122010-11-11 07:26:40 +0000442 operation. When you use a regular dictionary in those operations, the order
443 of the keys may be random. For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000444
Łukasz Langa26d513c2010-11-10 18:57:39 +0000445 .. doctest::
446
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000447 >>> parser = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000448 >>> parser.read_dict({'section1': {'key1': 'value1',
449 ... 'key2': 'value2',
450 ... 'key3': 'value3'},
451 ... 'section2': {'keyA': 'valueA',
452 ... 'keyB': 'valueB',
453 ... 'keyC': 'valueC'},
454 ... 'section3': {'foo': 'x',
455 ... 'bar': 'y',
456 ... 'baz': 'z'}
457 ... })
458 >>> parser.sections()
459 ['section3', 'section2', 'section1']
460 >>> [option for option in parser['section3']]
461 ['baz', 'foo', 'bar']
Łukasz Langa26d513c2010-11-10 18:57:39 +0000462
463 In these operations you need to use an ordered dictionary as well:
464
Łukasz Langa26d513c2010-11-10 18:57:39 +0000465 .. doctest::
466
Georg Brandlbb27c122010-11-11 07:26:40 +0000467 >>> from collections import OrderedDict
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000468 >>> parser = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000469 >>> parser.read_dict(
470 ... OrderedDict((
471 ... ('s1',
472 ... OrderedDict((
473 ... ('1', '2'),
474 ... ('3', '4'),
475 ... ('5', '6'),
476 ... ))
477 ... ),
478 ... ('s2',
479 ... OrderedDict((
480 ... ('a', 'b'),
481 ... ('c', 'd'),
482 ... ('e', 'f'),
483 ... ))
484 ... ),
485 ... ))
486 ... )
487 >>> parser.sections()
488 ['s1', 's2']
489 >>> [option for option in parser['s1']]
490 ['1', '3', '5']
491 >>> [option for option in parser['s2'].values()]
492 ['b', 'd', 'f']
Łukasz Langa26d513c2010-11-10 18:57:39 +0000493
494* *allow_no_value*, default value: ``False``
495
496 Some configuration files are known to include settings without values, but
497 which otherwise conform to the syntax supported by :mod:`configparser`. The
Fred Drake5a7c11f2010-11-13 05:24:17 +0000498 *allow_no_value* parameter to the constructor can be used to
Łukasz Langa26d513c2010-11-10 18:57:39 +0000499 indicate that such values should be accepted:
500
Łukasz Langa26d513c2010-11-10 18:57:39 +0000501 .. doctest::
502
Georg Brandlbb27c122010-11-11 07:26:40 +0000503 >>> import configparser
Łukasz Langa26d513c2010-11-10 18:57:39 +0000504
Georg Brandlbb27c122010-11-11 07:26:40 +0000505 >>> sample_config = """
506 ... [mysqld]
507 ... user = mysql
508 ... pid-file = /var/run/mysqld/mysqld.pid
509 ... skip-external-locking
510 ... old_passwords = 1
511 ... skip-bdb
512 ... skip-innodb # we don't need ACID today
513 ... """
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000514 >>> config = configparser.ConfigParser(allow_no_value=True)
Georg Brandlbb27c122010-11-11 07:26:40 +0000515 >>> config.read_string(sample_config)
Łukasz Langa26d513c2010-11-10 18:57:39 +0000516
Georg Brandlbb27c122010-11-11 07:26:40 +0000517 >>> # Settings with values are treated as before:
518 >>> config["mysqld"]["user"]
519 'mysql'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000520
Georg Brandlbb27c122010-11-11 07:26:40 +0000521 >>> # Settings without values provide None:
522 >>> config["mysqld"]["skip-bdb"]
Łukasz Langa26d513c2010-11-10 18:57:39 +0000523
Georg Brandlbb27c122010-11-11 07:26:40 +0000524 >>> # Settings which aren't specified still raise an error:
525 >>> config["mysqld"]["does-not-exist"]
526 Traceback (most recent call last):
527 ...
528 KeyError: 'does-not-exist'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000529
530* *delimiters*, default value: ``('=', ':')``
531
532 Delimiters are substrings that delimit keys from values within a section. The
533 first occurence of a delimiting substring on a line is considered a delimiter.
Fred Drake5a7c11f2010-11-13 05:24:17 +0000534 This means values (but not keys) can contain the delimiters.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000535
536 See also the *space_around_delimiters* argument to
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000537 :meth:`ConfigParser.write`.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000538
539* *comment_prefixes*, default value: ``_COMPATIBLE`` (``'#'`` valid on empty
540 lines, ``';'`` valid also on non-empty lines)
541
Fred Drake5a7c11f2010-11-13 05:24:17 +0000542 Comment prefixes are strings that indicate the start of a valid comment
Georg Brandlbb27c122010-11-11 07:26:40 +0000543 within a config file. The peculiar default value allows for comments starting
Łukasz Langa26d513c2010-11-10 18:57:39 +0000544 with ``'#'`` or ``';'`` but only the latter can be used in a non-empty line.
Georg Brandlbb27c122010-11-11 07:26:40 +0000545 This is obviously dictated by backwards compatibiliy. A more predictable
Łukasz Langa26d513c2010-11-10 18:57:39 +0000546 approach would be to specify prefixes as ``('#', ';')`` which will allow for
547 both prefixes to be used in non-empty lines.
548
549 Please note that config parsers don't support escaping of comment prefixes so
550 leaving characters out of *comment_prefixes* is a way of ensuring they can be
551 used as parts of keys or values.
552
553* *strict*, default value: ``False``
554
555 If set to ``True``, the parser will not allow for any section or option
556 duplicates while reading from a single source (using :meth:`read_file`,
Georg Brandlbb27c122010-11-11 07:26:40 +0000557 :meth:`read_string` or :meth:`read_dict`). The default is ``False`` only
558 because of backwards compatibility reasons. It is recommended to use strict
Łukasz Langa26d513c2010-11-10 18:57:39 +0000559 parsers in new applications.
560
561* *empty_lines_in_values*, default value: ``True``
562
Fred Drake5a7c11f2010-11-13 05:24:17 +0000563 In config parsers, values can span multiple lines as long as they are
564 indented more than the key that holds them. By default parsers also let
565 empty lines to be parts of values. At the same time, keys can be arbitrarily
566 indented themselves to improve readability. In consequence, when
567 configuration files get big and complex, it is easy for the user to lose
568 track of the file structure. Take for instance:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000569
Georg Brandlbb27c122010-11-11 07:26:40 +0000570 .. code-block:: ini
Łukasz Langa26d513c2010-11-10 18:57:39 +0000571
Georg Brandlbb27c122010-11-11 07:26:40 +0000572 [Section]
573 key = multiline
574 value with a gotcha
Łukasz Langa26d513c2010-11-10 18:57:39 +0000575
Georg Brandlbb27c122010-11-11 07:26:40 +0000576 this = is still a part of the multiline value of 'key'
Łukasz Langa26d513c2010-11-10 18:57:39 +0000577
578
Georg Brandlbb27c122010-11-11 07:26:40 +0000579 This can be especially problematic for the user to see if she's using a
580 proportional font to edit the file. That is why when your application does
581 not need values with empty lines, you should consider disallowing them. This
582 will make empty lines split keys every time. In the example above, it would
Łukasz Langa26d513c2010-11-10 18:57:39 +0000583 produce two keys, ``key`` and ``this``.
584
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000585* *default_section*, default value: ``configparser.DEFAULTSECT`` (that is:
586 ``"DEFAULT"``)
587
588 The convention of allowing a special section of default values for other
589 sections or interpolation purposes is a powerful concept of this library,
590 letting users create complex declarative configurations. This section is
591 normally called ``"DEFAULT"`` but this can be customized to point to any
592 other valid section name. Some typical values include: ``"general"`` or
593 ``"common"``. The name provided is used for recognizing default sections when
594 reading from any source and is used when writing configuration back to
595 a file. Its current value can be retrieved using the
596 ``parser_instance.default_section`` attribute and may be modified at runtime
597 (i.e. to convert files from one format to another).
598
599* *interpolation*, default value: ``configparser.BasicInterpolation``
600
601 Interpolation behaviour may be customized by providing a custom handler
602 through the *interpolation* argument. ``None`` can be used to turn off
603 interpolation completely, ``ExtendedInterpolation()`` provides a more
604 advanced variant inspired by ``zc.buildout``. More on the subject in the
605 `dedicated documentation section <#interpolation-of-values>`_.
606
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000607 .. note:: :class:`RawConfigParser` is using ``None`` by default.
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000608
Łukasz Langa26d513c2010-11-10 18:57:39 +0000609
Fred Drake5a7c11f2010-11-13 05:24:17 +0000610More advanced customization may be achieved by overriding default values of
611these parser attributes. The defaults are defined on the classes, so they
612may be overriden by subclasses or by attribute assignment.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000613
Fred Drake5a7c11f2010-11-13 05:24:17 +0000614.. attribute:: BOOLEAN_STATES
Łukasz Langa26d513c2010-11-10 18:57:39 +0000615
616 By default when using :meth:`getboolean`, config parsers consider the
617 following values ``True``: ``'1'``, ``'yes'``, ``'true'``, ``'on'`` and the
Georg Brandlbb27c122010-11-11 07:26:40 +0000618 following values ``False``: ``'0'``, ``'no'``, ``'false'``, ``'off'``. You
619 can override this by specifying a custom dictionary of strings and their
Fred Drake5a7c11f2010-11-13 05:24:17 +0000620 Boolean outcomes. For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000621
Łukasz Langa26d513c2010-11-10 18:57:39 +0000622 .. doctest::
623
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000624 >>> custom = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000625 >>> custom['section1'] = {'funky': 'nope'}
626 >>> custom['section1'].getboolean('funky')
627 Traceback (most recent call last):
628 ...
629 ValueError: Not a boolean: nope
630 >>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False}
631 >>> custom['section1'].getboolean('funky')
632 False
Łukasz Langa26d513c2010-11-10 18:57:39 +0000633
Fred Drake5a7c11f2010-11-13 05:24:17 +0000634 Other typical Boolean pairs include ``accept``/``reject`` or
Łukasz Langa26d513c2010-11-10 18:57:39 +0000635 ``enabled``/``disabled``.
636
Fred Drake5a7c11f2010-11-13 05:24:17 +0000637.. method:: optionxform(option)
Łukasz Langa26d513c2010-11-10 18:57:39 +0000638
Fred Drake5a7c11f2010-11-13 05:24:17 +0000639 This method transforms option names on every read, get, or set
640 operation. The default converts the name to lowercase. This also
641 means that when a configuration file gets written, all keys will be
642 lowercase. Override this method if that's unsuitable.
643 For example:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000644
Łukasz Langa26d513c2010-11-10 18:57:39 +0000645 .. doctest::
646
Georg Brandlbb27c122010-11-11 07:26:40 +0000647 >>> config = """
648 ... [Section1]
649 ... Key = Value
650 ...
651 ... [Section2]
652 ... AnotherKey = Value
653 ... """
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000654 >>> typical = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000655 >>> typical.read_string(config)
656 >>> list(typical['Section1'].keys())
657 ['key']
658 >>> list(typical['Section2'].keys())
659 ['anotherkey']
660 >>> custom = configparser.RawConfigParser()
661 >>> custom.optionxform = lambda option: option
662 >>> custom.read_string(config)
663 >>> list(custom['Section1'].keys())
664 ['Key']
665 >>> list(custom['Section2'].keys())
666 ['AnotherKey']
667
Łukasz Langa26d513c2010-11-10 18:57:39 +0000668
669Legacy API Examples
670-------------------
671
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000672Mainly because of backwards compatibility concerns, :mod:`configparser`
673provides also a legacy API with explicit ``get``/``set`` methods. While there
674are valid use cases for the methods outlined below, mapping protocol access is
675preferred for new projects. The legacy API is at times more advanced,
676low-level and downright counterintuitive.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000677
678An example of writing to a configuration file::
679
680 import configparser
681
682 config = configparser.RawConfigParser()
683
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000684 # Please note that using RawConfigParser's set functions, you can assign
685 # non-string values to keys internally, but will receive an error when
686 # attempting to write to a file or when you get it in non-raw mode. Setting
687 # values using the mapping protocol or ConfigParser's set() does not allow
688 # such assignments to take place.
Łukasz Langa26d513c2010-11-10 18:57:39 +0000689 config.add_section('Section1')
690 config.set('Section1', 'int', '15')
691 config.set('Section1', 'bool', 'true')
692 config.set('Section1', 'float', '3.1415')
693 config.set('Section1', 'baz', 'fun')
694 config.set('Section1', 'bar', 'Python')
695 config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
696
697 # Writing our configuration file to 'example.cfg'
698 with open('example.cfg', 'w') as configfile:
699 config.write(configfile)
700
701An example of reading the configuration file again::
702
703 import configparser
704
705 config = configparser.RawConfigParser()
706 config.read('example.cfg')
707
708 # getfloat() raises an exception if the value is not a float
709 # getint() and getboolean() also do this for their respective types
710 float = config.getfloat('Section1', 'float')
711 int = config.getint('Section1', 'int')
712 print(float + int)
713
714 # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
715 # This is because we are using a RawConfigParser().
716 if config.getboolean('Section1', 'bool'):
717 print(config.get('Section1', 'foo'))
718
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000719To get interpolation, use :class:`ConfigParser`::
Łukasz Langa26d513c2010-11-10 18:57:39 +0000720
721 import configparser
722
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000723 cfg = configparser.ConfigParser()
Łukasz Langa26d513c2010-11-10 18:57:39 +0000724 cfg.read('example.cfg')
725
726 # Set the optional `raw` argument of get() to True if you wish to disable
727 # interpolation in a single get operation.
728 print(cfg.get('Section1', 'foo', raw=False)) # -> "Python is fun!"
729 print(cfg.get('Section1', 'foo', raw=True)) # -> "%(bar)s is %(baz)s!"
730
731 # The optional `vars` argument is a dict with members that will take
732 # precedence in interpolation.
733 print(cfg.get('Section1', 'foo', vars={'bar': 'Documentation',
734 'baz': 'evil'}))
735
736 # The optional `fallback` argument can be used to provide a fallback value
737 print(cfg.get('Section1', 'foo'))
738 # -> "Python is fun!"
739
740 print(cfg.get('Section1', 'foo', fallback='Monty is not.'))
741 # -> "Python is fun!"
742
743 print(cfg.get('Section1', 'monster', fallback='No such things as monsters.'))
744 # -> "No such things as monsters."
745
746 # A bare print(cfg.get('Section1', 'monster')) would raise NoOptionError
747 # but we can also use:
748
749 print(cfg.get('Section1', 'monster', fallback=None))
750 # -> None
751
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000752Default values are available in both types of ConfigParsers. They are used in
753interpolation if an option used is not defined elsewhere. ::
Łukasz Langa26d513c2010-11-10 18:57:39 +0000754
755 import configparser
756
757 # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000758 config = configparser.ConfigParser({'bar': 'Life', 'baz': 'hard'})
Łukasz Langa26d513c2010-11-10 18:57:39 +0000759 config.read('example.cfg')
760
761 print(config.get('Section1', 'foo')) # -> "Python is fun!"
762 config.remove_option('Section1', 'bar')
763 config.remove_option('Section1', 'baz')
764 print(config.get('Section1', 'foo')) # -> "Life is hard!"
765
Georg Brandlbb27c122010-11-11 07:26:40 +0000766
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000767.. _configparser-objects:
Łukasz Langa26d513c2010-11-10 18:57:39 +0000768
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000769ConfigParser Objects
770--------------------
Georg Brandl96a60ae2010-07-28 13:13:46 +0000771
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000772.. class:: ConfigParser(defaults=None, dict_type=collections.OrderedDict, allow_no_value=False, delimiters=('=', ':'), comment_prefixes=_COMPATIBLE, strict=False, empty_lines_in_values=True, default_section=configparser.DEFAULTSECT, interpolation=BasicInterpolation())
Georg Brandl116aa622007-08-15 14:28:22 +0000773
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000774 The main configuration parser. When *defaults* is given, it is initialized
Georg Brandl96a60ae2010-07-28 13:13:46 +0000775 into the dictionary of intrinsic defaults. When *dict_type* is given, it
776 will be used to create the dictionary objects for the list of sections, for
777 the options within a section, and for the default values.
778
Fred Drake5a7c11f2010-11-13 05:24:17 +0000779 When *delimiters* is given, it is used as the set of substrings that
Georg Brandl96a60ae2010-07-28 13:13:46 +0000780 divide keys from values. When *comment_prefixes* is given, it will be used
781 as the set of substrings that prefix comments in a line, both for the whole
782 line and inline comments. For backwards compatibility, the default value for
783 *comment_prefixes* is a special value that indicates that ``;`` and ``#`` can
784 start whole line comments while only ``;`` can start inline comments.
785
Fred Drakea4923622010-08-09 12:52:45 +0000786 When *strict* is ``True`` (default: ``False``), the parser won't allow for
787 any section or option duplicates while reading from a single source (file,
788 string or dictionary), raising :exc:`DuplicateSectionError` or
Fred Drake5a7c11f2010-11-13 05:24:17 +0000789 :exc:`DuplicateOptionError`. When *empty_lines_in_values* is ``False``
Fred Drakea4923622010-08-09 12:52:45 +0000790 (default: ``True``), each empty line marks the end of an option. Otherwise,
791 internal empty lines of a multiline option are kept as part of the value.
792 When *allow_no_value* is ``True`` (default: ``False``), options without
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000793 values are accepted; the value held for these is ``None`` and they are
794 serialized without the trailing delimiter.
Fred Drake03c44a32010-02-19 06:08:41 +0000795
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000796 When *default_section* is given, it specifies the name for the special
797 section holding default values for other sections and interpolation purposes
798 (normally named ``"DEFAULT"``). This value can be retrieved and changed on
799 runtime using the ``default_section`` instance attribute.
800
801 Interpolation behaviour may be customized by providing a custom handler
802 through the *interpolation* argument. ``None`` can be used to turn off
803 interpolation completely, ``ExtendedInterpolation()`` provides a more
804 advanced variant inspired by ``zc.buildout``. More on the subject in the
805 `dedicated documentation section <#interpolation-of-values>`_.
806
807 All option names used in interpolation will be passed through the
808 :meth:`optionxform` method just like any other option name reference. For
809 example, using the default implementation of :meth:`optionxform` (which
810 converts option names to lower case), the values ``foo %(bar)s`` and ``foo
811 %(BAR)s`` are equivalent.
Georg Brandl116aa622007-08-15 14:28:22 +0000812
Raymond Hettinger231b7f12009-03-03 00:23:19 +0000813 .. versionchanged:: 3.1
Raymond Hettinger0663a1e2009-03-02 23:06:00 +0000814 The default *dict_type* is :class:`collections.OrderedDict`.
815
Fred Drake03c44a32010-02-19 06:08:41 +0000816 .. versionchanged:: 3.2
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000817 *allow_no_value*, *delimiters*, *comment_prefixes*, *strict*,
818 *empty_lines_in_values*, *default_section* and *interpolation* were
819 added.
Georg Brandl116aa622007-08-15 14:28:22 +0000820
Fred Drake03c44a32010-02-19 06:08:41 +0000821
Georg Brandlbb27c122010-11-11 07:26:40 +0000822 .. method:: defaults()
Georg Brandl116aa622007-08-15 14:28:22 +0000823
Georg Brandlbb27c122010-11-11 07:26:40 +0000824 Return a dictionary containing the instance-wide defaults.
Georg Brandl116aa622007-08-15 14:28:22 +0000825
826
Georg Brandlbb27c122010-11-11 07:26:40 +0000827 .. method:: sections()
Georg Brandl116aa622007-08-15 14:28:22 +0000828
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000829 Return a list of the sections available; the *default section* is not
830 included in the list.
Georg Brandl116aa622007-08-15 14:28:22 +0000831
832
Georg Brandlbb27c122010-11-11 07:26:40 +0000833 .. method:: add_section(section)
Georg Brandl116aa622007-08-15 14:28:22 +0000834
Georg Brandlbb27c122010-11-11 07:26:40 +0000835 Add a section named *section* to the instance. If a section by the given
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000836 name already exists, :exc:`DuplicateSectionError` is raised. If the
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +0000837 *default section* name is passed, :exc:`ValueError` is raised. The name
838 of the section must be a string; if not, :exc:`TypeError` is raised.
839
840 .. versionchanged:: 3.2
841 Non-string section names raise :exc:`TypeError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000842
Georg Brandl116aa622007-08-15 14:28:22 +0000843
Georg Brandlbb27c122010-11-11 07:26:40 +0000844 .. method:: has_section(section)
Georg Brandl116aa622007-08-15 14:28:22 +0000845
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000846 Indicates whether the named *section* is present in the configuration.
847 The *default section* is not acknowledged.
Georg Brandl116aa622007-08-15 14:28:22 +0000848
Georg Brandl116aa622007-08-15 14:28:22 +0000849
Georg Brandlbb27c122010-11-11 07:26:40 +0000850 .. method:: options(section)
Georg Brandl116aa622007-08-15 14:28:22 +0000851
Georg Brandlbb27c122010-11-11 07:26:40 +0000852 Return a list of options available in the specified *section*.
Georg Brandl116aa622007-08-15 14:28:22 +0000853
Georg Brandl116aa622007-08-15 14:28:22 +0000854
Georg Brandlbb27c122010-11-11 07:26:40 +0000855 .. method:: has_option(section, option)
Georg Brandl116aa622007-08-15 14:28:22 +0000856
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000857 If the given *section* exists, and contains the given *option*, return
Georg Brandlbb27c122010-11-11 07:26:40 +0000858 :const:`True`; otherwise return :const:`False`.
Georg Brandl116aa622007-08-15 14:28:22 +0000859
Georg Brandl116aa622007-08-15 14:28:22 +0000860
Georg Brandlbb27c122010-11-11 07:26:40 +0000861 .. method:: read(filenames, encoding=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000862
Georg Brandlbb27c122010-11-11 07:26:40 +0000863 Attempt to read and parse a list of filenames, returning a list of
864 filenames which were successfully parsed. If *filenames* is a string, it
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000865 is treated as a single filename. If a file named in *filenames* cannot
866 be opened, that file will be ignored. This is designed so that you can
867 specify a list of potential configuration file locations (for example,
868 the current directory, the user's home directory, and some system-wide
869 directory), and all existing configuration files in the list will be
870 read. If none of the named files exist, the :class:`ConfigParser`
871 instance will contain an empty dataset. An application which requires
872 initial values to be loaded from a file should load the required file or
873 files using :meth:`read_file` before calling :meth:`read` for any
874 optional files::
Georg Brandl116aa622007-08-15 14:28:22 +0000875
Georg Brandlbb27c122010-11-11 07:26:40 +0000876 import configparser, os
Georg Brandl8dcaa732010-07-29 12:17:40 +0000877
Łukasz Langa7f64c8a2010-12-16 01:16:22 +0000878 config = configparser.ConfigParser()
Georg Brandlbb27c122010-11-11 07:26:40 +0000879 config.read_file(open('defaults.cfg'))
880 config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')],
881 encoding='cp1250')
Georg Brandl116aa622007-08-15 14:28:22 +0000882
Georg Brandlbb27c122010-11-11 07:26:40 +0000883 .. versionadded:: 3.2
884 The *encoding* parameter. Previously, all files were read using the
885 default encoding for :func:`open`.
Georg Brandl116aa622007-08-15 14:28:22 +0000886
Georg Brandl116aa622007-08-15 14:28:22 +0000887
Georg Brandlbb27c122010-11-11 07:26:40 +0000888 .. method:: read_file(f, source=None)
Georg Brandl73753d32009-09-22 13:53:14 +0000889
Fred Drake5a7c11f2010-11-13 05:24:17 +0000890 Read and parse configuration data from the file or file-like object in
891 *f* (only the :meth:`readline` method is used). The file-like object
892 must operate in text mode. Specifically, it must return strings from
893 :meth:`readline`.
Georg Brandl116aa622007-08-15 14:28:22 +0000894
Georg Brandlbb27c122010-11-11 07:26:40 +0000895 Optional argument *source* specifies the name of the file being read. If
Fred Drake5a7c11f2010-11-13 05:24:17 +0000896 not given and *f* has a :attr:`name` attribute, that is used for
897 *source*; the default is ``'<???>'``.
Fred Drakea4923622010-08-09 12:52:45 +0000898
Georg Brandlbb27c122010-11-11 07:26:40 +0000899 .. versionadded:: 3.2
Fred Drake5a7c11f2010-11-13 05:24:17 +0000900 Replaces :meth:`readfp`.
Fred Drakea4923622010-08-09 12:52:45 +0000901
Fred Drakea4923622010-08-09 12:52:45 +0000902
Georg Brandlbb27c122010-11-11 07:26:40 +0000903 .. method:: read_string(string, source='<string>')
Fred Drakea4923622010-08-09 12:52:45 +0000904
Fred Drake5a7c11f2010-11-13 05:24:17 +0000905 Parse configuration data from a string.
Fred Drakea4923622010-08-09 12:52:45 +0000906
Fred Drake5a7c11f2010-11-13 05:24:17 +0000907 Optional argument *source* specifies a context-specific name of the
908 string passed. If not given, ``'<string>'`` is used. This should
909 commonly be a filesystem path or a URL.
Fred Drakea4923622010-08-09 12:52:45 +0000910
Georg Brandlbb27c122010-11-11 07:26:40 +0000911 .. versionadded:: 3.2
Georg Brandl67b21b72010-08-17 15:07:14 +0000912
Fred Drakea4923622010-08-09 12:52:45 +0000913
Georg Brandlbb27c122010-11-11 07:26:40 +0000914 .. method:: read_dict(dictionary, source='<dict>')
Fred Drakea4923622010-08-09 12:52:45 +0000915
Georg Brandlbb27c122010-11-11 07:26:40 +0000916 Load configuration from a dictionary. Keys are section names, values are
917 dictionaries with keys and values that should be present in the section.
918 If the used dictionary type preserves order, sections and their keys will
919 be added in order. Values are automatically converted to strings.
Fred Drakea4923622010-08-09 12:52:45 +0000920
Georg Brandlbb27c122010-11-11 07:26:40 +0000921 Optional argument *source* specifies a context-specific name of the
922 dictionary passed. If not given, ``<dict>`` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000923
Georg Brandlbb27c122010-11-11 07:26:40 +0000924 .. versionadded:: 3.2
Georg Brandl67b21b72010-08-17 15:07:14 +0000925
Georg Brandl116aa622007-08-15 14:28:22 +0000926
Georg Brandlbb27c122010-11-11 07:26:40 +0000927 .. method:: get(section, option, raw=False, [vars, fallback])
Georg Brandl116aa622007-08-15 14:28:22 +0000928
Georg Brandlbb27c122010-11-11 07:26:40 +0000929 Get an *option* value for the named *section*. If *vars* is provided, it
930 must be a dictionary. The *option* is looked up in *vars* (if provided),
931 *section*, and in *DEFAULTSECT* in that order. If the key is not found
932 and *fallback* is provided, it is used as a fallback value. ``None`` can
933 be provided as a *fallback* value.
Georg Brandl470a1232010-07-29 14:17:12 +0000934
Georg Brandlbb27c122010-11-11 07:26:40 +0000935 All the ``'%'`` interpolations are expanded in the return values, unless
936 the *raw* argument is true. Values for interpolation keys are looked up
937 in the same manner as the option.
Georg Brandl116aa622007-08-15 14:28:22 +0000938
Georg Brandlbb27c122010-11-11 07:26:40 +0000939 .. versionchanged:: 3.2
940 Arguments *raw*, *vars* and *fallback* are keyword only to protect
941 users from trying to use the third argument as the *fallback* fallback
942 (especially when using the mapping protocol).
Georg Brandl116aa622007-08-15 14:28:22 +0000943
Łukasz Langa26d513c2010-11-10 18:57:39 +0000944
Georg Brandlbb27c122010-11-11 07:26:40 +0000945 .. method:: getint(section, option, raw=False, [vars, fallback])
Fred Drakecc645b92010-09-04 04:35:34 +0000946
Georg Brandlbb27c122010-11-11 07:26:40 +0000947 A convenience method which coerces the *option* in the specified *section*
948 to an integer. See :meth:`get` for explanation of *raw*, *vars* and
949 *fallback*.
Fred Drakecc645b92010-09-04 04:35:34 +0000950
951
Georg Brandlbb27c122010-11-11 07:26:40 +0000952 .. method:: getfloat(section, option, raw=False, [vars, fallback])
Fred Drakecc645b92010-09-04 04:35:34 +0000953
Georg Brandlbb27c122010-11-11 07:26:40 +0000954 A convenience method which coerces the *option* in the specified *section*
955 to a floating point number. See :meth:`get` for explanation of *raw*,
956 *vars* and *fallback*.
Fred Drakecc645b92010-09-04 04:35:34 +0000957
958
Georg Brandlbb27c122010-11-11 07:26:40 +0000959 .. method:: getboolean(section, option, raw=False, [vars, fallback])
Fred Drakecc645b92010-09-04 04:35:34 +0000960
Georg Brandlbb27c122010-11-11 07:26:40 +0000961 A convenience method which coerces the *option* in the specified *section*
962 to a Boolean value. Note that the accepted values for the option are
Fred Drake5a7c11f2010-11-13 05:24:17 +0000963 ``'1'``, ``'yes'``, ``'true'``, and ``'on'``, which cause this method to
964 return ``True``, and ``'0'``, ``'no'``, ``'false'``, and ``'off'``, which
Georg Brandlbb27c122010-11-11 07:26:40 +0000965 cause it to return ``False``. These string values are checked in a
966 case-insensitive manner. Any other value will cause it to raise
967 :exc:`ValueError`. See :meth:`get` for explanation of *raw*, *vars* and
968 *fallback*.
Fred Drakecc645b92010-09-04 04:35:34 +0000969
970
Georg Brandlbb27c122010-11-11 07:26:40 +0000971 .. method:: items(section, raw=False, vars=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000972
Fred Drake5a7c11f2010-11-13 05:24:17 +0000973 Return a list of *name*, *value* pairs for the options in the given
Georg Brandlbb27c122010-11-11 07:26:40 +0000974 *section*. Optional arguments have the same meaning as for the
975 :meth:`get` method.
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:: set(section, option, value)
Georg Brandl116aa622007-08-15 14:28:22 +0000979
Georg Brandlbb27c122010-11-11 07:26:40 +0000980 If the given section exists, set the given option to the specified value;
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +0000981 otherwise raise :exc:`NoSectionError`. *option* and *value* must be
982 strings; if not, :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000983
Guido van Rossum2fd4f372007-11-29 18:43:05 +0000984
Łukasz Langab6a6f5f2010-12-03 16:28:00 +0000985 .. method:: write(fileobject, space_around_delimiters=True)
986
987 Write a representation of the configuration to the specified :term:`file
988 object`, which must be opened in text mode (accepting strings). This
989 representation can be parsed by a future :meth:`read` call. If
990 *space_around_delimiters* is true, delimiters between
991 keys and values are surrounded by spaces.
992
993
994 .. method:: remove_option(section, option)
995
996 Remove the specified *option* from the specified *section*. If the
997 section does not exist, raise :exc:`NoSectionError`. If the option
998 existed to be removed, return :const:`True`; otherwise return
999 :const:`False`.
1000
1001
1002 .. method:: remove_section(section)
1003
1004 Remove the specified *section* from the configuration. If the section in
1005 fact existed, return ``True``. Otherwise return ``False``.
1006
1007
1008 .. method:: optionxform(option)
1009
1010 Transforms the option name *option* as found in an input file or as passed
1011 in by client code to the form that should be used in the internal
1012 structures. The default implementation returns a lower-case version of
1013 *option*; subclasses may override this or client code can set an attribute
1014 of this name on instances to affect this behavior.
1015
1016 You don't need to subclass the parser to use this method, you can also
1017 set it on an instance, to a function that takes a string argument and
1018 returns a string. Setting it to ``str``, for example, would make option
1019 names case sensitive::
1020
1021 cfgparser = ConfigParser()
1022 cfgparser.optionxform = str
1023
1024 Note that when reading configuration files, whitespace around the option
1025 names is stripped before :meth:`optionxform` is called.
1026
1027
1028 .. method:: readfp(fp, filename=None)
1029
1030 .. deprecated:: 3.2
1031 Use :meth:`read_file` instead.
1032
1033
1034.. data:: MAX_INTERPOLATION_DEPTH
1035
1036 The maximum depth for recursive interpolation for :meth:`get` when the *raw*
1037 parameter is false. This is relevant only when the default *interpolation*
1038 is used.
1039
1040
1041.. _rawconfigparser-objects:
1042
1043RawConfigParser Objects
1044-----------------------
1045
1046.. class:: RawConfigParser(defaults=None, dict_type=collections.OrderedDict, allow_no_value=False, delimiters=('=', ':'), comment_prefixes=_COMPATIBLE, strict=False, empty_lines_in_values=True, default_section=configaparser.DEFAULTSECT, interpolation=None)
1047
Łukasz Langa7f64c8a2010-12-16 01:16:22 +00001048 Legacy variant of the :class:`ConfigParser` with interpolation disabled
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +00001049 by default and unsafe ``add_section`` and ``set`` methods.
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001050
1051 .. note::
Łukasz Langa7f64c8a2010-12-16 01:16:22 +00001052 Consider using :class:`ConfigParser` instead which checks types of
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001053 the values to be stored internally. If you don't want interpolation, you
Łukasz Langa7f64c8a2010-12-16 01:16:22 +00001054 can use ``ConfigParser(interpolation=None)``.
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001055
1056
Łukasz Langa2cf9ddb2010-12-04 12:46:01 +00001057 .. method:: add_section(section)
1058
1059 Add a section named *section* to the instance. If a section by the given
1060 name already exists, :exc:`DuplicateSectionError` is raised. If the
1061 *default section* name is passed, :exc:`ValueError` is raised.
1062
1063 Type of *section* is not checked which lets users create non-string named
1064 sections. This behaviour is unsupported and may cause internal errors.
1065
1066
Łukasz Langab6a6f5f2010-12-03 16:28:00 +00001067 .. method:: set(section, option, value)
1068
1069 If the given section exists, set the given option to the specified value;
1070 otherwise raise :exc:`NoSectionError`. While it is possible to use
1071 :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters
1072 set to true) for *internal* storage of non-string values, full
1073 functionality (including interpolation and output to files) can only be
1074 achieved using string values.
1075
1076 This method lets users assign non-string values to keys internally. This
1077 behaviour is unsupported and will cause errors when attempting to write
1078 to a file or get it in non-raw mode. **Use the mapping protocol API**
1079 which does not allow such assignments to take place.
1080
1081
Łukasz Langa26d513c2010-11-10 18:57:39 +00001082Exceptions
1083----------
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001084
Łukasz Langa26d513c2010-11-10 18:57:39 +00001085.. exception:: Error
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001086
Fred Drake5a7c11f2010-11-13 05:24:17 +00001087 Base class for all other :mod:`configparser` exceptions.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001088
Georg Brandl48310cd2009-01-03 21:18:54 +00001089
Łukasz Langa26d513c2010-11-10 18:57:39 +00001090.. exception:: NoSectionError
Georg Brandl48310cd2009-01-03 21:18:54 +00001091
Łukasz Langa26d513c2010-11-10 18:57:39 +00001092 Exception raised when a specified section is not found.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001093
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001094
Łukasz Langa26d513c2010-11-10 18:57:39 +00001095.. exception:: DuplicateSectionError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001096
Łukasz Langa26d513c2010-11-10 18:57:39 +00001097 Exception raised if :meth:`add_section` is called with the name of a section
1098 that is already present or in strict parsers when a section if found more
1099 than once in a single input file, string or dictionary.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001100
Łukasz Langa26d513c2010-11-10 18:57:39 +00001101 .. versionadded:: 3.2
1102 Optional ``source`` and ``lineno`` attributes and arguments to
1103 :meth:`__init__` were added.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001104
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001105
Łukasz Langa26d513c2010-11-10 18:57:39 +00001106.. exception:: DuplicateOptionError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001107
Łukasz Langa26d513c2010-11-10 18:57:39 +00001108 Exception raised by strict parsers if a single option appears twice during
1109 reading from a single file, string or dictionary. This catches misspellings
1110 and case sensitivity-related errors, e.g. a dictionary may have two keys
1111 representing the same case-insensitive configuration key.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001112
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001113
Łukasz Langa26d513c2010-11-10 18:57:39 +00001114.. exception:: NoOptionError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001115
Łukasz Langa26d513c2010-11-10 18:57:39 +00001116 Exception raised when a specified option is not found in the specified
1117 section.
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001118
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001119
Łukasz Langa26d513c2010-11-10 18:57:39 +00001120.. exception:: InterpolationError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001121
Łukasz Langa26d513c2010-11-10 18:57:39 +00001122 Base class for exceptions raised when problems occur performing string
1123 interpolation.
Georg Brandl48310cd2009-01-03 21:18:54 +00001124
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001125
Łukasz Langa26d513c2010-11-10 18:57:39 +00001126.. exception:: InterpolationDepthError
Guido van Rossum2fd4f372007-11-29 18:43:05 +00001127
Łukasz Langa26d513c2010-11-10 18:57:39 +00001128 Exception raised when string interpolation cannot be completed because the
Georg Brandlbb27c122010-11-11 07:26:40 +00001129 number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`. Subclass of
Łukasz Langa26d513c2010-11-10 18:57:39 +00001130 :exc:`InterpolationError`.
Fred Drake03c44a32010-02-19 06:08:41 +00001131
Fred Drake03c44a32010-02-19 06:08:41 +00001132
Łukasz Langa26d513c2010-11-10 18:57:39 +00001133.. exception:: InterpolationMissingOptionError
Fred Drake03c44a32010-02-19 06:08:41 +00001134
Georg Brandlbb27c122010-11-11 07:26:40 +00001135 Exception raised when an option referenced from a value does not exist.
1136 Subclass of :exc:`InterpolationError`.
Fred Drake03c44a32010-02-19 06:08:41 +00001137
Fred Drake03c44a32010-02-19 06:08:41 +00001138
Łukasz Langa26d513c2010-11-10 18:57:39 +00001139.. exception:: InterpolationSyntaxError
Fred Drake03c44a32010-02-19 06:08:41 +00001140
Georg Brandlbb27c122010-11-11 07:26:40 +00001141 Exception raised when the source text into which substitutions are made does
1142 not conform to the required syntax. Subclass of :exc:`InterpolationError`.
Fred Drake03c44a32010-02-19 06:08:41 +00001143
Łukasz Langa26d513c2010-11-10 18:57:39 +00001144
1145.. exception:: MissingSectionHeaderError
1146
Georg Brandlbb27c122010-11-11 07:26:40 +00001147 Exception raised when attempting to parse a file which has no section
1148 headers.
Łukasz Langa26d513c2010-11-10 18:57:39 +00001149
1150
1151.. exception:: ParsingError
1152
1153 Exception raised when errors occur attempting to parse a file.
1154
1155 .. versionchanged:: 3.2
1156 The ``filename`` attribute and :meth:`__init__` argument were renamed to
1157 ``source`` for consistency.
1158
Georg Brandlbb27c122010-11-11 07:26:40 +00001159
1160.. rubric:: Footnotes
1161
1162.. [1] Config parsers allow for heavy customization. If you are interested in
1163 changing the behaviour outlined by the footnote reference, consult the
1164 `Customizing Parser Behaviour`_ section.