From 9b33ce48a7846dbdad32d4f8936b08e6b78a2faf Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 11 Jun 2019 13:42:35 -0700 Subject: [PATCH] bpo-35766: What's new in the ast and typing modules (#13984) --- Doc/whatsnew/3.8.rst | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index e2f9ce8dd6..eb27613919 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -363,6 +363,29 @@ Improved Modules ================ +ast +--- + +AST nodes now have ``end_lineno`` and ``end_col_offset`` attributes, +which give the precise location of the end of the node. (This only +applies to nodes that have ``lineno`` and ``col_offset`` attributes.) + +The :func:`ast.parse` function has some new flags: + +* ``type_comments=True`` causes it to return the text of :pep:`484` and + :pep:`526` type comments associated with certain AST nodes; + +* ``mode='func_type'`` can be used to parse :pep:`484` "signature type + comments" (returned for function definition AST nodes); + +* ``feature_version=N`` allows specifying the minor version of an + earlier Python 3 version. (For example, ``feature_version=4`` will + treat ``async`` and ``await`` as non-reserved words.) + +New function :func:`ast.get_source_segment` returns the source code +for a specific AST node. + + asyncio ------- @@ -762,6 +785,29 @@ time Added new clock :data:`~time.CLOCK_UPTIME_RAW` for macOS 10.12. (Contributed by Joannah Nanjekye in :issue:`35702`.) + +typing +------ + +The :mod:`typing` module incorporates several new features: + +* Protocol definitions. See :pep:`544`, :class:`typing.Protocol` and + :func:`typing.runtime_checkable`. Simple ABCs like + :class:`typing.SupportsInt` are now ``Protocol`` subclasses. + +* A dictionary type with per-key types. See :pep:`589` and + :class:`typing.TypedDict`. + +* Literal types. See :pep:`586` and :class:`typing.Literal`. + +* "Final" variables, functions, methods and classes. See :pep:`591`, + :class:`typing.Final` and :func:`typing.final`. + +* New protocol class :class:`typing.SupportsIndex`. + +* New functions :func:`typing.get_origin` and :func:`typing.get_args`. + + unicodedata ----------- -- 2.40.0