Planet Python
Last update: August 01, 2026 09:47 PM UTC
August 01, 2026
Seth Michael Larson
Let’s Play “htmx 4: the game”
July 31, 2026
Programiz
Python Booleans and Boolean Expressions
Caktus Consulting Group
Chicago Like a Local: Things to Do During DjangoCon US 2026 (Part 1)
DjangoCon US 2026 is coming back to Chicago from August 23–28, and we at Caktus couldn’t be more thrilled, not only to be returning as a Silver Sponsor, but also because I (Keanya) have the privilege of chairing the conference once again!
Jaime Buelta
Python Automation Cookbook 3rd edition: now with AI recipes.
Exciting news! The third edition of the Python Automation Cookbook is out, featuring a vibrant new cover and over 100 pages of fresh AI content. Aimed at Python enthusiasts of all levels, it retains classic recipes while introducing innovative ways to incorporate AI in code. A fantastic addition to any developer's library!
Python Software Foundation
Get Ready: Python Packaging Council Nominations Opening Soon!
Seth Michael Larson
Extracting “Ocarina of Time: Master Quest” ROM from the Legend of Zelda: Wind Waker bonus disc
July 29, 2026
Django Weblog
DSF member of the month - Katherine "Kati" Michel
For July 2026, we welcome Katherine "Kati" Michel as our DSF member of the month! ⭐

