configparser.rst 45.9 KB
Newer Older
1
:mod:`configparser` --- Configuration file parser
2 3
=================================================

4
.. module:: configparser
5
   :synopsis: Configuration file parser.
6

7 8 9
.. moduleauthor:: Ken Manheimer <klm@zope.com>
.. moduleauthor:: Barry Warsaw <bwarsaw@python.org>
.. 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 15 16 17 18 19

.. index::
   pair: .ini; file
   pair: configuration; file
   single: ini file
   single: Windows ini file

20 21 22 23
This module provides the :class:`ConfigParser` class which implements a basic
configuration language which provides a structure similar to what's found in
Microsoft Windows INI files.  You can use this to write Python programs which
can be customized by end users easily.
24

25
.. note::
26

27 28
   This library does *not* interpret or write the value-type prefixes used in
   the Windows Registry extended version of INI syntax.
29

30 31 32 33 34 35
.. seealso::

   Module :mod:`shlex`
      Support for a creating Unix shell-like mini-languages which can be used
      as an alternate format for application configuration files.

36 37 38 39
   Module :mod:`json`
      The json module implements a subset of JavaScript syntax which can also
      be used for this purpose.

40

41 42 43
Quick Start
-----------

44
Let's take a very basic configuration file that looks like this:
45

46
.. code-block:: ini
47

48
   [DEFAULT]
49 50 51 52
   ServerAliveInterval = 45
   Compression = yes
   CompressionLevel = 9
   ForwardX11 = yes
53

54
   [bitbucket.org]
55
   User = hg
56

57
   [topsecret.server.com]
58 59
   Port = 50022
   ForwardX11 = no
60

Fred Drake's avatar
Fred Drake committed
61 62
The structure of INI files is described `in the following section
<#supported-ini-file-structure>`_.  Essentially, the file
63
consists of sections, each of which contains keys with values.
64
:mod:`configparser` classes can read and write such files.  Let's start by
65 66 67 68
creating the above configuration file programatically.

.. doctest::

69
   >>> import configparser
70
   >>> config = configparser.ConfigParser()
71 72 73 74 75 76 77 78 79 80 81 82 83 84
   >>> config['DEFAULT'] = {'ServerAliveInterval': '45',
   ...                      'Compression': 'yes',
   ...                      'CompressionLevel': '9'}
   >>> config['bitbucket.org'] = {}
   >>> config['bitbucket.org']['User'] = 'hg'
   >>> config['topsecret.server.com'] = {}
   >>> topsecret = config['topsecret.server.com']
   >>> topsecret['Port'] = '50022'     # mutates the parser
   >>> topsecret['ForwardX11'] = 'no'  # same here
   >>> config['DEFAULT']['ForwardX11'] = 'yes'
   >>> with open('example.ini', 'w') as configfile:
   ...   config.write(configfile)
   ...

Fred Drake's avatar
Fred Drake committed
85 86 87
As you can see, we can treat a config parser much like a dictionary.
There are differences, `outlined later <#mapping-protocol-access>`_, but
the behavior is very close to what you would expect from a dictionary.
88

Fred Drake's avatar
Fred Drake committed
89 90
Now that we have created and saved a configuration file, let's read it
back and explore the data it holds.
91 92 93

.. doctest::

94
   >>> import configparser
95
   >>> config = configparser.ConfigParser()
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
   >>> config.sections()
   []
   >>> config.read('example.ini')
   ['example.ini']
   >>> config.sections()
   ['bitbucket.org', 'topsecret.server.com']
   >>> 'bitbucket.org' in config
   True
   >>> 'bytebong.com' in config
   False
   >>> config['bitbucket.org']['User']
   'hg'
   >>> config['DEFAULT']['Compression']
   'yes'
   >>> topsecret = config['topsecret.server.com']
   >>> topsecret['ForwardX11']
   'no'
   >>> topsecret['Port']
   '50022'
   >>> for key in config['bitbucket.org']: print(key)
   ...
   user
   compressionlevel
   serveraliveinterval
   compression
   forwardx11
   >>> config['bitbucket.org']['ForwardX11']
   'yes'

Fred Drake's avatar
Fred Drake committed
125
As we can see above, the API is pretty straightforward.  The only bit of magic
126
involves the ``DEFAULT`` section which provides default values for all other
Fred Drake's avatar
Fred Drake committed
127 128
sections [1]_.  Note also that keys in sections are
case-insensitive and stored in lowercase [1]_.
129

130 131 132 133 134

Supported Datatypes
-------------------

Config parsers do not guess datatypes of values in configuration files, always
135 136
storing them internally as strings.  This means that if you need other
datatypes, you should convert on your own:
137 138 139

.. doctest::

140 141 142 143
   >>> int(topsecret['Port'])
   50022
   >>> float(topsecret['CompressionLevel'])
   9.0
144

Fred Drake's avatar
Fred Drake committed
145 146 147 148 149 150
Extracting Boolean values is not that simple, though.  Passing the value
to ``bool()`` would do no good since ``bool('False')`` is still
``True``.  This is why config parsers also provide :meth:`getboolean`.
This method is case-insensitive and recognizes Boolean values from
``'yes'``/``'no'``, ``'on'``/``'off'`` and ``'1'``/``'0'`` [1]_.
For example:
151 152 153

.. doctest::

154 155 156 157 158 159
   >>> topsecret.getboolean('ForwardX11')
   False
   >>> config['bitbucket.org'].getboolean('ForwardX11')
   True
   >>> config.getboolean('bitbucket.org', 'Compression')
   True
160 161

Apart from :meth:`getboolean`, config parsers also provide equivalent
Fred Drake's avatar
Fred Drake committed
162 163 164
:meth:`getint` and :meth:`getfloat` methods, but these are far less
useful since conversion using :func:`int` and :func:`float` is
sufficient for these types.
165

166

167 168 169
Fallback Values
---------------

Fred Drake's avatar
Fred Drake committed
170
As with a dictionary, you can use a section's :meth:`get` method to
171 172 173 174
provide fallback values:

.. doctest::

175 176 177 178 179 180 181
   >>> topsecret.get('Port')
   '50022'
   >>> topsecret.get('CompressionLevel')
   '9'
   >>> topsecret.get('Cipher')
   >>> topsecret.get('Cipher', '3des-cbc')
   '3des-cbc'
