From: "Jauhien Piatlicki" <piatlicki@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/
Date: Thu, 1 Aug 2013 12:39:35 +0000 (UTC) [thread overview]
Message-ID: <1375360432.3768929c2b516df97e7d3d45ed41a44487f81790.jauhien@gentoo> (raw)
commit: 3768929c2b516df97e7d3d45ed41a44487f81790
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Thu Aug 1 12:33:52 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
CommitDate: Thu Aug 1 12:33:52 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=3768929c
g_sorcery/g_sorcery: Docstrings added
---
g_sorcery/package_db.py | 156 +++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 148 insertions(+), 8 deletions(-)
diff --git a/g_sorcery/package_db.py b/g_sorcery/package_db.py
index 35bad48..3f2993a 100644
--- a/g_sorcery/package_db.py
+++ b/g_sorcery/package_db.py
@@ -38,8 +38,6 @@ class PackageDB(object):
~~~~~~~~~~~~~~~~~
db dir
manifest.json: database manifest
- uri.json: URIes
- info.json: information about database
categories.json: information about categories
category1
packages.json: list of packages
@@ -113,8 +111,6 @@ class PackageDB(object):
"""
Args:
directory: database directory.
- repo_uri: Repository URI.
- db_uri: URI for synchronization with remote database.
"""
self.CATEGORIES_NAME = 'categories.json'
self.PACKAGES_NAME = 'packages.json'
@@ -462,6 +458,12 @@ class PackageDB(object):
return res
def list_catpkg_names(self):
+ """
+ List category/package entries.
+
+ Returns:
+ List with category/package entries.
+ """
return list(self.database)
def list_package_versions(self, category, name):
@@ -498,13 +500,13 @@ class PackageDB(object):
def get_package_description(self, package):
"""
- Get package description.
+ Get package ebuild data.
Args:
package: package_db.Package instance.
Returns:
- Dictionary with package description.
+ Dictionary with package ebuild data.
"""
#a possible exception should be catched in the caller
return self.database[package.category + '/' + package.name][package.version]
@@ -544,6 +546,29 @@ class DBGenerator(object):
self.package_db_class = package_db_class
def __call__(self, directory, repository, common_config=None, config=None, generate=True):
+ """
+ Get a package database.
+
+ A directory layout looks like:
+ backend directory
+ config.json
+ repo1 dir
+ config.json
+ db - directory with database
+ repo2 dir
+ config.json
+ db - directory with database
+
+ Args:
+ directory: Directory for package databases (backend directory).
+ repository: Repository name.
+ common_config: Backend config.
+ config: Repository config.
+ generate: Whether package tree should be generated.
+
+ Returns:
+ Package database.
+ """
db_path = os.path.join(directory, repository, "db")
pkg_db = self.package_db_class(db_path)
@@ -567,10 +592,28 @@ class DBGenerator(object):
return pkg_db
def generate_tree(self, pkg_db, common_config, config):
+ """
+ Generate package entries.
+
+ Args:
+ pkg_db: Package database.
+ common_config: Backend config.
+ config: Repository config.
+ """
data = self.download_data(common_config, config)
self.process_data(pkg_db, data, common_config, config)
def download_data(self, common_config, config):
+ """
+ Obtain data for database generation.
+
+ Args:
+ common_config: Backend config.
+ config: Repository config.
+
+ Returns:
+ Downloaded data.
+ """
uries = self.get_download_uries(common_config, config)
uries = self.decode_download_uries(uries)
data = {}
@@ -579,12 +622,47 @@ class DBGenerator(object):
return data
def process_uri(self, uri, data):
+ """
+ Download and parse data from a given URI.
+
+ Args:
+ uri: URI.
+ data: Data dictionary.
+ """
data.update(load_remote_file(**uri))
def get_download_uries(self, common_config, config):
+ """
+ Get uries to download from.
+
+ Args:
+ common_config: Backend config.
+ config: Repository config.
+
+ Returns:
+ List with URI entries.
+ Each entry has one of the following formats:
+ 1. String with URI.
+ 2. A dictionary with entries:
+ - uri: URI.
+ - parser: Parser to be applied to downloaded data.
+ - open_file: Whether parser accepts file objects.
+ - open_mode: Open mode for a downloaded file.
+ The only mandatory entry is uri.
+ """
return [config["repo_uri"]]
def decode_download_uries(self, uries):
+ """
+ Convert URI list with incomplete and string entries
+ into list with complete dictionary entries.
+
+ Args:
+ uries: List of URIes.
+
+ Returns:
+ List of URIes with dictionary entries.
+ """
decoded = []
for uri in uries:
decuri = {}
@@ -604,13 +682,45 @@ class DBGenerator(object):
decoded.append(decuri)
return decoded
- def parse_data(self):
- pass #todo: raise no implemeted or add some reasonable default
+ def parse_data(self, data_file):
+ """
+ Parse downloaded data.
+
+ Args:
+ data_file: File name of open file object.
+
+ Returns:
+ Parsed data.
+ """
+ raise NotImplementedError
def process_data(self, pkg_db, data, common_config, config):
+ """
+ Process downloaded data and fill database.
+
+ Args:
+ pkg_db: Package database.
+ data: Dictionary with data, keys are file names.
+ common_config; Backend config.
+ config: Repository config.
+ """
pass
def convert(self, configs, dict_name, value):
+ """
+ Convert a value using configs.
+ This function is aimed to be used for conversion
+ of values such as license or package names.
+
+ Args:
+ configs: List of configs.
+ dict_name: Name of a dictionary in config
+ that should be used for conversion.
+ value: Value to convert.
+
+ Returns:
+ Converted value.
+ """
result = value
for config in configs:
if config:
@@ -621,6 +731,18 @@ class DBGenerator(object):
return result
def convert_dependency(self, configs, dependency, external=True):
+ """
+ Convert dependency.
+
+ Args:
+ configs: List of configs.
+ dependency: Dependency to be converted.
+ external: Whether external deps should be keeped.
+
+ Returns:
+ Right dependency name or None if dependency is external and
+ external == False.
+ """
external_dep = ""
for config in configs:
if config:
@@ -637,12 +759,30 @@ class DBGenerator(object):
return self.convert_internal_dependency(configs, dependency)
def convert_internal_dependency(self, configs, dependency):
+ """
+ Hook to convert internal dependencies.
+ """
return dependency
def convert_external_dependency(self, configs, dependency):
+ """
+ Hook to convert external dependencies.
+ """
return dependency
def in_config(self, configs, list_name, value):
+ """
+ Check whether value is in config.
+
+ Args:
+ configs: List of configs.
+ list_name: Name of a list in config
+ that should be used for checking.
+ value: Value to look for.
+
+ Returns:
+ Boolean.
+ """
result = False
for config in configs:
if config:
next reply other threads:[~2013-08-01 12:39 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-01 12:39 Jauhien Piatlicki [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-02-24 18:02 [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/ Ulrich Müller
2015-08-18 18:59 Jauhien Piatlicki
2015-08-18 10:41 [gentoo-commits] proj/g-sorcery:dev " Jauhien Piatlicki
2015-08-18 10:42 ` [gentoo-commits] proj/g-sorcery:master " Jauhien Piatlicki
2015-04-22 7:35 Jauhien Piatlicki
2015-04-20 21:36 [gentoo-commits] proj/g-sorcery:dev " Jauhien Piatlicki
2015-04-22 7:35 ` [gentoo-commits] proj/g-sorcery:master " Jauhien Piatlicki
2014-11-24 14:25 [gentoo-commits] proj/g-sorcery:dev " Jauhien Piatlicki
2014-11-24 14:25 ` [gentoo-commits] proj/g-sorcery:master " Jauhien Piatlicki
2013-09-20 15:09 Jauhien Piatlicki
2013-09-19 23:21 Jauhien Piatlicki
2013-09-18 22:09 Jauhien Piatlicki
2013-09-16 15:05 Jauhien Piatlicki
2013-09-16 14:33 Jauhien Piatlicki
2013-09-16 14:33 Jauhien Piatlicki
2013-09-15 22:38 Jauhien Piatlicki
2013-09-15 18:08 Jauhien Piatlicki
2013-09-15 17:46 Jauhien Piatlicki
2013-09-15 17:46 Jauhien Piatlicki
2013-09-05 21:29 Jauhien Piatlicki
2013-09-04 23:52 Jauhien Piatlicki
2013-09-04 18:14 Jauhien Piatlicki
2013-09-04 18:03 Jauhien Piatlicki
2013-09-04 18:03 Jauhien Piatlicki
2013-09-04 13:37 Jauhien Piatlicki
2013-09-01 22:12 Jauhien Piatlicki
2013-08-12 0:36 Jauhien Piatlicki
2013-08-02 10:18 Jauhien Piatlicki
2013-08-01 15:58 Jauhien Piatlicki
2013-08-01 15:58 Jauhien Piatlicki
2013-08-01 15:58 Jauhien Piatlicki
2013-08-01 15:58 Jauhien Piatlicki
2013-08-01 15:58 Jauhien Piatlicki
2013-08-01 15:58 Jauhien Piatlicki
2013-08-01 12:55 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-08-01 12:39 Jauhien Piatlicki
2013-07-31 23:29 Jauhien Piatlicki
2013-07-23 23:13 Jauhien Piatlicki
2013-07-23 23:13 Jauhien Piatlicki
2013-07-19 14:44 Jauhien Piatlicki
2013-07-19 11:10 Jauhien Piatlicki
2013-07-18 17:26 Jauhien Piatlicki
2013-07-18 12:18 Jauhien Piatlicki
2013-07-18 12:18 Jauhien Piatlicki
2013-07-18 10:53 Jauhien Piatlicki
2013-07-17 17:05 Jauhien Piatlicki
2013-07-17 8:06 Jauhien Piatlicki
2013-07-16 23:09 Jauhien Piatlicki
2013-07-16 23:09 Jauhien Piatlicki
2013-07-15 17:20 Jauhien Piatlicki
2013-07-15 16:33 Jauhien Piatlicki
2013-07-15 0:18 Jauhien Piatlicki
2013-07-14 23:47 Jauhien Piatlicki
2013-07-13 23:35 Jauhien Piatlicki
2013-07-13 22:22 Jauhien Piatlicki
2013-07-13 15:12 Jauhien Piatlicki
2013-07-13 15:12 Jauhien Piatlicki
2013-07-04 20:24 Jauhien Piatlicki
2013-07-03 23:49 Jauhien Piatlicki
2013-07-03 23:49 Jauhien Piatlicki
2013-07-03 23:32 Jauhien Piatlicki
2013-07-03 22:54 Jauhien Piatlicki
2013-07-03 22:54 Jauhien Piatlicki
2013-07-03 22:54 Jauhien Piatlicki
2013-07-03 22:54 Jauhien Piatlicki
2013-07-03 22:54 Jauhien Piatlicki
2013-07-02 17:30 Jauhien Piatlicki
2013-07-02 12:39 Jauhien Piatlicki
2013-07-02 8:39 Jauhien Piatlicki
2013-07-01 0:07 Jauhien Piatlicki
2013-06-30 23:29 Jauhien Piatlicki
2013-06-29 14:16 Jauhien Piatlicki
2013-06-29 12:13 Jauhien Piatlicki
2013-06-29 12:13 Jauhien Piatlicki
2013-06-24 21:09 Jauhien Piatlicki
2013-06-24 21:09 Jauhien Piatlicki
2013-06-23 0:44 Jauhien Piatlicki
2013-06-23 0:44 Jauhien Piatlicki
2013-06-23 0:44 Jauhien Piatlicki
2013-06-20 23:44 Jauhien Piatlicki
2013-06-20 23:21 Jauhien Piatlicki
2013-06-20 22:53 Jauhien Piatlicki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1375360432.3768929c2b516df97e7d3d45ed41a44487f81790.jauhien@gentoo \
--to=piatlicki@gmail.com \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox