# HG changeset patch -- Bitbucket.org
# Project apipkg
# URL http://bitbucket.org/hpk42/apipkg/overview
# User Ralf Schmitt <r...@systemexit.de>
# Date 1288906297 -3600
# Node ID fd590ef45812b3b031ec3412e99b6f03324e9bf9
# Parent  41f548cd98ae6bc5afa5da737730dda749646d76
make initpkg work without an "old module" in sys.modules

--- a/test_apipkg.py
+++ b/test_apipkg.py
@@ -400,3 +400,9 @@ def test_aliasmodule_repr():
     assert "<AliasModule 'mymod' for 'sys'>" == r
     am.version
     assert repr(am) == r
+
+def test_initpkg_without_old_module():
+    apipkg.initpkg("initpkg_without_old_module",
+                   dict(modules="sys:modules"))
+    from initpkg_without_old_module import modules
+    assert modules is sys.modules

--- a/apipkg.py
+++ b/apipkg.py
@@ -13,7 +13,7 @@ __version__ = "1.2.dev1"
 
 def initpkg(pkgname, exportdefs, attr=dict()):
     """ initialize given package from the export definitions. """
-    oldmod = sys.modules[pkgname]
+    oldmod = sys.modules.get(pkgname)
     d = {}
     f = getattr(oldmod, '__file__', None)
     if f:
@@ -28,7 +28,8 @@ def initpkg(pkgname, exportdefs, attr=di
     if hasattr(oldmod, '__doc__'):
         d['__doc__'] = oldmod.__doc__
     d.update(attr)
-    oldmod.__dict__.update(d)
+    if hasattr(oldmod, "__dict__"):
+        oldmod.__dict__.update(d)
     mod = ApiModule(pkgname, exportdefs, implprefix=pkgname, attr=d)
     sys.modules[pkgname]  = mod
_______________________________________________
py-svn mailing list
py-svn@codespeak.net
http://codespeak.net/mailman/listinfo/py-svn

Reply via email to