;
;

Planet Python

Planet Python - http://planetpython.org/

Python GUIs: How to Check if a QLineEdit is Empty in Python — Empty strings are falsey in Python

A reader asked: I just want to know, how do I check whether a QLineEdit is empty or not? The QLineEdit class doesn't have an isEmpty() method whi...
Posted on 9 September 2026 | 6:00 am

Python GUIs: Fixing Crashes When Using NumPy Arrays with QImage in Qt Threads — How to safely pass image data between threads when streaming video or updating displays

I'm using a threaded runner to stream a live video feed by converting a NumPy array to a QImage, then to a QPixmap, and displaying it on a QLabel....
Posted on 9 September 2026 | 6:00 am

Python GUIs: Clean up on exit — Stopping threads when closing a PyQt6 application — How to properly shut down background threads and workers when your application window is closed

I'm using QThreadPool and worker threads in my PyQt application. When I click the X button to close the window, the threads keep running in the ba...
Posted on 9 September 2026 | 6:00 am

Graham Dumpleton: Tracing Flask with wrapture

For a web application the natural unit of tracing is the request: one HTTP request, its method, path and status, and every observed call made while...
Posted on 9 September 2026 | 1:39 am

Graham Dumpleton: Zero-code tracing with wrapture

The previous post traced the shop with three bindings and a sink, all applied from the program's own entry point. That is fine when the program is ...
Posted on 9 September 2026 | 12:00 am

PyCoder’s Weekly: Issue #751: Profiling, From pandas to Polars, NotImplemented, and More (2026-09-08)

#751 – SEPTEMBER 8, 2026 View in Browser » Profiling and Making Apps Fast by Default How do you plan for the performance of your Python appli...
Posted on 8 September 2026 | 7:30 pm

Django Weblog: Call for volunteers: Fundraising Working Group

The Django Software Foundation is looking for people to join the Fundraising Working Group. This is a particularly interesting time to get involved...
Posted on 8 September 2026 | 7:27 pm

Python Bytes: #495 Banned

<strong>Topics covered in this episode:</strong><br> <ul> <li><strong><a href="https://www.youtube.com/pla...
Posted on 8 September 2026 | 6:48 pm

LernerPython blog, from Reuven Lerner: Claude Code always produces something. That’s the hard part.

For many months, I’ve been using Claude Code several hours each day. Not to experiment, but to get work done. A growing amount of the functiona...
Posted on 8 September 2026 | 1:04 pm

Graham Dumpleton: Live tracing with wrapture

When I wrote about unit testing with wrapture the pattern in every test was the same: create a binding on a method, open a timeline(), run the code...
Posted on 8 September 2026 | 12:00 am

Glyph Lefkowitz: ... but what about video games?

I get asked this rhetorical question a lot, in various forms: Sure, datacenters might use a lot of energy, but you don’t have to use a hosted fron...
Posted on 6 September 2026 | 10:57 pm

The Python Coding Stack: How I Code (Late 2026 Version)

You open a blank .py file in your favourite IDE. You have a blank page in front of you. You start writing code.This is how it used to be. And perha...
Posted on 6 September 2026 | 8:25 pm

Bob Belderbos: 5 design patterns used in my new habit tracker app

There are plenty of habit trackers, but I wanted to build mine with constraints, a calendar view and habit streaks. So I built commitgraph: a small...
Posted on 6 September 2026 | 12:00 am

Armin Ronacher: Latent Powers

A few weeks ago I felt like it would be fun to see if I can make one of those cheap Chinese CarPlay dongles run something other than the stock firm...
Posted on 5 September 2026 | 12:00 am

Graham Dumpleton: Beyond callables in wrapture

Every example in this series so far has wrapped a call. A binding named a method, and what flowed through the call was recorded or changed. Plenty ...
Posted on 5 September 2026 | 12:00 am

Python Morsels: Creating temporary files in Python

How to create temporary files and directories in Python using the tempfile module's NamedTemporaryFile and TemporaryDirectory. T...
Posted on 4 September 2026 | 2:30 pm

Python Anywhere: Annual plans, PostgreSQL 15, and easier database management

We deployed our latest system update to our EU-based system on 23 June 2026 and to our US-based system on 28 July 2026. People creating an account ...
Posted on 4 September 2026 | 10:00 am

Talk Python to Me: #561: TonIO, a Multi-threaded Async Runtime for Python

How many cores does your machine have, 10, 18? Your async Python code uses just one of them. That isn't a bug in asyncio. That's the design, and op...
Posted on 4 September 2026 | 7:33 am

Trey Hunner: Python Morsels now has spaced repetition

Nearly every book I’ve read on teaching and education over the past decade has talked about the value of spaced repetition. For much of that time, ...
Posted on 4 September 2026 | 12:30 am

Graham Dumpleton: Phased behaviour in wrapture

Most of what a test configures on a patch holds until the test changes it. Retry logic is the classic case where that is not enough: the code under...
Posted on 4 September 2026 | 12:00 am

Bob Belderbos: Why does Alembic need an import you never use?

A coaching session this week surfaced a good question: Alembic autogenerate only works if you import your models first, even though you never refer...
Posted on 4 September 2026 | 12:00 am

Jaime Buelta: The Many Challenges in Integrating Information for AI Agents

Recently I’ve been thinking quite a lot about information availability for agents, and the fact that this is a very difficult and potentially irres...
Posted on 3 September 2026 | 7:12 am

Graham Dumpleton: Recording calls with wrapture

In unit testing with wrapture the tests leaned on a timeline and a tape to assert on what happened, and I skipped over what those actually are. Thi...
Posted on 3 September 2026 | 12:00 am

Django Weblog: Django bugfix release issued: 6.1.1

Today we've issued the 6.1.1 bugfix release. The release package and checksums are available from our downloads page, as well as from the Python Pa...
Posted on 2 September 2026 | 5:30 pm

Tryton News: Tryton News September 2026

September brings a balance of trytond internals and business-module refinements. The server now retries queued tasks that were dropped because...
Posted on 2 September 2026 | 6:00 am