[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