utils
1import math 2import sys 3import re 4from src.constants import help_string, the 5 6 7def checknum(s): 8 """ 9 Function to check if s can be converted to float 10 :param s: 11 :return: Boolean 12 """ 13 try: 14 float(s) 15 return True 16 except: 17 return False 18 19 20def coerce(s): 21 def fun(s1): 22 if s1 == "True": 23 return True 24 if s1 == "False": 25 return False 26 return s1 27 28 return float(s) if checknum(s) else None or fun(s.split()[0]) 29 30 31def cli(): 32 args = sys.argv 33 for slot, v in the.items(): 34 v = str(v) 35 for i in range(len(args)): 36 if args[i] == "-" + slot[0] or args[i] == "--" + slot: 37 v = (v == "False" and "True") or (v == "True" and "False") or args[i + 1] 38 the[slot] = coerce(v) 39 if the['help']: 40 exit(print("\n" + help_string + "\n")) 41 return the 42 43 44def rogues(): # ToDo 45 return NotImplementedError 46 47 48def init_the(): 49 def func(v): 50 the[v.group(1)] = coerce(v.group(2)) 51 52 pattern = re.compile(r"[-][\S]+[\s]+[-][-]([\S]+)[^\n]+= ([\S]+)") 53 for match in pattern.finditer(help_string): 54 # extract words 55 func(match) 56 57 58def csv(fname, fun): 59 sep = "," 60 with open(fname) as fp: 61 for s in fp.readlines(): 62 t = [] 63 for s1 in s.strip("\n").split(sep): 64 t.append(coerce(s1)) 65 fun(t) 66 return 67 68 69def rnd(x, places): 70 mult = 10 ** (places or 2) 71 return math.floor(x * mult + 0.5) / mult 72 73 74def per(t, p): 75 p = math.floor(((p or .5) * len(t) - 1) + .5) 76 return t[max(0, min(len(t) - 1, p))] 77 78 79def o(t): 80 if not (isinstance(t, dict) or isinstance(t, list)): 81 return str(t) 82 83 def show(k, v): 84 if str(k).find("_") != 0: 85 v = o(v) 86 return (isinstance(t, dict) and ":{} {}".format(k, v)) or str(v) 87 88 if isinstance(t, dict): 89 u = [show(k, v) for k, v in t.items()] 90 if isinstance(t, dict): 91 u = sorted(u) 92 return "{" + " ".join(u) + "}" 93 elif isinstance(t, list): 94 u = [show(k, v) for k, v in enumerate(t)] 95 return "{" + " ".join(u) + "}" 96 97 98def oo(t): 99 return print(o(t)) 100 101 102def copy(t): 103 if not (isinstance(t, list) or isinstance(t, dict)): 104 return t 105 elif isinstance(t, list): 106 return t.copy() 107 else: 108 u = {} 109 for k in t: 110 u[k] = t[k] 111 return u
def
checknum(s):
8def checknum(s): 9 """ 10 Function to check if s can be converted to float 11 :param s: 12 :return: Boolean 13 """ 14 try: 15 float(s) 16 return True 17 except: 18 return False
Function to check if s can be converted to float
Parameters
- s:
Returns
Boolean
def
coerce(s):
def
cli():
32def cli(): 33 args = sys.argv 34 for slot, v in the.items(): 35 v = str(v) 36 for i in range(len(args)): 37 if args[i] == "-" + slot[0] or args[i] == "--" + slot: 38 v = (v == "False" and "True") or (v == "True" and "False") or args[i + 1] 39 the[slot] = coerce(v) 40 if the['help']: 41 exit(print("\n" + help_string + "\n")) 42 return the
def
rogues():
def
init_the():
def
csv(fname, fun):
def
rnd(x, places):
def
per(t, p):
def
o(t):
80def o(t): 81 if not (isinstance(t, dict) or isinstance(t, list)): 82 return str(t) 83 84 def show(k, v): 85 if str(k).find("_") != 0: 86 v = o(v) 87 return (isinstance(t, dict) and ":{} {}".format(k, v)) or str(v) 88 89 if isinstance(t, dict): 90 u = [show(k, v) for k, v in t.items()] 91 if isinstance(t, dict): 92 u = sorted(u) 93 return "{" + " ".join(u) + "}" 94 elif isinstance(t, list): 95 u = [show(k, v) for k, v in enumerate(t)] 96 return "{" + " ".join(u) + "}"
def
oo(t):
def
copy(t):