diff sat/tools/utils.py @ 2624:56f94936df1e

code style reformatting using black
author Goffi <goffi@goffi.org>
date Wed, 27 Jun 2018 20:14:46 +0200
parents 3e4e78de9cca
children 003b8b4b56a7
line wrap: on
line diff
--- a/sat/tools/utils.py	Wed Jun 27 07:51:29 2018 +0200
+++ b/sat/tools/utils.py	Wed Jun 27 20:14:46 2018 +0200
@@ -23,6 +23,7 @@
 import os.path
 from sat.core.constants import Const as C
 from sat.core.log import getLogger
+
 log = getLogger(__name__)
 import datetime
 from twisted.python import procutils
@@ -35,7 +36,7 @@
 import functools
 
 
-NO_REPOS_DATA = u'repository data unknown'
+NO_REPOS_DATA = u"repository data unknown"
 repos_cache_dict = None
 repos_cache = None
 
@@ -45,12 +46,15 @@
 
     remove special characters from unicode string
     """
+
     def valid_chars(unicode_source):
         for char in unicode_source:
-            if unicodedata.category(char) == 'Cc' and char!='\n':
+            if unicodedata.category(char) == "Cc" and char != "\n":
                 continue
             yield char
-    return ''.join(valid_chars(ustr))
+
+    return "".join(valid_chars(ustr))
+
 
 def partial(func, *fixed_args, **fixed_kwargs):
     # FIXME: temporary hack to workaround the fact that inspect.getargspec is not working with functools.partial
@@ -59,22 +63,27 @@
 
     ori_args = inspect.getargspec(func).args
     func = functools.partial(func, *fixed_args, **fixed_kwargs)
-    if ori_args[0] == 'self':
+    if ori_args[0] == "self":
         del ori_args[0]
-    ori_args = ori_args[len(fixed_args):]
+    ori_args = ori_args[len(fixed_args) :]
     for kw in fixed_kwargs:
         ori_args.remove(kw)
 
-    exec(textwrap.dedent('''\
+    exec(
+        textwrap.dedent(
+            """\
     def method({args}):
         return func({kw_args})
