[py-svn] apipkg commit b3d10fd5ae0b: changing apipkg.py - test is in py-trunk, i did not succeed extracting

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Sun Aug 1 20:42:39 CEST 2010


# HG changeset patch -- Bitbucket.org
# Project apipkg
# URL http://bitbucket.org/hpk42/apipkg/overview
# User holger krekel <holger at merlinux.eu>
# Date 1280688134 -7200
# Node ID b3d10fd5ae0b3669eed0f7eb0701dc19ac12858c
# Parent  69b6f42e005c7ab969722dc79dc1123e424888f0
changing apipkg.py - test is in py-trunk, i did not succeed extracting
a test for apipkg.py :(

--- a/.hgignore
+++ b/.hgignore
@@ -8,6 +8,8 @@ syntax:glob
 *.html
 *.class
 
+.tox
+
 build
 dist
 apipkg.egg-info

--- a/apipkg.py
+++ b/apipkg.py
@@ -13,18 +13,19 @@ __version__ = "1.0b7"
 
 def initpkg(pkgname, exportdefs):
     """ initialize given package from the export definitions. """
-    mod = ApiModule(pkgname, exportdefs, implprefix=pkgname)
     oldmod = sys.modules[pkgname]
-    file = getattr(oldmod, '__file__', None)
-    if file:
-        file = os.path.abspath(file)
-    mod.__file__ = file
-    mod.__version__ = getattr(oldmod, '__version__', '0')
+    d = {}
+    f = getattr(oldmod, '__file__', None)
+    if f:
+        f = os.path.abspath(f)
+    d['__file__'] = f
+    d['__version__'] = getattr(oldmod, '__version__', '0')
     if hasattr(oldmod, '__loader__'):
-        mod.__loader__ = oldmod.__loader__
+        d['__loader__'] = oldmod.__loader__
     if hasattr(oldmod, '__path__'):
-        mod.__path__ = [os.path.abspath(p) for p in oldmod.__path__]
-
+        d['__path__'] = [os.path.abspath(p) for p in oldmod.__path__]
+    oldmod.__dict__.update(d)
+    mod = ApiModule(pkgname, exportdefs, implprefix=pkgname, attr=d)
     sys.modules[pkgname]  = mod
 
 def importobj(modpath, attrname):
@@ -32,11 +33,15 @@ def importobj(modpath, attrname):
     return getattr(module, attrname)
 
 class ApiModule(ModuleType):
-    def __init__(self, name, importspec, implprefix=None):
+    def __init__(self, name, importspec, implprefix=None, attr=None):
         self.__name__ = name
         self.__all__ = [x for x in importspec if x != '__onfirstaccess__']
         self.__map__ = {}
         self.__implprefix__ = implprefix or name
+        if attr:
+            for name, val in attr.items():
+                #print "setting", self.__name__, name, val
+                setattr(self, name, val)
         for name, importspec in importspec.items():
             if isinstance(importspec, dict):
                 subname = '%s.%s'%(self.__name__, name)
@@ -64,6 +69,7 @@ class ApiModule(ModuleType):
 
     def __makeattr(self, name):
         """lazily compute value for name or raise AttributeError if unknown."""
+        #print "makeattr", self.__name__, name
         target = None
         if '__onfirstaccess__' in self.__map__:
             target = self.__map__.pop('__onfirstaccess__')



More information about the pytest-commit mailing list