Kati is involved in the Django community for many years. She was a DEFNA Director for 8 years and DjangoCon US Website Chair and Co-Chair. She is a DSF member since December 2017!
You can learn more about Kati by visiting Kati's website and her GitHub Profile.
Let’s spend some time getting to know Kati better!
Can you tell us a little about yourself? (hobbies, education, etc)
In 2002, I was living in Lawrence, Kansas and working for government contracts supporting US Citizenship and Immigration Services and the US Department of Education. While working for USCIS, I spoke to tens of thousands of people from around the world, but hadn't seen much of the world myself. In 2009, I decided to move to England and earn a master's degree from Lancaster University Management School. During the program, I was fortunate to have an internship in the IT Change Management Department of Co-operative Financial Services/Britannia Building Society.
It feels full circle that I am now a software engineer at JPMorganChase, working in Infrastructure Platforms, Databases Department.
How did you start using Django?
While living in Lawrence, I visited the Lawrence Public Library often. I would sometimes drive past the nearby Lawrence Journal World and had no idea that Django was being invented there.
During my internship at CFS/Britannia Building Society in England, I was immersed in technology and loved it. Although it was a tumultuous time due to the subprime mortgage crisis, I was left with an insatiable curiosity about programming. That is how I learned about Django, and I have been using Django ever since.
What other framework do you know and if there is anything you would like to have in Django if you had magical powers?
In addition to Python/Django, I work with React.
At DjangoCon US 2025, Will Vincent commented during his talk "Django for AI" that Django "never really 'owned'" the niche of classic Machine Learning models, but should have, because it's great for small and medium ML models. He recently asked Django Project Forum if Django should have an official skills.md like FastAPI now has. These are important conversations to have.
If I had magical powers, I would maintain the stability and maturity many Django users celebrate while making targeted enhancements to help it better serve developers who are reaching for FastAPI or JavaScript frameworks first. Providing Django's benefits while meeting the use case is win-win.
Django already supports many modern patterns. Clear starter guides and code examples showing how to build a classic ML application, LLM chat bot, async workflows, React/Angular/Vue integration, and APIs, while taking advantage of the benefits Django offers, could help developers discover it better.
Marlene Mhangami and Benjamin "Zags" Zagorsky also gave some ideas for how to approach this in their respective DjangoCon US 2025 keynotes.
Author's note: You can watch Marlene Mhangami's keynote and Benjamin "Zags" Zagorsky's keynote here.
What projects are you working on now?
In my work, I am part of a team building a new on-premises caching service from the ground up. I design distributed system topology, write code for a React UI and Django control plane that orchestrate tasks to provision these distributed systems based on internal customer requirements, create Ansible playbooks to manage the servers, and do Red Hat Enterprise Linux admin. It's not a typical Django use case, but fun and fascinating in its own right.
Which Django libraries are your favorite (core or 3rd party)?
I had a website query that was becoming progressively slower as the data in the database grew. I installed django-silk, a live profiling and inspection library, diagnosed an N+1 problem, and had an aha moment as I watched the number of SQL queries in the django-silk dashboard greatly reduce with each new addition of a prefetch_related or select_related. It felt like magic. django-silk has been one of my favorite libraries ever since.
htmx and django-template-partials have been a joy to use together to create AJAX-like web UI functionality directly in HTML, without the need for JavaScript. As of Django 6.0, the Django Template Language now supports template partials. The htmx website has a fun UI Examples page to demo what it can do.
I am a fan of django-ninja. I like its use of Pydantic schemas, type hinting, and OpenAPI integration.
What are the top three things in Django that you like?
-
Django was invented at a newspaper. The Django ORM and admin are arguably its killer feature. Not every popular framework has a built-in ORM and admin that enable users to quickly structure and manage data.
-
Django's "batteries included" philosophy and rich library ecosystem enable developers to focus on building applications without re-inventing the wheel.
-
Django has strong security protections out of the box and a mature security policy.
I'm curious, how did you started to contribute to DjangoCon US? Do you have any advice for someone who might be considering joining the board of directors if the opportunity arose?
While looking through GitHub projects, I stumbled upon the DjangoCon US website code. I had a feeling that becoming part of a community like this would be life-changing, and it was. In March of 2016, I began helping with the DjangoCon US 2016 website. It was an invaluable opportunity to learn my way around Git, GitHub, and the website code. 2017 was a very eventful year. I became the DjangoCon US 2017 Website Chair, joined the DEFNA Board, and was hired by the web development agency contracted to create the DjangoCon US website.
I served as DjangoCon US Website Chair or Co-chair from 2017 to 2021 and DEFNA Board Member from 2017 to 2025, including several years as corporate secretary. Serving on the board gives you the opportunity to manage the higher level details of DjangoCon US, such as budgeting, location selection, contractor procurement, and volunteer oversight. You will also have the opportunity to grow Django outreach across North America, for instance, by awarding event grants. Being on the board was an honor and one of the most rewarding experiences of my life.
I've never seen a more practical write-up of how to excel in a board position than former DEFNA President Jeff Triplett's post "PSF Elections how I am voting.".
You have been a speaker, an organizer of DjangoCon US, and a member of DEFNA’s board of directors. Having observed the conference from many different perspectives over a period of time, how do you think DjangoCon US has evolved?
The conference structure has evolved to fit the times and talk subject trends have evolved (async, locality of behavior ecosystem, and AI come to mind), but my favorite evolution of all has been the major improvement in diversity and inclusion over time.
DjangoCon US increased the number of talks by women from around 6% in 2010 to nearly 50% in 2016. This was accomplished through intentional outreach. PyLadies and Django Girls have both played a major role.
In 2023, the conference was an important platform for the newly formed, self-organized Black Python Devs organization. By one organizer's count, we had around 10 Black speakers, and a Django Girls workshop had a majority of Black participants. In 2024, the conference hosted the Black Python Devs Leadership Summit.
From a Django Core perspective, at DjangoCon US 2018, former Django Fellow Carlton Gibson acknowledged that the community had become more diverse than ever, but the core contributors had continued to be white guys. The launch of Djangonaut Space in 2024 by a small group of community members has been a game changer. Djangonaut Space is a highly effective mentorship program that equips its cohort members to contribute to Django and its ecosystem, with a focus on inclusion.
You have been a speaker multiple times, do you have any advice for someone considering starting speaking one day?
My advice to aspiring public speakers is to start with the opportunities you can get and work your way up: give a presentation to your department (do a practice run to colleagues for feedback), give a talk to a local meetup, give a lightning talk at a conference, enlist the help of a talk mentor and submit to a conference CfP (especially those that welcome newcomers - DjangoCon US is one of them), and don't be discouraged by rejections.
As a conference attendee, I've seen some incredible speakers. Russell Keith-Magee immediately comes to mind. I appreciate the candor of highly effective public speakers who acknowledge that it is a skill that can be developed. I often remember an anecdote Nina Zakharenko once told. She got her start in public speaking when someone challenged her to do a lightning talk at a conference. She got the microphone caught in her hair during the talk. Years later, she expertly keynoted PyCon US. Don't wait for, or expect perfection.
After so many times in the Django community, what makes you stay?
I enjoy the Django tool ecosystem, and the people are wonderful. I have a lot of friends in this community who inspire me and are there for me.
How do you envision the future of Django from your perspective?
Last year was Django's 20th birthday. I’m optimistic that Django and its community will be thriving 20 years from now.
Do you remember your first contribution to Django and in open source? (Can be Django ecosystem, code contribution or not)
At DjangoCon US 2019 sprints, I made my first contribution to Django Core with the help of Carlton Gibson. I added instructions for running tests using django-docker-box. I would love to contribute to Django again.
What are your hobbies or what do you do when you’re not working?
In my personal time, I love exploring new and interesting places, discovering great food, watching documentaries, and taking photographs.
Is there anything else you’d like to say?
Thank you for having me! I really enjoyed this interview.
Thank you for doing the interview, Kati !
PyCharm
PyTorch Tutorial for Deep Learning
This is a guest post from Naa Ashiorkor, a data scientist and tech community builder. Building intelligent systems that can see, hear, understand language, and make decisions was previously the domain of specialized researchers with massive computing resources only – today, deep learning has made this accessible to developers and data scientists across the world, […]
Python Morsels
Binary search in Python with bisect
Python's bisect module implements binary search for you. Here's how bisect_left, bisect_right, and insort work, plus recipes for finding the closest match or all values in a range.
Table of contents
- Binary search explained
- Why not use a set instead of binary search?
- Binary search with the
bisectmodule - Python's
bisectfunctions explained - Binary search recipes using Python's
bisect - Binary insert with
insort - Using
bisectwith akeyfunction - Realistic examples of binary search
- Don't use binary search on an unsorted collection
- Use
bisectto search sorted sequences in Python
Binary search explained
I'm thinking of a number between 1 and 100. You have 7 guesses. After each wrong guess I'll tell you whether the number I'm thinking of is higher or lower.
What should you guess?
Here's the approach I'd use:
- Guess 50 first, splitting the possible guess pool in half (bisecting it)
- If the correct number is below 50, guess 25 (bisecting the remaining pool)
- If the correct number is above 50, guess 75 (bisecting the remaining pool)
- Repeat, splitting the possible remaining numbers in half each time
That's binary search in a nutshell.
The binary in binary search means two: every guess splits the remaining search space into two groups and rules out one of them. It has nothing to do with binary numbers or ones and zeroes. That same two is in the word bisect, which means to cut something into two pieces.
Try it below: each guess rules out every number on one side of it, and guessing the middle number every time will always find my number within 7 guesses.
.binary-search-grid { grid-template-columns: repeat(10, minmax(0, 1fr)); } @media (min-width: 640px) { .binary-search-grid { grid-template-columns: repeat(auto-fill, minmax(2.5rem, 1fr)); } }I'm thinking of a number from 1 to 100
If you'd prefer to see code, here's an example:
def binary_search(sequence, target, low=0, high=None):
"""Return the index where the target number would belong."""
if high is None:
high = len(sequence)
while low < high:
middle = (low + high) // 2
if sequence[middle] < target:
low = middle + 1
else:
high = middle
return low
That binary_search function looks for a potential match within a sorted sequence.
Why should we care about this, though?
Why not just use a containment check with the in operator?
Well, this binary search among 10 million items does 23 comparisons:
sequence = list(range(10_000_000))
target = 2_728_839
index = binary_search(sequence, target)
if index < len(sequence) and sequence[index] == target:
print(f"{target} found")
But this containment check of the same items does well over 2 million comparisons:
sequence = list(range(10_000_000))
target = 2_728_839
if target in sequence:
print(f"{target} found")
You can see for yourself how much quicker binary search is.
That's the difference between O(log n) and O(n): doubling the size of our sorted list adds just one more comparison to a binary search.
Note that both of those examples above are a bit silly because those "sorted sequences" are consecutive numbers without gaps or duplicates. We'll take a look at a more realistic example below. But first, let's talk about why we can't always use a set or a dictionary instead of binary search.
Why not use a set instead of binary search?
If you're familiar with the …
Read the full article: https://www.pythonmorsels.com/binary-search/
July 28, 2026
PyCoder’s Weekly
Issue #745: PyPI UI, Finding Classes with the GC, pylock.toml, and More (2026-07-28)
Python Software Foundation
Announcing a 2026 PSF Grants Program Funding Round
Python Bytes
#490 It’s a vibe coding party
Topics include Some more things about Django I've been enjoying, Who cleans up after the vibe-coding party, AgentsView, and.
July 27, 2026
Python Morsels
Running subprocesses in Python
You can use Python's subprocess.run function to launch other programs from within Python.
Table of contents
- Launching external programs from Python
- Subprocess, defined
- Launch a subprocess with
subprocess.run - Using
subprocess.runwith a list or a string - Capturing the output of a subprocess
- Automatically decoding subprocess output
- Handling errors in subprocesses
- Raising exceptions based on subprocess exit codes
- Helper functions for
subprocess.run - Launch subprocesses with
subprocess.run
Launching external programs from Python
We're going to focus on starting up other processes (that may not be Python processes), communicating with those processes, and handling their output.
We're not talking about the related topics of concurrency and parallelism.
For those, you can use Python's threading, multiprocessing, or concurrent.futures modules.
We're specifically going to focus on spawning subprocesses.
For this we will use Python's subprocess module.
Subprocess, defined
A subprocess is a process …
Read the full article: https://www.pythonmorsels.com/running-subprocesses-in-python/
Python Software Foundation
Announcing Python Software Foundation Fellow Members for Q2 2026! 🎉
July 26, 2026
Talk Python to Me
#556: Updates on Django's Async Story
For years, "Django and async" came with an asterisk. The docs themselves warned you off it. Scary performance notes, a story that felt half-finished. Well, that story just got rewritten, literally, and the person who rewrote it is here to tell you why the old framing was wrong. Carlton Gibson is a former Django Fellow, sat on the security team for eight years, and he's on the steering council. On this episode we get into the async topic doc rewrite, what actually remains versus what was just fear, the new Tasks framework in 6.0, DB-level cascades and fetch modes landing in 6.1, and why free-threading is the bet that's about to pay off big for Django. If you've been told Django's async story isn't ready, this is the episode that puts that myth to bed.
Ned Batchelder
Acidica
My latest fun project is a BASIC interpreter called Acidica. Classic BASIC is an old-school language first developed in 1964 that saw an explosion of implementations on microcomputers in the ‘70s and ‘80s. It’s much more primitive than the Visual Basic that you might be familiar with.
A simple BASIC program:
10 INPUT "What is your name"; U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want"; N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars"; A$
100 IF LEN(A$) = 0 THEN 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN 30
130 PRINT "Goodbye ";U$
140 END
Run it, and you get this:
What is your name? Ned
Hello Ned
How many stars do you want? 10
**********
Do you want more stars? y
How many stars do you want? 20
********************
Do you want more stars? n
Goodbye Ned
The wide variety of BASIC flavors meant I first had to decide what to implement. I found Vintage BASIC and used its spec, both because it is concisely described, and because it has an implementation I could run to double-check behavior when I had questions. The site also has a collection of runnable games from Creative Computing magazine, which I remember fondly.
This was a perfect vacation-week project. It has no real-world consequences. It had some interesting problems to puzzle through. It was testable. It satisfied some nostalgia for my earlier computing days. It was bounded enough to be “done”.
In those ways, it’s very similar to a vacation project of mine from four years ago: Stilted, an implementation of PostScript.
Acidica is not useful for writing new programs, only because BASIC itself is so difficult. There is no scoping beyond single-line functions, variables names can be as long as you want but only the first two letters and first digit are significant. Keywords are recognized anywhere, so FACTOR can’t be variable name because it has TO in the middle. The only control structures are FOR, IF, and GOTO. It’s something of a testament to human persistence that programs like three-dimensional tic-tac-toe can be written in it.
As a side project, I could choose my development style: no real type checking (partly because BASIC’s values would be awkward to squeeze into static typing), and very few docstrings. There are lots of tests, but only integration tests: every test is a BASIC program to run, with a check for the correct output and/or the expected error.
To be honest, the “only integration tests” approach was kind of a pain, but I stuck with it and resisted the temptation to add unit tests along the way.
Another choice I made: no AI. I like writing programs. I get a deeper sense of the thing I am building when I have my fingers in the clay. Since there was no deadline, or even any reason to ever finish the project, I could take my time and not be rushed.
But I like the result. I enjoyed the time I spent working on it. I liked being able to stop and devote pure thinking time while doing other things when I got to the next hurdle. The next steps here might be to use this project as a test bed for some development ideas. Or maybe add a BASIC-to-Python transpiler. Or maybe it’s done.
EuroPython Society
EuroPython 2026 Code of Conduct Transparency Report
The 2026 edition of the EuroPython conference took place both online and in person in July 2026. This was the fourth conference under our current Code of Conduct (CoC), and we had Code of Conduct working group members continuously available both online and in person.
Reports
Over the course of
July 24, 2026
Peter Bengtsson
Claude Opus is 10x faster than OpenAI GPT 5 at non-streaming completions
Claude is much faster than OpenAI gpt-5 and also faster than gpt-5-mini
Django Weblog
See You in Chicago in One Month!
In just one month, developers, maintainers, educators, and Django enthusiasts from around the world will gather in Chicago for DjangoCon US 2026.
DjangoCon US is more than a conference, it's a place to learn from the community, share ideas, contribute to Django, and make connections that last long after the event ends. Whether you're attending your first DjangoCon US or you've been coming for years, we're excited to welcome you.
Over five days, attendees will have the opportunity to:
- Learn from expert speakers and community members
- Participate in hands-on tutorials
- Collaborate during Django sprints
- Join Open Spaces and informal discussions
- Meet fellow Django developers from across the globe
If you're planning to join us, tickets are still available, and there's still time to reserve your stay at the conference hotel. The hotel room block deadline is August 3, so be sure to book your room before then.
August 24–28, 2026
Chicago, Illinois
We can't wait to see you in Chicago!
Armin Ronacher
Codeberg Divides
July 23, 2026
Python Software Foundation
Get Ready: PSF Board Nominations Opening Soon!
Python Insider
Get Ready: 2026 Python Packaging Council Nominations Opening Soon!
The inaugural Python Packaging Council election nomination period opens on Tuesday, July 28th, 2:00 pm UTC and closes on Tuesday, August 11th, 2:00 pm UTC.
July 22, 2026
Django Weblog
Django 6.1 release candidate 1 released
Django 6.1 release candidate 1 is now available. It represents the final opportunity for you to try out the version that offers a harmonious mélange of new features and usability improvements, before Django 6.1 final is released.
The release candidate stage marks the string freeze and the call for translators to submit translations. Provided no major bugs are discovered that can't be solved in the next two weeks, Django 6.1 will be released on or around August 5. Any delays will be communicated on the Django forum.
Please use this opportunity to help find and fix bugs (which should be reported to the issue tracker), you can grab a copy of the release candidate package from our downloads page or on PyPI.
The PGP key ID used for this release is Jacob Walls: 131403F4D16D8DC7
Python Software Foundation
The PSF D&I Workgroup is Starting Office Hours in July!
Python GUIs
Constantly Print Subprocess Output While Process is Running — How to stream live output from a subprocess into your PyQt6 GUI without freezing the interface
I need to call a legacy Bash program and display the results in a Qt window. The problem is the subprocess doesn't return each output line as it happens — it waits until the entire command is finished, then dumps everything to the window at once. If the command takes a long time, the user thinks the system is frozen. How can I get live, line-by-line output from a subprocess into my Qt application?
