Planet Python
Last update: July 25, 2025 04:44 PM UTC
July 25, 2025
Real Python
The Real Python Podcast – Episode #258: Supporting the Python Package Index
What goes into supporting more than 650,000 projects and nearly a million users of the Python Package Index? This week on the show, we speak with Maria Ashna about her first year as the inaugural PyPI Support Specialist.
Django Weblog
DjangoCon Africa 2025 Heads to Arusha 🇹🇿
We’re excited to share that DjangoCon Africa is returning this year — and this time we’re heading to Arusha, Tanzania from August 11–15, 2025! 🎉
Arusha city view with Mount Meru in the background, credits Halidtz - CC BY-SA 4.0
This second edition builds on the incredible success of the inaugural DjangoCon Africa held in Zanzibar in 2023. That event welcomed over 200 attendees from 22+ countries, with more than half of the participants being women — a powerful statement about the growing diversity and strength of the African tech ecosystem.
What to expect at DjangoCon Africa 2025
Five action-packed days of:
- 💬 Talks Three full days of diverse talks spanning programming, technology, society, career development, business, education, and more — all with voices from across Africa and around the globe.
- 🖥️ Workshops Hands-on training led by Django and Python experts — perfect for deepening your skills and learning new ones.
- 🤝 Sprints Join code sprints and contribute to open source projects, including Django itself.
- 👩💻 Django Girls workshop A special pre-conference workshop for women interested in web development — part of a global initiative that has introduced thousands of women to Django.
- 🔍 Discovery & connections Meet developers, designers, educators, and innovators from across the continent. Share stories. Build partnerships. Celebrate African tech talent.
Co-hosting with UbuCon Africa 2025
This year’s DjangoCon Africa comes with a special twist: we’re proud to co-host the first-ever UbuCon Africa — a regional gathering of Ubuntu users and contributors.
From August 13–15, UbuCon Africa will bring together Linux and open source enthusiasts to celebrate people-powered tech, collaboration, and the Ubuntu spirit of “I am because we are.” Whether you're a die-hard Debian dev or just curious about Ubuntu — you’ll feel right at home.
🎟 Secure your spot & get involved
Whether you’re looking to attend, speak, sponsor, or volunteer, DjangoCon Africa has a place for you.
This is more than just a conference. It’s a celebration of community, learning, and open source built by and for people across Africa and beyond.
Join us in Arusha this August. Let’s shape the future of Django together.
July 24, 2025
Ned Batchelder
Coverage 7.10.0: patch
Years ago I greeted a friend returning from vacation and asked how it had been. She answered, “It was good, I got a lot done!” I understand that feeling. I just had a long vacation myself, and used the time to clean up some old issues and add some new features in coverage.py v7.10.
The major new feature is a configuration option,
[run] patch
. With it, you specify named
patches that coverage can use to monkey-patch some behavior that gets in the way
of coverage measurement.
The first is subprocess
. Coverage works great when you start your
program with coverage measurement, but has long had the problem of how to also
measure the coverage of sub-processes that your program created. The existing
solution had been a complicated two-step process of creating obscure .pth files
and setting environment variables. Whole projects appeared on PyPI to handle
this for you.
Now, patch = subprocess
will do this for you automatically, and clean
itself up when the program ends. It handles sub-processes created by the
subprocess module, the
os.system() function, and any of the
execv or spawnv families of
functions.
This alone has spurred one user to exclaim,
The latest release of Coverage feels like a Christmas present! The native support for Python subprocesses is so good!
Another patch is _exit
. This patches
os._exit() so that coverage saves its data before
exiting. The os._exit() function is an immediate and abrupt termination of the
program, skipping all kinds of registered clean up code. This patch makes it
possible to collect coverage data from programs that end this way.
The third patch is execv
. The execv functions
end the current program and replace it with a new program in the same process.
The execv
patch arranges for coverage to save its data before the
current program is ended.
Now that these patches are available, it seems silly that it’s taken so long. They (mostly) weren’t difficult. I guess it took looking at the old issues, realizing the friction they caused, and thinking up a new way to let users control the patching. Monkey-patching is a bit invasive, so I’ve never wanted to do it implicitly. The patch option gives the user an explicit way to request what they need without having to get into the dirty details themselves.
Another process-oriented feature was contributed by Arkady Gilinsky: with
--save-signal=USR1
you can specify a user signal that coverage will
attend to. When you send the signal to your running coverage process, it will
save the collected data to disk. This gives a way to measure coverage in a
long-running process without having to end the process.
There were some other fixes and features along the way, like better HTML
coloring of multi-line statements, and more default exclusions
(if TYPE_CHECKING:
and ...
).
It feels good to finally address some of these pain points. I also closed some stale issues and pull requests. There is more to do, always more to do, but this feels like a real step forward. Give coverage 7.10.0 a try and let me know how it works for you.
TestDriven.io
Deploying a Django App to Sevalla
This tutorial looks at how to deploy a Django application to Sevalla.
The Python Show
Writing Creating TUI Applications with Textual and Python
In this episode, Mike Driscoll talks about his latest book, Creating TUI Applications with Textual and Python.
Python Software Foundation
PSF Board Election Nominations Opening July 29th
Techiediaries - Django
Python Roadmap with Free Courses/Certifcates to High-Paying Jobs
This article serves as a focused investment of your time. We’ll walk you through five free, targeted certifications, each crafted to prepare you for a specific role that ranks among the highest-paying in the market, all hinging on your Python skills.
July 23, 2025
Real Python
Python's Requests Library (Guide)
The Requests library is the go-to tool for making HTTP requests in Python. Learn how to use its intuitive API to send requests and interact with the web.
Daniel Roy Greenfeld
TIL: Single source version package builds with uv
Tired of updating the version in multiple places before publishing a package update? Leery of using inspect.metadata to fetch the package? Here's how to have a single source of version using UV's build subcommand.
Seth Michael Larson
Nintendo Switch 2 physical game price differences
July 22, 2025
Python Morsels
Don't call dunder methods
It's best to avoid calling dunder methods. It's common to define dunder methods, but uncommon to call them directly.
Table of contents
What is a dunder method?
In Python, a method with two underscores around it (__like_this__
) is referred to as a "dunder method", which stands for "double-underscore method".
As noted on my Python terminology page, the phrase "dunder method" isn't an official term.
Officially, dunder methods are referred to as "special methods", though that term doesn't sound "special" enough so folks sometimes say "dunder method". You'll also sometimes hear "magic method", though "magic method" seems to be less popular in recent years (after all, these methods aren't magical).
Dunder methods essentially act as a sort of "hook", allowing us (Python programmers) to customize the behavior of built-in Python behaviors.
Define dunder methods on your classes
Which dunder methods you should …
Read the full article: https://www.pythonmorsels.com/avoid-dunder-methods/
PyCoder’s Weekly
Issue #691: Inheritance, Logging, marimo, and More (July 22, 2025)
Python Insider
Python 3.14 release candidate 1 is go!
Real Python
Exploring Python Closures: Examples and Use Cases
Learn about Python closures: function-like objects with extended scope used for decorators, factories, and stateful functions.
Test and Code
235: pytest-django - Adam Johnson
In this episode, special guest Adam Johnson joins the show and examines pytest-django, a popular plugin among Django developers. He highlights its advantages over the built-in unittest framework, including improved test management and debugging. Adam addresses transition challenges, evolving fixture practices, and offers tips for optimizing test performance. This episode is a concise guide for developers looking to enhance their testing strategies with pytest-django.
Links:
- pytest-django - a plugin for pytest that provides a set of useful tools for testing Django applications and projects.
Help support the show AND learn pytest:
- The Complete pytest course is now a bundle, with each part available separately.
- pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.
- Using pytest with Projects has lots of "when you need it" sections like debugging failed tests, mocking, testing strategy, and CI
- Then pytest Booster Rockets can help with advanced parametrization and building plugins.
- Whether you need to get started with pytest today, or want to power up your pytest skills, PythonTest has a course for you.
death and gravity
When to use classes in Python? When you repeat similar sets of functions
Having trouble figuring out when to use classes? In this article, we look at another heuristic for using classes in Python, with examples from real-world code, and some things to keep in mind.
July 21, 2025
Real Python
What Does isinstance() Do in Python?
Learn what isinstance() does in Python and how to use this built-in function to check an object's type. Discover its practical uses along with key limitations.
Python Bytes
#441 It's Michaels All the Way Down
Topics include Turso Litestream, PEP 792 – Project status markers in the simple index, Run coverage on tests, and docker2exe.
Daniel Roy Greenfeld
uv run for running tests on versions of Python
Using uv run with make to replace tox or nox for testing multiple versions of Python locally.
July 20, 2025
Go Deh
All Truth in Truthtables!
Armin Ronacher
Welcoming The Next Generation of Programmers
July 18, 2025
Mike Driscoll
Announcing Squall: A TUI SQLite Editor
Squall is a SQLite viewer and editor that runs in your terminal. Squall is written in Python and uses the Textual package. Squall allows you to view and edit SQLite databases using SQL. You can check out the code on GitHub. Screenshots Here is what Squall looks like using the Chinook database: Command-Line Options Currently, there is […]
The post Announcing Squall: A TUI SQLite Editor appeared first on Mouse Vs Python.
The Python Coding Stack
Do You Really Know How `or` And `and` Work in Python?
Let's explore the Python expression `5 or 0`
Talk Python to Me
#514: Python Language Summit 2025
Every year the core developers of Python convene in person to focus on high priority topics for CPython and beyond. This year they met at PyCon US 2025. Those meetings are closed door to keep focused and productive. But we're lucky that Seth Michael Larson was in attendance and wrote up each topic presented and the reactions and feedback to each. We'll be exploring this year's Language Summit with Seth. It's quite insightful to where Python is going and the pressing matters.
Matt Layman
Enhancing Chatbot State Management with LangGraph
Picture this: it’s late and I’m deep in a coding session, wrestling with a chatbot that’s starting to feel more like a living thing than a few lines of Python. Today’s mission? Supercharge the chatbot’s ability to remember and verify user details like names and birthdays using LangGraph. Let’s unpack the journey, from shell commands to Git commits, and see how this bot got a memory upgrade. For clarity, this is my adventure running through the LangGraph docs.