In March 2022, the Python 3.11.0a6 pre-release version became available for you to test, so you can stay on top of Python’s latest features. This release is the sixth of seven planned alpha releases before Python enters the beta phase, which is scheduled for May 5, 2022.
PEPs now have a new home with a sleek, modern theme. Also, PEP 594, which deals with removing dead batteries from the Python standard library, has been accepted. Regarding Python events, EuroPython 2022 held its call for proposals (CFP) and is currently selling tickets for the conference.
Join Now: Click here to join the Real Python Newsletter and you'll never miss another Python tutorial, course update, or post.
Let’s dive into the most exciting Python news from the past month!
Python Released Several New Versions
Almost every month, several Python versions are released. They typically add new features, fix bugs, correct security issues, and more. March 2022 was no exception. You now have several new releases to test, use, and enjoy. Read on to learn more!
Python 3.11.0a6 Became Available
The sixth alpha release of Python became available on March 7. After a week’s delay due to some internal problems, Python 3.11.0a6 is here for you to take for a test drive. Python 3.11 boasts several new features and changes:
- PEP 657 – Include Fine-Grained Error Locations in Tracebacks
- PEP 654 – Exception Groups and
- PEP 673 – Self Type
- PEP 646 – Variadic Generics
To learn more about the basics of these features, check out Python News: What’s New From February 2022?. Additionally, if you’d like an early dive into how fine-grained error locations can improve your coding and debugging experience, check out Python 3.11 Preview: Even Better Error Messages.
To try out the most exciting features that will come with Python 3.11 and to stay up to date with the language’s evolution, go ahead and install the new interpreter. Feel free to select your favorite installation procedure below:
$ docker pull python:3.11.0a6-slim $ docker run -it --rm python:3.11.0a6-slim
$ pyenv update $ pyenv install 3.11.0a6 $ pyenv local 3.11.0a6 $ python
$ git clone email@example.com:python/cpython.git $ cd cpython/ $ git checkout v3.11.0a6 $ ./configure $ make $ ./python
Give it a try! Go your own way and explore the cool new features of Python 3.11 with your own hands!
Other Python Releases
Several other Python versions have seen the light of day this month. Python 3.10.3, 3.9.11, 3.8.13, and 3.7.13 are now available with several security corrections, making them more robust and reliable.
March also welcomed two last-minute Python versions, 3.10.4 and 3.9.12. They were released outside the regular schedule to quickly fix a regression that caused Python to no longer build on Red Hat Enterprise Linux 6:
Even though this operating system is quite old, it still supports a considerable production workload, including a few services in Python’s infrastructure, such as the
manylinux2010 image. This image is based on CentOS 6, which was also affected by the issue.
Because these are last-minute releases, they just add a few bug fixes and security corrections on top of their respective previous versions.
Python Published a New Website for PEPs
Python Enhancement Proposals, more commonly known as PEPs, now have a brand-new home with a dedicated URL at peps.python.org. This new website puts its best face forward, with a shiny theme that looks clean and modern:
If you direct your browser to this address, then you’ll land on PEP 0, which is the index of all PEPs. There, you’ll find all the PEPs carefully organized by category and number.
The site also includes handy information about the PEPs themselves. You’ll find the PEP type and its current status. The PEP’s status is handy because it allows you to quickly learn if a given PEP has been accepted or rejected, or if it’s in another stage.
Go ahead and take a look at this new PEPs website. You won’t regret it!
Dead Batteries Will Be Removed From the Standard Library
Python is well-known for having a standard library with an extensive collection of useful modules and packages. Because of its broad standard library, Python is often referred to as a batteries-included language, which has been an important cornerstone of Python’s success story. With time, some of these batteries have stopped being useful or convenient. However, they’ve remained, bloating the standard library.
Python’s standard library has been filling up with poorly designed modules, unnecessary duplication, and nonessential features.
To counter this trend, the Python Steering Council has accepted PEP 594:
The PEP’s primary goal is to remove dead batteries from the standard library. In other words, the PEP proposes a list of modules to be removed from the standard library in future Python releases. The candidate modules will include modules that:
- Support old file formats, such as those associated with Commodore and SUN
- Support APIs and operating systems that were superseded a long time ago, such as macOS 9
- Have no current maintainer
- Are poorly designed and almost impossible to fix, such as
- Imply security risks, such as
- Have better alternatives outside the library
This PEP has other specific goals, which include:
- Freeing the core development team from maintaining unused code
- Directing the user to better solutions that are typically available in the third-party ecosystem
- Lowering the requirements for platforms with limited storage capabilities
The proposed calendar for removing these dead batteries includes issuing a
DeprecationWarning starting from Python 3.11 and finally removing them definitively in Python 3.13. It’s advisable to check your projects, see if they use any of these dead batteries, and find suitable replacements.
MyPy Supports the
match Statement Experimentally
Python 3.10 introduced the
case statements to bring structural pattern matching into the language. This feature turned out to be one of the most controversial ones in Python. It enables your programs to extract information from complex data types, branch on the structure of data, and apply specific actions based on different forms of data.
Typically, tools like code linters and formatters have a natural delay when it comes to adopting changes in the target language’s syntax. That’s the case of MyPy, which provides an optional yet popular static type checker for Python.
In happy news, MyPy released version 0.940 on March 11. This new version has experimental support for type checking
case statements. You can try it out now! Go ahead and install MyPy in a Python virtual environment:
PS> python -m venv venv PS> venv\Scripts\activate (venv) PS> python -m pip install mypy
$ python -m venv venv $ source venv/bin/activate (venv) $ python -m pip install mypy
The first two commands create and activate a brand-new virtual environment in your current directory. The third command installs the latest version of MyPy, which should be 0.940 or greater.
Now create a Python file called
try_mypy.py. Once you have the file open in your favorite text editor, then copy and paste the code example from the MyPy 0.940 release post:
# try_mypy.py def empty_value(x: int | str) -> str: match x: case str(): # Type of "x" is "str" here return '""' case int(): # Type of "x" is "int" here return "0" # No error about missing return statement (unreachable)
This function takes an
x argument that can be either a string or an integer number. The
case statement returns an empty string if
x is of type
x is an
int. If you run the
mypy command against this file, then you’ll get the following result:
$ python -m mypy try_mypy.py Success: no issues found in 1 source file
Cool! Now MyPy can detect that
x will be of either type
int without issuing an error report. MyPy can correctly parse the
case statement and suppress the
"missing return statement" error report.
Check out the release notes for more information about the current limitations of this experimental feature.
EuroPython 2022 Announced Its CFP and Tickets Sale
After two years of remote events over Zoom, Matrix, and Discord, EuroPython is committed to an in-person conference in 2022. It’ll also be offered virtually for those who can’t travel to Dublin:
The conference will take place from July 11 to 17! It’ll host the following events:
- Two Workshop/Tutorial Days (July 11-12, Monday-Tuesday)
- Three Conference Days (July 13-15, Wednesday-Friday)
- Sprint Weekend (July 16-17, Saturday-Sunday)
The conference will take place at The CCD in Dublin:
The EuroPython 2022 team opened the call for proposals (CFP) on March 8. In this CFP, EuroPython was looking for proposals on every aspect of Python, including:
- Programming from novice to advanced levels
- Applications and frameworks
- Experiences in introducing Python into your organization
Undoubtedly, this EuroPython will be an amazing conference with a lot of interesting talks and activities that will definitely contribute a ton of knowledge to the world’s Python community.
The CFP closed on Sunday, April 3. Did you send your proposal? Let us know in the comments!
Do you want to contribute to the conference as a volunteer? Well, this is your opportunity. EuroPython is organized and run by volunteers from the Python community. So, new faces are always welcome!
In turn, you’ll have a safe space to share your thoughts and work. You’ll be shaping the conference, ensuring it’s for the community and of the community. Of course, you’ll also have a lot of fun in the process! If you’re interested in joining one of the teams, then send an email to firstname.lastname@example.org.
Finally, the EuroPython 2022 team also opened ticket sales on March 17. If you haven’t gotten your ticket, then go ahead and take the plunge. Do you need financial aid? Well, EuroPython 2022 can also help you with this. Check out their Financial Aid page for more info.
What’s Next for Python?
So, what’s your favorite piece of Python news from March? Did we miss anything notable? Are you going to give Python 3.11.0a6 a try? What do you think about removing dead batteries from the standard library? Do you plan to attend to EuroPython 2022? Let us know in the comments!