Unicode assumption fails

Create issue
Issue #4 resolved
Klaus Alexander Seistrup created an issue

Standing in a directory with a setup.cfg file, using python2.7:

{{{ #!python

import configparser parser=configparser.ConfigParser() parser.read('setup.cfg') [] parser.read(u'setup.cfg') [u'setup.cfg']

}}} So if there accidentally is a file byt the name of s, e, t, u, p, c, f, or g, that file will be read:

{{{ #!python

$ ln -s setup.cfg s $ python2.7

import configparser parser=configparser.ConfigParser() parser.read('setup.cfg') ['s']


Hint: ConfigParser()'s .read() method says that the filename should only be included in the file list if the name is a unicode instance, and thus a plain string object gets treated as a list.

Comments (4)

  1. Klaus Alexander Seistrup reporter

    Possible fix

    --- a/configparser.py
    +++ b/configparser.py
    @@ -701,7 +701,7 @@ class RawConfigParser(MutableMapping):
             Return list of successfully read files.
    -        if isinstance(filenames, unicode):
    +        if isinstance(filenames, unicode) or isinstance(filenames, str):
                 filenames = [filenames]
             read_ok = []
             for filename in filenames:
  2. Łukasz Langa repo owner

    Sorry to have kept you waiting for so long. I somehow missed notifications about that issue.

    This is now fixed in version 3.3.0r1. Thank you for your feedback.

  3. Log in to comment