Skip to content

configparser throws TypeError for combination of interpolation and allow_no_value #130941

Closed
@dabuahoid

Description

@dabuahoid

Bug report

Bug description:

The configparser modules throws an Exception as:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    config.get("dummy", "b")
  File "python3.12/configparser.py", line 777, in get
    return self._interpolation.before_get(self, section, option, value,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "python3.12/configparser.py", line 428, in before_get
    self._interpolate_some(parser, option, L, value, section, defaults, 1)
  File "python3.12/configparser.py", line 481, in _interpolate_some
    if "$" in v:
       ^^^^^^^^
TypeError: argument of type 'NoneType' is not iterable

when using:

config.ini

[dummy]
a
b = ${a}

and following ConfigParser settings:

test.py

import configparser
config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation(), allow_no_value=True)
config.read("config.ini")
config.get("dummy", "b")

Since the value of a is None the interpolation should convert the reference first to an empty string to keep interpolation alive.
Expected value for b would be an empty string.

CPython versions tested on:

3.12, 3.13

Operating systems tested on:

Linux, Windows

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions