← Back to team overview

instant team mailing list archive

Fix for more verbose output when instant fails to import a module

 

For consideration?

Johan
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: hake.dev@xxxxxxxxx-20110112215529-inurnq8yly2ahvw0
# target_branch: bzr+ssh://bazaar.launchpad.net/~instant-\
#   core/instant/main/
# testament_sha1: 9c350817d87fdfcb3f016f5e4f1fa09b178c1757
# timestamp: 2011-01-12 13:56:23 -0800
# base_revision_id: kent-and@xxxxxxxxx-20101125153017-n8foq1949g50fk1e
# 
# Begin patch
=== modified file 'instant/cache.py'
--- instant/cache.py	2010-10-25 12:54:41 +0000
+++ instant/cache.py	2011-01-12 21:55:29 +0000
@@ -32,20 +32,21 @@
 def import_module_directly(path, modulename):
     "Import a module with the given module name that resides in the given path."
     sys.path.insert(0, path)
-
+    e = None
     try:
         module = __import__(modulename)
-    except:
-        instant_warning("In instant.import_module_directly: Failed to import module '%s' from '%s'." % (modulename, path))
+    except Exception, e:
+        instant_warning("In instant.import_module_directly: Failed to import module '%s' from '%s';\n%s:%s;" % (modulename, path, type(e).__name__, e))
         module = None
     finally:
         sys.path.pop(0)
-    return module
+    return module, e
 
 
 _memory_cache = {}
 def memory_cached_module(moduleid):
     "Returns the cached module if found."
+    import sys
     module = _memory_cache.get(moduleid, None)
     instant_debug("Found '%s' in memory cache with key '%r'." % (module, moduleid))
     return module
@@ -63,8 +64,8 @@
 
 
 def import_and_cache_module(path, modulename, moduleids):
-    module = import_module_directly(path, modulename)
-    instant_assert(module is not None, "Failed to import module found in cache. Modulename: '%s'; Path: '%s'." % (modulename, path))
+    module, e = import_module_directly(path, modulename)
+    instant_assert(module is not None, "Failed to import module found in cache. Modulename: '%s';\nPath: '%s';\n%s:%s;" % (modulename, path, type(e).__name__, e))
     for moduleid in moduleids:
         place_module_in_memory_cache(moduleid, module)
     return module

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWUPkSYAAAdXfgEQQUuf//1Nz
QAS////wUAQ49s7rKbjobcgElJomNBGjEnimp7VPaZFP1NI9QyPSZBoJJEMBCaNKeptT0JoDR6gD
QANBJECT0jTU9PUmmhqYmGoDQNMgyPUHNMTAAmACYAATAAEwSRETUzU3qajE8hDajTTIaABo0BBL
i5vhe36hDyyLWuZ2k78zGyL4Ar6Etl0m27eWObFCHS2WM/jpKcZLvyZmF5eCP3GnTEs8XZ2LNxPr
o0S0sVXTn6OuJDUh5/38cIdW5ZvuVJeFSF/pt9dIQiMTYlcRJ5tRZbLGqL6fPpghzgDAYyUQZe8i
EmKdBGxkvwO9GjD4RxHtasRYXLQhzMBbeS4KaWeyHWeyT6Tr06100Zo8CQiw47blsYIsJhGPcnUF
BG9yV63rqCivHyGlG+CjnQ7uqX9l1wmXQ2wsNtgKqZBsgr8JDxPZVlB92J8NU36MOmnGi1Fpjtiu
3lmv4trjBWb1g2srbKu+i+Ts8ELIrpUKIrGqYKVcgcIpTbGCwtzrbiCxg26697GEnHDKUL2bYQT4
xIwvayueSd3TG0rWHpKcTDLkTW7VOoaBXqeEYCux5DAcxJrTCClu3alsU55tKpkYRtLc2Ohq48WT
GglJk7xVeWkF0V6uG2dbZXETV2/IrG2+8ruxXYukVLzBKY7fqqrQpKkVxwlgaiitobd3F8s5mzj2
hWD5TeCg47pptEoE6Ncb134sx2VwNWtjn+u/glEK0Bjxe8u5nd3Ve1dhOaSTqZ3BiJVkgqMqgFZz
/3MHVxGHfp1hmFWl2MvTSl0qSpbHmhoqelCPHunGr+PZ1aiuyxvLqrfE2X4AOcOT+ZfhkznLn7+Z
vv70M5JTZKBhA9Ga8pIKHPZRKFM6ECeB+Gq41R6UqDeXkmq5Cm28Dr2a1VbpDhAdxKBcemaTJ/jO
OuLvl2Vnza/zdrOeUUQrsONxZdTWkySh5tjN3Z4lcFKJjqmKcqVtOnRYWXVjokmBdEn3znJbgVXE
h+rtFithTViw+7z+S4o9Uu/Yrck89YGZmMkox0A35xSi2JcGm4o+nyTH9xElamJptW9mdKeOITyt
qZD66/DSKtsc0oah2IcftBz8FbWmVgb5w7g91ilmC8F5wzrExMwMwyYLuF4T6sVxaBPaBsStVEs5
m/DguLctw540YkRDm0/dO8ouexOe2ATqT3NeDBNOXV7Fc4oimZhMMwydkyDn57LrXartaRwhwj0g
VR/j5xq14OFXXGlBfLRaWT0fazLlcgci/k8VPDHeeDHgpLETXXicGTnbS5HKXXmQ8UVaLCttvywC
DDMGluvvAl2Qhk9upqeVTB0T0NLNtRRRpdnbowZbWcBew47h2aTnUkaQCzTlUr0kU6oUVmgyzygV
15ringn402TFa6aT1Nwe0XqFrd71rnD8stK3sOHCKQFYx3zJf8XckU4UJBD5EmAA