def test_decorator_wraps(self): def decorator(function): @wraps(function) @modifiers.autokwoargs def _decorated(a, b=2, *args, **kwargs): function(1, *args, **kwargs) return _decorated func = decorator(_wrapped) sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s('a, y, *, b=2, z')) self.assertEqual( sig.sources, { '+depths': { func: 0, _wrapped: 1 }, 'a': [func], 'b': [func], 'y': [_wrapped], 'z': [_wrapped] }) support.test_func_sig_coherent(func, check_return=False, check_invalid=False)
def _test(self, func, expected, sources, incoherent=False): sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s(expected)) self.assertSourcesEqual(sig.sources, sources, func) if not incoherent: support.test_func_sig_coherent( func, check_return=False, check_invalid=False)
def _test(self, func, expected, expected_src): sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s(expected)) self.assertSourcesEqual(sig.sources, expected_src, func) with self.assertRaises(AssertionError): support.test_func_sig_coherent( func, check_return=False, check_invalid=False)
def _test(self, func, expected, sources, incoherent=False): sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s(expected)) self.assertSourcesEqual(sig.sources, sources, func) if not incoherent: support.test_func_sig_coherent(func, check_return=False, check_invalid=False)
def _test(self, func, ensure_incoherent=True): self.assertSigsEqual(specifiers.signature(func), signatures.signature(func)) if ensure_incoherent: with self.assertRaises(AssertionError): support.test_func_sig_coherent(func, check_return=False, check_invalid=False)
def _test(self, func, ensure_incoherent=True): self.assertSigsEqual( specifiers.signature(func), signatures.signature(func)) if ensure_incoherent: with self.assertRaises(AssertionError): support.test_func_sig_coherent( func, check_return=False, check_invalid=False)
def poktranslator_test(self, expected_sig_str, orig_sig_str, posoargs, kwoargs): expected_sig = s(expected_sig_str) orig_sig = s(orig_sig_str) for exp, orig in defaults_variations(expected_sig, orig_sig): for exp, orig in stars_variations(exp, orig): func = modifiers._PokTranslator(func_from_sig(orig), posoargs, kwoargs) self.assertSigsEqual(exp, signature(func)) test_func_sig_coherent(func) repr(func) # must not cause an error
def poktranslator_test(self, expected_sig_str, orig_sig_str, posoargs, kwoargs): expected_sig = s(expected_sig_str) orig_sig = s(orig_sig_str) for exp, orig in defaults_variations(expected_sig, orig_sig): for exp, orig in stars_variations(exp, orig): func = modifiers._PokTranslator( func_from_sig(orig), posoargs, kwoargs) self.assertSigsEqual(exp, signature(func)) test_func_sig_coherent(func) repr(func) # must not cause an error
def test_functools_wrapped(self): @wraps(_wrapped) def func(a, *args, **kwargs): _wrapped(1, *args, **kwargs) sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s('a, y, *, z')) self.assertEqual(sig.sources, { '+depths': {func: 0, _wrapped: 1}, 'a': [func], 'y': [_wrapped], 'z': [_wrapped] }) support.test_func_sig_coherent( func, check_return=False, check_invalid=False)
def test_partial(self): def _wrapper(wrapped, a, *args, **kwargs): return wrapped(*args, **kwargs) func = partial(_wrapper, _wrapped) sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s('a, x, y, *, z')) self.assertEqual(sig.sources, { 'a': [_wrapper], 'x': [_wrapped], 'y': [_wrapped], 'z': [_wrapped], '+depths': {func: 0, _wrapper: 1, _wrapped: 2} }) support.test_func_sig_coherent( func, check_return=False, check_invalid=False)
def test_decorator_wraps(self): def decorator(function): @wraps(function) @modifiers.autokwoargs def _decorated(a, b=2, *args, **kwargs): function(1, *args, **kwargs) return _decorated func = decorator(_wrapped) sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s('a, y, *, b=2, z')) self.assertEqual(sig.sources, { '+depths': {func: 0, _wrapped: 1}, 'a': [func], 'b': [func], 'y': [_wrapped], 'z': [_wrapped] }) support.test_func_sig_coherent( func, check_return=False, check_invalid=False)
def test_functools_wrapped(self): @wraps(_wrapped) def func(a, *args, **kwargs): _wrapped(1, *args, **kwargs) sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s('a, y, *, z')) self.assertEqual( sig.sources, { '+depths': { func: 0, _wrapped: 1 }, 'a': [func], 'y': [_wrapped], 'z': [_wrapped] }) support.test_func_sig_coherent(func, check_return=False, check_invalid=False)
def test_partial(self): def _wrapper(wrapped, a, *args, **kwargs): return wrapped(*args, **kwargs) func = partial(_wrapper, _wrapped) sig = specifiers.signature(func) self.assertSigsEqual(sig, support.s('a, x, y, *, z')) self.assertEqual( sig.sources, { 'a': [_wrapper], 'x': [_wrapped], 'y': [_wrapped], 'z': [_wrapped], '+depths': { func: 0, _wrapper: 1, _wrapped: 2 } }) support.test_func_sig_coherent(func, check_return=False, check_invalid=False)