Mercurial > pylearn
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 ################################################################################ |