Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if func is not None and self.should_check_type(func):
memo = self._call_memos[frame] = _CallMemo(
func, frame.f_locals, forward_refs_policy=self.annotation_policy)
if memo.is_generator:
return_type_hint = memo.type_hints['return']
if return_type_hint is not None:
origin = getattr(return_type_hint, '__origin__', None)
if origin in generator_origin_types:
# Check the types of the yielded values
memo.type_hints['return'] = return_type_hint.__args__[0]
else:
try:
check_argument_types(memo)
except TypeError as exc:
warn(TypeWarning(memo, event, frame, exc))
if self._previous_profiler is not None:
self._previous_profiler(frame, event, arg)
elif event == 'return':
if self._previous_profiler is not None:
self._previous_profiler(frame, event, arg)
if arg is None:
# a None return value might mean an exception is being raised but we have no way of
# checking
return
memo = self._call_memos.get(frame)
if memo is not None:
try:
if memo.is_generator:
self._previous_profiler(frame, event, arg)
if arg is None:
# a None return value might mean an exception is being raised but we have no way of
# checking
return
memo = self._call_memos.get(frame)
if memo is not None:
try:
if memo.is_generator:
check_type('yielded value', arg, memo.type_hints['return'], memo)
else:
check_return_type(arg, memo)
except TypeError as exc:
warn(TypeWarning(memo, event, frame, exc))
if not memo.is_generator:
del self._call_memos[frame]
elif self._previous_profiler is not None:
self._previous_profiler(frame, event, arg)