Open
Description
This issue is intended to track t 7C80 he status of Python 3.7 core features as implemented by MicroPython. Not all of these changes should necessarily be implemented in MicroPython but documenting their status is important.
Python 3.7.0 (final) was released on the 27 June 2018. The Features for 3.7 are defined in PEP 537 and an explanation of the changes can be found in What's New in Python 3.7.
- PEP 538 - Coercing the legacy C locale to a UTF-8 based locale
- PEP 539 - A New C-API for Thread-Local Storage in CPython
- PEP 540 -
UTF-8
mode - PEP 552 - Deterministic
pyc
- PEP 553 - Built-in breakpoint()
- PEP 557 - Data Classes
- PEP 560 - Core support for typing module and generic types
- PEP 562 - Module
__getattr__
and__dir__
; see partial implementation (__getattr__
): 454cca6 - PEP 563 - Postponed Evaluation of Annotations
- PEP 564 - Time functions with nanosecond resolution; see partial implementation: d4b61b0
- PEP 565 - Show DeprecationWarning in
__main__
- PEP 567 - Context Variables
Other language changes
-
async
andawait
are now reserved keywords -
dict
objects must preserve insertion-order - More than 255 arguments can now be passed to a function, and a function can now have more than 255 parameters
-
bytes.fromhex()
andbytearray.fromhex()
now ignore all ASCII whitespace, not only spaces -
str
,bytes
, andbytearray
gained support for the newisascii()
method, which can be used to test if a string or bytes contain only the ASCII characters -
ImportError
now displays module name and module__file__
path whenfrom ... import ... fails
- Circular imports involving absolute imports with binding a submodule to a name are now supported
-
object.__format__(x, '')
is now equivalent tostr(x)
rather thanformat(str(self), '')
- In order to better support dynamic creation of stack traces,
types.TracebackType
can now be instantiated from Python code, and thetb_next
attribute on tracebacks is now writable - When using the
-m
switch,sys.path[0]
is now eagerly expanded to the full starting directory path, rather than being left as the empty directory (which allows imports from the current working directory at the time when an import occurs) - The new
-X importtime
option or thePYTHONPROFILEIMPORTTIME
environment variable can be used to show the timing of each module import
Changes to MicroPython built-in modules
- asyncio (many, may need a separate ticket)
- gc - New features:
gc.freeze()
,gc.unfreeze()
,gc-get_freeze_count
- math -
math.remainder()
added to implement IEEE 754-style remainder - re - A number of tidy up features including better support for splitting on empty strings and copy support for compiled expressions and match objects
- sys -
sys.breakpointhook()
added.sys.get(/set)_coroutine_origin_tracking_depth()
added. - time - Mostly updates to support nanosecond resolution in PEP564, see above.
(Changes to non-built-in modules will need to be documented elsewhere.)
Metadata
Metadata
Assignees
Labels
No labels