Created
December 10, 2011 13:53
-
-
Save johtso/1455217 to your computer and use it in GitHub Desktop.
load_object monkeypatch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def load_object(path): | |
"""Load an object given its absolute object path, and return it. | |
object can be a class, function, variable o instance. | |
path ie: 'scrapy.contrib.downloadermiddelware.redirect.RedirectMiddleware' | |
""" | |
# monkeypatch | |
if not isinstance(path, basestring): | |
return path | |
# monkeypatch | |
try: | |
dot = path.rindex('.') | |
except ValueError: | |
raise ValueError, "Error loading object '%s': not a full path" % path | |
module, name = path[:dot], path[dot+1:] | |
try: | |
mod = __import__(module, {}, {}, ['']) | |
except ImportError, e: | |
raise ImportError, "Error loading object '%s': %s" % (path, e) | |
try: | |
obj = getattr(mod, name) | |
except AttributeError: | |
raise NameError, "Module '%s' doesn't define any object named '%s'" % (module, name) | |
return obj |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment