In the last few years python released a lot of versions lets have a summary of these versions and features.

Version | Date | Important Feature | Reference |
Python 3.6.14 final | 2021-06-28 | bpo-44022: mod:http.client now avoids infinitely reading potential HTTP headers after a 100 Continue status response from the server.bpo-43882: The presence of newline or tab characters in parts of a URL could allow some f orms of attacks. Following the controlling specification for URLs defined by WHATWG urllib.parse() now removes ASCII newlines and tabs from URLs, preventing such attack | Link |
Python 3.7.11 | 2021-06-28 | bpo-36820: Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the __traceback__ attribute. Patch by Mario Corchero. bpo-34776: Fix dataclasses to support forward references in type annotations | Link |
Python 3.8.11 | 2021-06-28 | bpo-36541: lib2to3 now recognizes named assignment expressions (the walrus operator, := )bpo-39209: Correctly handle multi-line tokens in interactive mode. Patch by Pablo Galindo. bpo-39216: Fix constant folding optimization for positional only arguments – by Anthony Sottile. bpo-39215: Fix SystemError when nested function has annotation on positional-only argument – by Anthony Sottile. bpo-35224: Reverse evaluation order of key: value in dict comprehensions as proposed in PEP 572. I.e. in {k: v for ...} , k will be evaluated before v .bpo-10544: Yield expressions are now disallowed in comprehensions and generator expressions except the expression for the outermost iterable. bpo-32117: Iterable unpacking is now allowed without parentheses in yield and return statements, e.g. yield 1, 2, 3, *rest . Thanks to David Cuthbert for the change and Jordan Chapman for added tests. | Link |
Python 3.9.6 final | 2021-06-28 | bpo-43650: Fix MemoryError in shutil.unpack_archive() which fails inside shutil._unpack_zipfile() on large files. Patch by Igor Bolshakov.bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints.bpo-43295: datetime.datetime.strptime() now raises ValueError instead of IndexError when matching 'z' with the %z format specifier.bpo-40536: Added the available_timezones() function to the zoneinfo module. Patch by Paul Ganssle. bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a “pending key” (Not yet inserted in split-table). Patch by Xiang Zhang. bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a “pending key” (Not yet inserted in split-table). Patch by Xiang Zhang. | Link |
3.10 | XXXX-XX-XX | ||
3.11 | XXXX-XX-XX |
Note: Spark runs on Java 8/11, Scala 2.12, Python 3.6+ and R 3.5+. Java 8 prior to version 8u92 support is deprecated as of Spark 3.0.0. For the Scala API, Spark 3.1.2 uses Scala 2.12.