182

Fred Drake's avatar
Fred Drake committed
183 184 185 186 187
Please note that default values have precedence over fallback values.
For instance, in our example the ``'CompressionLevel'`` key was
specified only in the ``'DEFAULT'`` section.  If we try to get it from
the section ``'topsecret.server.com'``, we will always get the default,
even if we specify a fallback:
188 189 190

.. doctest::

191 192
   >>> topsecret.get('CompressionLevel', '3')
   '9'
193 194 195

One more thing to be aware of is that the parser-level :meth:`get` method
provides a custom, more complex interface, maintained for backwards
Fred Drake's avatar
Fred Drake committed
196 197
compatibility.  When using this method, a fallback value can be provided via
the ``fallback`` keyword-only argument:
198 199 200

.. doctest::

201 202 203
   >>> config.get('bitbucket.org', 'monster',
   ...            fallback='No such things as monsters')
   'No such things as monsters'
204 205 206 207 208 209

The same ``fallback`` argument can be used with the :meth:`getint`,
:meth:`getfloat` and :meth:`getboolean` methods, for example:

.. doctest::

210 211 212 213 214 215 216 217
   >>> 'BatchMode' in topsecret
   False
   >>> topsecret.getboolean('BatchMode', fallback=True)
   True
   >>> config['DEFAULT']['BatchMode'] = 'no'
   >>> topsecret.getboolean('BatchMode', fallback=True)
   False

218 219 220 221

Supported INI File Structure
----------------------------

222
A configuration file consists of sections, each led by a ``[section]`` header,
Fred Drake's avatar
Fred Drake committed
223
followed by key/value entries separated by a specific string (``=`` or ``:`` by
224
default [1]_).  By default, section names are case sensitive but keys are not
Fred Drake's avatar
Fred Drake committed
225
[1]_.  Leading and trailing whitespace is removed from keys and values.
226 227 228 229
Values can be omitted, in which case the key/value delimiter may also be left
out.  Values can also span multiple lines, as long as they are indented deeper
than the first line of the value.  Depending on the parser's mode, blank lines
may be treated as parts of multiline values or ignored.
230

