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