comparison pylearn/dbdict/newstuff.py @ 597:c4579524baa6

revised newstuff.resolve to do more importing
author james@X40
date Tue, 13 Jan 2009 16:00:24 -0500
parents f8d29730f146
children e763711472a5
comparison
equal deleted inserted replaced
591:3f9ec536f2c1 597:c4579524baa6
24 24
25 ################################################################################ 25 ################################################################################
26 ### resolve 26 ### resolve
27 ################################################################################ 27 ################################################################################
28 28
29 def resolve(name): 29 def resolve(name, try_import=True):
30 """
31 Resolve a string of the form X.Y...Z to a python object by repeatedly using getattr, and
32 __import__ to introspect objects (in this case X, then Y, etc. until finally Z is loaded).
33 """
30 symbols = name.split('.') 34 symbols = name.split('.')
31 builder = __import__(symbols[0]) 35 builder = __import__(symbols[0])
32 for sym in symbols[1:]: 36 for sym in symbols[1:]:
33 builder = getattr(builder, sym) 37 try:
38 builder = getattr(builder, sym)
39 except AttributeError, e:
40 if try_import:
41 __import__(builder.__name__, fromlist=[sym])
42 builder = getattr(builder, sym)
43 else:
44 raise e
34 return builder 45 return builder
35 46
36 ################################################################################ 47 ################################################################################
37 ### dictionary 48 ### dictionary
38 ################################################################################ 49 ################################################################################