bpo-17185: Add __signature__ to mock that can be used by inspect for signature (GH11048)

* Fix partial and partial method signatures in mock

* Add more calls

* Add NEWS entry

* Use assertEquals and fix markup in NEWS

* Refactor branching and add markup reference for functools

* Revert partial object related changes and fix pr comments
This commit is contained in:
Xtreak 2018-12-12 13:24:54 +05:30 committed by Chris Withers
parent 5344501ad1
commit f7fa62ef44
3 changed files with 36 additions and 2 deletions

View file

@ -103,6 +103,7 @@ def _check_signature(func, mock, skipfirst, instance=False):
sig.bind(*args, **kwargs)
_copy_func_details(func, checksig)
type(mock)._mock_check_sig = checksig
type(mock).__signature__ = sig
def _copy_func_details(func, funcopy):
@ -172,11 +173,11 @@ def _set_signature(mock, original, instance=False):
return mock(*args, **kwargs)""" % name
exec (src, context)
funcopy = context[name]
_setup_func(funcopy, mock)
_setup_func(funcopy, mock, sig)
return funcopy
def _setup_func(funcopy, mock):
def _setup_func(funcopy, mock, sig):
funcopy.mock = mock
# can't use isinstance with mocks
@ -224,6 +225,7 @@ def _setup_func(funcopy, mock):
funcopy.assert_called = assert_called
funcopy.assert_not_called = assert_not_called
funcopy.assert_called_once = assert_called_once
funcopy.__signature__ = sig
mock._mock_delegate = funcopy