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/package_info/, gpackages/libs/package_info/generic_metadata/
Date: Sun, 24 Jun 2012 23:21:17
Message-Id: 1340476456.8af7afacb90d8b7e787e986110ed7947dee53115.bacher09@gentoo
1 commit: 8af7afacb90d8b7e787e986110ed7947dee53115
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Sat Jun 23 18:34:16 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Sat Jun 23 18:34:16 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=8af7afac
7
8 Changes in package_metadata, not it not requre gentoolkit
9
10 ---
11 .../libs/package_info/generic_metadata/herds.py | 4 +-
12 .../generic_metadata/package_metadata.py | 70 ++++++++++++++++----
13 gpackages/libs/package_info/mixins.py | 12 ++--
14 3 files changed, 65 insertions(+), 21 deletions(-)
15
16 diff --git a/gpackages/libs/package_info/generic_metadata/herds.py b/gpackages/libs/package_info/generic_metadata/herds.py
17 index dd698dd..25e738a 100644
18 --- a/gpackages/libs/package_info/generic_metadata/herds.py
19 +++ b/gpackages/libs/package_info/generic_metadata/herds.py
20 @@ -35,7 +35,7 @@ class Maintainer(AbstractXmlObject, ToStrMixin):
21 - email -- maintainer email
22 - role -- maintainer role
23 """
24 - attrs = ('name', 'email', 'role')
25 + attrs = ('name', 'email', 'role', 'description')
26
27 def __init__(self, *args, **kwargs):
28 super(Maintainer, self).__init__(*args, **kwargs)
29 @@ -116,7 +116,7 @@ class Herds(ToStrMixin):
30 defaultdict(list) with maintainer object as key, and list of herds
31 as value.
32 Example:
33 - {'<Maintainers example@g.o>': ['mozilla','base'], ...}
34 + {'<Maintainer example@g.o>': ['mozilla','base'], ...}
35 """
36 if self._maintainers_dict is not None:
37 return self._maintainers_dict
38
39 diff --git a/gpackages/libs/package_info/generic_metadata/package_metadata.py b/gpackages/libs/package_info/generic_metadata/package_metadata.py
40 index e89d387..704a590 100644
41 --- a/gpackages/libs/package_info/generic_metadata/package_metadata.py
42 +++ b/gpackages/libs/package_info/generic_metadata/package_metadata.py
43 @@ -1,23 +1,65 @@
44 from __future__ import absolute_import
45 -from gentoolkit.metadata import MetaData
46 from ..generic import ToStrMixin
47 +#XML
48 +from .my_etree import etree
49 +# Maintainers
50 +from .herds import Maintainer
51
52 -class FakeMetaData(ToStrMixin):
53 +class PackageMetaData(ToStrMixin):
54
55 - def herds(self):
56 - return []
57 + def __init__(self, metadata_path):
58 + self._metadata_path = metadata_path
59 + self.descr = {'en': None}
60 + self._herds = ()
61 + self._maintainers = ()
62 + try:
63 + self._metadata_xml = etree.parse(metadata_path)
64 + except IOError:
65 + pass
66 + else:
67 + self._parse_all()
68
69 - def maintainers(self):
70 - return []
71 + def _parse_all(self):
72 + self._parse_herds()
73 + self._parse_description()
74 + self._parse_maintainers()
75 +
76 + def _parse_herds(self):
77 + herd_set = set()
78 + for herd in self._metadata_xml.iterfind('herd'):
79 + herd_set.add(herd.text)
80 + self._herds = tuple(herd_set)
81 +
82 + def _parse_description(self):
83 + for descr in self._metadata_xml.iterfind('longdescription'):
84 + lang = descr.attrib.get('lang', 'en')
85 + self.descr[lang] = descr.text
86 +
87 + def iter_mainteiner(self):
88 + for maintainer_tree in self._metadata_xml.iterfind('maintainer'):
89 + yield Maintainer(maintainer_tree)
90 +
91 + def _parse_maintainers(self):
92 + maintainers = set()
93 + for maintainer in self.iter_mainteiner():
94 + maintainers.add(maintainer)
95 + self._maintainers = tuple(maintainers)
96 +
97 + @property
98 + def description(self):
99 + return self.descr['en']
100
101 def descriptions(self):
102 - return []
103 + return self.descr.values()
104 +
105 + def descriptions_dict(self):
106 + return self.descr
107 +
108 + def herds(self):
109 + return self._herds
110 +
111 + def maintainers(self):
112 + return self._maintainers
113
114 def __unicode__(self):
115 - return 'fake'
116 -
117 -def PackageMetaData(path):
118 - try:
119 - return MetaData(path)
120 - except IOError:
121 - return FakeMetaData()
122 + return self._metadata_path
123
124 diff --git a/gpackages/libs/package_info/mixins.py b/gpackages/libs/package_info/mixins.py
125 index eedd1d7..92188ed 100644
126 --- a/gpackages/libs/package_info/mixins.py
127 +++ b/gpackages/libs/package_info/mixins.py
128 @@ -149,13 +149,15 @@ class PackageBaseMixin(ToStrMixin):
129 def descriptions(self):
130 return self.metadata.descriptions()
131
132 - @property
133 + @cached_property
134 def description(self):
135 "Return first description in package metadata.xml"
136 - if len(self.descriptions)>0:
137 - return self.descriptions[0]
138 - else:
139 - return None
140 + return self.metadata.description
141 +
142 + @cached_property
143 + def descriptions_dict(self):
144 + return self.metadata.descriptions_dict()
145 +
146 @property
147 def cp(self):
148 raise NotImplementedError