Fred Drake's avatar
Fred Drake committed
231 232
Configuration files may include comments, prefixed by specific
characters (``#`` and ``;`` by default [1]_).  Comments may appear on
233
their own on an otherwise empty line, possibly indented. [1]_
234

235
For example:
236

237
.. code-block:: ini
238

239
   [Simple Values]
240 241 242 243 244
   key=value
   spaces in keys=allowed
   spaces in values=allowed as well
   spaces around the delimiter = obviously
   you can also use : to delimit keys from values
245 246 247 248 249 250 251

   [All Values Are Strings]
   values like this: 1000000
   or this: 3.14159265359
   are they treated as numbers? : no
   integers, floats and booleans are held as: strings
   can use the API to get converted values directly: true
252 253 254

   [Multiline Values]
   chorus: I'm a lumberjack, and I'm okay
255
       I sleep all night and I work all day
256 257 258 259 260

   [No Values]
   key_without_value
   empty string value here =

261 262 263 264 265 266 267 268
   [You can use comments]
   # like this
   ; or this

   # By default only in an empty line.
   # Inline comments can be harmful because they prevent users
   # from using the delimiting characters as parts of values.
   # That being said, this can be customized.
269

270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
       [Sections Can Be Indented]
           can_values_be_as_well = True
           does_that_mean_anything_special = False
           purpose = formatting for readability
           multiline_values = are
               handled just fine as
               long as they are indented
               deeper than the first line
               of a value
           # Did I mention we can indent comments, too?


Interpolation of values
-----------------------

285
On top of the core functionality, :class:`ConfigParser` supports
286 287 288 289 290
interpolation.  This means values can be preprocessed before returning them
from ``get()`` calls.

.. class:: BasicInterpolation()

291
   The default implementation used by :class:`ConfigParser`.  It enables
292 293 294 295 296 297 298 299 300 301 302 303 304 305
   values to contain format strings which refer to other values in the same
   section, or values in the special default section [1]_.  Additional default
   values can be provided on initialization.

   For example:

   .. code-block:: ini

      [Paths]
      home_dir: /Users
      my_dir: %(home_dir)s/lumberjack
      my_pictures: %(my_dir)s/Pictures


306
   In the example above, :class:`ConfigParser` with *interpolation* set to
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
   ``BasicInterpolation()`` would resolve ``%(home_dir)s`` to the value of
   ``home_dir`` (``/Users`` in this case).  ``%(my_dir)s`` in effect would
   resolve to ``/Users/lumberjack``.  All interpolations are done on demand so
   keys used in the chain of references do not have to be specified in any
   specific order in the configuration file.

   With ``interpolation`` set to ``None``, the parser would simply return
   ``%(my_dir)s/Pictures`` as the value of ``my_pictures`` and
   ``%(home_dir)s/lumberjack`` as the value of ``my_dir``.

.. class:: ExtendedInterpolation()

   An alternative handler for interpolation which implements a more advanced
   syntax, used for instance in ``zc.buildout``. Extended interpolation is
   using ``${section:option}`` to denote a value from a foreign section.
   Interpolation can span multiple levels. For convenience, if the ``section:``
   part is omitted, interpolation defaults to the current section (and possibly
   the default values from the special section).

   For example, the configuration specified above with basic interpolation,
   would look like this with extended interpolation:

   .. code-block:: ini

      [Paths]
      home_dir: /Users
      my_dir: ${home_dir}/lumberjack
      my_pictures: ${my_dir}/Pictures

   Values from other sections can be fetched as well:
337

338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
   .. code-block:: ini

      [Common]
      home_dir: /Users
      library_dir: /Library
      system_dir: /System
      macports_dir: /opt/local

      [Frameworks]
      Python: 3.2
      path: ${Common:system_dir}/Library/Frameworks/

      [Arthur]
      nickname: Two Sheds
      last_name: Jackson
      my_dir: ${Common:home_dir}/twosheds
      my_pictures: ${my_dir}/Pictures
      python_dir: ${Frameworks:path}/Python/Versions/${Frameworks:Python}
356

357 358
Mapping Protocol Access
-----------------------
359

360 361 362
.. versionadded:: 3.2

Mapping protocol access is a generic name for functionality that enables using
363
custom objects as if they were dictionaries.  In case of :mod:`configparser`,
364 365 366 367
the mapping interface implementation is using the
``parser['section']['option']`` notation.

``parser['section']`` in particular returns a proxy for the section's data in
368 369
the parser.  This means that the values are not copied but they are taken from
the original parser on demand.  What's even more important is that when values
370 371 372 373
are changed on a section proxy, they are actually mutated in the original
parser.

:mod:`configparser` objects behave as close to actual dictionaries as possible.
374 375
The mapping interface is complete and adheres to the
:class:`~collections.abc.MutableMapping` ABC.
376 377
However, there are a few differences that should be taken into account:

378 379 380
* By default, all keys in sections are accessible in a case-insensitive manner
  [1]_.  E.g. ``for option in parser["section"]`` yields only ``optionxform``'ed
  option key names.  This means lowercased keys by default.  At the same time,
Fred Drake's avatar
Fred Drake committed
381
  for a section that holds the key ``'a'``, both expressions return ``True``::
382

383 384
     "a" in parser["section"]
     "A" in parser["section"]
385

386 387
* All sections include ``DEFAULTSECT`` values as well which means that
  ``.clear()`` on a section may not leave the section visibly empty.  This is
388
  because default values cannot be deleted from the section (because technically
389 390 391
  they are not there).  If they are overriden in the section, deleting causes
  the default value to be visible again.  Trying to delete a default value
  causes a ``KeyError``.
392

393 394 395 396 397 398 399
* ``DEFAULTSECT`` cannot be removed from the parser:

  * trying to delete it raises ``ValueError``,

  * ``parser.clear()`` leaves it intact,

  * ``parser.popitem()`` never returns it.
400

401 402 403
* ``parser.get(section, option, **kwargs)`` - the second argument is **not**
  a fallback value. Note however that the section-level ``get()`` methods are
  compatible both with the mapping protocol and the classic configparser API.
404

405 406 407 408 409 410
* ``parser.items()`` is compatible with the mapping protocol (returns a list of
  *section_name*, *section_proxy* pairs including the DEFAULTSECT).  However,
  this method can also be invoked with arguments: ``parser.items(section, raw,
  vars)``. The latter call returns a list of *option*, *value* pairs for
  a specified ``section``, with all interpolations expanded (unless
  ``raw=True`` is provided).
411 412

The mapping protocol is implemented on top of the existing legacy API so that
413 414
subclasses overriding the original interface still should have mappings working
as expected.
415

416

417 418 419 420 421
Customizing Parser Behaviour
----------------------------

There are nearly as many INI format variants as there are applications using it.
:mod:`configparser` goes a long way to provide support for the largest sensible
422
set of INI styles available.  The default functionality is mainly dictated by
423 424 425
historical background and it's very likely that you will want to customize some
of the features.

Fred Drake's avatar
Fred Drake committed
426
The most common way to change the way a specific config parser works is to use
427 428 429 430 431
the :meth:`__init__` options:

* *defaults*, default value: ``None``

  This option accepts a dictionary of key-value pairs which will be initially
432 433 434
  put in the ``DEFAULT`` section.  This makes for an elegant way to support
  concise configuration files that don't specify values which are the same as
  the documented default.
435

Fred Drake's avatar
Fred Drake committed
436
  Hint: if you want to specify default values for a specific section, use
437 438 439 440 441
  :meth:`read_dict` before you read the actual file.

* *dict_type*, default value: :class:`collections.OrderedDict`

  This option has a major impact on how the mapping protocol will behave and how
Fred Drake's avatar
Fred Drake committed
442
  the written configuration files look.  With the default ordered
443
  dictionary, every section is stored in the order they were added to the
444
  parser.  Same goes for options within sections.
445 446

  An alternative dictionary type can be used for example to sort sections and
447
  options on write-back.  You can also use a regular dictionary for performance
448 449 450
  reasons.

  Please note: there are ways to add a set of key-value pairs in a single
451 452
  operation.  When you use a regular dictionary in those operations, the order
  of the keys may be random.  For example:
453 454 455

  .. doctest::

456
     >>> parser = configparser.ConfigParser()
457 458 459 460 461 462 463 464 465 466 467 468 469 470
     >>> parser.read_dict({'section1': {'key1': 'value1',
     ...                                'key2': 'value2',
     ...                                'key3': 'value3'},
     ...                   'section2': {'keyA': 'valueA',
     ...                                'keyB': 'valueB',
     ...                                'keyC': 'valueC'},
     ...                   'section3': {'foo': 'x',
     ...                                'bar': 'y',
     ...                                'baz': 'z'}
     ... })
     >>> parser.sections()
     ['section3', 'section2', 'section1']
     >>> [option for option in parser['section3']]
     ['baz', 'foo', 'bar']
471 472 473 474 475

  In these operations you need to use an ordered dictionary as well:

  .. doctest::

476
     >>> from collections import OrderedDict
477
     >>> parser = configparser.ConfigParser()
478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501
     >>> parser.read_dict(
     ...   OrderedDict((
     ...     ('s1',
     ...      OrderedDict((
     ...        ('1', '2'),
     ...        ('3', '4'),
     ...        ('5', '6'),
     ...      ))
     ...     ),
     ...     ('s2',
     ...      OrderedDict((
     ...        ('a', 'b'),
     ...        ('c', 'd'),
     ...        ('e', 'f'),
     ...      ))
     ...     ),
     ...   ))
     ... )
     >>> parser.sections()
     ['s1', 's2']
     >>> [option for option in parser['s1']]
     ['1', '3', '5']
     >>> [option for option in parser['s2'].values()]
     ['b', 'd', 'f']
502 503 504 505 506

* *allow_no_value*, default value: ``False``

  Some configuration files are known to include settings without values, but
  which otherwise conform to the syntax supported by :mod:`configparser`.  The
Fred Drake's avatar
Fred Drake committed
507
  *allow_no_value* parameter to the constructor can be used to
508 509 510 511
  indicate that such values should be accepted:

  .. doctest::

512 513 514 515 516 517 518 519 520
     >>> import configparser

     >>> sample_config = """
     ... [mysqld]
     ...   user = mysql
     ...   pid-file = /var/run/mysqld/mysqld.pid
     ...   skip-external-locking
     ...   old_passwords = 1
     ...   skip-bdb
521 522
     ...   # we don't need ACID today
     ...   skip-innodb
523
     ... """
524
     >>> config = configparser.ConfigParser(allow_no_value=True)
525 526 527 528 529 530 531 532 533 534 535 536 537 538
     >>> config.read_string(sample_config)

     >>> # Settings with values are treated as before:
     >>> config["mysqld"]["user"]
     'mysql'

     >>> # Settings without values provide None:
     >>> config["mysqld"]["skip-bdb"]

     >>> # Settings which aren't specified still raise an error:
     >>> config["mysqld"]["does-not-exist"]
     Traceback (most recent call last):
       ...
     KeyError: 'does-not-exist'
539

540
* *delimiters*, default value: ``('=', ':')``
541

542
  Delimiters are substrings that delimit keys from values within a section. The
543
  first occurrence of a delimiting substring on a line is considered a delimiter.
Fred Drake's avatar
Fred Drake committed
544
  This means values (but not keys) can contain the delimiters.
545 546

  See also the *space_around_delimiters* argument to
547
  :meth:`ConfigParser.write`.
548

549
* *comment_prefixes*, default value: ``('#', ';')``
550

551
* *inline_comment_prefixes*, default value: ``None``
552

553 554 555 556 557 558
  Comment prefixes are strings that indicate the start of a valid comment within
  a config file. *comment_prefixes* are used only on otherwise empty lines
  (optionally indented) whereas *inline_comment_prefixes* can be used after
  every valid value (e.g.  section names, options and empty lines as well). By
  default inline comments are disabled and ``'#'`` and ``';'`` are used as
  prefixes for whole line comments.
559

560 561 562
  .. versionchanged:: 3.2
     In previous versions of :mod:`configparser` behaviour matched
     ``comment_prefixes=('#',';')`` and ``inline_comment_prefixes=(';',)``.
563

564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612
  Please note that config parsers don't support escaping of comment prefixes so
  using *inline_comment_prefixes* may prevent users from specifying option
  values with characters used as comment prefixes. When in doubt, avoid setting
  *inline_comment_prefixes*. In any circumstances, the only way of storing
  comment prefix characters at the beginning of a line in multiline values is to
  interpolate the prefix, for example::

    >>> from configparser import ConfigParser, ExtendedInterpolation
    >>> parser = ConfigParser(interpolation=ExtendedInterpolation())
    >>> # the default BasicInterpolation could be used as well
    >>> parser.read_string("""
    ... [DEFAULT]
    ... hash = #
    ...
    ... [hashes]
    ... shebang =
    ...   ${hash}!/usr/bin/env python
    ...   ${hash} -*- coding: utf-8 -*-
    ...
    ... extensions =
    ...   enabled_extension
    ...   another_extension
    ...   #disabled_by_comment
    ...   yet_another_extension
    ...
    ... interpolation not necessary = if # is not at line start
    ... even in multiline values = line #1
    ...   line #2
    ...   line #3
    ... """)
    >>> print(parser['hashes']['shebang'])

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    >>> print(parser['hashes']['extensions'])

    enabled_extension
    another_extension
    yet_another_extension
    >>> print(parser['hashes']['interpolation not necessary'])
    if # is not at line start
    >>> print(parser['hashes']['even in multiline values'])
    line #1
    line #2
    line #3

* *strict*, default value: ``True``

  When set to ``True``, the parser will not allow for any section or option
613
  duplicates while reading from a single source (using :meth:`read_file`,
614
  :meth:`read_string` or :meth:`read_dict`). It is recommended to use strict
615 616
  parsers in new applications.

617 618 619 620
  .. versionchanged:: 3.2
     In previous versions of :mod:`configparser` behaviour matched
     ``strict=False``.

621 622
* *empty_lines_in_values*, default value: ``True``

Fred Drake's avatar
Fred Drake committed
623 624 625 626 627 628
  In config parsers, values can span multiple lines as long as they are
  indented more than the key that holds them.  By default parsers also let
  empty lines to be parts of values.  At the same time, keys can be arbitrarily
  indented themselves to improve readability.  In consequence, when
  configuration files get big and complex, it is easy for the user to lose
  track of the file structure.  Take for instance:
629

630
  .. code-block:: ini
631

632 633 634
     [Section]
     key = multiline
       value with a gotcha
635

636
      this = is still a part of the multiline value of 'key'
637

638 639 640 641
  This can be especially problematic for the user to see if she's using a
  proportional font to edit the file.  That is why when your application does
  not need values with empty lines, you should consider disallowing them.  This
  will make empty lines split keys every time.  In the example above, it would
642 643
  produce two keys, ``key`` and ``this``.

644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
* *default_section*, default value: ``configparser.DEFAULTSECT`` (that is:
  ``"DEFAULT"``)

  The convention of allowing a special section of default values for other
  sections or interpolation purposes is a powerful concept of this library,
  letting users create complex declarative configurations. This section is
  normally called ``"DEFAULT"`` but this can be customized to point to any
  other valid section name. Some typical values include: ``"general"`` or
  ``"common"``. The name provided is used for recognizing default sections when
  reading from any source and is used when writing configuration back to
  a file. Its current value can be retrieved using the
  ``parser_instance.default_section`` attribute and may be modified at runtime
  (i.e. to convert files from one format to another).

* *interpolation*, default value: ``configparser.BasicInterpolation``

  Interpolation behaviour may be customized by providing a custom handler
  through the *interpolation* argument. ``None`` can be used to turn off
  interpolation completely, ``ExtendedInterpolation()`` provides a more
  advanced variant inspired by ``zc.buildout``. More on the subject in the
  `dedicated documentation section <#interpolation-of-values>`_.
665
  :class:`RawConfigParser` has a default value of ``None``.
666

667

Fred Drake's avatar
Fred Drake committed
668 669 670
More advanced customization may be achieved by overriding default values of
these parser attributes.  The defaults are defined on the classes, so they
may be overriden by subclasses or by attribute assignment.
671

Fred Drake's avatar
Fred Drake committed
672
.. attribute:: BOOLEAN_STATES
673 674 675

  By default when using :meth:`getboolean`, config parsers consider the
  following values ``True``: ``'1'``, ``'yes'``, ``'true'``, ``'on'`` and the
676 677
  following values ``False``: ``'0'``, ``'no'``, ``'false'``, ``'off'``.  You
  can override this by specifying a custom dictionary of strings and their
Fred Drake's avatar
Fred Drake committed
678
  Boolean outcomes. For example:
679 680 681

  .. doctest::

682
     >>> custom = configparser.ConfigParser()
683 684 685 686 687 688 689 690
     >>> custom['section1'] = {'funky': 'nope'}
     >>> custom['section1'].getboolean('funky')
     Traceback (most recent call last):
     ...
     ValueError: Not a boolean: nope
     >>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False}
     >>> custom['section1'].getboolean('funky')
     False
