From 03b9537dc515d10528f83c920d38910b95755aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Araujo?= Date: Thu, 12 Oct 2017 12:28:55 -0400 Subject: [PATCH] bpo-31567: more decorator markup fixes in docs (GH-3959) (#3966) --- Doc/library/functions.rst | 13 +++++++++++-- Doc/library/typing.rst | 6 +++--- Lib/test/test_typing.py | 4 ++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index eed67301c04973..e47225718c1b51 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1419,12 +1419,21 @@ are always available. They are listed here in alphabetical order. :func:`classmethod` for a variant that is useful for creating alternate class constructors. + Like all decorators, it is also possible to call ``staticmethod`` as + a regular function and do something with its result. This is needed + in some cases where you need a reference to a function from a class + body and you want to avoid the automatic transformation to instance + method. For these cases, use this idiom: + + class C: + builtin_open = staticmethod(open) + For more information on static methods, consult the documentation on the standard type hierarchy in :ref:`types`. - .. index:: - single: string; str() (built-in function) +.. index:: + single: string; str() (built-in function) .. _func-str: .. class:: str(object='') diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index bd04f731a1238b..9883d8bbe86596 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -897,17 +897,17 @@ The module defines the following classes, functions and decorators: See :pep:`484` for details and comparison with other typing semantics. -.. decorator:: no_type_check(arg) +.. decorator:: no_type_check Decorator to indicate that annotations are not type hints. - The argument must be a class or function; if it is a class, it + This works as class or function :term:`decorator`. With a class, it applies recursively to all methods defined in that class (but not to methods defined in its superclasses or subclasses). This mutates the function(s) in place. -.. decorator:: no_type_check_decorator(decorator) +.. decorator:: no_type_check_decorator Decorator to give another decorator the :func:`no_type_check` effect. diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 87d707c1cde6f3..a3b6eb933935e2 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -1471,8 +1471,8 @@ class D(C): def test_meta_no_type_check(self): @no_type_check_decorator - def magic_decorator(deco): - return deco + def magic_decorator(func): + return func self.assertEqual(magic_decorator.__name__, 'magic_decorator')