diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2018-03-06 18:23:48 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-06 18:23:48 (GMT) |
commit | 112f799666bac1bdbb320840d5fda3132255eb5e (patch) | |
tree | 77b80d306834ea2ce3ed21f8ee09f7d7152c9164 | |
parent | 5a0c3987abd6a71b4fadeb525477eb5f560e8514 (diff) | |
download | cpython-112f799666bac1bdbb320840d5fda3132255eb5e.zip cpython-112f799666bac1bdbb320840d5fda3132255eb5e.tar.gz cpython-112f799666bac1bdbb320840d5fda3132255eb5e.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.py | 3 | ||||
-rw-r--r-- | Lib/test/test_inspect.py | 10 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2018-03-06-11-54-59.bpo-33009.-Ekysb.rst | 1 |
3 files changed, 13 insertions, 1 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py index d629689..f271992 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -2254,7 +2254,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 1a856f6..3481a57 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -2580,6 +2580,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. |