5 components = name.split('.')
6 for comp in components[1:]:
7 mod = getattr(mod, comp)
10 # apply rename on list (columns) or dict (filter) args
11 def patch (arg,rename):
12 if isinstance(arg,list):
13 for i in range(0,len(arg)):
14 arg[i] = patch(arg[i],rename)
16 if isinstance(arg,dict):
17 return dict ( [ (rename(k),v) for (k,v) in arg.iteritems() ] )
21 def make_class (legacyname,newname,path,v42rename,v43rename):
23 newclass=getattr(import_deep(path+newname),newname)
24 # create class for legacy name
25 legacyclass = type(legacyname,(newclass,),
26 {"__doc__":"Legacy method - please use %s instead"%newname})
27 for internal in ["roles","accepts","returns"]:
28 setattr(legacyclass,internal,getattr(newclass,internal))
29 # turn off type checking, as introspection code fails on wrapped_call
30 setattr(legacyclass,"skip_typecheck",True)
32 def wrapped_call (self,auth,*args, **kwds):
33 # print "%s: self.caller = %s, self=%s" % (legacyname,self.caller,self)
34 newargs=[patch(x,v42rename) for x in args]
35 newkwds=dict ( [ (k,patch(v,v42rename)) for (k,v) in kwds.iteritems() ] )
36 results = getattr(newclass,"call")(self,auth,*newargs,**newkwds)
37 return patch(results,v43rename)
38 setattr(legacyclass,"call",wrapped_call)