Source code for osl_ephys.utils.run_func
from functools import partial
import sys
[docs]def main(argv=None):
# sys.argv[1] is the function name
# sys.argv[2:] are the arguments to the function
# e.g. python -m osl_ephys.utils.run_func my_func arg1 arg2
# will call my_func(arg1, arg2)
if argv is None:
argv = sys.argv[1:]
func_name = argv[0]
func_args = argv[1:]
# iteratively open each (sub)module
for ii, mod in enumerate(func_name.split('.')):
if ii==0:
module = __import__(mod)
else:
module = getattr(module, mod)
func = module
# do some general argument checks
for ii in range(len(func_args)):
if type(func_args[ii]) is str:
if func_args[ii]=='None':
func_args[ii] = None
elif func_args[ii]=='True':
func_args[ii] = True
elif func_args[ii]=='False':
func_args[ii] = False
# run the function
func(*func_args)
if __name__ == "__main__":
main()