skip to navigation
skip to content

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.

July 25, 2025 12:00 PM UTC


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, taken from a hotel balcony

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:

  1. 💬 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.
  2. 🖥️ Workshops Hands-on training led by Django and Python experts — perfect for deepening your skills and learning new ones.
  3. 🤝 Sprints Join code sprints and contribute to open source projects, including Django itself.
  4. 👩‍💻 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.
  5. 🔍 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 25, 2025 06:54 AM UTC

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.

July 24, 2025 11:03 PM UTC


TestDriven.io

Deploying a Django App to Sevalla

This tutorial looks at how to deploy a Django application to Sevalla.

July 24, 2025 10:28 PM UTC


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.

July 24, 2025 08:31 PM UTC


Python Software Foundation

PSF Board Election Nominations Opening July 29th

July 24, 2025 09:56 AM UTC


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 24, 2025 12:00 AM UTC

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.

July 23, 2025 02:00 PM UTC


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.

July 23, 2025 01:13 AM UTC


Seth Michael Larson

Nintendo Switch 2 physical game price differences

July 23, 2025 12:00 AM UTC

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

  1. What is a dunder method?
  2. Define dunder methods on your classes
  3. Don't call dunder methods on your objects
  4. Why not call dunder methods?
  5. Sometimes you need to call dunder methods
  6. Avoid calling dunder methods, but do define them

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/

July 22, 2025 11:39 PM UTC


PyCoder’s Weekly

Issue #691: Inheritance, Logging, marimo, and More (July 22, 2025)

July 22, 2025 07:30 PM UTC


Python Insider

Python 3.14 release candidate 1 is go!

July 22, 2025 04:13 PM UTC


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.

July 22, 2025 02:00 PM UTC


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:


Help support the show AND learn pytest: 

★ Support this podcast on Patreon ★

July 22, 2025 08:00 AM UTC


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 22, 2025 07:42 AM UTC

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.

July 21, 2025 02:00 PM UTC


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.

July 21, 2025 08:00 AM UTC


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 21, 2025 07:02 AM UTC

July 20, 2025


Go Deh

All Truth in Truthtables!

July 20, 2025 10:28 AM UTC


Armin Ronacher

Welcoming The Next Generation of Programmers

July 20, 2025 12:00 AM UTC

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.

July 18, 2025 01:50 PM UTC


The Python Coding Stack

Do You Really Know How `or` And `and` Work in Python?

Let's explore the Python expression `5 or 0`

July 18, 2025 01:04 PM UTC


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.

July 18, 2025 08:00 AM UTC


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.

July 18, 2025 12:00 AM UTC