summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-03-06 18:48:04 (GMT)
committerGitHub <noreply@github.com>2018-03-06 18:48:04 (GMT)
commit387a055261267f5fafd2c12eafef49759c94704f (patch)
tree20f5036888d149aa867dd0406d89aa993111a823
parentbaa45079466eda1f5636a6d13f3a60c2c00fdcd3 (diff)
downloadcpython-387a055261267f5fafd2c12eafef49759c94704f.zip
cpython-387a055261267f5fafd2c12eafef49759c94704f.tar.gz
cpython-387a055261267f5fafd2c12eafef49759c94704f.tar.bz2
bpo-33009: Fix inspect.signature() for single-parameter partialmethods. (GH-6004)
(cherry picked from commit 8a387219bdfb6ee34928d6168ac42ca559f11c9a) Co-authored-by: Yury Selivanov <yury@magic.io>
-rw-r--r--Lib/inspect.py3
-rw-r--r--Lib/test/test_inspect.py10
-rw-r--r--Misc/NEWS.d/next/Library/2018-03-06-11-54-59.bpo-33009.-Ekysb.rst1
3 files changed, 13 insertions, 1 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index e9c2dbd..dc2aab2 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -2251,7 +2251,8 @@ def _signature_from_callable(obj, *,
return sig
else:
sig_params = tuple(sig.parameters.values())
- assert first_wrapped_param is not sig_params[0]
+ assert (not sig_params or
+ first_wrapped_param is not sig_params[0])
new_params = (first_wrapped_param,) + sig_params
return sig.replace(parameters=new_params)
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 5543674..126b26e 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -2526,6 +2526,16 @@ class TestSignatureObject(unittest.TestCase):
('c', 1, ..., 'keyword_only')),
'spam'))
+ class Spam:
+ def test(self: 'anno', x):
+ pass
+
+ g = partialmethod(test, 1)
+
+ self.assertEqual(self.signature(Spam.g),
+ ((('self', ..., 'anno', 'positional_or_keyword'),),
+ ...))
+
def test_signature_on_fake_partialmethod(self):
def foo(a): pass
foo._partialmethod = 'spam'
diff --git a/Misc/NEWS.d/next/Library/2018-03-06-11-54-59.bpo-33009.-Ekysb.rst b/Misc/NEWS.d/next/Library/2018-03-06-11-54-59.bpo-33009.-Ekysb.rst
new file mode 100644
index 0000000..96bc70a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-03-06-11-54-59.bpo-33009.-Ekysb.rst
@@ -0,0 +1 @@
+Fix inspect.signature() for single-parameter partialmethods.