Mercurial > mozilla > hg > talosnames
diff talosnames/require.py @ 42:cc0edf61ab21
require all the things!
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sun, 12 Aug 2012 23:10:16 -0700 |
parents | 1b18b2746e69 |
children |
line wrap: on
line diff
--- a/talosnames/require.py Sun Aug 12 22:38:12 2012 -0700 +++ b/talosnames/require.py Sun Aug 12 23:10:16 2012 -0700 @@ -1,20 +1,37 @@ import imp import os +import sys import tempfile import urllib2 -def require(url): +def require(*urls, **filenames): """ import a module from the web url should be like scheme://host.name/path/to/module.py """ - contents = urllib2.urlopen(url).read() - filename = url.rsplit('/', 1)[-1] - module = filename.rsplit('.', 1)[-1] - dest = tempfile.mktemp(suffix='.py', prefix=module) - f = file(dest, 'w') - f.write(contents) - f.close() - return imp.load_source(module, dest) + + tempdir = tempfile.mkdtemp() + sys.path.insert(0, tempdir) + retval = [] + + for url in urls: + contents = urllib2.urlopen(url).read() + filename = filenames.get(url, None) + if not filename: + filename = url.rsplit('/', 1)[-1] + module = filename.rsplit('.', 1)[0] + dest = os.path.join(tempdir, filename) + f = file(dest, 'w') + f.write(contents) + f.close() + try: + _module = imp.load_source(module, dest) + except Exception, e: + raise +# import pdb; pdb.set_trace() + retval.append(_module) + + sys.path.pop(0) + return retval # TODO: make an equivalent method for a tarball