691

Fred Drake's avatar
Fred Drake committed
692
  Other typical Boolean pairs include ``accept``/``reject`` or
693 694
  ``enabled``/``disabled``.

Fred Drake's avatar
Fred Drake committed
695
.. method:: optionxform(option)
696

Fred Drake's avatar
Fred Drake committed
697 698 699 700 701
  This method transforms option names on every read, get, or set
  operation.  The default converts the name to lowercase.  This also
  means that when a configuration file gets written, all keys will be
  lowercase.  Override this method if that's unsuitable.
  For example:
702 703 704

  .. doctest::

705 706 707 708 709 710 711
     >>> config = """
     ... [Section1]
     ... Key = Value
     ...
     ... [Section2]
     ... AnotherKey = Value
     ... """
712
     >>> typical = configparser.ConfigParser()
713 714 715 716 717 718 719 720 721 722 723 724 725
     >>> typical.read_string(config)
     >>> list(typical['Section1'].keys())
     ['key']
     >>> list(typical['Section2'].keys())
     ['anotherkey']
     >>> custom = configparser.RawConfigParser()
     >>> custom.optionxform = lambda option: option
     >>> custom.read_string(config)
     >>> list(custom['Section1'].keys())
     ['Key']
     >>> list(custom['Section2'].keys())
     ['AnotherKey']

