in src/smepu/argparse.py [0:0]
def infer_dtype(s):
"""Auto-cast string values to nearest matching datatype.
Conversion follows the principle: "if it looks like a duck and quacks like a duck, then it must be a duck".
Note that python 3.6 implements PEP-515 which allows '_' as thousand separators. Hence, on Python 3.6,
'1_000' is a valid number and will be converted accordingly.
"""
if s == "None":
return None
if s == "True":
return True
if s == "False":
return False
try:
i = float(s)
if ("." in s) or ("e" in s.lower()):
return i
else:
return int(s)
except:
pass
try:
# If string is json, deser it.
return json.loads(s)
except:
return s