import sys import os import string import inspect import pdb from odict import odict from parameter_check import * from tasksinfo import * from casa_stack_manip import stack_frame_find def tget(task=None, savefile=''): """ Get last input values from file on disk for a specified task: task -- Name of task default: <unset>; example: task='bandpass' <Options: type tasklist() for the complete list> savefile -- Output file for the task inputs default: task.last then task.saved example: savefile=task.orion """ try: myf=stack_frame_find( ) if task==None : if myf.has_key('task') : task=myf['task'] else : if myf.has_key('taskname') : task=myf['taskname'] myf['taskname']=task myf['task']=task if type(task)!=str: task=task.__name__ myf['task']=task myf['taskname']=task parameter_checktype(['task','savefile'],[task,savefile],[str,str]) parameter_checkmenu('task',task,tasksum.keys()) ###Check if task exists by checking if task_defaults is defined if ( not myf.has_key(task) and str(type(myf[task])) != "<type 'instance'>" and not hasattr(myf[task],"defaults") ): raise TypeError, "task %s is not defined " %task if task==None: task=myf['task'] myf['task']=task #f=zip(myf[taskname].func_code.co_varnames,myf[taskname].func_defaults) #for j in range(len(f)): # k=f[j][0] # print 'k is ',k # stst = myf[k] # if ( type(stst) == str ): # sex = k+"='"+stst+"'" # else: # sex = k+"="+str(stst) # exec(sex) if savefile=='': savefile=task+'.last' try: taskparameterfile=open(savefile,'r') except: savefile=task+'.saved' try: taskparameterfile=open(savefile,'r') except: print "Sorry - no task.last or .saved" return taskparameterfile.close() execfile(savefile) # Put the task parameters back into the global namespace f=zip(myf[task].__call__.func_code.co_varnames[1:],myf[task].__call__.func_defaults) missing_ks = [] for j in f: k = j[0] if k != 'self': try: myf[k] = eval(k) except NameError: missing_ks.append(k) if missing_ks: print "Did not find a saved value for", if len(missing_ks) > 1: print ', '.join(missing_ks[:-1]), print 'or', missing_ks[-1] else: print missing_ks[0] print "The set of task parameters has probably changed" print "since", savefile, "was written." print "Restored parameters from file "+savefile except TypeError, e: print "tget --error: ", e def tget_defaults(param=None): myf=stack_frame_find( ) a=odict() a['task']='' a['savefile']='' if(param == None): myf['__set_default_parameters'](a) elif(param == 'paramkeys'): return a.keys() else: if(a.has_key(param)): return a[param] def tget_description(key='listobs',subkey=None): desc={'listobs': 'List data set summary in the logger:\n', 'task': 'Name of task whose parameters will be set', 'savefile': 'Name of parameter file (e.g., task.last)', } if(desc.has_key(key)): return desc[key] return '' def tget_check_params(param=None, value=None): if(param=='task'): if (type(value)!=str): return False else: return True elif(param=='savefile'): if ((type(value)==str)): return True else: return False else: return True