ConfigParser

Discussion in 'Python' started by Manlio Perillo, Nov 10, 2004.

  1. Regards.

    Since sections in CongiParser files are delimited by [ and ], why
    there is not an escape (and unescape) function for escaping
    &, [, and ] characters to &, [ and ] ?




    Thanks Manlio Perillo
    Manlio Perillo, Nov 10, 2004
    #1
    1. Advertising

  2. Manlio Perillo

    Ivo Woltring Guest

    On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    <> wrote:

    >Regards.
    >
    >Since sections in CongiParser files are delimited by [ and ], why
    >there is not an escape (and unescape) function for escaping
    >&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >
    >
    >
    >
    >Thanks Manlio Perillo


    just subclass from ConfigParser and add the functionality youself

    somthing like:
    === cut here ===
    from ConfigParser import ConfigParser
    class MyConfigParser(ConfigParser):
    def get(self, section, option, raw=False, vars=None): # override
    the get() method of super
    """get(section, option, [raw=False], [vars=None]) --> String"""
    repl = [('&lbrack;','['),
    ('&rbrack;',']'),
    ] # extent as
    much as U like
    t = ConfigParser.get(self, section, option, raw, vars) # call the
    get of super
    for x,y in repl: t=t.replace(x,y) # do the
    replace stuff
    return t

    if __name__=="__main__":
    """test"""
    import os
    open('test.$$$','w').write('[test]\nopt1=Hello&lbrack;Ivo
    Woltring&rbrack;\n')
    ini = MyConfigParser()
    ini.read('test.$$$')
    print ini.get('test', 'opt1')
    os.unlink('test.$$$')
    === End Cut ===

    you can ofcourse do this in reverse for the write function so as not
    to have to write the &lbrack; etc. yourself.

    Cheerz,
    Ivo Woltring
    Ivo Woltring, Nov 10, 2004
    #2
    1. Advertising

  3. Manlio Perillo

    Ivo Woltring Guest

    Re: ConfigParser - MyConfigParser.py (0/1)

    On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    <> wrote:

    >Regards.
    >
    >Since sections in CongiParser files are delimited by [ and ], why
    >there is not an escape (and unescape) function for escaping
    >&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >
    >
    >
    >
    >Thanks Manlio Perillo



    Next try with attachment MyConfigParser.py
    Just save and run to see
    Cheerz,
    Ivo.
    Ivo Woltring, Nov 10, 2004
    #3
  4. On Wed, 10 Nov 2004 15:39:42 +0100, Ivo Woltring <>
    wrote:

    >On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    ><> wrote:
    >
    >>Regards.
    >>
    >>Since sections in CongiParser files are delimited by [ and ], why
    >>there is not an escape (and unescape) function for escaping
    >>&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >>
    >>
    >>
    >>
    >>Thanks Manlio Perillo

    >
    >just subclass from ConfigParser and add the functionality youself
    >



    Actually I have written two functions:

    def escape(data):
    """Escape &, [ and ] a string of data.
    """
    data = data.replace("&", "&amp;")
    data = data.replace("[", "&lbrack;")
    data = data.replace("]", "&rbrack;")

    return data

    def unescape(data):
    """Unescape &amp;, &lt;, and &gt; in a string of data.
    """
    data = data.replace("&lbrack;", "[")
    data = data.replace("&rbrack;", "]")

    # must do ampersand last
    return data.replace("&amp;", "&")


    Maybe also '\n' to &nl; translation should be performed.




    Thanks and regards Manlio Perillo
    Manlio Perillo, Nov 10, 2004
    #4
  5. Manlio Perillo

    Ivo Woltring Guest

    On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    <> wrote:

    >Regards.
    >
    >Since sections in CongiParser files are delimited by [ and ], why
    >there is not an escape (and unescape) function for escaping
    >&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >
    >
    >
    >
    >Thanks Manlio Perillo


    By the way I did some testing because i have a similar thing going on
    right now. I found out that

    [section]
    option = [Ivo Woltring]

    is valid and does not have to be translated to
    [section]
    option = &lbrack;Ivo Woltring&rbrack;

    to work.


    so my current class is a bit unnessesary:

    #
    # IniFile extents the ConfigParser with my own functions
    #
    __author__ = "Ivo Woltring"
    __version__ = "01.00"
    __copyright__ = "Copyright (c) 2004 Ivo Woltring"
    __license__ = "Python"

    from ConfigParser import *

    class IniFile(ConfigParser):
    """IniFile
    Is an extention on the ConfigParser class.
    It overrulles the write method so it can write directly to a file
    provided as
    a parameter. The whole filehandling is done by the IniFile.write(fp)
    method.
    """
    def __init__(self, defaults=None):
    ConfigParser.__init__(self, defaults) # supers init
    self.replace = [('&lbrack;','['),
    ('&rbrack;',']'),
    ]

    def write(self,fp):
    """write(filename) --> written file"""
    try:
    f = open(fp,'w')
    except IOError:
    raise IOError
    #ConfigParser.write(self,f)
    self._write(f)
    f.close()

    def _replace(self, txt ,reverse=False):
    """Replace the self.replace stuff"""
    for source, target in self.replace:
    if reverse: txt=txt.replace(target, source)
    else: txt=txt.replace(source, target)
    return txt

    def get(self, section, option, raw=False, vars=None): # override
    the get() method of super
    """get(section, option, [raw=False], [vars=None]) --> String
    this get() is an extention on the origional ConfigParser.get()
    This one translates html style '&lbrack;' to '[' etc.
    """
    if raw:
    return ConfigParser.get(self, section, option, raw, vars) # call
    the get of super
    return self._replace(ConfigParser.get(self, section, option, raw,
    vars))

    def _write(self, fp):
    """Write an .ini-format representation of the configuration
    state."""
    if self._defaults:
    fp.write("[%s]\n" % DEFAULTSECT)
    for (key, value) in self._defaults.items():
    fp.write("%s = %s\n" %
    (key, self._replace(str(value).replace('\n',
    '\n\t'), reverse=True)))
    fp.write("\n")
    for section in self._sections:
    fp.write("[%s]\n" % section)
    for (key, value) in self._sections[section].items():
    if key != "__name__":
    fp.write("%s = %s\n" %
    (key,
    self._replace(str(value).replace('\n', '\n\t'), reverse=True)))
    fp.write("\n")



    if __name__=="__main__":
    import sys,os
    p = IniFile()
    p.add_section('section')
    p.set('section','option','[Ivo Woltring]')
    p.write(os.path.splitext(sys.argv[0])[0]+'.ini')
    print p.get('section','option')
    print p.get('section','option', raw=True)
    raw_input('Press enter to continue...')


    have fun... I do,

    Cheerz, Ivo.
    Ivo Woltring, Nov 10, 2004
    #5
  6. Manlio Perillo

    Ivo Woltring Guest

    On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    <> wrote:

    >Regards.
    >
    >Since sections in CongiParser files are delimited by [ and ], why
    >there is not an escape (and unescape) function for escaping
    >&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >
    >
    >
    >
    >Thanks Manlio Perillo


    another discovery:

    the get() DOES translate &lbrack; etc back to '[' etc, so it seameth
    to me that the whole question is mute ;-))

    Ivo.
    Ivo Woltring, Nov 10, 2004
    #6
  7. Manlio Perillo

    Ivo Woltring Guest

    Re: ConfigParser - IniFile.py (0/1)

    Damn I made a mistake...
    The translation IS needed (so sorry ;-(()

    here a functional class:
    Ivo Woltring, Nov 10, 2004
    #7
  8. Manlio Perillo

    Paul McGuire Guest

    "Ivo Woltring" <> wrote in message
    news:...
    > <snip>
    > ...the whole question is mute ;-))
    >
    > Ivo.


    The word you are looking for is "moot", not "mute" - this is actually a
    common word misuse (known as a "malapropism") even for native English
    speakers. :)

    Pedantical-ly yours,
    -- Paul
    Paul McGuire, Nov 10, 2004
    #8
  9. On Wed, 10 Nov 2004 21:04:55 +0100, Ivo Woltring <>
    wrote:

    >On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    ><> wrote:
    >
    >>Regards.
    >>
    >>Since sections in CongiParser files are delimited by [ and ], why
    >>there is not an escape (and unescape) function for escaping
    >>&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >>
    >>
    >>
    >>
    >>Thanks Manlio Perillo

    >
    >By the way I did some testing because i have a similar thing going on
    >right now. I found out that
    >
    >[section]
    >option = [Ivo Woltring]
    >
    >is valid and does not have to be translated to
    >[section]
    >option = &lbrack;Ivo Woltring&rbrack;
    >


    Yes, I have discovered this too.
    But my problem is with section names.



    Thanks and regards Manlio Perillo
    Manlio Perillo, Nov 10, 2004
    #9
  10. On Wed, 10 Nov 2004 21:09:39 +0100, Ivo Woltring <>
    wrote:

    >On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    ><> wrote:
    >
    >>Regards.
    >>
    >>Since sections in CongiParser files are delimited by [ and ], why
    >>there is not an escape (and unescape) function for escaping
    >>&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >>
    >>
    >>
    >>
    >>Thanks Manlio Perillo

    >
    >another discovery:
    >
    >the get() DOES translate &lbrack; etc back to '[' etc, so it seameth
    >to me that the whole question is mute ;-))
    >



    What version are you using?
    In Python 2.3.3 get does not handles &lbrack; (or I did not understand
    what you are saying).



    Thanks and regards Manlio Perillo
    Manlio Perillo, Nov 10, 2004
    #10
  11. Manlio Perillo

    Ivo Woltring Guest

    On Wed, 10 Nov 2004 21:18:20 GMT, "Paul McGuire"
    <._bogus_.com> wrote:

    >"Ivo Woltring" <> wrote in message
    >news:...
    >> <snip>
    >> ...the whole question is mute ;-))
    >>
    >> Ivo.

    >
    >The word you are looking for is "moot", not "mute" - this is actually a
    >common word misuse (known as a "malapropism") even for native English
    >speakers. :)
    >
    >Pedantical-ly yours,
    >-- Paul
    >


    Thanks for the English lesson. I am not a native English though. I'm
    Dutch.
    Ivo Woltring, Nov 11, 2004
    #11
  12. Manlio Perillo

    Ivo Woltring Guest

    On Wed, 10 Nov 2004 22:37:50 GMT, Manlio Perillo
    <> wrote:

    >On Wed, 10 Nov 2004 21:09:39 +0100, Ivo Woltring <>
    >wrote:
    >
    >>On Wed, 10 Nov 2004 10:39:27 GMT, Manlio Perillo
    >><> wrote:
    >>
    >>>Regards.
    >>>
    >>>Since sections in CongiParser files are delimited by [ and ], why
    >>>there is not an escape (and unescape) function for escaping
    >>>&, [, and ] characters to &amp;, &lbrack; and &rbrack; ?
    >>>
    >>>
    >>>
    >>>
    >>>Thanks Manlio Perillo

    >>
    >>another discovery:
    >>
    >>the get() DOES translate &lbrack; etc back to '[' etc, so it seameth
    >>to me that the whole question is mute ;-))
    >>

    >
    >
    >What version are you using?
    >In Python 2.3.3 get does not handles &lbrack; (or I did not understand
    >what you are saying).
    >
    >
    >
    >Thanks and regards Manlio Perillo


    You are absolutely right. My 'bad'. I made a mistake in my test.
    I posted a correction yesterday, but my attachements don't seem to get
    thru.

    below my current class:

    http://ivonet.nl/cgi-bin/py2html.py?FileID=11

    Be patient my connection is not all that fast.
    cheerz,
    Ivo
    Ivo Woltring, Nov 11, 2004
    #12
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Greg Krohn

    Subclassing ConfigParser

    Greg Krohn, Aug 21, 2003, in forum: Python
    Replies:
    2
    Views:
    495
    Greg Krohn
    Aug 24, 2003
  2. Martin Maney

    ConfigParser: buggy or just a mess?

    Martin Maney, Oct 24, 2003, in forum: Python
    Replies:
    1
    Views:
    380
    David Goodger
    Oct 24, 2003
  3. Matthew Wilson
    Replies:
    1
    Views:
    866
    Jarek Zgoda
    Nov 23, 2003
  4. Roy H. Berger

    Subclassing ConfigParser question

    Roy H. Berger, Nov 25, 2003, in forum: Python
    Replies:
    2
    Views:
    503
    Gary Richardson
    Nov 26, 2003
  5. Replies:
    3
    Views:
    427
Loading...

Share This Page