Mercurial > libervia-backend
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