726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757
.. attribute:: SECTCRE

  A compiled regular expression used to parse section headers. The default
  matches ``[section]`` to the name ``"section"``. Whitespace is considered part
  of the section name, thus ``[  larch  ]`` will be read as a section of name
  ``"  larch  "``. Override this attribute if that's unsuitable.  For example:

  .. doctest::

     >>> config = """
     ... [Section 1]
     ... option = value
     ...
     ... [  Section 2  ]
     ... another = val
     ... """
     >>> typical = ConfigParser()
     >>> typical.read_string(config)
     >>> typical.sections()
     ['Section 1', '  Section 2  ']
     >>> custom = ConfigParser()
     >>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
     >>> custom.read_string(config)
     >>> custom.sections()
     ['Section 1', 'Section 2']

  .. note::

     While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing
     option lines, it's not recommended to override it because that would
     interfere with constructor options *allow_no_value* and *delimiters*.

758 759 760 761

Legacy API Examples
-------------------

762 763 764 765 766
Mainly because of backwards compatibility concerns, :mod:`configparser`
provides also a legacy API with explicit ``get``/``set`` methods.  While there
are valid use cases for the methods outlined below, mapping protocol access is
preferred for new projects.  The legacy API is at times more advanced,
low-level and downright counterintuitive.
767

768
An example of writing to a configuration file::
769

770
   import configparser
771

772
   config = configparser.RawConfigParser()
773

774 775 776 777 778
   # Please note that using RawConfigParser's set functions, you can assign
   # non-string values to keys internally, but will receive an error when
   # attempting to write to a file or when you get it in non-raw mode. Setting
   # values using the mapping protocol or ConfigParser's set() does not allow
   # such assignments to take place.
779
   config.add_section('Section1')
780 781 782
   config.set('Section1', 'an_int', '15')
   config.set('Section1', 'a_bool', 'true')
   config.set('Section1', 'a_float', '3.1415')
783 784 785
   config.set('Section1', 'baz', 'fun')
   config.set('Section1', 'bar', 'Python')
   config.set('Section1', 'foo', '%(bar)s is %(baz)s!')
786

787 788 789
   # Writing our configuration file to 'example.cfg'
   with open('example.cfg', 'w') as configfile:
       config.write(configfile)
790

791
An example of reading the configuration file again::
792

793
   import configparser
794

795 796
   config = configparser.RawConfigParser()
   config.read('example.cfg')
Fred Drake's avatar
Fred Drake committed
797

798 799
   # getfloat() raises an exception if the value is not a float
   # getint() and getboolean() also do this for their respective types
800 801 802
   a_float = config.getfloat('Section1', 'a_float')
   an_int = config.getint('Section1', 'an_int')
   print(a_float + an_int)
Fred Drake's avatar
Fred Drake committed
803

804 805
   # Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.
   # This is because we are using a RawConfigParser().
806
   if config.getboolean('Section1', 'a_bool'):
807
       print(config.get('Section1', 'foo'))
Fred Drake's avatar
Fred Drake committed
808

809
To get interpolation, use :class:`ConfigParser`::
Fred Drake's avatar
Fred Drake committed
810

811
   import configparser
812

813
   cfg = configparser.ConfigParser()
814
   cfg.read('example.cfg')
815

816
   # Set the optional *raw* argument of get() to True if you wish to disable
817 818 819
   # interpolation in a single get operation.
   print(cfg.get('Section1', 'foo', raw=False)) # -> "Python is fun!"
   print(cfg.get('Section1', 'foo', raw=True))  # -> "%(bar)s is %(baz)s!"
820

821
   # The optional *vars* argument is a dict with members that will take
822 823 824
   # precedence in interpolation.
   print(cfg.get('Section1', 'foo', vars={'bar': 'Documentation',
                                             'baz': 'evil'}))
825

826
   # The optional *fallback* argument can be used to provide a fallback value
