# HG changeset patch # User james@X40 # Date 1231880436 18000 # Node ID e763711472a5bca4a6126b59f3f43e5b2b2bd8e6 # Parent c4579524baa6182c54a5910c6b4041ae4098c43f# Parent 605ab704abc3f1ad1d1612d69efced6f3e08dfe2 merged diff -r 605ab704abc3 -r e763711472a5 pylearn/dbdict/newstuff.py --- a/pylearn/dbdict/newstuff.py Mon Jan 12 18:47:10 2009 -0500 +++ b/pylearn/dbdict/newstuff.py Tue Jan 13 16:00:36 2009 -0500 @@ -26,11 +26,22 @@ ### resolve ################################################################################ -def resolve(name): +def resolve(name, try_import=True): + """ + Resolve a string of the form X.Y...Z to a python object by repeatedly using getattr, and + __import__ to introspect objects (in this case X, then Y, etc. until finally Z is loaded). + """ symbols = name.split('.') builder = __import__(symbols[0]) for sym in symbols[1:]: - builder = getattr(builder, sym) + try: + builder = getattr(builder, sym) + except AttributeError, e: + if try_import: + __import__(builder.__name__, fromlist=[sym]) + builder = getattr(builder, sym) + else: + raise e return builder ################################################################################