diff -r da510d1aa683 -r e11a0e6a17c1 Lib/unittest/mock.py --- a/Lib/unittest/mock.py Fri Dec 09 09:35:49 2016 +0100 +++ b/Lib/unittest/mock.py Fri Dec 09 18:08:38 2016 +0800 @@ -104,26 +104,16 @@ def _copy_func_details(func, funcopy): - funcopy.__name__ = func.__name__ - funcopy.__doc__ = func.__doc__ - try: - funcopy.__text_signature__ = func.__text_signature__ - except AttributeError: - pass # we explicitly don't copy func.__dict__ into this copy as it would # expose original attributes that should be mocked - try: - funcopy.__module__ = func.__module__ - except AttributeError: - pass - try: - funcopy.__defaults__ = func.__defaults__ - except AttributeError: - pass - try: - funcopy.__kwdefaults__ = func.__kwdefaults__ - except AttributeError: - pass + for attribute in ( + "__name__", "__doc__", "__text_signature__", + "__module__", "__defaults__", "__kwdefaults__", + ): + try: + setattr(funcopy, attribute, getattr(func, attribute)) + except AttributeError: + pass def _callable(obj):