public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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:


             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