]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39702: Update the Language Reference (PEP 614) (GH-18802)
authorBrandt Bucher <brandtbucher@gmail.com>
Sat, 7 Mar 2020 18:23:49 +0000 (10:23 -0800)
committerGitHub <noreply@github.com>
Sat, 7 Mar 2020 18:23:49 +0000 (10:23 -0800)
Doc/reference/compound_stmts.rst
Doc/whatsnew/3.9.rst

index ac2065b4cff9b120163c3fcd0a3a33bf6ff3f974..c14e7c79fe14cfb87395ff281ac9d02a775e3d8a 100644 (file)
@@ -507,7 +507,7 @@ A function definition defines a user-defined function object (see section
    funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")"
           : ["->" `expression`] ":" `suite`
    decorators: `decorator`+
-   decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE
+   decorator: "@" `assignment_expression` NEWLINE
    dotted_name: `identifier` ("." `identifier`)*
    parameter_list: `defparameter` ("," `defparameter`)* "," "/" ["," [`parameter_list_no_posonly`]]
                  :   | `parameter_list_no_posonly`
@@ -550,6 +550,11 @@ is roughly equivalent to ::
 
 except that the original function is not temporarily bound to the name ``func``.
 
+.. versionchanged:: 3.9
+   Functions may be decorated with any valid :token:`assignment_expression`.
+   Previously, the grammar was much more restrictive; see :pep:`614` for
+   details.
+
 .. index::
    triple: default; parameter; value
    single: argument; function definition
@@ -717,6 +722,11 @@ is roughly equivalent to ::
 The evaluation rules for the decorator expressions are the same as for function
 decorators.  The result is then bound to the class name.
 
+.. versionchanged:: 3.9
+   Classes may be decorated with any valid :token:`assignment_expression`.
+   Previously, the grammar was much more restrictive; see :pep:`614` for
+   details.
+
 **Programmer's note:** Variables defined in the class definition are class
 attributes; they are shared by instances.  Instance attributes can be set in a
 method with ``self.name = value``.  Both class and instance attributes are
index a59de485a95d3d40e4dfcfcd6f24425343714355..befd6d0d940ab68507bf5d0aefe0a2b3d004312a 100644 (file)
@@ -138,6 +138,10 @@ Other Language Changes
   There are similar changes for :class:`bytes` and :class:`bytearray` objects.
   (Contributed by Serhiy Storchaka in :issue:`28029`.)
 
+* Any valid expression can now be used as a :term:`decorator`.  Previously, the
+  grammar was much more restrictive.  See :pep:`614` for details.
+  (Contributed by Brandt Bucher in :issue:`39702`.)
+
 
 New Modules
 ===========