Update PEP 484 with recommended Python 2 alternative.
This commit is contained in:
parent
a0e959b0b7
commit
238df5a182
46
pep-0484.txt
46
pep-0484.txt
|
@ -1372,6 +1372,52 @@ Types available in the ``typing.re`` submodule:
|
|||
results (generic over ``AnyStr``)
|
||||
|
||||
|
||||
Suggested syntax for Python 2.7 and straddling code
|
||||
===================================================
|
||||
|
||||
Some tools may want to support type annotations in code that must be
|
||||
compatible with Python 2.7. For this purpose this PEP has a suggested
|
||||
(but not mandatory) extension where function annotations are placed in
|
||||
a ``# type:`` comment. Such a comment must be placed immediately
|
||||
following the function header (before the docstring). An example: the
|
||||
following Python 3 code::
|
||||
|
||||
def embezzle(self, account: str, funds: int = 1000000, *fake_receipts: str) -> None:
|
||||
"""Embezzle funds from account using fake receipts."""
|
||||
<code goes here>
|
||||
|
||||
is equivalent to the following::
|
||||
|
||||
def embezzle(self, account, funds=1000000, *fake_receipts):
|
||||
# type: (str, int, *str) -> None
|
||||
"""Embezzle funds from account using fake receipts."""
|
||||
<code goes here>
|
||||
|
||||
Notes:
|
||||
|
||||
- Tools that support this syntax should support it regardless of the
|
||||
Python version being checked. This is necessary in order to support
|
||||
code that straddles Python 2 and Python 3.
|
||||
|
||||
- Every argument must be accounted for, except the first argument of
|
||||
instance and class methods.
|
||||
|
||||
- The return type is mandatory. If in Python 3 you would omit some
|
||||
argument or the return type, the Python 2 notation should use
|
||||
``Any``.
|
||||
|
||||
- For ``*args`` and ``**kwds``, put 1 or 2 stars in front of the
|
||||
corresponding type annotation. (As with Python 3 annotations, the
|
||||
annotation here denotes the type of the individual argument values,
|
||||
not of the tuple/dict that you receive as the special argument value
|
||||
``args`` or ``kwds``.)
|
||||
|
||||
- Like other type comments, any names used in the annotations must be
|
||||
imported or defined by the module containing the annotation.
|
||||
|
||||
- The entire annotation must be one line.
|
||||
|
||||
|
||||
Rejected Alternatives
|
||||
=====================
|
||||
|
||||
|
|
Loading…
Reference in New Issue