Package pyraf :: Module irafnames
[hide private]
[frames] | no frames]

Source Code for Module pyraf.irafnames

 1  """module irafnames.py -- define how names of IRAF packages and tasks get 
 2  included in the user's namespace.  Uses a plug-in strategy so behavior can 
 3  be changed. 
 4   
 5  $Id: irafnames.py 1463 2011-06-24 22:58:30Z stsci_embray $ 
 6   
 7  R. White, 1999 March 26 
 8  """ 
 9  from __future__ import division # confidence high 
10   
11  import __main__ 
12  from stsci.tools import irafglobals 
13  import iraf 
14   
15 -def _addName(task, module):
16 """Add a task object to the module namespace 17 18 Skip if there is a collision with another name 19 unless it is an IrafTask 20 """ 21 name = task.getName() 22 if hasattr(module, name): 23 p = getattr(module, name) 24 else: 25 p = None 26 if (p is None) or isinstance(p, irafglobals.IrafTask): 27 setattr(module, name, task) 28 else: 29 if irafglobals.Verbose>0: 30 print "Warning: " + module.__name__ + "." + \ 31 name + " was not redefined as Iraf Task"
32 33 # Basic namespace strategy class (does nothing) 34
35 -class IrafNameStrategy:
36 - def addTask(self,task):
37 pass
38 - def addPkg(self,pkg):
39 pass
40 41 # NameClean implementation puts tasks and packages in iraf module name space 42 # Note that since packages are also tasks, we only need to do this for tasks 43
44 -class IrafNameClean(IrafNameStrategy):
45 - def addTask(self,task):
47 48 # IrafNamePkg also adds packages to __main__ name space 49
50 -class IrafNamePkg(IrafNameClean):
51 - def addPkg(self,pkg):
52 _addName(pkg, __main__)
53 54 # IrafNameTask puts everything (tasks and packages) in __main__ name space 55
56 -class IrafNameTask(IrafNameClean):
57 - def addTask(self,task):
58 _addName(task, iraf) 59 _addName(task, __main__)
60
61 -def setPkgStrategy():
62 global strategy 63 strategy = IrafNamePkg()
64
65 -def setTaskStrategy():
66 global strategy 67 strategy = IrafNameTask()
68
69 -def setCleanStrategy():
70 global strategy 71 strategy = IrafNameClean()
72 73 # define adding package names as the default behavior 74 # setPkgStrategy() 75 76 # define adding package names to iraf module only as the default behavior 77 setCleanStrategy() 78