1:mod:`configparser` --- Configuration file parser
2=================================================
3
4.. module:: configparser
5   :synopsis: Configuration file parser.
6
7.. moduleauthor:: Ken Manheimer <klm@zope.com>
8.. moduleauthor:: Barry Warsaw <bwarsaw@python.org>
9.. moduleauthor:: Eric S. Raymond <esr@thyrsus.com>
10.. moduleauthor:: Łukasz Langa <lukasz@langa.pl>
11.. sectionauthor:: Christopher G. Petrilli <petrilli@amber.org>
12.. sectionauthor:: Łukasz Langa <lukasz@langa.pl>
13
14**Source code:** :source:`Lib/configparser.py`
15
16.. index::
17   pair: .ini; file
18   pair: configuration; file
19   single: ini file
20   single: Windows ini file
21
22--------------
23
24This module provides the :class:`ConfigParser` class which implements a basic
25configuration language which provides a structure similar to what's found in
26Microsoft Windows INI files.  You can use this to write Python programs which
27can be customized by end users easily.
28
29.. note::
30
31   This library does *not* interpret or write the value-type prefixes used in
32   the Windows Registry extended version of INI syntax.
33
34.. seealso::
35
36   Module :mod:`shlex`
37      Support for creating Unix shell-like mini-languages which can be used as
38      an alternate format for application configuration files.
39
40   Module :mod:`json`
41      The json module implements a subset of JavaScript syntax which can also
42      be used for this purpose.
43
44
45.. testsetup::
46
47   import configparser
48
49
50Quick Start
51-----------
52
53Let's take a very basic configuration file that looks like this:
54
55.. code-block:: ini
56
57   [DEFAULT]
58   ServerAliveInterval = 45
59   Compression = yes
60   CompressionLevel = 9
61   ForwardX11 = yes
62
63   [bitbucket.org]
64   User = hg
65
66   [topsecret.server.com]
67   Port = 50022
68   ForwardX11 = no
69
70The structure of INI files is described `in the following section
71<#supported-ini-file-structure>`_.  Essentially, the file
72consists of sections, each of which contains keys with values.
73:mod:`configparser` classes can read and write such files.  Let's start by
74creating the above configuration file programmatically.
75
76.. doctest::
77
78   >>> import configparser
79   >>> config = configparser.ConfigParser()
80   >>> config['DEFAULT'] = {'ServerAliveInterval': '45',
81   ...                      'Compression': 'yes',
82   ...                      'CompressionLevel': '9'}
83   >>> config['bitbucket.org'] = {}
84   >>> config['bitbucket.org']['User'] = 'hg'
85   >>> config['topsecret.server.com'] = {}
86   >>> topsecret = config['topsecret.server.com']
87   >>> topsecret['Port'] = '50022'     # mutates the parser
88   >>> topsecret['ForwardX11'] = 'no'  # same here
89   >>> config['DEFAULT']['ForwardX11'] = 'yes'
90   >>> with open('example.ini', 'w') as configfile:
91   ...   config.write(configfile)
92   ...
93
94As you can see, we can treat a config parser much like a dictionary.
95There are differences, `outlined later <#mapping-protocol-access>`_, but
96the behavior is very close to what you would expect from a dictionary.
97
98Now that we have created and saved a configuration file, let's read it
99back and explore the data it holds.
100
101.. doctest::
102
103   >>> config = configparser.ConfigParser()
104   >>> config.sections()
105   []
106   >>> config.read('example.ini')
107   ['example.ini']
108   >>> config.sections()
109   ['bitbucket.org', 'topsecret.server.com']
110   >>> 'bitbucket.org' in config
111   True
112   >>> 'bytebong.com' in config
113   False
114   >>> config['bitbucket.org']['User']
115   'hg'
116   >>> config['DEFAULT']['Compression']
117   'yes'
118   >>> topsecret = config['topsecret.server.com']
119   >>> topsecret['ForwardX11']
120   'no'
121   >>> topsecret['Port']
122   '50022'
123   >>> for key in config['bitbucket.org']:  # doctest: +SKIP
124   ...     print(key)
125   user
126   compressionlevel
127   serveraliveinterval
128   compression
129   forwardx11
130   >>> config['bitbucket.org']['ForwardX11']
131   'yes'
132
133As we can see above, the API is pretty straightforward.  The only bit of magic
134involves the ``DEFAULT`` section which provides default values for all other
135sections [1]_.  Note also that keys in sections are
136case-insensitive and stored in lowercase [1]_.
137
138
139Supported Datatypes
140-------------------
141
142Config parsers do not guess datatypes of values in configuration files, always
143storing them internally as strings.  This means that if you need other
144datatypes, you should convert on your own:
145
146.. doctest::
147
148   >>> int(topsecret['Port'])
149   50022
150   >>> float(topsecret['CompressionLevel'])
151   9.0
152
153Since this task is so common, config parsers provide a range of handy getter
154methods to handle integers, floats and booleans.  The last one is the most
155interesting because simply passing the value to ``bool()`` would do no good
156since ``bool('False')`` is still ``True``.  This is why config parsers also
157provide :meth:`~ConfigParser.getboolean`.  This method is case-insensitive and
158recognizes Boolean values from ``'yes'``/``'no'``, ``'on'``/``'off'``,
159``'true'``/``'false'`` and ``'1'``/``'0'`` [1]_.  For example:
160
161.. doctest::
162
163   >>> topsecret.getboolean('ForwardX11')
164   False
165   >>> config['bitbucket.org'].getboolean('ForwardX11')
166   True
167   >>> config.getboolean('bitbucket.org', 'Compression')
168   True
169
170Apart from :meth:`~ConfigParser.getboolean`, config parsers also
171provide equivalent :meth:`~ConfigParser.getint` and
172:meth:`~ConfigParser.getfloat` methods.  You can register your own
173converters and customize the provided ones. [1]_
174
175Fallback Values
176---------------
177
178As with a dictionary, you can use a section's :meth:`get` method to
179provide fallback values:
180
181.. doctest::
182
183   >>> topsecret.get('Port')
184   '50022'
185   >>> topsecret.get('CompressionLevel')
186   '9'
187   >>> topsecret.get('Cipher')
188   >>> topsecret.get('Cipher', '3des-cbc')
189   '3des-cbc'
190
191Please note that default values have precedence over fallback values.
192For instance, in our example the ``'CompressionLevel'`` key was
193specified only in the ``'DEFAULT'`` section.  If we try to get it from
194the section ``'topsecret.server.com'``, we will always get the default,
195even if we specify a fallback:
196
197.. doctest::
198
199   >>> topsecret.get('CompressionLevel', '3')
200   '9'
201
202One more thing to be aware of is that the parser-level :meth:`get` method
203provides a custom, more complex interface, maintained for backwards
204compatibility.  When using this method, a fallback value can be provided via
205the ``fallback`` keyword-only argument:
206
207.. doctest::
208
209   >>> config.get('bitbucket.org', 'monster',
210   ...            fallback='No such things as monsters')
211   'No such things as monsters'
212
213The same ``fallback`` argument can be used with the
214:meth:`~ConfigParser.getint`, :meth:`~ConfigParser.getfloat` and
215:meth:`~ConfigParser.getboolean` methods, for example:
216
217.. doctest::
218
219   >>> 'BatchMode' in topsecret
220   False
221   >>> topsecret.getboolean('BatchMode', fallback=True)
222   True
223   >>> config['DEFAULT']['BatchMode'] = 'no'
224   >>> topsecret.getboolean('BatchMode', fallback=True)
225   False
226
227
228Supported INI File Structure
229----------------------------
230
231A configuration file consists of sections, each led by a ``[section]`` header,
232followed by key/value entries separated by a specific string (``=`` or ``:`` by
233default [1]_).  By default, section names are case sensitive but keys are not
234[1]_.  Leading and trailing whitespace is removed from keys and values.
235Values can be omitted, in which case the key/value delimiter may also be left
236out.  Values can also span multiple lines, as long as they are indented deeper
237than the first line of the value.  Depending on the parser's mode, blank lines
238may be treated as parts of multiline values or ignored.
239
240Configuration files may include comments, prefixed by specific
241characters (``#`` and ``;`` by default [1]_).  Comments may appear on
242their own on an otherwise empty line, possibly indented. [1]_
243
244For example:
245
246.. code-block:: ini
247
248   [Simple Values]
249   key=value
250   spaces in keys=allowed
251   spaces in values=allowed as well
252   spaces around the delimiter = obviously
253   you can also use : to delimit keys from values
254
255   [All Values Are Strings]
256   values like this: 1000000
257   or this: 3.14159265359
258   are they treated as numbers? : no
259   integers, floats and booleans are held as: strings
260   can use the API to get converted values directly: true
261
262   [Multiline Values]
263   chorus: I'm a lumberjack, and I'm okay
264       I sleep all night and I work all day
265
266   [No Values]
267   key_without_value
268   empty string value here =
269
270   [You can use comments]
271   # like this
272   ; or this
273
274   # By default only in an empty line.
275   # Inline comments can be harmful because they prevent users
276   # from using the delimiting characters as parts of values.
277   # That being said, this can be customized.
278
279       [Sections Can Be Indented]
280           can_values_be_as_well = True
281           does_that_mean_anything_special = False
282           purpose = formatting for readability
283           multiline_values = are
284               handled just fine as
285               long as they are indented
286               deeper than the first line
287               of a value
288           # Did I mention we can indent comments, too?
289
290
291Interpolation of values
292-----------------------
293
294On top of the core functionality, :class:`ConfigParser` supports
295interpolation.  This means values can be preprocessed before returning them
296from ``get()`` calls.
297
298.. index:: single: % (percent); interpolation in configuration files
299
300.. class:: BasicInterpolation()
301
302   The default implementation used by :class:`ConfigParser`.  It enables
303   values to contain format strings which refer to other values in the same
304   section, or values in the special default section [1]_.  Additional default
305   values can be provided on initialization.
306
307   For example:
308
309   .. code-block:: ini
310
311      [Paths]
312      home_dir: /Users
313      my_dir: %(home_dir)s/lumberjack
314      my_pictures: %(my_dir)s/Pictures
315
316
317   In the example above, :class:`ConfigParser` with *interpolation* set to
318   ``BasicInterpolation()`` would resolve ``%(home_dir)s`` to the value of
319   ``home_dir`` (``/Users`` in this case).  ``%(my_dir)s`` in effect would
320   resolve to ``/Users/lumberjack``.  All interpolations are done on demand so
321   keys used in the chain of references do not have to be specified in any
322   specific order in the configuration file.
323
324   With ``interpolation`` set to ``None``, the parser would simply return
325   ``%(my_dir)s/Pictures`` as the value of ``my_pictures`` and
326   ``%(home_dir)s/lumberjack`` as the value of ``my_dir``.
327
328.. index:: single: $ (dollar); interpolation in configuration files
329
330.. class:: ExtendedInterpolation()
331
332   An alternative handler for interpolation which implements a more advanced
333   syntax, used for instance in ``zc.buildout``.  Extended interpolation is
334   using ``${section:option}`` to denote a value from a foreign section.
335   Interpolation can span multiple levels.  For convenience, if the
336   ``section:`` part is omitted, interpolation defaults to the current section
337   (and possibly the default values from the special section).
338
339   For example, the configuration specified above with basic interpolation,
340   would look like this with extended interpolation:
341
342   .. code-block:: ini
343
344      [Paths]
345      home_dir: /Users
346      my_dir: ${home_dir}/lumberjack
347      my_pictures: ${my_dir}/Pictures
348
349   Values from other sections can be fetched as well:
350
351   .. code-block:: ini
352
353      [Common]
354      home_dir: /Users
355      library_dir: /Library
356      system_dir: /System
357      macports_dir: /opt/local
358
359      [Frameworks]
360      Python: 3.2
361      path: ${Common:system_dir}/Library/Frameworks/
362
363      [Arthur]
364      nickname: Two Sheds
365      last_name: Jackson
366      my_dir: ${Common:home_dir}/twosheds
367      my_pictures: ${my_dir}/Pictures
368      python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python}
369
370Mapping Protocol Access
371-----------------------
372
373.. versionadded:: 3.2
374
375Mapping protocol access is a generic name for functionality that enables using
376custom objects as if they were dictionaries.  In case of :mod:`configparser`,
377the mapping interface implementation is using the
378``parser['section']['option']`` notation.
379
380``parser['section']`` in particular returns a proxy for the section's data in
381the parser.  This means that the values are not copied but they are taken from
382the original parser on demand.  What's even more important is that when values
383are changed on a section proxy, they are actually mutated in the original
384parser.
385
386:mod:`configparser` objects behave as close to actual dictionaries as possible.
387The mapping interface is complete and adheres to the
388:class:`~collections.abc.MutableMapping` ABC.
389However, there are a few differences that should be taken into account:
390
391* By default, all keys in sections are accessible in a case-insensitive manner
392  [1]_.  E.g. ``for option in parser["section"]`` yields only ``optionxform``'ed
393  option key names.  This means lowercased keys by default.  At the same time,
394  for a section that holds the key ``'a'``, both expressions return ``True``::
395
396     "a" in parser["section"]
397     "A" in parser["section"]
398
399* All sections include ``DEFAULTSECT`` values as well which means that
400  ``.clear()`` on a section may not leave the section visibly empty.  This is
401  because default values cannot be deleted from the section (because technically
402  they are not there).  If they are overridden in the section, deleting causes
403  the default value to be visible again.  Trying to delete a default value
404  causes a :exc:`KeyError`.
405
406* ``DEFAULTSECT`` cannot be removed from the parser:
407
408  * trying to delete it raises :exc:`ValueError`,
409
410  * ``parser.clear()`` leaves it intact,
411
412  * ``parser.popitem()`` never returns it.
413
414* ``parser.get(section, option, **kwargs)`` - the second argument is **not**
415  a fallback value.  Note however that the section-level ``get()`` methods are
416  compatible both with the mapping protocol and the classic configparser API.
417
418* ``parser.items()`` is compatible with the mapping protocol (returns a list of
419  *section_name*, *section_proxy* pairs including the DEFAULTSECT).  However,
420  this method can also be invoked with arguments: ``parser.items(section, raw,
421  vars)``.  The latter call returns a list of *option*, *value* pairs for
422  a specified ``section``, with all interpolations expanded (unless
423  ``raw=True`` is provided).
424
425The mapping protocol is implemented on top of the existing legacy API so that
426subclasses overriding the original interface still should have mappings working
427as expected.
428
429
430Customizing Parser Behaviour
431----------------------------
432
433There are nearly as many INI format variants as there are applications using it.
434:mod:`configparser` goes a long way to provide support for the largest sensible
435set of INI styles available.  The default functionality is mainly dictated by
436historical background and it's very likely that you will want to customize some
437of the features.
438
439The most common way to change the way a specific config parser works is to use
440the :meth:`__init__` options:
441
442* *defaults*, default value: ``None``
443
444  This option accepts a dictionary of key-value pairs which will be initially
445  put in the ``DEFAULT`` section.  This makes for an elegant way to support
446  concise configuration files that don't specify values which are the same as
447  the documented default.
448
449  Hint: if you want to specify default values for a specific section, use
450  :meth:`read_dict` before you read the actual file.
451
452* *dict_type*, default value: :class:`collections.OrderedDict`
453
454  This option has a major impact on how the mapping protocol will behave and how
455  the written configuration files look.  With the default ordered
456  dictionary, every section is stored in the order they were added to the
457  parser.  Same goes for options within sections.
458
459  An alternative dictionary type can be used for example to sort sections and
460  options on write-back.  You can also use a regular dictionary for performance
461  reasons.
462
463  Please note: there are ways to add a set of key-value pairs in a single
464  operation.  When you use a regular dictionary in those operations, the order
465  of the keys will be ordered because dict preserves order from Python 3.7.
466  For example:
467
468  .. doctest::
469
470     >>> parser = configparser.ConfigParser()
471     >>> parser.read_dict({'section1': {'key1': 'value1',
472     ...                                'key2': 'value2',
473     ...                                'key3': 'value3'},
474     ...                   'section2': {'keyA': 'valueA',
475     ...                                'keyB': 'valueB',
476     ...                                'keyC': 'valueC'},
477     ...                   'section3': {'foo': 'x',
478     ...                                'bar': 'y',
479     ...                                'baz': 'z'}
480     ... })
481     >>> parser.sections()
482     ['section1', 'section2', 'section3']
483     >>> [option for option in parser['section3']]
484     ['foo', 'bar', 'baz']
485
486* *allow_no_value*, default value: ``False``
487
488  Some configuration files are known to include settings without values, but
489  which otherwise conform to the syntax supported by :mod:`configparser`.  The
490  *allow_no_value* parameter to the constructor can be used to
491  indicate that such values should be accepted:
492
493  .. doctest::
494
495     >>> import configparser
496
497     >>> sample_config = """
498     ... [mysqld]
499     ...   user = mysql
500     ...   pid-file = /var/run/mysqld/mysqld.pid
501     ...   skip-external-locking
502     ...   old_passwords = 1
503     ...   skip-bdb
504     ...   # we don't need ACID today
505     ...   skip-innodb
506     ... """
507     >>> config = configparser.ConfigParser(allow_no_value=True)
508     >>> config.read_string(sample_config)
509
510     >>> # Settings with values are treated as before:
511     >>> config["mysqld"]["user"]
512     'mysql'
513
514     >>> # Settings without values provide None:
515     >>> config["mysqld"]["skip-bdb"]
516
517     >>> # Settings which aren't specified still raise an error:
518     >>> config["mysqld"]["does-not-exist"]
519     Traceback (most recent call last):
520       ...
521     KeyError: 'does-not-exist'
522
523* *delimiters*, default value: ``('=', ':')``
524
525  Delimiters are substrings that delimit keys from values within a section.
526  The first occurrence of a delimiting substring on a line is considered
527  a delimiter.  This means values (but not keys) can contain the delimiters.
528
529  See also the *space_around_delimiters* argument to
530  :meth:`ConfigParser.write`.
531
532* *comment_prefixes*, default value: ``('#', ';')``
533
534* *inline_comment_prefixes*, default value: ``None``
535
536  Comment prefixes are strings that indicate the start of a valid comment within
537  a config file. *comment_prefixes* are used only on otherwise empty lines
538  (optionally indented) whereas *inline_comment_prefixes* can be used after
539  every valid value (e.g. section names, options and empty lines as well).  By
540  default inline comments are disabled and ``'#'`` and ``';'`` are used as
541  prefixes for whole line comments.
542
543  .. versionchanged:: 3.2
544     In previous versions of :mod:`configparser` behaviour matched
545     ``comment_prefixes=('#',';')`` and ``inline_comment_prefixes=(';',)``.
546
547  Please note that config parsers don't support escaping of comment prefixes so
548  using *inline_comment_prefixes* may prevent users from specifying option
549  values with characters used as comment prefixes.  When in doubt, avoid
550  setting *inline_comment_prefixes*.  In any circumstances, the only way of
551  storing comment prefix characters at the beginning of a line in multiline
552  values is to interpolate the prefix, for example::
553
554    >>> from configparser import ConfigParser, ExtendedInterpolation
555    >>> parser = ConfigParser(interpolation=ExtendedInterpolation())
556    >>> # the default BasicInterpolation could be used as well
557    >>> parser.read_string("""
558    ... [DEFAULT]
559    ... hash = #
560    ...
561    ... [hashes]
562    ... shebang =
563    ...   ${hash}!/usr/bin/env python
564    ...   ${hash} -*- coding: utf-8 -*-
565    ...
566    ... extensions =
567    ...   enabled_extension
568    ...   another_extension
569    ...   #disabled_by_comment
570    ...   yet_another_extension
571    ...
572    ... interpolation not necessary = if # is not at line start
573    ... even in multiline values = line #1
574    ...   line #2
575    ...   line #3
576    ... """)
577    >>> print(parser['hashes']['shebang'])
578    <BLANKLINE>
579    #!/usr/bin/env python
580    # -*- coding: utf-8 -*-
581    >>> print(parser['hashes']['extensions'])
582    <BLANKLINE>
583    enabled_extension
584    another_extension
585    yet_another_extension
586    >>> print(parser['hashes']['interpolation not necessary'])
587    if # is not at line start
588    >>> print(parser['hashes']['even in multiline values'])
589    line #1
590    line #2
591    line #3
592
593* *strict*, default value: ``True``
594
595  When set to ``True``, the parser will not allow for any section or option
596  duplicates while reading from a single source (using :meth:`read_file`,
597  :meth:`read_string` or :meth:`read_dict`).  It is recommended to use strict
598  parsers in new applications.
599
600  .. versionchanged:: 3.2
601     In previous versions of :mod:`configparser` behaviour matched
602     ``strict=False``.
603
604* *empty_lines_in_values*, default value: ``True``
605
606  In config parsers, values can span multiple lines as long as they are
607  indented more than the key that holds them.  By default parsers also let
608  empty lines to be parts of values.  At the same time, keys can be arbitrarily
609  indented themselves to improve readability.  In consequence, when
610  configuration files get big and complex, it is easy for the user to lose
611  track of the file structure.  Take for instance:
612
613  .. code-block:: ini
614
615     [Section]
616     key = multiline
617       value with a gotcha
618
619      this = is still a part of the multiline value of 'key'
620
621  This can be especially problematic for the user to see if she's using a
622  proportional font to edit the file.  That is why when your application does
623  not need values with empty lines, you should consider disallowing them.  This
624  will make empty lines split keys every time.  In the example above, it would
625  produce two keys, ``key`` and ``this``.
626
627* *default_section*, default value: ``configparser.DEFAULTSECT`` (that is:
628  ``"DEFAULT"``)
629
630  The convention of allowing a special section of default values for other
631  sections or interpolation purposes is a powerful concept of this library,
632  letting users create complex declarative configurations.  This section is
633  normally called ``"DEFAULT"`` but this can be customized to point to any
634  other valid section name.  Some typical values include: ``"general"`` or
635  ``"common"``.  The name provided is used for recognizing default sections
636  when reading from any source and is used when writing configuration back to
637  a file.  Its current value can be retrieved using the
638  ``parser_instance.default_section`` attribute and may be modified at runtime
639  (i.e. to convert files from one format to another).
640
641* *interpolation*, default value: ``configparser.BasicInterpolation``
642
643  Interpolation behaviour may be customized by providing a custom handler
644  through the *interpolation* argument. ``None`` can be used to turn off
645  interpolation completely, ``ExtendedInterpolation()`` provides a more
646  advanced variant inspired by ``zc.buildout``.  More on the subject in the
647  `dedicated documentation section <#interpolation-of-values>`_.
648  :class:`RawConfigParser` has a default value of ``None``.
649
650* *converters*, default value: not set
651
652  Config parsers provide option value getters that perform type conversion.  By
653  default :meth:`~ConfigParser.getint`, :meth:`~ConfigParser.getfloat`, and
654  :meth:`~ConfigParser.getboolean` are implemented.  Should other getters be
655  desirable, users may define them in a subclass or pass a dictionary where each
656  key is a name of the converter and each value is a callable implementing said
657  conversion.  For instance, passing ``{'decimal': decimal.Decimal}`` would add
658  :meth:`getdecimal` on both the parser object and all section proxies.  In
659  other words, it will be possible to write both
660  ``parser_instance.getdecimal('section', 'key', fallback=0)`` and
661  ``parser_instance['section'].getdecimal('key', 0)``.
662
663  If the converter needs to access the state of the parser, it can be
664  implemented as a method on a config parser subclass.  If the name of this
665  method starts with ``get``, it will be available on all section proxies, in
666  the dict-compatible form (see the ``getdecimal()`` example above).
667
668More advanced customization may be achieved by overriding default values of
669these parser attributes.  The defaults are defined on the classes, so they may
670be overridden by subclasses or by attribute assignment.
671
672.. attribute:: ConfigParser.BOOLEAN_STATES
673
674  By default when using :meth:`~ConfigParser.getboolean`, config parsers
675  consider the following values ``True``: ``'1'``, ``'yes'``, ``'true'``,
676  ``'on'`` and the following values ``False``: ``'0'``, ``'no'``, ``'false'``,
677  ``'off'``.  You can override this by specifying a custom dictionary of strings
678  and their Boolean outcomes. For example:
679
680  .. doctest::
681
682     >>> custom = configparser.ConfigParser()
683     >>> 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
691
692  Other typical Boolean pairs include ``accept``/``reject`` or
693  ``enabled``/``disabled``.
694
695.. method:: ConfigParser.optionxform(option)
696
697  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:
702
703  .. doctest::
704
705     >>> config = """
706     ... [Section1]
707     ... Key = Value
708     ...
709     ... [Section2]
710     ... AnotherKey = Value
711     ... """
712     >>> typical = configparser.ConfigParser()
713     >>> 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
726.. attribute:: ConfigParser.SECTCRE
727
728  A compiled regular expression used to parse section headers.  The default
729  matches ``[section]`` to the name ``"section"``.  Whitespace is considered
730  part of the section name, thus ``[  larch  ]`` will be read as a section of
731  name ``"  larch  "``.  Override this attribute if that's unsuitable.  For
732  example:
733
734  .. doctest::
735
736     >>> import re
737     >>> config = """
738     ... [Section 1]
739     ... option = value
740     ...
741     ... [  Section 2  ]
742     ... another = val
743     ... """
744     >>> typical = configparser.ConfigParser()
745     >>> typical.read_string(config)
746     >>> typical.sections()
747     ['Section 1', '  Section 2  ']
748     >>> custom = configparser.ConfigParser()
749     >>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
750     >>> custom.read_string(config)
751     >>> custom.sections()
752     ['Section 1', 'Section 2']
753
754  .. note::
755
756     While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing
757     option lines, it's not recommended to override it because that would
758     interfere with constructor options *allow_no_value* and *delimiters*.
759
760
761Legacy API Examples
762-------------------
763
764Mainly because of backwards compatibility concerns, :mod:`configparser`
765provides also a legacy API with explicit ``get``/``set`` methods.  While there
766are valid use cases for the methods outlined below, mapping protocol access is
767preferred for new projects.  The legacy API is at times more advanced,
768low-level and downright counterintuitive.
769
770An example of writing to a configuration file::
771
772   import configparser
773
774   config = configparser.RawConfigParser()
775
776   # Please note that using RawConfigParser's set functions, you can assign
777   # non-string values to keys internally, but will receive an error when
778   # attempting to write to a file or when you get it in non-raw mode. Setting
779   # values using the mapping protocol or ConfigParser's set() does not allow
780   # such assignments to take place.
781   config.add_section('Section1')
782   config.set('Section1', 'an_int', '15')
783   config.set('Section1', 'a_bool', 'true')
784   config.set('Section1', 'a_float', '3.1415')
785   config.set('Section1', 'baz', 'fun')
786   config.set('Section1', 'bar', 'Python')
787   config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
788
789   # Writing our configuration file to 'example.cfg'
790   with open('example.cfg', 'w') as configfile:
791       config.write(configfile)
792
793An example of reading the configuration file again::
794
795   import configparser
796
797   config = configparser.RawConfigParser()
798   config.read('example.cfg')
799
800   # getfloat() raises an exception if the value is not a float
801   # getint() and getboolean() also do this for their respective types
802   a_float = config.getfloat('Section1', 'a_float')
803   an_int = config.getint('Section1', 'an_int')
804   print(a_float + an_int)
805
806   # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
807   # This is because we are using a RawConfigParser().
808   if config.getboolean('Section1', 'a_bool'):
809       print(config.get('Section1', 'foo'))
810
811To get interpolation, use :class:`ConfigParser`::
812
813   import configparser
814
815   cfg = configparser.ConfigParser()
816   cfg.read('example.cfg')
817
818   # Set the optional *raw* argument of get() to True if you wish to disable
819   # interpolation in a single get operation.
820   print(cfg.get('Section1', 'foo', raw=False))  # -> "Python is fun!"
821   print(cfg.get('Section1', 'foo', raw=True))   # -> "%(bar)s is %(baz)s!"
822
823   # The optional *vars* argument is a dict with members that will take
824   # precedence in interpolation.
825   print(cfg.get('Section1', 'foo', vars={'bar': 'Documentation',
826                                          'baz': 'evil'}))
827
828   # The optional *fallback* argument can be used to provide a fallback value
829   print(cfg.get('Section1', 'foo'))
830         # -> "Python is fun!"
831
832   print(cfg.get('Section1', 'foo', fallback='Monty is not.'))
833         # -> "Python is fun!"
834
835   print(cfg.get('Section1', 'monster', fallback='No such things as monsters.'))
836         # -> "No such things as monsters."
837
838   # A bare print(cfg.get('Section1', 'monster')) would raise NoOptionError
839   # but we can also use:
840
841   print(cfg.get('Section1', 'monster', fallback=None))
842         # -> None
843
844Default values are available in both types of ConfigParsers.  They are used in
845interpolation if an option used is not defined elsewhere. ::
846
847   import configparser
848
849   # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
850   config = configparser.ConfigParser({'bar': 'Life', 'baz': 'hard'})
851   config.read('example.cfg')
852
853   print(config.get('Section1', 'foo'))     # -> "Python is fun!"
854   config.remove_option('Section1', 'bar')
855   config.remove_option('Section1', 'baz')
856   print(config.get('Section1', 'foo'))     # -> "Life is hard!"
857
858
859.. _configparser-objects:
860
861ConfigParser Objects
862--------------------
863
864.. 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(), converters={})
865
866   The main configuration parser.  When *defaults* is given, it is initialized
867   into the dictionary of intrinsic defaults.  When *dict_type* is given, it
868   will be used to create the dictionary objects for the list of sections, for
869   the options within a section, and for the default values.
870
871   When *delimiters* is given, it is used as the set of substrings that
872   divide keys from values.  When *comment_prefixes* is given, it will be used
873   as the set of substrings that prefix comments in otherwise empty lines.
874   Comments can be indented.  When *inline_comment_prefixes* is given, it will
875   be used as the set of substrings that prefix comments in non-empty lines.
876
877   When *strict* is ``True`` (the default), the parser won't allow for
878   any section or option duplicates while reading from a single source (file,
879   string or dictionary), raising :exc:`DuplicateSectionError` or
880   :exc:`DuplicateOptionError`.  When *empty_lines_in_values* is ``False``
881   (default: ``True``), each empty line marks the end of an option.  Otherwise,
882   internal empty lines of a multiline option are kept as part of the value.
883   When *allow_no_value* is ``True`` (default: ``False``), options without
884   values are accepted; the value held for these is ``None`` and they are
885   serialized without the trailing delimiter.
886
887   When *default_section* is given, it specifies the name for the special
888   section holding default values for other sections and interpolation purposes
889   (normally named ``"DEFAULT"``).  This value can be retrieved and changed on
890   runtime using the ``default_section`` instance attribute.
891
892   Interpolation behaviour may be customized by providing a custom handler
893   through the *interpolation* argument. ``None`` can be used to turn off
894   interpolation completely, ``ExtendedInterpolation()`` provides a more
895   advanced variant inspired by ``zc.buildout``.  More on the subject in the
896   `dedicated documentation section <#interpolation-of-values>`_.
897
898   All option names used in interpolation will be passed through the
899   :meth:`optionxform` method just like any other option name reference.  For
900   example, using the default implementation of :meth:`optionxform` (which
901   converts option names to lower case), the values ``foo %(bar)s`` and ``foo
902   %(BAR)s`` are equivalent.
903
904   When *converters* is given, it should be a dictionary where each key
905   represents the name of a type converter and each value is a callable
906   implementing the conversion from string to the desired datatype.  Every
907   converter gets its own corresponding :meth:`get*()` method on the parser
908   object and section proxies.
909
910   .. versionchanged:: 3.1
911      The default *dict_type* is :class:`collections.OrderedDict`.
912
913   .. versionchanged:: 3.2
914      *allow_no_value*, *delimiters*, *comment_prefixes*, *strict*,
915      *empty_lines_in_values*, *default_section* and *interpolation* were
916      added.
917
918   .. versionchanged:: 3.5
919      The *converters* argument was added.
920
921   .. versionchanged:: 3.7
922      The *defaults* argument is read with :meth:`read_dict()`,
923      providing consistent behavior across the parser: non-string
924      keys and values are implicitly converted to strings.
925
926   .. method:: defaults()
927
928      Return a dictionary containing the instance-wide defaults.
929
930
931   .. method:: sections()
932
933      Return a list of the sections available; the *default section* is not
934      included in the list.
935
936
937   .. method:: add_section(section)
938
939      Add a section named *section* to the instance.  If a section by the given
940      name already exists, :exc:`DuplicateSectionError` is raised.  If the
941      *default section* name is passed, :exc:`ValueError` is raised.  The name
942      of the section must be a string; if not, :exc:`TypeError` is raised.
943
944      .. versionchanged:: 3.2
945         Non-string section names raise :exc:`TypeError`.
946
947
948   .. method:: has_section(section)
949
950      Indicates whether the named *section* is present in the configuration.
951      The *default section* is not acknowledged.
952
953
954   .. method:: options(section)
955
956      Return a list of options available in the specified *section*.
957
958
959   .. method:: has_option(section, option)
960
961      If the given *section* exists, and contains the given *option*, return
962      :const:`True`; otherwise return :const:`False`.  If the specified
963      *section* is :const:`None` or an empty string, DEFAULT is assumed.
964
965
966   .. method:: read(filenames, encoding=None)
967
968      Attempt to read and parse an iterable of filenames, returning a list of
969      filenames which were successfully parsed.
970
971      If *filenames* is a string, a :class:`bytes` object or a
972      :term:`path-like object`, it is treated as
973      a single filename.  If a file named in *filenames* cannot be opened, that
974      file will be ignored.  This is designed so that you can specify an
975      iterable of potential configuration file locations (for example, the
976      current directory, the user's home directory, and some system-wide
977      directory), and all existing configuration files in the iterable will be
978      read.
979
980      If none of the named files exist, the :class:`ConfigParser`
981      instance will contain an empty dataset.  An application which requires
982      initial values to be loaded from a file should load the required file or
983      files using :meth:`read_file` before calling :meth:`read` for any
984      optional files::
985
986         import configparser, os
987
988         config = configparser.ConfigParser()
989         config.read_file(open('defaults.cfg'))
990         config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')],
991                     encoding='cp1250')
992
993      .. versionadded:: 3.2
994         The *encoding* parameter.  Previously, all files were read using the
995         default encoding for :func:`open`.
996
997      .. versionadded:: 3.6.1
998         The *filenames* parameter accepts a :term:`path-like object`.
999
1000      .. versionadded:: 3.7
1001         The *filenames* parameter accepts a :class:`bytes` object.
1002
1003
1004   .. method:: read_file(f, source=None)
1005
1006      Read and parse configuration data from *f* which must be an iterable
1007      yielding Unicode strings (for example files opened in text mode).
1008
1009      Optional argument *source* specifies the name of the file being read.  If
1010      not given and *f* has a :attr:`name` attribute, that is used for
1011      *source*; the default is ``'<???>'``.
1012
1013      .. versionadded:: 3.2
1014         Replaces :meth:`readfp`.
1015
1016   .. method:: read_string(string, source='<string>')
1017
1018      Parse configuration data from a string.
1019
1020      Optional argument *source* specifies a context-specific name of the
1021      string passed.  If not given, ``'<string>'`` is used.  This should
1022      commonly be a filesystem path or a URL.
1023
1024      .. versionadded:: 3.2
1025
1026
1027   .. method:: read_dict(dictionary, source='<dict>')
1028
1029      Load configuration from any object that provides a dict-like ``items()``
1030      method.  Keys are section names, values are dictionaries with keys and
1031      values that should be present in the section.  If the used dictionary
1032      type preserves order, sections and their keys will be added in order.
1033      Values are automatically converted to strings.
1034
1035      Optional argument *source* specifies a context-specific name of the
1036      dictionary passed.  If not given, ``<dict>`` is used.
1037
1038      This method can be used to copy state between parsers.
1039
1040      .. versionadded:: 3.2
1041
1042
1043   .. method:: get(section, option, *, raw=False, vars=None[, fallback])
1044
1045      Get an *option* value for the named *section*.  If *vars* is provided, it
1046      must be a dictionary.  The *option* is looked up in *vars* (if provided),
1047      *section*, and in *DEFAULTSECT* in that order.  If the key is not found
1048      and *fallback* is provided, it is used as a fallback value.  ``None`` can
1049      be provided as a *fallback* value.
1050
1051      All the ``'%'`` interpolations are expanded in the return values, unless
1052      the *raw* argument is true.  Values for interpolation keys are looked up
1053      in the same manner as the option.
1054
1055      .. versionchanged:: 3.2
1056         Arguments *raw*, *vars* and *fallback* are keyword only to protect
1057         users from trying to use the third argument as the *fallback* fallback
1058         (especially when using the mapping protocol).
1059
1060
1061   .. method:: getint(section, option, *, raw=False, vars=None[, fallback])
1062
1063      A convenience method which coerces the *option* in the specified *section*
1064      to an integer.  See :meth:`get` for explanation of *raw*, *vars* and
1065      *fallback*.
1066
1067
1068   .. method:: getfloat(section, option, *, raw=False, vars=None[, fallback])
1069
1070      A convenience method which coerces the *option* in the specified *section*
1071      to a floating point number.  See :meth:`get` for explanation of *raw*,
1072      *vars* and *fallback*.
1073
1074
1075   .. method:: getboolean(section, option, *, raw=False, vars=None[, fallback])
1076
1077      A convenience method which coerces the *option* in the specified *section*
1078      to a Boolean value.  Note that the accepted values for the option are
1079      ``'1'``, ``'yes'``, ``'true'``, and ``'on'``, which cause this method to
1080      return ``True``, and ``'0'``, ``'no'``, ``'false'``, and ``'off'``, which
1081      cause it to return ``False``.  These string values are checked in a
1082      case-insensitive manner.  Any other value will cause it to raise
1083      :exc:`ValueError`.  See :meth:`get` for explanation of *raw*, *vars* and
1084      *fallback*.
1085
1086
1087   .. method:: items(raw=False, vars=None)
1088               items(section, raw=False, vars=None)
1089
1090      When *section* is not given, return a list of *section_name*,
1091      *section_proxy* pairs, including DEFAULTSECT.
1092
1093      Otherwise, return a list of *name*, *value* pairs for the options in the
1094      given *section*.  Optional arguments have the same meaning as for the
1095      :meth:`get` method.
1096
1097
1098   .. method:: set(section, option, value)
1099
1100      If the given section exists, set the given option to the specified value;
1101      otherwise raise :exc:`NoSectionError`.  *option* and *value* must be
1102      strings; if not, :exc:`TypeError` is raised.
1103
1104
1105   .. method:: write(fileobject, space_around_delimiters=True)
1106
1107      Write a representation of the configuration to the specified :term:`file
1108      object`, which must be opened in text mode (accepting strings).  This
1109      representation can be parsed by a future :meth:`read` call.  If
1110      *space_around_delimiters* is true, delimiters between
1111      keys and values are surrounded by spaces.
1112
1113
1114   .. method:: remove_option(section, option)
1115
1116      Remove the specified *option* from the specified *section*.  If the
1117      section does not exist, raise :exc:`NoSectionError`.  If the option
1118      existed to be removed, return :const:`True`; otherwise return
1119      :const:`False`.
1120
1121
1122   .. method:: remove_section(section)
1123
1124      Remove the specified *section* from the configuration.  If the section in
1125      fact existed, return ``True``.  Otherwise return ``False``.
1126
1127
1128   .. method:: optionxform(option)
1129
1130      Transforms the option name *option* as found in an input file or as passed
1131      in by client code to the form that should be used in the internal
1132      structures.  The default implementation returns a lower-case version of
1133      *option*; subclasses may override this or client code can set an attribute
1134      of this name on instances to affect this behavior.
1135
1136      You don't need to subclass the parser to use this method, you can also
1137      set it on an instance, to a function that takes a string argument and
1138      returns a string.  Setting it to ``str``, for example, would make option
1139      names case sensitive::
1140
1141         cfgparser = ConfigParser()
1142         cfgparser.optionxform = str
1143
1144      Note that when reading configuration files, whitespace around the option
1145      names is stripped before :meth:`optionxform` is called.
1146
1147
1148   .. method:: readfp(fp, filename=None)
1149
1150      .. deprecated:: 3.2
1151         Use :meth:`read_file` instead.
1152
1153      .. versionchanged:: 3.2
1154         :meth:`readfp` now iterates on *fp* instead of calling ``fp.readline()``.
1155
1156      For existing code calling :meth:`readfp` with arguments which don't
1157      support iteration, the following generator may be used as a wrapper
1158      around the file-like object::
1159
1160         def readline_generator(fp):
1161             line = fp.readline()
1162             while line:
1163                 yield line
1164                 line = fp.readline()
1165
1166      Instead of ``parser.readfp(fp)`` use
1167      ``parser.read_file(readline_generator(fp))``.
1168
1169
1170.. data:: MAX_INTERPOLATION_DEPTH
1171
1172   The maximum depth for recursive interpolation for :meth:`get` when the *raw*
1173   parameter is false.  This is relevant only when the default *interpolation*
1174   is used.
1175
1176
1177.. _rawconfigparser-objects:
1178
1179RawConfigParser Objects
1180-----------------------
1181
1182.. class:: RawConfigParser(defaults=None, dict_type=collections.OrderedDict, \
1183                           allow_no_value=False, *, delimiters=('=', ':'), \
1184                           comment_prefixes=('#', ';'), \
1185                           inline_comment_prefixes=None, strict=True, \
1186                           empty_lines_in_values=True, \
1187                           default_section=configparser.DEFAULTSECT[, \
1188                           interpolation])
1189
1190   Legacy variant of the :class:`ConfigParser`.  It has interpolation
1191   disabled by default and allows for non-string section names, option
1192   names, and values via its unsafe ``add_section`` and ``set`` methods,
1193   as well as the legacy ``defaults=`` keyword argument handling.
1194
1195   .. note::
1196      Consider using :class:`ConfigParser` instead which checks types of
1197      the values to be stored internally.  If you don't want interpolation, you
1198      can use ``ConfigParser(interpolation=None)``.
1199
1200
1201   .. method:: add_section(section)
1202
1203      Add a section named *section* to the instance.  If a section by the given
1204      name already exists, :exc:`DuplicateSectionError` is raised.  If the
1205      *default section* name is passed, :exc:`ValueError` is raised.
1206
1207      Type of *section* is not checked which lets users create non-string named
1208      sections.  This behaviour is unsupported and may cause internal errors.
1209
1210
1211   .. method:: set(section, option, value)
1212
1213      If the given section exists, set the given option to the specified value;
1214      otherwise raise :exc:`NoSectionError`.  While it is possible to use
1215      :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters
1216      set to true) for *internal* storage of non-string values, full
1217      functionality (including interpolation and output to files) can only be
1218      achieved using string values.
1219
1220      This method lets users assign non-string values to keys internally.  This
1221      behaviour is unsupported and will cause errors when attempting to write
1222      to a file or get it in non-raw mode.  **Use the mapping protocol API**
1223      which does not allow such assignments to take place.
1224
1225
1226Exceptions
1227----------
1228
1229.. exception:: Error
1230
1231   Base class for all other :mod:`configparser` exceptions.
1232
1233
1234.. exception:: NoSectionError
1235
1236   Exception raised when a specified section is not found.
1237
1238
1239.. exception:: DuplicateSectionError
1240
1241   Exception raised if :meth:`add_section` is called with the name of a section
1242   that is already present or in strict parsers when a section if found more
1243   than once in a single input file, string or dictionary.
1244
1245   .. versionadded:: 3.2
1246      Optional ``source`` and ``lineno`` attributes and arguments to
1247      :meth:`__init__` were added.
1248
1249
1250.. exception:: DuplicateOptionError
1251
1252   Exception raised by strict parsers if a single option appears twice during
1253   reading from a single file, string or dictionary. This catches misspellings
1254   and case sensitivity-related errors, e.g. a dictionary may have two keys
1255   representing the same case-insensitive configuration key.
1256
1257
1258.. exception:: NoOptionError
1259
1260   Exception raised when a specified option is not found in the specified
1261   section.
1262
1263
1264.. exception:: InterpolationError
1265
1266   Base class for exceptions raised when problems occur performing string
1267   interpolation.
1268
1269
1270.. exception:: InterpolationDepthError
1271
1272   Exception raised when string interpolation cannot be completed because the
1273   number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`.  Subclass of
1274   :exc:`InterpolationError`.
1275
1276
1277.. exception:: InterpolationMissingOptionError
1278
1279   Exception raised when an option referenced from a value does not exist.
1280   Subclass of :exc:`InterpolationError`.
1281
1282
1283.. exception:: InterpolationSyntaxError
1284
1285   Exception raised when the source text into which substitutions are made does
1286   not conform to the required syntax.  Subclass of :exc:`InterpolationError`.
1287
1288
1289.. exception:: MissingSectionHeaderError
1290
1291   Exception raised when attempting to parse a file which has no section
1292   headers.
1293
1294
1295.. exception:: ParsingError
1296
1297   Exception raised when errors occur attempting to parse a file.
1298
1299   .. versionchanged:: 3.2
1300      The ``filename`` attribute and :meth:`__init__` argument were renamed to
1301      ``source`` for consistency.
1302
1303
1304.. rubric:: Footnotes
1305
1306.. [1] Config parsers allow for heavy customization.  If you are interested in
1307       changing the behaviour outlined by the footnote reference, consult the
1308       `Customizing Parser Behaviour`_ section.
1309