827 828
   print(cfg.get('Section1', 'foo'))
         # -> "Python is fun!"
829

830 831
   print(cfg.get('Section1', 'foo', fallback='Monty is not.'))
         # -> "Python is fun!"
832

833 834
   print(cfg.get('Section1', 'monster', fallback='No such things as monsters.'))
         # -> "No such things as monsters."
835

836 837
   # A bare print(cfg.get('Section1', 'monster')) would raise NoOptionError
   # but we can also use:
838

839 840
   print(cfg.get('Section1', 'monster', fallback=None))
         # -> None
841

842 843
Default values are available in both types of ConfigParsers.  They are used in
interpolation if an option used is not defined elsewhere. ::
844

845
   import configparser
846

847
   # New instance with 'bar' and 'baz' defaulting to 'Life' and 'hard' each
848
   config = configparser.ConfigParser({'bar': 'Life', 'baz': 'hard'})
849
   config.read('example.cfg')
850

851 852 853 854
   print(config.get('Section1', 'foo')) # -> "Python is fun!"
   config.remove_option('Section1', 'bar')
   config.remove_option('Section1', 'baz')
   print(config.get('Section1', 'foo')) # -> "Life is hard!"
855

856

857
.. _configparser-objects:
858

859 860
ConfigParser Objects
--------------------
861

862
.. 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())
863

864
   The main configuration parser.  When *defaults* is given, it is initialized
865 866 867
   into the dictionary of intrinsic defaults.  When *dict_type* is given, it
   will be used to create the dictionary objects for the list of sections, for
   the options within a section, and for the default values.
868

Fred Drake's avatar
Fred Drake committed
869
   When *delimiters* is given, it is used as the set of substrings that
870
   divide keys from values.  When *comment_prefixes* is given, it will be used
871 872 873 874 875
   as the set of substrings that prefix comments in otherwise empty lines.
   Comments can be indented. When *inline_comment_prefixes* is given, it will be
   used as the set of substrings that prefix comments in non-empty lines.

   When *strict* is ``True`` (the default), the parser won't allow for
876 877
   any section or option duplicates while reading from a single source (file,
   string or dictionary), raising :exc:`DuplicateSectionError` or
Fred Drake's avatar
Fred Drake committed
878
   :exc:`DuplicateOptionError`.  When *empty_lines_in_values* is ``False``
879 880 881
   (default: ``True``), each empty line marks the end of an option.  Otherwise,
   internal empty lines of a multiline option are kept as part of the value.
   When *allow_no_value* is ``True`` (default: ``False``), options without
882 883 884 885 886 887 888 889 890 891 892 893 894
   values are accepted; the value held for these is ``None`` and they are
   serialized without the trailing delimiter.

   When *default_section* is given, it specifies the name for the special
   section holding default values for other sections and interpolation purposes
   (normally named ``"DEFAULT"``). This value can be retrieved and changed on
   runtime using the ``default_section`` instance attribute.

   Interpolation behaviour may be customized by providing a custom handler
   through the *interpolation* argument. ``None`` can be used to turn off
   interpolation completely, ``ExtendedInterpolation()`` provides a more
   advanced variant inspired by ``zc.buildout``. More on the subject in the
   `dedicated documentation section <#interpolation-of-values>`_.
895

896 897 898 899 900
   All option names used in interpolation will be passed through the
   :meth:`optionxform` method just like any other option name reference.  For
   example, using the default implementation of :meth:`optionxform` (which
   converts option names to lower case), the values ``foo %(bar)s`` and ``foo
   %(BAR)s`` are equivalent.
901

902 903
   .. versionchanged:: 3.1
      The default *dict_type* is :class:`collections.OrderedDict`.
904

Fred Drake's avatar
Fred Drake committed
905
   .. versionchanged:: 3.2
906 907 908
      *allow_no_value*, *delimiters*, *comment_prefixes*, *strict*,
      *empty_lines_in_values*, *default_section* and *interpolation* were
      added.
909 910


911
   .. method:: defaults()
912

913
      Return a dictionary containing the instance-wide defaults.
914 915


916
   .. method:: sections()
917

918 919
      Return a list of the sections available; the *default section* is not
      included in the list.
920 921


922
   .. method:: add_section(section)
923

924
      Add a section named *section* to the instance.  If a section by the given
925
      name already exists, :exc:`DuplicateSectionError` is raised.  If the
926 927 928 929 930
      *default section* name is passed, :exc:`ValueError` is raised.  The name
      of the section must be a string; if not, :exc:`TypeError` is raised.

      .. versionchanged:: 3.2
         Non-string section names raise :exc:`TypeError`.
931 932


933
   .. method:: has_section(section)
934

935 936
      Indicates whether the named *section* is present in the configuration.
      The *default section* is not acknowledged.
937 938


939
   .. method:: options(section)
940

941
      Return a list of options available in the specified *section*.
942 943


944
   .. method:: has_option(section, option)
945

946
      If the given *section* exists, and contains the given *option*, return
947 948
      :const:`True`; otherwise return :const:`False`. If the specified
      *section* is :const:`None` or an empty string, DEFAULT is assumed.
949 950


951
   .. method:: read(filenames, encoding=None)
952

953 954
      Attempt to read and parse a list of filenames, returning a list of
      filenames which were successfully parsed.  If *filenames* is a string, it
955 956 957 958 959 960 961 962 963 964
      is treated as a single filename.  If a file named in *filenames* cannot
      be opened, that file will be ignored.  This is designed so that you can
      specify a list of potential configuration file locations (for example,
      the current directory, the user's home directory, and some system-wide
      directory), and all existing configuration files in the list will be
      read.  If none of the named files exist, the :class:`ConfigParser`
      instance will contain an empty dataset.  An application which requires
      initial values to be loaded from a file should load the required file or
      files using :meth:`read_file` before calling :meth:`read` for any
      optional files::
965

966
         import configparser, os
967

968
         config = configparser.ConfigParser()
969 970 971
         config.read_file(open('defaults.cfg'))
         config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')],
                     encoding='cp1250')
972

973 974 975
      .. versionadded:: 3.2
         The *encoding* parameter.  Previously, all files were read using the
         default encoding for :func:`open`.
976 977


978
   .. method:: read_file(f, source=None)
