# HG changeset patch # User james@X40 # Date 1231880424 18000 # Node ID c4579524baa6182c54a5910c6b4041ae4098c43f # Parent 3f9ec536f2c166ba4e4b495cfdbea6ecf8ceae30 revised newstuff.resolve to do more importing diff -r 3f9ec536f2c1 -r c4579524baa6 pylearn/dbdict/newstuff.py --- a/pylearn/dbdict/newstuff.py Fri Dec 19 16:46:51 2008 -0500 +++ b/pylearn/dbdict/newstuff.py Tue Jan 13 16:00:24 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 ################################################################################