Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/
Date: Fri, 01 Jun 2012 21:29:09
Message-Id: 1338567419.2ff1d2399d0d6fb40823546170295f24105d7189.bacher09@gentoo
1 commit: 2ff1d2399d0d6fb40823546170295f24105d7189
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Fri Jun 1 16:16:59 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Fri Jun 1 16:16:59 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=2ff1d239
7
8 Layer for work with herds.
9
10 ---
11 gpackages/libs/herds.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++
12 1 files changed, 51 insertions(+), 0 deletions(-)
13
14 diff --git a/gpackages/libs/herds.py b/gpackages/libs/herds.py
15 new file mode 100644
16 index 0000000..c123814
17 --- /dev/null
18 +++ b/gpackages/libs/herds.py
19 @@ -0,0 +1,51 @@
20 +try:
21 + import xml.etree.cElementTree as etree
22 +except (ImportError, SystemError):
23 + import xml.etree.ElementTree as etree
24 +
25 +
26 +def _gen_func(name):
27 + return lambda self: getattr(self, name)
28 +
29 +class AbstarctXmlObject(object):
30 + attrs = ()
31 +
32 + def __new__(cls, *args, **kwargs):
33 + for val in cls.attrs:
34 + setattr(cls, val, property(_gen_func('_'+val)))
35 + ins = super(AbstarctXmlObject, cls).__new__(cls, *args, **kwargs)
36 + #attrs = getattr(ins, 'attrs')
37 + return ins
38 +
39 + def __init__(self, xml_object):
40 + for val in self.attrs:
41 + obj_xml = xml_object.find(val)
42 + setattr(self, '_' + val, None)
43 + if obj_xml is not None:
44 + setattr(self, '_' + val, obj_xml.text)
45 +
46 +class Maintainer(AbstarctXmlObject):
47 + attrs = ('name', 'email', 'role')
48 +
49 +class Herd(AbstarctXmlObject):
50 + # create name, email and description property
51 + attrs = ('name', 'email', 'description')
52 +
53 + def __init__(self, xml_object):
54 + super(Herd, self).__init__(xml_object)
55 + self._iter_maintainer = xml_object.iterfind('maintainer')
56 +
57 + def iter_mainteiner(self):
58 + for maintainer_tree in self._iter_maintainer:
59 + yield Maintainer(maintainer_tree)
60 +
61 +
62 +class Herds(object):
63 + def __init__(self, herd_path='/usr/portage/metadata/herds.xml'):
64 + self._herd_path = herd_path
65 + self._herd_parse = etree.parse(herd_path)
66 + self._iter_herd = self._herd_parse.iterfind('herd')
67 +
68 + def iter_herd(self):
69 + for herd_tree in self._iter_herd:
70 + yield Herd(herd_tree)