979

980
      Read and parse configuration data from *f* which must be an iterable
981
      yielding Unicode strings (for example files opened in text mode).
Fred Drake's avatar
Fred Drake committed
982

983
      Optional argument *source* specifies the name of the file being read.  If
Fred Drake's avatar
Fred Drake committed
984 985
      not given and *f* has a :attr:`name` attribute, that is used for
      *source*; the default is ``'<???>'``.
Fred Drake's avatar
Fred Drake committed
986

987
      .. versionadded:: 3.2
988 989
         Replaces :meth:`readfp`.

990
   .. method:: read_string(string, source='<string>')
Fred Drake's avatar
Fred Drake committed
991

Fred Drake's avatar
Fred Drake committed
992
      Parse configuration data from a string.
Fred Drake's avatar
Fred Drake committed
993

Fred Drake's avatar
Fred Drake committed
994 995 996
      Optional argument *source* specifies a context-specific name of the
      string passed.  If not given, ``'<string>'`` is used.  This should
      commonly be a filesystem path or a URL.
Fred Drake's avatar
Fred Drake committed
997

998
      .. versionadded:: 3.2
999

Fred Drake's avatar
Fred Drake committed
1000

1001
   .. method:: read_dict(dictionary, source='<dict>')
Fred Drake's avatar
Fred Drake committed
1002

1003 1004 1005 1006 1007
      Load configuration from any object that provides a dict-like ``items()``
      method.  Keys are section names, values are dictionaries with keys and
      values that should be present in the section.  If the used dictionary
      type preserves order, sections and their keys will be added in order.
      Values are automatically converted to strings.
Fred Drake's avatar
Fred Drake committed
1008

1009 1010
      Optional argument *source* specifies a context-specific name of the
      dictionary passed.  If not given, ``<dict>`` is used.
1011

1012 1013
      This method can be used to copy state between parsers.

1014
      .. versionadded:: 3.2
1015

1016

1017
   .. method:: get(section, option, *, raw=False, vars=None[, fallback])
1018

1019 1020 1021 1022 1023
      Get an *option* value for the named *section*.  If *vars* is provided, it
      must be a dictionary.  The *option* is looked up in *vars* (if provided),
      *section*, and in *DEFAULTSECT* in that order.  If the key is not found
      and *fallback* is provided, it is used as a fallback value.  ``None`` can
      be provided as a *fallback* value.
1024

1025 1026 1027 1028
      All the ``'%'`` interpolations are expanded in the return values, unless
      the *raw* argument is true.  Values for interpolation keys are looked up
      in the same manner as the option.

1029
      .. versionchanged:: 3.2
1030 1031 1032
         Arguments *raw*, *vars* and *fallback* are keyword only to protect
         users from trying to use the third argument as the *fallback* fallback
         (especially when using the mapping protocol).
1033 1034


1035
   .. method:: getint(section, option, *, raw=False, vars=None[, fallback])
1036

1037
      A convenience method which coerces the *option* in the specified *section*
1038 1039
      to an integer.  See :meth:`get` for explanation of *raw*, *vars* and
      *fallback*.
1040 1041


1042
   .. method:: getfloat(section, option, *, raw=False, vars=None[, fallback])
1043

1044
      A convenience method which coerces the *option* in the specified *section*
1045 1046
      to a floating point number.  See :meth:`get` for explanation of *raw*,
      *vars* and *fallback*.
1047 1048


1049
   .. method:: getboolean(section, option, *, raw=False, vars=None[, fallback])
1050

1051 1052
      A convenience method which coerces the *option* in the specified *section*
      to a Boolean value.  Note that the accepted values for the option are
1053 1054
      ``'1'``, ``'yes'``, ``'true'``, and ``'on'``, which cause this method to
      return ``True``, and ``'0'``, ``'no'``, ``'false'``, and ``'off'``, which
1055 1056
      cause it to return ``False``.  These string values are checked in a
      case-insensitive manner.  Any other value will cause it to raise
1057
      :exc:`ValueError`.  See :meth:`get` for explanation of *raw*, *vars* and
1058
      *fallback*.
1059 1060


1061 1062
   .. method:: items(raw=False, vars=None)
               items(section, raw=False, vars=None)
1063 1064 1065

      When *section* is not given, return a list of *section_name*,
      *section_proxy* pairs, including DEFAULTSECT.
1066

1067 1068
      Otherwise, return a list of *name*, *value* pairs for the options in the
      given *section*.  Optional arguments have the same meaning as for the
1069
      :meth:`get` method.
1070

1071 1072 1073 1074
      .. versionchanged:: 3.2
         Items present in *vars* no longer appear in the result. The previous
         behaviour mixed actual parser options with variables provided for
         interpolation.
1075

1076
   .. method:: set(section, option, value)
1077

1078
      If the given section exists, set the given option to the specified value;
1079 1080
      otherwise raise :exc:`NoSectionError`.  *option* and *value* must be
      strings; if not, :exc:`TypeError` is raised.
1081 1082


1083
   .. method:: write(fileobject, space_around_delimiters=True)
1084

1085 1086 1087
      Write a representation of the configuration to the specified :term:`file
      object`, which must be opened in text mode (accepting strings).  This
      representation can be parsed by a future :meth:`read` call.  If
Fred Drake's avatar
Fred Drake committed
1088
      *space_around_delimiters* is true, delimiters between
1089
      keys and values are surrounded by spaces.
1090 1091


1092
   .. method:: remove_option(section, option)
1093

1094 1095 1096 1097
      Remove the specified *option* from the specified *section*.  If the
      section does not exist, raise :exc:`NoSectionError`.  If the option
      existed to be removed, return :const:`True`; otherwise return
      :const:`False`.
1098 1099


1100
   .. method:: remove_section(section)
1101

1102 1103
      Remove the specified *section* from the configuration.  If the section in
      fact existed, return ``True``.  Otherwise return ``False``.
1104 1105


1106
   .. method:: optionxform(option)
1107

1108 1109 1110 1111 1112
      Transforms the option name *option* as found in an input file or as passed
      in by client code to the form that should be used in the internal
      structures.  The default implementation returns a lower-case version of
      *option*; subclasses may override this or client code can set an attribute
      of this name on instances to affect this behavior.
