Gentoo Archives: gentoo-commits

From: Jauhien Piatlicki <piatlicki@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, gs_elpa/
Date: Thu, 01 Aug 2013 15:58:27
Message-Id: 1375372223.d5afd085adb6a635e9f9dabeef86b941e947ea56.jauhien@gentoo
1 commit: d5afd085adb6a635e9f9dabeef86b941e947ea56
2 Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
3 AuthorDate: Thu Aug 1 15:50:23 2013 +0000
4 Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
5 CommitDate: Thu Aug 1 15:50:23 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=d5afd085
7
8 ELPA backend: Docstrings snd different fixes
9
10 ---
11 g_sorcery/package_db.py | 3 ++-
12 gs_elpa/backend.py | 9 +++++++--
13 gs_elpa/ebuild.py | 17 +++++++++++-----
14 gs_elpa/elpa_db.py | 54 ++++++++++++++++++++++++++++++++++++++++---------
15 gs_elpa/fileutils.py | 12 -----------
16 5 files changed, 66 insertions(+), 29 deletions(-)
17
18 diff --git a/g_sorcery/package_db.py b/g_sorcery/package_db.py
19 index e97ee15..f8ba1a2 100644
20 --- a/g_sorcery/package_db.py
21 +++ b/g_sorcery/package_db.py
22 @@ -698,7 +698,8 @@ class DBGenerator(object):
23 Returns:
24 Parsed data.
25 """
26 - raise NotImplementedError
27 + #todo: implement reasonable default
28 + pass
29
30 def process_data(self, pkg_db, data, common_config, config):
31 """
32
33 diff --git a/gs_elpa/backend.py b/gs_elpa/backend.py
34 index cad82c9..259fab6 100644
35 --- a/gs_elpa/backend.py
36 +++ b/gs_elpa/backend.py
37 @@ -19,14 +19,19 @@ from g_sorcery.eclass import EclassGenerator
38 from g_sorcery.fileutils import get_pkgpath
39
40 from .elpa_db import ElpaDBGenerator
41 -from .ebuild import ElpaEbuildWithDigestGenerator, ElpaEbuildWithoutDigestGenerator
42 +from .ebuild import ElpaEbuildWithDigestGenerator, \
43 + ElpaEbuildWithoutDigestGenerator
44
45
46 class ElpaEclassGenerator(EclassGenerator):
47 + """
48 + Implementation of eclass generator. Only specifies a data directory.
49 + """
50 def __init__(self):
51 super(ElpaEclassGenerator, self).__init__(os.path.join(get_pkgpath(__file__), 'data'))
52 -
53
54 +
55 +#Backend instance to be loaded by g_sorcery
56 instance = Backend(ElpaDBGenerator,
57 ElpaEbuildWithDigestGenerator, ElpaEbuildWithoutDigestGenerator,
58 ElpaEclassGenerator, MetadataGenerator)
59
60 diff --git a/gs_elpa/ebuild.py b/gs_elpa/ebuild.py
61 index 895ae5b..e7fd502 100644
62 --- a/gs_elpa/ebuild.py
63 +++ b/gs_elpa/ebuild.py
64 @@ -12,16 +12,18 @@
65 """
66
67 import collections
68 -import os
69
70 from g_sorcery.ebuild import DefaultEbuildGenerator
71 -from g_sorcery.fileutils import get_pkgpath
72
73 Layout = collections.namedtuple("Layout",
74 - ["vars_before_inherit", "inherit", "vars_after_description", "vars_after_keywords"])
75 + ["vars_before_inherit", "inherit",
76 + "vars_after_description", "vars_after_keywords"])
77
78
79 class ElpaEbuildWithDigestGenerator(DefaultEbuildGenerator):
80 + """
81 + Implementation of ebuild generator with sources digesting.
82 + """
83 def __init__(self, package_db):
84
85 vars_before_inherit = \
86 @@ -35,11 +37,15 @@ class ElpaEbuildWithDigestGenerator(DefaultEbuildGenerator):
87 vars_after_keywords = \
88 ["depend", "rdepend"]
89
90 - layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords)
91 + layout = Layout(vars_before_inherit,
92 + inherit, vars_after_description, vars_after_keywords)
93
94 super(ElpaEbuildWithDigestGenerator, self).__init__(package_db, layout)
95
96 class ElpaEbuildWithoutDigestGenerator(DefaultEbuildGenerator):
97 + """
98 + Implementation of ebuild generator without sources digesting.
99 + """
100 def __init__(self, package_db):
101
102 vars_before_inherit = \
103 @@ -53,6 +59,7 @@ class ElpaEbuildWithoutDigestGenerator(DefaultEbuildGenerator):
104 vars_after_keywords = \
105 ["depend", "rdepend"]
106
107 - layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords)
108 + layout = Layout(vars_before_inherit, inherit,
109 + vars_after_description, vars_after_keywords)
110
111 super(ElpaEbuildWithoutDigestGenerator, self).__init__(package_db, layout)
112
113 diff --git a/gs_elpa/elpa_db.py b/gs_elpa/elpa_db.py
114 index 586d02a..b7ffefb 100644
115 --- a/gs_elpa/elpa_db.py
116 +++ b/gs_elpa/elpa_db.py
117 @@ -11,11 +11,9 @@
118 :license: GPL-2, see LICENSE for more details.
119 """
120
121 -import os
122 -
123 import sexpdata
124
125 -from g_sorcery.compatibility import py2k, TemporaryDirectory
126 +from g_sorcery.compatibility import py2k
127
128 if py2k:
129 from urlparse import urljoin
130 @@ -27,16 +25,40 @@ from g_sorcery.package_db import DBGenerator
131 from g_sorcery.exceptions import SyncError
132
133 class ElpaDBGenerator(DBGenerator):
134 + """
135 + Implementation of database generator for ELPA backend.
136 + """
137 def get_download_uries(self, common_config, config):
138 + """
139 + Download database file from REPO_URI/archive-contents
140 + and parse it with sexpdata.
141 +
142 + Args:
143 + common_config: Backend config.
144 + config: Repository config.
145 +
146 + Returns:
147 + List with one URI entry.
148 + """
149 ac_uri = urljoin(config["repo_uri"], 'archive-contents')
150 return [{"uri" : ac_uri, "parser" : sexpdata.load}]
151
152 def process_data(self, pkg_db, data, common_config, config):
153 + """
154 + Process downloaded and parsed data and generate tree.
155 +
156 + Args:
157 + pkg_db: Package database.
158 + data: Dictionary with data, keys are file names.
159 + common_config; Backend config.
160 + config: Repository config.
161 + """
162 archive_contents = data['archive-contents']
163 repo_uri = config["repo_uri"]
164
165 if sexpdata.car(archive_contents) != 1:
166 - raise SyncError('sync failed: ' + repo_uri + ' bad archive contents format')
167 + raise SyncError('sync failed: ' \
168 + + repo_uri + ' bad archive contents format')
169
170 pkg_db.add_category('app-emacs')
171
172 @@ -49,7 +71,7 @@ class ElpaDBGenerator(DBGenerator):
173 INFO_SRC_TYPE = 3
174
175 DEP_NAME = 0
176 - DEP_VERSION = 1
177 + #DEP_VERSION = 1 #we do not use it at the moment
178
179 for entry in sexpdata.cdr(archive_contents):
180 desc = entry[PKG_INFO].value()
181 @@ -58,18 +80,21 @@ class ElpaDBGenerator(DBGenerator):
182 if self.in_config([common_config, config], "exclude", realname):
183 continue
184
185 - pkg = Package("app-emacs", realname, '.'.join(map(str, desc[INFO_VERSION])))
186 + pkg = Package("app-emacs", realname,
187 + '.'.join(map(str, desc[INFO_VERSION])))
188 source_type = desc[INFO_SRC_TYPE].value()
189
190 - allowed_ords = set(range(ord('a'), ord('z'))) | set(range(ord('A'), ord('Z'))) | \
191 - set(range(ord('0'), ord('9'))) | set(list(map(ord,
192 + allowed_ords = set(range(ord('a'), ord('z'))) \
193 + | set(range(ord('A'), ord('Z'))) | \
194 + set(range(ord('0'), ord('9'))) | set(list(map(ord,
195 ['+', '_', '-', ' ', '.', '(', ')', '[', ']', '{', '}', ','])))
196 description = "".join([x for x in desc[INFO_DESCRIPTION] if ord(x) in allowed_ords])
197
198 deps = desc[INFO_DEPENDENCIES]
199 dependencies = serializable_elist(separator="\n\t")
200 for dep in deps:
201 - dep = self.convert_dependency([common_config, config], dep[DEP_NAME].value(), external = False)
202 + dep = self.convert_dependency([common_config, config],
203 + dep[DEP_NAME].value(), external = False)
204 if dep:
205 dependencies.append(dep)
206
207 @@ -91,4 +116,15 @@ class ElpaDBGenerator(DBGenerator):
208 pkg_db.add_package(pkg, properties)
209
210 def convert_internal_dependency(self, configs, dependency):
211 + """
212 + At the moment we have only internal dependencies, each of them
213 + is just a package name.
214 +
215 + Args:
216 + configs: Backend and repo configs.
217 + dependency: Package name.
218 +
219 + Returns:
220 + Dependency instance with category="app-emacs", package="dependency".
221 + """
222 return Dependency("app-emacs", dependency)
223
224 diff --git a/gs_elpa/fileutils.py b/gs_elpa/fileutils.py
225 deleted file mode 100644
226 index 035274c..0000000
227 --- a/gs_elpa/fileutils.py
228 +++ /dev/null
229 @@ -1,12 +0,0 @@
230 -#!/usr/bin/env python
231 -# -*- coding: utf-8 -*-
232 -
233 -"""
234 - fileutils.py
235 - ~~~~~~~~~~~~
236 -
237 - file utilities
238 -
239 - :copyright: (c) 2013 by Jauhien Piatlicki
240 - :license: GPL-2, see LICENSE for more details.
241 -"""