[svn r63016] * fix setattr on apimodules

* higher timeout

--HG--
branch : trunk
This commit is contained in:
hpk 2009-03-18 00:34:59 +01:00
parent c3e5ca560a
commit 9a47f06a59
2 changed files with 12 additions and 5 deletions

View File

@ -215,8 +215,8 @@ class TestMultiChannel:
channel.send(os.getpid()) channel.send(os.getpid())
""") """)
queue = mc.make_receive_queue() queue = mc.make_receive_queue()
ch, item = queue.get(timeout=0.5) ch, item = queue.get(timeout=10)
ch2, item2 = queue.get(timeout=0.5) ch2, item2 = queue.get(timeout=10)
assert ch != ch2 assert ch != ch2
assert ch.gateway != ch2.gateway assert ch.gateway != ch2.gateway
assert item != item2 assert item != item2

View File

@ -165,9 +165,9 @@ def setmodule(modpath, module):
class ApiModule(ModuleType): class ApiModule(ModuleType):
def __init__(self, pkg, name): def __init__(self, pkg, name):
self.__map__ = {}
self.__pkg__ = pkg self.__pkg__ = pkg
self.__name__ = name self.__name__ = name
self.__map__ = {}
def __repr__(self): def __repr__(self):
return '<ApiModule %r>' % (self.__name__,) return '<ApiModule %r>' % (self.__name__,)
@ -178,17 +178,24 @@ class ApiModule(ModuleType):
result = self.__pkg__._resolve(extpy) result = self.__pkg__._resolve(extpy)
else: else:
try: try:
extpy = self.__map__[name] extpy = self.__map__.pop(name)
except KeyError: except KeyError:
__tracebackhide__ = True __tracebackhide__ = True
raise AttributeError(name) raise AttributeError(name)
else: else:
result = self.__pkg__._resolve(extpy) result = self.__pkg__._resolve(extpy)
del self.__map__[name]
setattr(self, name, result) setattr(self, name, result)
#self._fixinspection(result, name) #self._fixinspection(result, name)
return result return result
def __setattr__(self, name, value):
super(ApiModule, self).__setattr__(name, value)
try:
del self.__map__[name]
except KeyError:
pass
def _deprecated_fixinspection(self, result, name): def _deprecated_fixinspection(self, result, name):
# modify some attrs to make a class appear at export level # modify some attrs to make a class appear at export level
if hasattr(result, '__module__'): if hasattr(result, '__module__'):