Georg Brandl's avatar
Georg Brandl committed
1113

Fred Drake's avatar
Fred Drake committed
1114 1115 1116 1117
      You don't need to subclass the parser to use this method, you can also
      set it on an instance, to a function that takes a string argument and
      returns a string.  Setting it to ``str``, for example, would make option
      names case sensitive::
Georg Brandl's avatar
Georg Brandl committed
1118

1119 1120
         cfgparser = ConfigParser()
         cfgparser.optionxform = str
Georg Brandl's avatar
Georg Brandl committed
1121

1122
      Note that when reading configuration files, whitespace around the option
Fred Drake's avatar
Fred Drake committed
1123
      names is stripped before :meth:`optionxform` is called.
1124

1125

1126
   .. method:: readfp(fp, filename=None)
Fred Drake's avatar
Fred Drake committed
1127

1128
      .. deprecated:: 3.2
Fred Drake's avatar
Fred Drake committed
1129
         Use :meth:`read_file` instead.
1130

1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146
      .. versionchanged:: 3.2
         :meth:`readfp` now iterates on *f* instead of calling ``f.readline()``.

      For existing code calling :meth:`readfp` with arguments which don't
      support iteration, the following generator may be used as a wrapper
      around the file-like object::

         def readline_generator(f):
             line = f.readline()
             while line:
                 yield line
                 line = f.readline()

      Instead of ``parser.readfp(f)`` use
      ``parser.read_file(readline_generator(f))``.

1147

1148 1149 1150
.. data:: MAX_INTERPOLATION_DEPTH

   The maximum depth for recursive interpolation for :meth:`get` when the *raw*
1151 1152
   parameter is false.  This is relevant only when the default *interpolation*
   is used.
1153

1154

1155
.. _rawconfigparser-objects:
1156

1157 1158
RawConfigParser Objects
-----------------------
1159

1160 1161 1162 1163 1164 1165 1166
.. class:: RawConfigParser(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])
1167

1168
   Legacy variant of the :class:`ConfigParser` with interpolation disabled
1169
   by default and unsafe ``add_section`` and ``set`` methods.
1170

1171
   .. note::
1172
      Consider using :class:`ConfigParser` instead which checks types of
1173
      the values to be stored internally. If you don't want interpolation, you
1174
      can use ``ConfigParser(interpolation=None)``.
1175 1176


1177 1178 1179 1180 1181 1182 1183 1184 1185 1186
   .. method:: add_section(section)

      Add a section named *section* to the instance.  If a section by the given
      name already exists, :exc:`DuplicateSectionError` is raised.  If the
      *default section* name is passed, :exc:`ValueError` is raised.

      Type of *section* is not checked which lets users create non-string named
      sections. This behaviour is unsupported and may cause internal errors.


1187 1188 1189 1190 1191 1192 1193 1194
   .. method:: set(section, option, value)

      If the given section exists, set the given option to the specified value;
      otherwise raise :exc:`NoSectionError`.  While it is possible to use
      :class:`RawConfigParser` (or :class:`ConfigParser` with *raw* parameters
      set to true) for *internal* storage of non-string values, full
      functionality (including interpolation and output to files) can only be
      achieved using string values.
1195

1196 1197 1198 1199
      This method lets users assign non-string values to keys internally.  This
      behaviour is unsupported and will cause errors when attempting to write
      to a file or get it in non-raw mode.  **Use the mapping protocol API**
      which does not allow such assignments to take place.
1200

1201

1202 1203
Exceptions
----------
1204

1205
.. exception:: Error
1206

Fred Drake's avatar
Fred Drake committed
1207
   Base class for all other :mod:`configparser` exceptions.
1208

1209

1210
.. exception:: NoSectionError
1211

1212
   Exception raised when a specified section is not found.
1213 1214


1215
.. exception:: DuplicateSectionError
1216

1217 1218 1219
   Exception raised if :meth:`add_section` is called with the name of a section
   that is already present or in strict parsers when a section if found more
   than once in a single input file, string or dictionary.
1220

1221 1222 1223
   .. versionadded:: 3.2
      Optional ``source`` and ``lineno`` attributes and arguments to
      :meth:`__init__` were added.
1224 1225


1226
.. exception:: DuplicateOptionError
1227

1228 1229 1230 1231
   Exception raised by strict parsers if a single option appears twice during
   reading from a single file, string or dictionary. This catches misspellings
   and case sensitivity-related errors, e.g. a dictionary may have two keys
   representing the same case-insensitive configuration key.
1232 1233


1234
.. exception:: NoOptionError
1235

1236 1237
   Exception raised when a specified option is not found in the specified
   section.
1238 1239


1240
.. exception:: InterpolationError
1241

1242 1243
   Base class for exceptions raised when problems occur performing string
   interpolation.
1244

1245

1246
.. exception:: InterpolationDepthError
1247

1248
   Exception raised when string interpolation cannot be completed because the
1249
   number of iterations exceeds :const:`MAX_INTERPOLATION_DEPTH`.  Subclass of
1250
   :exc:`InterpolationError`.
1251 1252


1253 1254
.. exception:: InterpolationMissingOptionError

1255 1256
   Exception raised when an option referenced from a value does not exist.
   Subclass of :exc:`InterpolationError`.
1257 1258 1259 1260


.. exception:: InterpolationSyntaxError

1261 1262
   Exception raised when the source text into which substitutions are made does
   not conform to the required syntax.  Subclass of :exc:`InterpolationError`.
1263 1264 1265 1266


.. exception:: MissingSectionHeaderError

1267 1268
   Exception raised when attempting to parse a file which has no section
   headers.
1269 1270 1271 1272 1273 1274 1275 1276 1277


.. exception:: ParsingError

   Exception raised when errors occur attempting to parse a file.

   .. versionchanged:: 3.2
      The ``filename`` attribute and :meth:`__init__` argument were renamed to
      ``source`` for consistency.
1278

1279 1280 1281 1282 1283 1284

.. rubric:: Footnotes

.. [1] Config parsers allow for heavy customization.  If you are interested in
       changing the behaviour outlined by the footnote reference, consult the
       `Customizing Parser Behaviour`_ section.