• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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      [Escape]
317      gain: 80%%  # use a %% to escape the % sign (% is the only character that needs to be escaped)
318
319   In the example above, :class:`ConfigParser` with *interpolation* set to
320   ``BasicInterpolation()`` would resolve ``%(home_dir)s`` to the value of
321   ``home_dir`` (``/Users`` in this case).  ``%(my_dir)s`` in effect would
322   resolve to ``/Users/lumberjack``.  All interpolations are done on demand so
323   keys used in the chain of references do not have to be specified in any
324   specific order in the configuration file.
325
326   With ``interpolation`` set to ``None``, the parser would simply return
327   ``%(my_dir)s/Pictures`` as the value of ``my_pictures`` and
328   ``%(home_dir)s/lumberjack`` as the value of ``my_dir``.
329
330.. index:: single: $ (dollar); interpolation in configuration files
331
332.. class:: ExtendedInterpolation()
333
334   An alternative handler for interpolation which implements a more advanced
335   syntax, used for instance in ``zc.buildout``.  Extended interpolation is
336   using ``${section:option}`` to denote a value from a foreign section.
337   Interpolation can span multiple levels.  For convenience, if the
338   ``section:`` part is omitted, interpolation defaults to the current section
339   (and possibly the default values from the special section).
340
341   For example, the configuration specified above with basic interpolation,
342   would look like this with extended interpolation:
343
344   .. code-block:: ini
345
346      [Paths]
347      home_dir: /Users
348      my_dir: ${home_dir}/lumberjack
349      my_pictures: ${my_dir}/Pictures
350
351      [Escape]
352      cost: $$80  # use a $$ to escape the $ sign ($ is the only character that needs to be escaped)
353
354   Values from other sections can be fetched as well:
355
356   .. code-block:: ini
357
358      [Common]
359      home_dir: /Users
360      library_dir: /Library
361      system_dir: /System
362      macports_dir: /opt/local
363
364      [Frameworks]
365      Python: 3.2
366      path: ${Common:system_dir}/Library/Frameworks/
367
368      [Arthur]
369      nickname: Two Sheds
370      last_name: Jackson
371      my_dir: ${Common:home_dir}/twosheds
372      my_pictures: ${my_dir}/Pictures
373      python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python}
374
375Mapping Protocol Access
376-----------------------
377
378.. versionadded:: 3.2
379
380Mapping protocol access is a generic name for functionality that enables using
381custom objects as if they were dictionaries.  In case of :mod:`configparser`,
382the mapping interface implementation is using the
383``parser['section']['option']`` notation.
384
385``parser['section']`` in particular returns a proxy for the section's data in
386the parser.  This means that the values are not copied but they are taken from
387the original parser on demand.  What's even more important is that when values
388are changed on a section proxy, they are actually mutated in the original
389parser.
390
391:mod:`configparser` objects behave as close to actual dictionaries as possible.
392The mapping interface is complete and adheres to the
393:class:`~collections.abc.MutableMapping` ABC.
394However, there are a few differences that should be taken into account:
395
396* By default, all keys in sections are accessible in a case-insensitive manner
397  [1]_.  E.g. ``for option in parser["section"]`` yields only ``optionxform``'ed
398  option key names.  This means lowercased keys by default.  At the same time,
399  for a section that holds the key ``'a'``, both expressions return ``True``::
400
401     "a" in parser["section"]
402     "A" in parser["section"]
403
404* All sections include ``DEFAULTSECT`` values as well which means that
405  ``.clear()`` on a section may not leave the section visibly empty.  This is
406  because default values cannot be deleted from the section (because technically
407  they are not there).  If they are overridden in the section, deleting causes
408  the default value to be visible again.  Trying to delete a default value
409  causes a :exc:`KeyError`.
410
411* ``DEFAULTSECT`` cannot be removed from the parser:
412
413  * trying to delete it raises :exc:`ValueError`,
414
415  * ``parser.clear()`` leaves it intact,
416
417  * ``parser.popitem()`` never returns it.
418
419* ``parser.get(section, option, **kwargs)`` - the second argument is **not**
420  a fallback value.  Note however that the section-level ``get()`` methods are
421  compatible both with the mapping protocol and the classic configparser API.
422
423* ``parser.items()`` is compatible with the mapping protocol (returns a list of
424  *section_name*, *section_proxy* pairs including the DEFAULTSECT).  However,
425  this method can also be invoked with arguments: ``parser.items(section, raw,
426  vars)``.  The latter call returns a list of *option*, *value* pairs for
427  a specified ``section``, with all interpolations expanded (unless
428  ``raw=True`` is provided).
429
430The mapping protocol is implemented on top of the existing legacy API so that
431subclasses overriding the original interface still should have mappings working
432as expected.
433
434
435Customizing Parser Behaviour
436----------------------------
437
438There are nearly as many INI format variants as there are applications using it.
439:mod:`configparser` goes a long way to provide support for the largest sensible
440set of INI styles available.  The default functionality is mainly dictated by
441historical background and it's very likely that you will want to customize some
442of the features.
443
444The most common way to change the way a specific config parser works is to use
445the :meth:`__init__` options:
446
447* *defaults*, default value: ``None``
448
449  This option accepts a dictionary of key-value pairs which will be initially
450  put in the ``DEFAULT`` section.  This makes for an elegant way to support
451  concise configuration files that don't specify values which are the same as
452  the documented default.
453
454  Hint: if you want to specify default values for a specific section, use
455  :meth:`read_dict` before you read the actual file.
456
457* *dict_type*, default value: :class:`dict`
458
459  This option has a major impact on how the mapping protocol will behave and how
460  the written configuration files look.  With the standard dictionary, every
461  section is stored in the order they were added to the parser.  Same goes for
462  options within sections.
463
464  An alternative dictionary type can be used for example to sort sections and
465  options on write-back.
466
467  Please note: there are ways to add a set of key-value pairs in a single
468  operation.  When you use a regular dictionary in those operations, the order
469  of the keys will be ordered.  For example:
470
471  .. doctest::
472
473     >>> parser = configparser.ConfigParser()
474     >>> parser.read_dict({'section1': {'key1': 'value1',
475     ...                                'key2': 'value2',
476     ...                                'key3': 'value3'},
477     ...                   'section2': {'keyA': 'valueA',
478     ...                                'keyB': 'valueB',
479     ...                                'keyC': 'valueC'},
480     ...                   'section3': {'foo': 'x',
481     ...                                'bar': 'y',
482     ...                                'baz': 'z'}
483     ... })
484     >>> parser.sections()
485     ['section1', 'section2', 'section3']
486     >>> [option for option in parser['section3']]
487     ['foo', 'bar', 'baz']
488
489* *allow_no_value*, default value: ``False``
490
491  Some configuration files are known to include settings without values, but
492  which otherwise conform to the syntax supported by :mod:`configparser`.  The
493  *allow_no_value* parameter to the constructor can be used to
494  indicate that such values should be accepted:
495
496  .. doctest::
497
498     >>> import configparser
499
500     >>> sample_config = """
501     ... [mysqld]
502     ...   user = mysql
503     ...   pid-file = /var/run/mysqld/mysqld.pid
504     ...   skip-external-locking
505     ...   old_passwords = 1
506     ...   skip-bdb
507     ...   # we don't need ACID today
508     ...   skip-innodb
509     ... """
510     >>> config = configparser.ConfigParser(allow_no_value=True)
511     >>> config.read_string(sample_config)
512
513     >>> # Settings with values are treated as before:
514     >>> config["mysqld"]["user"]
515     'mysql'
516
517     >>> # Settings without values provide None:
518     >>> config["mysqld"]["skip-bdb"]
519
520     >>> # Settings which aren't specified still raise an error:
521     >>> config["mysqld"]["does-not-exist"]
522     Traceback (most recent call last):
523       ...
524     KeyError: 'does-not-exist'
525
526* *delimiters*, default value: ``('=', ':')``
527
528  Delimiters are substrings that delimit keys from values within a section.
529  The first occurrence of a delimiting substring on a line is considered
530  a delimiter.  This means values (but not keys) can contain the delimiters.
531
532  See also the *space_around_delimiters* argument to
533  :meth:`ConfigParser.write`.
534
535* *comment_prefixes*, default value: ``('#', ';')``
536
537* *inline_comment_prefixes*, default value: ``None``
538
539  Comment prefixes are strings that indicate the start of a valid comment within
540  a config file. *comment_prefixes* are used only on otherwise empty lines
541  (optionally indented) whereas *inline_comment_prefixes* can be used after
542  every valid value (e.g. section names, options and empty lines as well).  By
543  default inline comments are disabled and ``'#'`` and ``';'`` are used as
544  prefixes for whole line comments.
545
546  .. versionchanged:: 3.2
547     In previous versions of :mod:`configparser` behaviour matched
548     ``comment_prefixes=('#',';')`` and ``inline_comment_prefixes=(';',)``.
549
550  Please note that config parsers don't support escaping of comment prefixes so
551  using *inline_comment_prefixes* may prevent users from specifying option
552  values with characters used as comment prefixes.  When in doubt, avoid
553  setting *inline_comment_prefixes*.  In any circumstances, the only way of
554  storing comment prefix characters at the beginning of a line in multiline
555  values is to interpolate the prefix, for example::
556
557    >>> from configparser import ConfigParser, ExtendedInterpolation
558    >>> parser = ConfigParser(interpolation=ExtendedInterpolation())
559    >>> # the default BasicInterpolation could be used as well
560    >>> parser.read_string("""
561    ... [DEFAULT]
562    ... hash = #
563    ...
564    ... [hashes]
565    ... shebang =
566    ...   ${hash}!/usr/bin/env python
567    ...   ${hash} -*- coding: utf-8 -*-
568    ...
569    ... extensions =
570    ...   enabled_extension
571    ...   another_extension
572    ...   #disabled_by_comment
573    ...   yet_another_extension
574    ...
575    ... interpolation not necessary = if # is not at line start
576    ... even in multiline values = line #1
577    ...   line #2
578    ...   line #3
579    ... """)
580    >>> print(parser['hashes']['shebang'])
581    <BLANKLINE>
582    #!/usr/bin/env python
583    # -*- coding: utf-8 -*-
584    >>> print(parser['hashes']['extensions'])
585    <BLANKLINE>
586    enabled_extension
587    another_extension
588    yet_another_extension
589    >>> print(parser['hashes']['interpolation not necessary'])
590    if # is not at line start
591    >>> print(parser['hashes']['even in multiline values'])
592    line #1
593    line #2
594    line #3
595
596* *strict*, default value: ``True``
597
598  When set to ``True``, the parser will not allow for any section or option
599  duplicates while reading from a single source (using :meth:`read_file`,
600  :meth:`read_string` or :meth:`read_dict`).  It is recommended to use strict
601  parsers in new applications.
602
603  .. versionchanged:: 3.2
604     In previous versions of :mod:`configparser` behaviour matched
605     ``strict=False``.
606
607* *empty_lines_in_values*, default value: ``True``
608
609  In config parsers, values can span multiple lines as long as they are
610  indented more than the key that holds them.  By default parsers also let
611  empty lines to be parts of values.  At the same time, keys can be arbitrarily
612  indented themselves to improve readability.  In consequence, when
613  configuration files get big and complex, it is easy for the user to lose
614  track of the file structure.  Take for instance:
615
616  .. code-block:: ini
617
618     [Section]
619     key = multiline
620       value with a gotcha
621
622      this = is still a part of the multiline value of 'key'
623
624  This can be especially problematic for the user to see if she's using a
625  proportional font to edit the file.  That is why when your application does
626  not need values with empty lines, you should consider disallowing them.  This
627  will make empty lines split keys every time.  In the example above, it would
628  produce two keys, ``key`` and ``this``.
629
630* *default_section*, default value: ``configparser.DEFAULTSECT`` (that is:
631  ``"DEFAULT"``)
632
633  The convention of allowing a special section of default values for other
634  sections or interpolation purposes is a powerful concept of this library,
635  letting users create complex declarative configurations.  This section is
636  normally called ``"DEFAULT"`` but this can be customized to point to any
637  other valid section name.  Some typical values include: ``"general"`` or
638  ``"common"``.  The name provided is used for recognizing default sections
639  when reading from any source and is used when writing configuration back to
640  a file.  Its current value can be retrieved using the
641  ``parser_instance.default_section`` attribute and may be modified at runtime
642  (i.e. to convert files from one format to another).
643
644* *interpolation*, default value: ``configparser.BasicInterpolation``
645
646  Interpolation behaviour may be customized by providing a custom handler
647  through the *interpolation* argument. ``None`` can be used to turn off
648  interpolation completely, ``ExtendedInterpolation()`` provides a more
649  advanced variant inspired by ``zc.buildout``.  More on the subject in the
650  `dedicated documentation section <#interpolation-of-values>`_.
651  :class:`RawConfigParser` has a default value of ``None``.
652
653* *converters*, default value: not set
654
655  Config parsers provide option value getters that perform type conversion.  By
656  default :meth:`~ConfigParser.getint`, :meth:`~ConfigParser.getfloat`, and
657  :meth:`~ConfigParser.getboolean` are implemented.  Should other getters be
658  desirable, users may define them in a subclass or pass a dictionary where each
659  key is a name of the converter and each value is a callable implementing said
660  conversion.  For instance, passing ``{'decimal': decimal.Decimal}`` would add
661  :meth:`getdecimal` on both the parser object and all section proxies.  In
662  other words, it will be possible to write both
663  ``parser_instance.getdecimal('section', 'key', fallback=0)`` and
664  ``parser_instance['section'].getdecimal('key', 0)``.
665
666  If the converter needs to access the state of the parser, it can be
667  implemented as a method on a config parser subclass.  If the name of this
668  method starts with ``get``, it will be available on all section proxies, in
669  the dict-compatible form (see the ``getdecimal()`` example above).
670
671More advanced customization may be achieved by overriding default values of
672these parser attributes.  The defaults are defined on the classes, so they may
673be overridden by subclasses or by attribute assignment.
674
675.. attribute:: ConfigParser.BOOLEAN_STATES
676
677  By default when using :meth:`~ConfigParser.getboolean`, config parsers
678  consider the following values ``True``: ``'1'``, ``'yes'``, ``'true'``,
679  ``'on'`` and the following values ``False``: ``'0'``, ``'no'``, ``'false'``,
680  ``'off'``.  You can override this by specifying a custom dictionary of strings
681  and their Boolean outcomes. For example:
682
683  .. doctest::
684
685     >>> custom = configparser.ConfigParser()
686     >>> custom['section1'] = {'funky': 'nope'}
687     >>> custom['section1'].getboolean('funky')
688     Traceback (most recent call last):
689     ...
690     ValueError: Not a boolean: nope
691     >>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False}
692     >>> custom['section1'].getboolean('funky')
693     False
694
695  Other typical Boolean pairs include ``accept``/``reject`` or
696  ``enabled``/``disabled``.
697
698.. method:: ConfigParser.optionxform(option)
699
700  This method transforms option names on every read, get, or set
701  operation.  The default converts the name to lowercase.  This also
702  means that when a configuration file gets written, all keys will be
703  lowercase.  Override this method if that's unsuitable.
704  For example:
705
706  .. doctest::
707
708     >>> config = """
709     ... [Section1]
710     ... Key = Value
711     ...
712     ... [Section2]
713     ... AnotherKey = Value
714     ... """
715     >>> typical = configparser.ConfigParser()
716     >>> typical.read_string(config)
717     >>> list(typical['Section1'].keys())
718     ['key']
719     >>> list(typical['Section2'].keys())
720     ['anotherkey']
721     >>> custom = configparser.RawConfigParser()
722     >>> custom.optionxform = lambda option: option
723     >>> custom.read_string(config)
724     >>> list(custom['Section1'].keys())
725     ['Key']
726     >>> list(custom['Section2'].keys())
727     ['AnotherKey']
728
729  .. note::
730     The optionxform function transforms option names to a canonical form.
731     This should be an idempotent function: if the name is already in
732     canonical form, it should be returned unchanged.
733
734
735.. attribute:: ConfigParser.SECTCRE
736
737  A compiled regular expression used to parse section headers.  The default
738  matches ``[section]`` to the name ``"section"``.  Whitespace is considered
739  part of the section name, thus ``[  larch  ]`` will be read as a section of
740  name ``"  larch  "``.  Override this attribute if that's unsuitable.  For
741  example:
742
743  .. doctest::
744
745     >>> import re
746     >>> config = """
747     ... [Section 1]
748     ... option = value
749     ...
750     ... [  Section 2  ]
751     ... another = val
752     ... """
753     >>> typical = configparser.ConfigParser()
754     >>> typical.read_string(config)
755     >>> typical.sections()
756     ['Section 1', '  Section 2  ']
757     >>> custom = configparser.ConfigParser()
758     >>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
759     >>> custom.read_string(config)
760     >>> custom.sections()
761     ['Section 1', 'Section 2']
762
763  .. note::
764
765     While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing
766     option lines, it's not recommended to override it because that would
767     interfere with constructor options *allow_no_value* and *delimiters*.
768
769
770Legacy API Examples
771-------------------
772
773Mainly because of backwards compatibility concerns, :mod:`configparser`
774provides also a legacy API with explicit ``get``/``set`` methods.  While there
775are valid use cases for the methods outlined below, mapping protocol access is
776preferred for new projects.  The legacy API is at times more advanced,
777low-level and downright counterintuitive.
778
779An example of writing to a configuration file::
780
781   import configparser
782
783   config = configparser.RawConfigParser()
784
785   # Please note that using RawConfigParser's set functions, you can assign
786   # non-string values to keys internally, but will receive an error when
787   # attempting to write to a file or when you get it in non-raw mode. Setting
788   # values using the mapping protocol or ConfigParser's set() does not allow
789   # such assignments to take place.
790   config.add_section('Section1')
791   config.set('Section1', 'an_int', '15')
792   config.set('Section1', 'a_bool', 'true')
793   config.set('Section1', 'a_float', '3.1415')
794   config.set('Section1', 'baz', 'fun')
795   config.set('Section1', 'bar', 'Python')
796   config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
797
798   # Writing our configuration file to 'example.cfg'
799   with open('example.cfg', 'w') as configfile:
800       config.write(configfile)
801
802An example of reading the configuration file again::
803
804   import configparser
805
806   config = configparser.RawConfigParser()
807   config.read('example.cfg')
808
809   # getfloat() raises an exception if the value is not a float
810   # getint() and getboolean() also do this for their respective types
811   a_float = config.getfloat('Section1', 'a_float')
812   an_int = config.getint('Section1', 'an_int')
813   print(a_float + an_int)
814
815   # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
816   # This is because we are using a RawConfigParser().
817   if config.getboolean('Section1', 'a_bool'):
818       print(config.get('Section1', 'foo'))
819
820To get interpolation, use :class:`ConfigParser`::
821
822   import configparser
823
824   cfg = configparser.ConfigParser()
825   cfg.read('example.cfg')
826
827   # Set the optional *raw* argument of get() to True if you wish to disable
828   # interpolation in a single get operation.
829   print(cfg.get('Section1', 'foo', raw=False))  # -> "Python is fun!"
830   print(cfg.get('Section1', 'foo', raw=True))   # -> "%(bar)s is %(baz)s!"
831
832   # The optional *vars* argument is a dict with members that will take
833   # precedence in interpolation.
834   print(cfg.get('Section1', 'foo', vars={'bar': 'Documentation',
835                                          'baz': 'evil'}))
836
837   # The optional *fallback* argument can be used to provide a fallback value
838   print(cfg.get('Section1', 'foo'))
839         # -> "Python is fun!"
840
841   print(cfg.get('Section1', 'foo', fallback='Monty is not.'))
842         # -> "Python is fun!"
843
844   print(cfg.get('Section1', 'monster', fallback='No such things as monsters.'))
845         # -> "No such things as monsters."
846
847   # A bare print(cfg.get('Section1', 'monster')) would raise NoOptionError
848   # but we can also use:
849
850   print(cfg.get('Section1', 'monster', fallback=None))
851         # -> None
852
853Default values are available in both types of ConfigParsers.  They are used in
854interpolation if an option used is not defined elsewhere. ::
855
856   import configparser
857
858   # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
859   config = configparser.ConfigParser({'bar': 'Life', 'baz': 'hard'})
860   config.read('example.cfg')
861
862   print(config.get('Section1', 'foo'))     # -> "Python is fun!"
863   config.remove_option('Section1', 'bar')
864   config.remove_option('Section1', 'baz')
865   print(config.get('Section1', 'foo'))     # -> "Life is hard!"
866
867
868.. _configparser-objects:
869
870ConfigParser Objects
871--------------------
872
873.. class:: ConfigParser(defaults=None, dict_type=dict, 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={})
874
875   The main configuration parser.  When *defaults* is given, it is initialized
876   into the dictionary of intrinsic defaults.  When *dict_type* is given, it
877   will be used to create the dictionary objects for the list of sections, for
878   the options within a section, and for the default values.
879
880   When *delimiters* is given, it is used as the set of substrings that
881   divide keys from values.  When *comment_prefixes* is given, it will be used
882   as the set of substrings that prefix comments in otherwise empty lines.
883   Comments can be indented.  When *inline_comment_prefixes* is given, it will
884   be used as the set of substrings that prefix comments in non-empty lines.
885
886   When *strict* is ``True`` (the default), the parser won't allow for
887   any section or option duplicates while reading from a single source (file,
888   string or dictionary), raising :exc:`DuplicateSectionError` or
889   :exc:`DuplicateOptionError`.  When *empty_lines_in_values* is ``False``
890   (default: ``True``), each empty line marks the end of an option.  Otherwise,
891   internal empty lines of a multiline option are kept as part of the value.
892   When *allow_no_value* is ``True`` (default: ``False``), options without
893   values are accepted; the value held for these is ``None`` and they are
894   serialized without the trailing delimiter.
895
896   When *default_section* is given, it specifies the name for the special
897   section holding default values for other sections and interpolation purposes
898   (normally named ``"DEFAULT"``).  This value can be retrieved and changed on
899   runtime using the ``default_section`` instance attribute.
900
901   Interpolation behaviour may be customized by providing a custom handler
902   through the *interpolation* argument. ``None`` can be used to turn off
903   interpolation completely, ``ExtendedInterpolation()`` provides a more
904   advanced variant inspired by ``zc.buildout``.  More on the subject in the
905   `dedicated documentation section <#interpolation-of-values>`_.
906
907   All option names used in interpolation will be passed through the
908   :meth:`optionxform` method just like any other option name reference.  For
909   example, using the default implementation of :meth:`optionxform` (which
910   converts option names to lower case), the values ``foo %(bar)s`` and ``foo
911   %(BAR)s`` are equivalent.
912
913   When *converters* is given, it should be a dictionary where each key
914   represents the name of a type converter and each value is a callable
915   implementing the conversion from string to the desired datatype.  Every
916   converter gets its own corresponding :meth:`get*()` method on the parser
917   object and section proxies.
918
919   .. versionchanged:: 3.1
920      The default *dict_type* is :class:`collections.OrderedDict`.
921
922   .. versionchanged:: 3.2
923      *allow_no_value*, *delimiters*, *comment_prefixes*, *strict*,
924      *empty_lines_in_values*, *default_section* and *interpolation* were
925      added.
926
927   .. versionchanged:: 3.5
928      The *converters* argument was added.
929
930   .. versionchanged:: 3.7
931      The *defaults* argument is read with :meth:`read_dict()`,
932      providing consistent behavior across the parser: non-string
933      keys and values are implicitly converted to strings.
934
935   .. versionchanged:: 3.8
936      The default *dict_type* is :class:`dict`, since it now preserves
937      insertion order.
938
939   .. method:: defaults()
940
941      Return a dictionary containing the instance-wide defaults.
942
943
944   .. method:: sections()
945
946      Return a list of the sections available; the *default section* is not
947      included in the list.
948
949
950   .. method:: add_section(section)
951
952      Add a section named *section* to the instance.  If a section by the given
953      name already exists, :exc:`DuplicateSectionError` is raised.  If the
954      *default section* name is passed, :exc:`ValueError` is raised.  The name
955      of the section must be a string; if not, :exc:`TypeError` is raised.
956
957      .. versionchanged:: 3.2
958         Non-string section names raise :exc:`TypeError`.
959
960
961   .. method:: has_section(section)
962
963      Indicates whether the named *section* is present in the configuration.
964      The *default section* is not acknowledged.
965
966
967   .. method:: options(section)
968
969      Return a list of options available in the specified *section*.
970
971
972   .. method:: has_option(section, option)
973
974      If the given *section* exists, and contains the given *option*, return
975      :const:`True`; otherwise return :const:`False`.  If the specified
976      *section* is :const:`None` or an empty string, DEFAULT is assumed.
977
978
979   .. method:: read(filenames, encoding=None)
980
981      Attempt to read and parse an iterable of filenames, returning a list of
982      filenames which were successfully parsed.
983
984      If *filenames* is a string, a :class:`bytes` object or a
985      :term:`path-like object`, it is treated as
986      a single filename.  If a file named in *filenames* cannot be opened, that
987      file will be ignored.  This is designed so that you can specify an
988      iterable of potential configuration file locations (for example, the
989      current directory, the user's home directory, and some system-wide
990      directory), and all existing configuration files in the iterable will be
991      read.
992
993      If none of the named files exist, the :class:`ConfigParser`
994      instance will contain an empty dataset.  An application which requires
995      initial values to be loaded from a file should load the required file or
996      files using :meth:`read_file` before calling :meth:`read` for any
997      optional files::
998
999         import configparser, os
1000
1001         config = configparser.ConfigParser()
1002         config.read_file(open('defaults.cfg'))
1003         config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')],
1004                     encoding='cp1250')
1005
1006      .. versionadded:: 3.2
1007         The *encoding* parameter.  Previously, all files were read using the
1008         default encoding for :func:`open`.
1009
1010      .. versionadded:: 3.6.1
1011         The *filenames* parameter accepts a :term:`path-like object`.
1012
1013      .. versionadded:: 3.7
1014         The *filenames* parameter accepts a :class:`bytes` object.
1015
1016
1017   .. method:: read_file(f, source=None)
1018
1019      Read and parse configuration data from *f* which must be an iterable
1020      yielding Unicode strings (for example files opened in text mode).
1021
1022      Optional argument *source* specifies the name of the file being read.  If
1023      not given and *f* has a :attr:`name` attribute, that is used for
1024      *source*; the default is ``'<???>'``.
1025
1026      .. versionadded:: 3.2
1027         Replaces :meth:`readfp`.
1028
1029   .. method:: read_string(string, source='<string>')
1030
1031      Parse configuration data from a string.
1032
1033      Optional argument *source* specifies a context-specific name of the
1034      string passed.  If not given, ``'<string>'`` is used.  This should
1035      commonly be a filesystem path or a URL.
1036
1037      .. versionadded:: 3.2
1038
1039
1040   .. method:: read_dict(dictionary, source='<dict>')
1041
1042      Load configuration from any object that provides a dict-like ``items()``
1043      method.  Keys are section names, values are dictionaries with keys and
1044      values that should be present in the section.  If the used dictionary
1045      type preserves order, sections and their keys will be added in order.
1046      Values are automatically converted to strings.
1047
1048      Optional argument *source* specifies a context-specific name of the
1049      dictionary passed.  If not given, ``<dict>`` is used.
1050
1051      This method can be used to copy state between parsers.
1052
1053      .. versionadded:: 3.2
1054
1055
1056   .. method:: get(section, option, *, raw=False, vars=None[, fallback])
1057
1058      Get an *option* value for the named *section*.  If *vars* is provided, it
1059      must be a dictionary.  The *option* is looked up in *vars* (if provided),
1060      *section*, and in *DEFAULTSECT* in that order.  If the key is not found
1061      and *fallback* is provided, it is used as a fallback value.  ``None`` can
1062      be provided as a *fallback* value.
1063
1064      All the ``'%'`` interpolations are expanded in the return values, unless
1065      the *raw* argument is true.  Values for interpolation keys are looked up
1066      in the same manner as the option.
1067
1068      .. versionchanged:: 3.2
1069         Arguments *raw*, *vars* and *fallback* are keyword only to protect
1070         users from trying to use the third argument as the *fallback* fallback
1071         (especially when using the mapping protocol).
1072
1073
1074   .. method:: getint(section, option, *, raw=False, vars=None[, fallback])
1075
1076      A convenience method which coerces the *option* in the specified *section*
1077      to an integer.  See :meth:`get` for explanation of *raw*, *vars* and
1078      *fallback*.
1079
1080
1081   .. method:: getfloat(section, option, *, raw=False, vars=None[, fallback])
1082
1083      A convenience method which coerces the *option* in the specified *section*
1084      to a floating point number.  See :meth:`get` for explanation of *raw*,
1085      *vars* and *fallback*.
1086
1087
1088   .. method:: getboolean(section, option, *, raw=False, vars=None[, fallback])
1089
1090      A convenience method which coerces the *option* in the specified *section*
1091      to a Boolean value.  Note that the accepted values for the option are
1092      ``'1'``, ``'yes'``, ``'true'``, and ``'on'``, which cause this method to
1093      return ``True``, and ``'0'``, ``'no'``, ``'false'``, and ``'off'``, which
1094      cause it to return ``False``.  These string values are checked in a
1095      case-insensitive manner.  Any other value will cause it to raise
1096      :exc:`ValueError`.  See :meth:`get` for explanation of *raw*, *vars* and
1097      *fallback*.
1098
1099
1100   .. method:: items(raw=False, vars=None)
1101               items(section, raw=False, vars=None)
1102
1103      When *section* is not given, return a list of *section_name*,
1104      *section_proxy* pairs, including DEFAULTSECT.
1105
1106      Otherwise, return a list of *name*, *value* pairs for the options in the
1107      given *section*.  Optional arguments have the same meaning as for the
1108      :meth:`get` method.
1109
1110      .. versionchanged:: 3.8
1111         Items present in *vars* no longer appear in the result.  The previous
1112         behaviour mixed actual parser options with variables provided for
1113         interpolation.
1114
1115
1116   .. method:: set(section, option, value)
1117
1118      If the given section exists, set the given option to the specified value;
1119      otherwise raise :exc:`NoSectionError`.  *option* and *value* must be
1120      strings; if not, :exc:`TypeError` is raised.
1121
1122
1123   .. method:: write(fileobject, space_around_delimiters=True)
1124
1125      Write a representation of the configuration to the specified :term:`file
1126      object`, which must be opened in text mode (accepting strings).  This
1127      representation can be parsed by a future :meth:`read` call.  If
1128      *space_around_delimiters* is true, delimiters between
1129      keys and values are surrounded by spaces.
1130
1131
1132   .. method:: remove_option(section, option)
1133
1134      Remove the specified *option* from the specified *section*.  If the
1135      section does not exist, raise :exc:`NoSectionError`.  If the option
1136      existed to be removed, return :const:`True`; otherwise return
1137      :const:`False`.
1138
1139
1140   .. method:: remove_section(section)
1141
1142      Remove the specified *section* from the configuration.  If the section in
1143      fact existed, return ``True``.  Otherwise return ``False``.
1144
1145
1146   .. method:: optionxform(option)
1147
1148      Transforms the option name *option* as found in an input file or as passed
1149      in by client code to the form that should be used in the internal
1150      structures.  The default implementation returns a lower-case version of
1151      *option*; subclasses may override this or client code can set an attribute
1152      of this name on instances to affect this behavior.
1153
1154      You don't need to subclass the parser to use this method, you can also
1155      set it on an instance, to a function that takes a string argument and
1156      returns a string.  Setting it to ``str``, for example, would make option
1157      names case sensitive::
1158
1159         cfgparser = ConfigParser()
1160         cfgparser.optionxform = str
1161
1162      Note that when reading configuration files, whitespace around the option
1163      names is stripped before :meth:`optionxform` is called.
1164
1165
1166   .. method:: readfp(fp, filename=None)
1167
1168      .. deprecated:: 3.2
1169         Use :meth:`read_file` instead.
1170
1171      .. versionchanged:: 3.2
1172         :meth:`readfp` now iterates on *fp* instead of calling ``fp.readline()``.
1173
1174      For existing code calling :meth:`readfp` with arguments which don't
1175      support iteration, the following generator may be used as a wrapper
1176      around the file-like object::
1177
1178         def readline_generator(fp):
1179             line = fp.readline()
1180             while line:
1181                 yield line
1182                 line = fp.readline()
1183
1184      Instead of ``parser.readfp(fp)`` use
1185      ``parser.read_file(readline_generator(fp))``.
1186
1187
1188.. data:: MAX_INTERPOLATION_DEPTH
1189
1190   The maximum depth for recursive interpolation for :meth:`get` when the *raw*
1191   parameter is false.  This is relevant only when the default *interpolation*
1192   is used.
1193
1194
1195.. _rawconfigparser-objects:
1196
1197RawConfigParser Objects
1198-----------------------
1199
1200.. class:: RawConfigParser(defaults=None, dict_type=dict, \
1201                           allow_no_value=False, *, delimiters=('=', ':'), \
1202                           comment_prefixes=('#', ';'), \
1203                           inline_comment_prefixes=None, strict=True, \
1204                           empty_lines_in_values=True, \
1205                           default_section=configparser.DEFAULTSECT[, \
1206                           interpolation])
1207
1208   Legacy variant of the :class:`ConfigParser`.  It has interpolation
1209   disabled by default and allows for non-string section names, option
1210   names, and values via its unsafe ``add_section`` and ``set`` methods,
1211   as well as the legacy ``defaults=`` keyword argument handling.
1212
1213   .. versionchanged:: 3.8
1214      The default *dict_type* is :class:`dict`, since it now preserves
1215      insertion order.
1216
1217   .. note::
1218      Consider using :class:`ConfigParser` instead which checks types of
1219      the values to be stored internally.  If you don't want interpolation, you
1220      can use ``ConfigParser(interpolation=None)``.
1221
1222
1223   .. method:: add_section(section)
1224
1225      Add a section named *section* to the instance.  If a section by the given
1226      name already exists, :exc:`DuplicateSectionError` is raised.  If the
1227      *default section* name is passed, :exc:`ValueError` is raised.
1228
1229      Type of *section* is not checked which lets users create non-string named
1230      sections.  This behaviour is unsupported and may cause internal errors.
1231
1232
1233   .. method:: set(section, option, value)
1234
1235      If the given section exists, set the given option to the specified value;
1236      otherwise raise :exc:`NoSectionError`.  While it is possible to use
1237      :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters
1238      set to true) for *internal* storage of non-string values, full
1239      functionality (including interpolation and output to files) can only be
1240      achieved using string values.
1241
1242      This method lets users assign non-string values to keys internally.  This
1243      behaviour is unsupported and will cause errors when attempting to write
1244      to a file or get it in non-raw mode.  **Use the mapping protocol API**
1245      which does not allow such assignments to take place.
1246
1247
1248Exceptions
1249----------
1250
1251.. exception:: Error
1252
1253   Base class for all other :mod:`configparser` exceptions.
1254
1255
1256.. exception:: NoSectionError
1257
1258   Exception raised when a specified section is not found.
1259
1260
1261.. exception:: DuplicateSectionError
1262
1263   Exception raised if :meth:`add_section` is called with the name of a section
1264   that is already present or in strict parsers when a section if found more
1265   than once in a single input file, string or dictionary.
1266
1267   .. versionadded:: 3.2
1268      Optional ``source`` and ``lineno`` attributes and arguments to
1269      :meth:`__init__` were added.
1270
1271
1272.. exception:: DuplicateOptionError
1273
1274   Exception raised by strict parsers if a single option appears twice during
1275   reading from a single file, string or dictionary. This catches misspellings
1276   and case sensitivity-related errors, e.g. a dictionary may have two keys
1277   representing the same case-insensitive configuration key.
1278
1279
1280.. exception:: NoOptionError
1281
1282   Exception raised when a specified option is not found in the specified
1283   section.
1284
1285
1286.. exception:: InterpolationError
1287
1288   Base class for exceptions raised when problems occur performing string
1289   interpolation.
1290
1291
1292.. exception:: InterpolationDepthError
1293
1294   Exception raised when string interpolation cannot be completed because the
1295   number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`.  Subclass of
1296   :exc:`InterpolationError`.
1297
1298
1299.. exception:: InterpolationMissingOptionError
1300
1301   Exception raised when an option referenced from a value does not exist.
1302   Subclass of :exc:`InterpolationError`.
1303
1304
1305.. exception:: InterpolationSyntaxError
1306
1307   Exception raised when the source text into which substitutions are made does
1308   not conform to the required syntax.  Subclass of :exc:`InterpolationError`.
1309
1310
1311.. exception:: MissingSectionHeaderError
1312
1313   Exception raised when attempting to parse a file which has no section
1314   headers.
1315
1316
1317.. exception:: ParsingError
1318
1319   Exception raised when errors occur attempting to parse a file.
1320
1321   .. versionchanged:: 3.2
1322      The ``filename`` attribute and :meth:`__init__` argument were renamed to
1323      ``source`` for consistency.
1324
1325
1326.. rubric:: Footnotes
1327
1328.. [1] Config parsers allow for heavy customization.  If you are interested in
1329       changing the behaviour outlined by the footnote reference, consult the
1330       `Customizing Parser Behaviour`_ section.
1331