remove asserts from instrumentation

This commit is contained in:
AF 2022-12-03 21:32:06 +00:00
parent e9fba7b064
commit 844dacf989

View File

@ -13,8 +13,10 @@ class Instrumentation(Generic[IType]):
_wrap: Callable
def __init__(self, target, methodname: str):
assert isinstance(methodname, str)
assert callable(getattr(target, methodname))
if not isinstance(methodname, str):
raise TypeError('methodname must be str')
if not callable(getattr(target, methodname)):
raise TypeError('target.methodname must be callable')
self.target = target
self.methodname = methodname
@ -22,11 +24,13 @@ class Instrumentation(Generic[IType]):
raise NotImplementedError
def __enter__(self: IType) -> IType:
assert isinstance(self, Instrumentation)
assert not hasattr(self, '_method')
assert not hasattr(self, '_wrap')
if not isinstance(self, Instrumentation):
raise TypeError
if hasattr(self, '_method') or hasattr(self, '_wrap'):
raise RuntimeError
method = getattr(self.target, self.methodname)
assert callable(method)
if not callable(method):
raise TypeError
self._method = method
@functools.wraps(method)
@ -56,11 +60,13 @@ class Instrumentation(Generic[IType]):
self.deinstrument()
def enter(self: IType, stack: ExitStack) -> IType:
assert isinstance(self, Instrumentation)
if not isinstance(self, Instrumentation):
raise TypeError
return stack.enter_context(self)
def enter_conditional(self: IType, stack: ExitStack) -> IType | None:
assert isinstance(self, Instrumentation)
if not isinstance(self, Instrumentation):
raise TypeError
if hasattr(self.target, self.methodname):
return self.enter(stack)
else: