Issue 24248: Deprecate inspect.Signature.from_function and .from_builtin

This commit is contained in:
Yury Selivanov 2015-05-20 23:07:02 -04:00
parent 45d6156154
commit 57c74fca02
4 changed files with 16 additions and 12 deletions

View File

@ -751,6 +751,11 @@ Deprecated Python modules, functions and methods
left to a package. left to a package.
(Contributed by Vajrasky Kok and Berker Peksag in :issue:`1322`.) (Contributed by Vajrasky Kok and Berker Peksag in :issue:`1322`.)
* Previously undocumented ``from_function`` and ``from_builtin`` methods
of :class:`inspect.Signature` are deprecated. Use new
:meth:`inspect.Signature.from_callable` instead. (Contributed by Yury
Selivanov in :issue:`24248`.)
Deprecated functions and types of the C API Deprecated functions and types of the C API
------------------------------------------- -------------------------------------------

View File

@ -2661,11 +2661,17 @@ class Signature:
@classmethod @classmethod
def from_function(cls, func): def from_function(cls, func):
"""Constructs Signature for the given python function.""" """Constructs Signature for the given python function."""
warnings.warn("inspect.Signature.from_function() is deprecated, "
"use Signature.from_callable()", DeprecationWarning)
return _signature_from_function(cls, func) return _signature_from_function(cls, func)
@classmethod @classmethod
def from_builtin(cls, func): def from_builtin(cls, func):
"""Constructs Signature for the given builtin function.""" """Constructs Signature for the given builtin function."""
warnings.warn("inspect.Signature.from_builtin() is deprecated, "
"use Signature.from_callable()", DeprecationWarning)
return _signature_from_builtin(cls, func) return _signature_from_builtin(cls, func)
@classmethod @classmethod

View File

@ -1971,13 +1971,6 @@ class TestSignatureObject(unittest.TestCase):
with self.assertRaisesRegex(TypeError, 'is not a callable object'): with self.assertRaisesRegex(TypeError, 'is not a callable object'):
inspect.signature(42) inspect.signature(42)
with self.assertRaisesRegex(TypeError, 'is not a Python function'):
inspect.Signature.from_function(42)
def test_signature_from_builtin_errors(self):
with self.assertRaisesRegex(TypeError, 'is not a Python builtin'):
inspect.Signature.from_builtin(42)
def test_signature_from_functionlike_object(self): def test_signature_from_functionlike_object(self):
def func(a,b, *args, kwonly=True, kwonlyreq, **kwargs): def func(a,b, *args, kwonly=True, kwonlyreq, **kwargs):
pass pass
@ -1998,9 +1991,9 @@ class TestSignatureObject(unittest.TestCase):
def __call__(self, *args, **kwargs): def __call__(self, *args, **kwargs):
return self.func(*args, **kwargs) return self.func(*args, **kwargs)
sig_func = inspect.Signature.from_function(func) sig_func = inspect.Signature.from_callable(func)
sig_funclike = inspect.Signature.from_function(funclike(func)) sig_funclike = inspect.Signature.from_callable(funclike(func))
self.assertEqual(sig_funclike, sig_func) self.assertEqual(sig_funclike, sig_func)
sig_funclike = inspect.signature(funclike(func)) sig_funclike = inspect.signature(funclike(func))
@ -2048,9 +2041,6 @@ class TestSignatureObject(unittest.TestCase):
__defaults__ = func.__defaults__ __defaults__ = func.__defaults__
__kwdefaults__ = func.__kwdefaults__ __kwdefaults__ = func.__kwdefaults__
with self.assertRaisesRegex(TypeError, 'is not a Python function'):
inspect.Signature.from_function(funclike)
self.assertEqual(str(inspect.signature(funclike)), '(marker)') self.assertEqual(str(inspect.signature(funclike)), '(marker)')
def test_signature_on_method(self): def test_signature_on_method(self):

View File

@ -183,6 +183,9 @@ Library
inspect.Signature.from_callable() and inspect.signature(). inspect.Signature.from_callable() and inspect.signature().
Contributed by Yury Selivanov. Contributed by Yury Selivanov.
- Issue 24248: Deprecate inspect.Signature.from_function() and
inspect.Signature.from_builtin().
Tests Tests
----- -----