1from ConfigParser import SafeConfigParser
2
3class Configuration:
4    def __init__(self, fileName):
5        cp = SafeConfigParser()
6        cp.read(fileName)
7        self.__parser = cp
8        self.fileName = fileName
9
10    def __getattr__(self, name):
11        if name in self.__parser.sections():
12            return Section(name, self.__parser)
13        else:
14            return None
15
16    def __str__(self):
17        p = self.__parser
18        result = []
19        result.append('<Configuration from %s>' % self.fileName)
20        for s in p.sections():
21            result.append('[%s]' % s)
22            for o in p.options(s):
23                result.append('%s=%s' % (o, p.get(s, o)))
24        return '\n'.join(result)
25
26class Section:
27    def __init__(self, name, parser):
28        self.name = name
29        self.__parser = parser
30
31    def __getattr__(self, name):
32        return self.__parser.get(self.name, name)
33
34    def __str__(self):
35        return str(self.__repr__())
36
37    def __repr__(self):
38        return self.__parser.items(self.name)
39
40    def getboolean(self, name):
41        return self.__parser.getboolean(self.name, name)
42
43    def __contains__(self, name):
44        return self.__parser.has_option(self.name, name)
45
46    def get(self, name, default):
47        if name in self:
48            return self.__getattr__(name)
49        else:
50            return default
51
52    def set(self, name, value):
53        self.__parser.set(self.name, name, str(value))
54
55# Test
56if __name__ == '__main__':
57    c = Configuration('Importador.ini')
58    print c.Origem.host, c.Origem.port
59