diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
index 3761b89..c440e94 100644
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -751,6 +751,11 @@
   left to a package.
   (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
 -------------------------------------------
 
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 1e37fed..d17a498 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -2661,11 +2661,17 @@
     @classmethod
     def from_function(cls, func):
         """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)
 
     @classmethod
     def from_builtin(cls, func):
         """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)
 
     @classmethod
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 8d11783..a4add38 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -1971,13 +1971,6 @@
         with self.assertRaisesRegex(TypeError, 'is not a callable object'):
             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 func(a,b, *args, kwonly=True, kwonlyreq, **kwargs):
             pass
@@ -1998,9 +1991,9 @@
             def __call__(self, *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)
 
         sig_funclike = inspect.signature(funclike(func))
@@ -2048,9 +2041,6 @@
             __defaults__ = func.__defaults__
             __kwdefaults__ = func.__kwdefaults__
 
-        with self.assertRaisesRegex(TypeError, 'is not a Python function'):
-            inspect.Signature.from_function(funclike)
-
         self.assertEqual(str(inspect.signature(funclike)), '(marker)')
 
     def test_signature_on_method(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index fe83306..5838a63 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -183,6 +183,9 @@
   inspect.Signature.from_callable() and inspect.signature().
   Contributed by Yury Selivanov.
 
+- Issue 24248: Deprecate inspect.Signature.from_function() and
+  inspect.Signature.from_builtin().
+
 Tests
 -----
 
