Commit Graph

50 Commits

Author SHA1 Message Date
Fred Drake
0eebd5cef9 Implement a safer and more predictable interpolation approach.
Closes SF bug #511737.
2002-10-25 21:52:00 +00:00
Fred Drake
df393bd46a According to the docs, __name__ is not exposed via the API except
indirectly via %(__name__)s.  Not sure why, but maintain the
documented behavior for the new items() method.

Be a little more efficient about how we compute the list of options in
the ConfigParser.items() method.
2002-10-25 20:41:30 +00:00
Fred Drake
fce6557c6b Re-factor: Use a RawConfigParser base class and make ConfigParser a
derived class that adds the ugly string interpolation code.  In the
process, changed all "__" methods and instance variables to "_".
2002-10-25 18:08:18 +00:00
Fred Drake
176916a989 Allow internal whitespace in keys.
Closes SF bug #583248; backporting to r22-maint branch.
2002-09-27 16:21:18 +00:00
Fred Drake
2ca041fde0 items(): New method, provided by Gustavo Niemeyer in SF bug #545096. 2002-09-27 15:49:56 +00:00
Fred Drake
c2ff9051d2 has_option(): Use the option name transform consistently.
Closes SF bug #561822.

Integrate the "code cleanup and general bug fix patch" (SF bug #545096),
contributed by Gustavo Niemeyer.  This is the portion of that patch that
does not add new functionality.
2002-09-27 15:33:11 +00:00
Walter Dörwald
65230a2de7 Remove uses of the string and types modules:
x in string.whitespace => x.isspace()
type(x) in types.StringTypes => isinstance(x, basestring)
isinstance(x, types.StringTypes) => isinstance(x, basestring)
type(x) is types.StringType => isinstance(x, str)
type(x) == types.StringType => isinstance(x, str)
string.split(x, ...) => x.split(...)
string.join(x, y) => y.join(x)
string.zfill(x, ...) => x.zfill(...)
string.count(x, ...) => x.count(...)
hasattr(types, "UnicodeType") => try: unicode except NameError:
type(x) != types.TupleTuple => not isinstance(x, tuple)
isinstance(x, types.TupleType) => isinstance(x, tuple)
type(x) is types.IntType => isinstance(x, int)

Do not mention the string module in the rlcompleter docstring.

This partially applies SF patch http://www.python.org/sf/562373
(with basestring instead of string). (It excludes the changes to
unittest.py and does not change the os.stat stuff.)
2002-06-03 15:58:32 +00:00
Raymond Hettinger
54f0222547 SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
Raymond Hettinger
0f4940c0a8 Replaced boolean test with 'is None' 2002-06-01 00:57:55 +00:00
Fred Drake
d451ec1cdb Clean up uses of some deprecated features.
Reported by Neal Norwitz on python-dev.
2002-04-26 02:29:55 +00:00
Tim Peters
bc0e910826 Convert a pile of obvious "yes/no" functions to return bool. 2002-04-04 22:55:58 +00:00
Andrew M. Kuchling
00824ed733 [Bug #523301] ConfigParser.write() produces broken output for values that
were originally rfc822-like line continuations.
   Modified version of a patch from Matthias Ralfs.
2002-03-08 18:08:47 +00:00
Tim Peters
e0c446bb4a Whitespace normalization. 2001-10-18 21:57:37 +00:00
Guido van Rossum
fb06f75c5a Apply modified SF patch 467580: ConfigParser.getboolean(): FALSE, TRUE.
This patch allows ConfigParser.getboolean() to interpret TRUE,
    FALSE, YES, NO, ON and OFF instead just '0' and '1'.

    While just allowing '0' and '1' sounds more correct users often
    demand to use more descriptive directives in configuration
    files. Instead of forcing every programmer do brew his own
    solution a system should include the batteries for this.

[My modification to the patch is a slight rewording of the docstring
and use of lowercase instead of uppercase templates.  The code is
still case sensitive. GvR.]
2001-10-04 19:58:46 +00:00
Martin v. Löwis
339d0f720e Patch #445762: Support --disable-unicode
- Do not compile unicodeobject, unicodectype, and unicodedata if Unicode is disabled
- check for Py_USING_UNICODE in all places that use Unicode functions
- disables unicode literals, and the builtin functions
- add the types.StringTypes list
- remove Unicode literals from most tests.
2001-08-17 18:39:25 +00:00
Andrew M. Kuchling
7c2cf73811 Remove redefinition of has_option() method 2001-08-13 14:58:32 +00:00
Martin v. Löwis
02d893cfae Patch #444359: Remove unused imports. 2001-08-02 07:15:29 +00:00
Fred Drake
beb6713ea7 When reading a continuation line, make sure we still use the transformed
name when filling in the internal data structures, otherwise we incorrectly
raise a KeyError.

This fixes SF bug #432369.
2001-07-06 17:22:48 +00:00
Fred Drake
3c823aa4b6 Make sure ConfigParser uses .optionxform() consistently; this affects
.has_option(), .remove_option(), and .set().

This closes SF tracker #232913.
2001-02-26 21:55:34 +00:00
Fred Drake
d4df94b56d Be much more permissive in what we accept in section names; there has been
at least one addition to the set of accepted characters for every release
since this module was first added; this should take care of the problem
in a more substantial way.

This closes SF bug #132288.
2001-02-14 15:24:17 +00:00
Fred Drake
d83bbbfd22 Allow square brackets in the option names; this makes it possible to use
ConfigParser with GNOME-ish config files that use the internationalization
conventions found in GNOME.

This closes SF bug #131635.
2001-02-12 17:18:11 +00:00
Eric S. Raymond
f296019cc5 Correction after second code path test. 2001-02-09 05:37:25 +00:00
Eric S. Raymond
9eb54d9828 String method conversion. 2001-02-09 05:19:09 +00:00
Skip Montanaro
e99d5ea25b added __all__ lists to a number of Python modules
added test script and expected output file as well
this closes patch 103297.
__all__ attributes will be added to other modules without first submitting
a patch, just adding the necessary line to the test script to verify
more-or-less correct implementation.
2001-01-20 19:54:20 +00:00
Tim Peters
88869f9787 Whitespace normalization. 2001-01-14 23:36:06 +00:00
Fred Drake
7c1e5adf27 Make ConfigParser.Error inherit from Exception. 2000-12-11 18:13:19 +00:00
Fred Drake
ff4a23bbcb remove_option(): Use the right variable name for the option name!
This closes bug #124324.
2000-12-04 16:29:13 +00:00
Fred Drake
2a37f9f862 Allow spaces in section names.
Do not expose the __name__ when reporting the list of options available
for a section since that is for internal use.

This closes SourceForge bug #115357.

Additionally, define InterpolationDepthError and MAX_INTERPOLATION_DEPTH.
The exception is raised by get*() when value interpolation cannot be
completed within the defined recursion limit.  The constant is only
informative; changing it will not affect the allowed depth.

Fix the exit from get() so that None is not returned if the depth is met
or exceeded; either return the value of raise InterpolationDepthError.
2000-09-27 22:43:54 +00:00
Guido van Rossum
4126736791 When reading the file, option names were not passed through
self.optionxform(), which (in the default case) caused options spelled
with opper case letters in their name to be inaccessible.  Reported by
"Todd R. Palmer" <t2palmer@bellsouth.net> on
activepython@listserv1.ActiveState.com.
2000-09-25 14:42:33 +00:00
Thomas Wouters
ff4df6d6fb Small fixes by Petru Paler (patch #100946) checked in with esr's approval. 2000-07-21 05:19:59 +00:00
Eric S. Raymond
649685ad9b ConfigParser enhancements to edit existing configs, part 2 2000-07-14 14:28:22 +00:00
Eric S. Raymond
417c489def Give ConfigParser the capability to set as well as read options, and to write
a representation of the configuration state in .ini format that can be read
back in by a future read() call.  Thus this class is now a back end
for .ini editors as well as parsers.

This patch is complete and tested, but exposes a bug in the ConfigParser
implementation which I have not yet fixed.  Because case information is
discarded during parsing, the output of write() has its case smashed.

I wrote this for a SourceForge interface script called forgetool.
Documentation for the new entry points included.
2000-07-10 18:11:00 +00:00
Fred Drake
fd4114e7b8 ConfigParser.read():
Instead of wrapping 'filenames' value in a list if it's a
        string, wrap it if it's a string or unicode string.
2000-05-09 14:46:40 +00:00
Jeremy Hylton
820314ea95 allow comments beginning with ; in key: value as well as key = value 2000-03-03 20:43:57 +00:00
Fred Drake
1ab41fc680 Fix comments relating to the specific regexs used to parse section and
option names; errors noted by Greg Stein <gstein@lyra.org>.
2000-02-28 23:23:55 +00:00
Fred Drake
c517b9b406 (Finally!) Changes related to the ConfigParser/INI-file topics
discussed on c.l.py last January.  Specifically:
  - more characters allowed in section & option names
  - if '=' is used to separate the option & value, the value can be
    followed by a comment of the form '\s;'
2000-02-28 20:59:03 +00:00
Barry Warsaw
2539451fb9 fixed a typo in a docstring, and slightly expanded the module
docstring info for readfp().
1999-10-12 16:12:48 +00:00
Guido van Rossum
a5a24b76f4 Added has_option(); fix bug in get() which botched interpolation if
'%(' was found in first position (found by Fred Drake).
1999-10-04 19:58:22 +00:00
Guido van Rossum
6a8d84b0c1 Urmpfh!
Withdraw the change that Fred just checked in -- it was a poorly
documented feature, not a bug, to ignore I/O errors in read().

The new docstring explains the reason for the feature:
"""
this is designed so that you can specifiy a list of potential
configuration file locations (e.g. current directory, user's home
directory, systemwide directory), and all existing configuration files
in the list will be read.
"""

Also add a lower-level function, readfp(), which takes an open file
object (and optionally a filename).

XXX There are some other problems with this module, but I don't have
time to dig into these; in particular, there are complaints that the
%(name)s substitution from the [DEFAULTS] section doesn't work
correctly.
1999-10-04 18:57:27 +00:00
Fred Drake
2438a485c8 ConfigParser.read(): Don't mask IOError exceptions. 1999-10-04 18:11:56 +00:00
Guido van Rossum
9e480adf9b Patch suggested (and partially provided) by Lars Damerow: instead of
always lowercasing the option name, call a method optionxform() which
can be overridden.  Also make the regexps SECTRE and OPTRE non-private
variables so they can also be overridden.
1999-06-17 18:41:42 +00:00
Guido van Rossum
72ce85823c Fix by Chris Petrilli (to his own code) to limit the number of
iterations looking for expansions to 10.
1999-02-12 14:13:10 +00:00
Guido van Rossum
c0780ac8f3 From: Mike Orr <mso@oz.net>
In the docstring of ConfigParser.py  (Python 1.5.2b1):
    read(*filenames) -- read and parse the list of named configuration files

should be:
    read(filenames) -- read and parse the list of named configuration files

The method accepts a list, not a bunch of positional arguments.
Which is good, the list is much more convenient.
1999-01-30 04:35:47 +00:00
Barry Warsaw
f09f6a5565 Re-format the module docstring and document the new get() argument. 1999-01-26 22:01:37 +00:00
Guido van Rossum
e6506e753b Patch by Chris Petrilli (not really tested since I don't know this
module myself) to accept an option keyword argument (vars) that is
substituted on top of the defaults that were setup in __init__.  The
patch also fixes the problem where you can't have recusive references
inside your configuration file.
1999-01-26 19:29:25 +00:00
Barry Warsaw
6446212593 Time machine experiment. Use '__name__' as the special key (always
present) that refers to the section name.  Also added a (slightly)
better InterpolationError error message, which includes the raw
string.
1998-08-06 18:48:41 +00:00
Barry Warsaw
bfa3f6b673 Several changes:
1. Convert to using re module

2. Added two new exception classes

    a. MissingSectionHeaderError which signals an early parsing
       exception when options appear in the file before any section
       header.  Previously a bogus TypeError was thrown deeper down.

    b. ParsingError which collates any non-fatal parsing errors.
       ConfigParser.read() will raise this after the entire file was
       parsed if any errors occurred during parsing (client could just
       catch the exception and continue, because the ConfigParser
       instance would still be initialized with the valid data).

   (small note: Error.__msg => Error._msg)

3. ConfigParser.__read() now uses re which has the following minor
   semantic change: underscore is now allowed in section header and
   option name.  Also, because of the old regexps, theoretically.
   Fixed continuation line bug reported by F. Lundh.

4. It seemed that the old ConfigParser automatically added the option
   `name' to every section, which contained the name of the section.
   This seemed bogus to me so I took it out.
1998-07-01 20:41:12 +00:00
Guido van Rossum
45e2fbc2e7 Mass check-in after untabifying all files that need it. 1998-03-26 21:13:24 +00:00
Barry Warsaw
5da0f504ba get(): Fixed a bug in the merge order of the dictionaries. This makes
a copy of the defaults dictionary and merges the section's dictionary
into it so that sections can override the defaults.
1998-01-26 22:42:48 +00:00
Guido van Rossum
3d20986d96 Checking in ConfigParser.py -- I don't see a reason why this can't be
liberated.  This was originally written by Ken and later revamped by
Barry.
1997-12-09 16:10:31 +00:00