-    ''').format(
-        args = ', '.join(ori_args),
-        kw_args = ', '.join([a+'='+a for a in ori_args]))
-    , locals())
+    """
+        ).format(
+            args=", ".join(ori_args), kw_args=", ".join([a + "=" + a for a in ori_args])
+        ),
+        locals(),
+    )
 
     return method
 
+
 def xmpp_date(timestamp=None, with_time=True):
     """Return date according to XEP-0082 specification
 
@@ -86,8 +95,13 @@
     """
     template_date = u"%Y-%m-%d"
     template_time = u"%H:%M:%SZ"
-    template = u"{}T{}".format(template_date, template_time) if with_time else template_date
-    return datetime.datetime.utcfromtimestamp(time.time() if timestamp is None else timestamp).strftime(template)
+    template = (
+        u"{}T{}".format(template_date, template_time) if with_time else template_date
+    )
+    return datetime.datetime.utcfromtimestamp(
+        time.time() if timestamp is None else timestamp
+    ).strftime(template)
+
 
 def generatePassword(vocabulary=None, size=20):
     """Generate a password with random characters.
@@ -98,8 +112,11 @@
     """
     random.seed()
     if vocabulary is None:
-        vocabulary = [chr(i) for i in range(0x30,0x3A) + range(0x41,0x5B) + range (0x61,0x7B)]
-    return u''.join([random.choice(vocabulary) for i in range(15)])
+        vocabulary = [
+            chr(i) for i in range(0x30, 0x3A) + range(0x41, 0x5B) + range(0x61, 0x7B)
+        ]
+    return u"".join([random.choice(vocabulary) for i in range(15)])
+
 
 def getRepositoryData(module, as_string=True, is_path=False):
     """Retrieve info on current mecurial repository
@@ -133,11 +150,11 @@
             return repos_cache_dict
 
     if sys.platform == "android":
-        # FIXME: workaround to avoid trouble on android, need to be fixed properly
+        #  FIXME: workaround to avoid trouble on android, need to be fixed properly
         repos_cache = u"Cagou android build"
         return repos_cache
 
-    KEYS=("node", "node_short", "branch", "date", "tag", "distance")
+    KEYS = ("node", "node_short", "branch", "date", "tag", "distance")
     ori_cwd = os.getcwd()
 
     if is_path:
@@ -146,7 +163,7 @@
         repos_root = os.path.abspath(os.path.dirname(module.__file__))
 
     try:
-        hg_path = procutils.which('hg')[0]
+        hg_path = procutils.which("hg")[0]
     except IndexError:
         log.warning(u"Can't find hg executable")
         hg_path = None
@@ -155,18 +172,27 @@
     if hg_path is not None:
         os.chdir(repos_root)
         try:
-            hg_data_raw = subprocess.check_output(["hg","log", "-r", "-1", "--template","{node}\n"
-                                                                                        "{node|short}\n"
-                                                                                        "{branch}\n"
-                                                                                        "{date|isodate}\n"
-                                                                                        "{latesttag}\n"
-                                                                                        "{latesttagdistance}"])
+            hg_data_raw = subprocess.check_output(
+                [
+                    "hg",
+                    "log",
+                    "-r",
+                    "-1",
+                    "--template",
+                    "{node}\n"
+                    "{node|short}\n"
+                    "{branch}\n"
+                    "{date|isodate}\n"
+                    "{latesttag}\n"
+                    "{latesttagdistance}",
+                ]
+            )
         except subprocess.CalledProcessError:
             hg_data = {}
         else:
-            hg_data = dict(zip(KEYS, hg_data_raw.split('\n')))
+            hg_data = dict(zip(KEYS, hg_data_raw.split("\n")))
             try:
-                hg_data['modified'] = '+' in subprocess.check_output(["hg","id","-i"])
+                hg_data["modified"] = "+" in subprocess.check_output(["hg", "id", "-i"])
             except subprocess.CalledProcessError:
                 pass
     else:
@@ -180,9 +206,9 @@
         else:
             os.chdir(os.path.abspath(os.path.dirname(repos_root)))
         try:
-            with open('.hg/dirstate') as hg_dirstate:
-                hg_data['node'] = hg_dirstate.read(20).encode('hex')
-                hg_data['node_short'] = hg_data['node'][:12]
+            with open(".hg/dirstate") as hg_dirstate:
+                hg_data["node"] = hg_dirstate.read(20).encode("hex")
+                hg_data["node_short"] = hg_data["node"][:12]
         except IOError:
             log.debug(u"Can't access repository data")
 
@@ -193,25 +219,33 @@
         log.debug(u"Mercurial not available or working, trying package version")
         try:
             import pkg_resources
+
             pkg_version = pkg_resources.get_distribution(C.APP_NAME_FILE).version
-            version, local_id = pkg_version.split('+', 1)
+            version, local_id = pkg_version.split("+", 1)
         except ImportError:
             log.warning("pkg_resources not available, can't get package data")
         except pkg_resources.DistributionNotFound:
             log.warning("can't retrieve package data")
         except ValueError:
-            log.info(u"no local version id in package: {pkg_version}".format(pkg_version=pkg_version))
+            log.info(
+                u"no local version id in package: {pkg_version}".format(
+                    pkg_version=pkg_version
+                )
+            )
         else:
-            version = version.replace('.dev0', 'D')
+            version = version.replace(".dev0", "D")
             if version != C.APP_VERSION:
-                log.warning("Incompatible version ({version}) and pkg_version ({pkg_version})".format(
-                    version=C.APP_VERSION, pkg_version=pkg_version))
+                log.warning(
+                    "Incompatible version ({version}) and pkg_version ({pkg_version})".format(
+                        version=C.APP_VERSION, pkg_version=pkg_version
+                    )
+                )
             else:
                 try:
-                    hg_node, hg_distance = local_id.split('.')
+                    hg_node, hg_distance = local_id.split(".")
                 except ValueError:
                     log.warning("Version doesn't specify repository data")
-                hg_data = {'node_short': hg_node, 'distance': hg_distance}
+                hg_data = {"node_short": hg_node, "distance": hg_distance}
 
     repos_cache_dict = hg_data
 
@@ -219,21 +253,21 @@
         if not hg_data:
             repos_cache = NO_REPOS_DATA
         else:
-            strings = [u'rev', hg_data['node_short']]
+            strings = [u"rev", hg_data["node_short"]]
             try:
-                if hg_data['modified']:
+                if hg_data["modified"]:
                     strings.append(u"[M]")
             except KeyError:
                 pass
             try:
-                strings.extend([u'({branch} {date})'.format(**hg_data)])
+                strings.extend([u"({branch} {date})".format(**hg_data)])
             except KeyError:
                 pass
             try:
-                strings.extend([u'+{distance}'.format(**hg_data)])
+                strings.extend([u"+{distance}".format(**hg_data)])
             except KeyError:
                 pass
-            repos_cache = u' '.join(strings)
+            repos_cache = u" ".join(strings)
         return repos_cache
     else:
         return hg_data