skip to navigation
skip to content

Planet Python

Last update: October 25, 2026 07:48 AM UTC

October 24, 2026


Go Deh

Finding Flaws in Technical Documentation

October 24, 2026 01:59 PM UTC

October 23, 2026


LernerPython blog, from Reuven Lerner

Pandas offset aliases for resample: ME, MS, and other codes

Using resample in Python Pandas? You’ll want a list of “offset aliases,” the codes that let you specify units. Some are surprising, such as “ME” and “MS” for “month end” […]

The post Pandas offset aliases for resample: ME, MS, and other codes appeared first on LernerPython.

October 23, 2026 06:00 AM UTC

October 22, 2026


Daniel Roy Greenfeld

TIL: How to extract subtitles from video

How I use Python and ffmpeg to create a subtitle file.

October 22, 2026 03:40 PM UTC


Mariatta

Python Core Sprint 2026: Day 3

Day 3 of the Python Core Sprint, yesterday, was my last day in the room. Today I’m traveling to Seattle for SeaGL, where I’m one of the keynote speakers. With the bots settled on Cabotage and Heroku scaled to zero, I had the day for the smaller things that had been waiting on the follow-up list.

A prompt generator for NEWS entries, and why I closed it

One of the open pull requests in blurb_it was #456, from An Long (aisk), opened back in July. It added a button to the “add blurb” page that generates a prompt. The contributor copies the prompt into ChatGPT, Claude, Gemini, or DeepSeek, and pastes the resulting NEWS entry back into blurb_it. The prompt includes links to the issue, the PR, the diff, and the changed files, plus the devguide’s guidance on how to write a NEWS entry.

October 22, 2026 02:00 PM UTC


Rodrigo Girão Serrão

Module profiling overview

Learn about the new module profiling that was introduced in Python 3.15 to organise the built-in profiling tools.

The standard library module profiling organises the built-in profiling tools that Python has into a single namespace. Introduced in Python 3.15, it gives access to two different profilers: a sampling profiler called Tachyon, and a tracing profiler.

This article will present an overview of those two profilers.

15 days of Python 3.15

To celebrate the release of Python 3.15, over the next 15 business days I'll be writing about a new 3.15 feature every day. Explained clearly and with examples so you don't have to sift through the changelog.

Subscribe to receive this free email series:

If you want, you can also check the schedule of the upcoming emails.

Historical note

Before Python 3.15, Python had a module in the standard library called profile. The module profile was a pure-Python profiler that was of little practical use. This module was deprecated in Python 3.15 and is scheduled for removal in Python 3.17.

In addition to the pure-Python module profile, Python 3.14 and earlier included a tracing profiler called cProfile. This profiler now lives under profiling.tracing and it's one of the tools you'll learn about in this article.

Understanding the two Python profilers

The Python standard library provides two profilers under the module profiling:

  1. profiling.sampling: a statistical profiler that uses high-frequency sampling to profile your code with virtually zero overhead. This profiler is commonly known as Tachyon.
  2. profiling.tracing: a tracing profiler that instruments your code to profile your code deterministically but with some overhead. This profiler used to be called cProfile.

The key difference between...

October 22, 2026 01:23 PM UTC


Tryton News

Information regarding eMudhra / emSign CA certificate security incident

Following Information for Python users regarding eMudhra / emSign CA certificate security incident - Announcements - Discussions on Python.org, we have updated the Docker images of Tryton because certifi is an indirect dependency of Tryton.
It is recommended to update your deployment to use the updated images.
If you deploy Tryton using a virtual environment, it must be updated following the instructions.

1 post - 1 participant

Read full topic

October 22, 2026 10:00 AM UTC


Python Software Foundation

Mark Your Calendars! PSF Board Office Hours for the Year Ahead

October 22, 2026 08:02 AM UTC


Peter Hoffmann

Loading 33,000 Peaks on Demand with a z10 Tile Grid

October 22, 2026 12:00 AM UTC


Zero-with-Dot (Oleg Żero)

Text-to-Diagram for AI Systems: Designing a DSL an LLM Gets Right

Gnomon, the DSL from my DevAI 2026 keynote: a Python compiler built on Lark and an ontology, turning talk about a system into a diagram you can check.

October 22, 2026 12:00 AM UTC

October 21, 2026


Jaime Buelta

Jev webinar video

I hosted a webinar on the 20th talking about the Jev model, which is a new AI decision model that works well in responding quickly to simple questions to a particular piece of information. This model has been talked about quite a lot recently when it was introduced, as it helps in a lot of workflows where it can be an alternative that’s faster and cheaper than LLMs. It has also spurred a lot of competing decision models, including of course Open Weights alternatives. You can see the recording of the webinar... Read More

October 21, 2026 06:41 PM UTC


Python Engineering at Microsoft

Pylance + Pyrefly: bring your preferred type checker to Visual Studio Code

Announcing the Type Server Protocol and our partnership with Meta

The post Pylance + Pyrefly: bring your preferred type checker to Visual Studio Code appeared first on Microsoft for Python Developers Blog.

October 21, 2026 04:42 PM UTC


Rodrigo Girão Serrão

Tachyon: sampling profiling in Python

Learn how to use Tachyon, Python's sampling profiler.

“Tachyon” is a new sampling profiler that was introduced in Python 3.15. It provides a CLI that allows running and profiling scripts or attaching to running processes.

The Tachyon logo, featuring a blue snake with wings coming out its head and the word Tachyon written in the middle.Tachyon logo

In this article you'll learn what statistical profiling is and how to use the Tachyon CLI to identify performance bottlenecks in your code.

15 days of Python 3.15

To celebrate the release of Python 3.15, over the next 15 business days I'll be writing about a new 3.15 feature every day. Explained clearly and with examples so you don't have to sift through the changelog.

Subscribe to receive this free email series:

If you want, you can also check the schedule of the upcoming emails.

What is statistical profiling

Statistical profiling is the practice of profiling your code by periodically taking snapshots of the state of your Python program. Since you're periodically snapshotting the call stack of your program, you call Tachyon a sampling profiler.

Tachyon collects all of its samples over a profiling run and uses it to estimate how much time is being spent in each part of your code. Suppose Tachyon collects 1,000,000 samples over the course of 10 seconds. Out of those 1,000,000 samples, assume 25,000 samples (2.5%) show the function foobar. Tachyon estimates that you spent 2.5% of the 10 seconds, or 250 miliseconds, inside the function foobar.

The longer Tachyon runs, and the higher its frequency (the shorter the interval between snapshots), the more accurate the results that Tachyon produces.

Using the Tachyon CLI

Tachyon is the “cool” name for the module profiling.sampling from the standard library. Since it's a module...

October 21, 2026 03:50 PM UTC


Mariatta

Python Core Sprint 2026: Day 2

Day 2 of the Python Core Sprint was all about one thing for me: moving our GitHub bots, bedevere, blurb_it, and miss-islington, off Heroku and onto the PSF’s Cabotage. Monday was prep. Yesterday was the switch.

The facts first. The downtime was announced for 11 AM to 12 noon Pacific. Here is how it went, in Pacific time:

Zachary Ware commented that it sounded like it went very smoothly.

October 21, 2026 02:00 PM UTC


Python Insider

Python 3.15.1, 3.14.9 and 3.13.17 are out

Three certified security releases for 3.15, 3.14 and 3.13.

October 21, 2026 12:00 AM UTC

October 20, 2026


PyCoder’s Weekly

Issue #757: Django Migrations, Functional Programming, MVC, and More (2026-10-20)

October 20, 2026 07:30 PM UTC


Python Bytes

#501 A Nod to Sir-Mix-Alot

Topics include Nod: pause your Python program and open a notebook at any line, Polars 2.0 ships: streaming engine by default, spill-to-disk, and a row-order gotcha, django-cachalot caches your ORM queries and invalidates them for you, and Towards async transactions in Django.

October 20, 2026 07:18 PM UTC


Rodrigo Girão Serrão

DX improvements in Python 3.15

Learn about the top 3 developer experience improvements from Python 3.15

This article covers the top 3 improvements made to the developer experience of Python 3.15 users:

  1. improved error messages
  2. more colours
  3. default UTF-8 encoding

15 days of Python 3.15

To celebrate the release of Python 3.15, over the next 15 business days I'll be writing about a new 3.15 feature every day. Explained clearly and with examples so you don't have to sift through the changelog.

Subscribe to receive this free email series:

If you want, you can also check the schedule of the upcoming emails.

Improved error messages

Over the past few years, lots of effort has been poured into improving Python's error messages. Python 3.15 is no exception, as it introduces three improved types of error messages.

Errors in accessing nested attributes

If you get an AttributeError exception when accessing a name of an object, but that object has another member that has the correct name, Python suggests it:

class Inner:
    def __init__(self):
        self.value = 42

class Outer:
    def __init__(self):
        self.inner = Inner()

o = Outer()
o.value
# AttributeError: 'Outer' object has no attribute 'value'.
# Did you mean '.inner.value' instead of '.value'?

Incidentally, while Python 3.15 was in alpha, I found and reported a bug with this feature that was fixed in just a couple of hours!

If you get an AttributeError when trying to access a method from a built-in type, Python starts by checking if that's a typo. For example, list.pp will ask if you meant to type list.pop. Now, if there's no “obvious” typo, Python will also check a static table of common...

October 20, 2026 03:56 PM UTC


Mariatta

Python Core Sprint 2026: Day 1

This week I’m in San Francisco for the annual Python Core Sprint. This year the sprint is hosted by Brandt Bucher from OpenAI, at OpenAI’s office, and runs Monday to Friday, October 19 to 23. I’m only here for the first three days. On Thursday I fly out to Seattle for SeaGL, where I’m one of the keynote speakers :)

I could not make it to last year’s sprint at Arm in Cambridge, UK, and it is unlikely I’ll be able to make it to next year’s European sprint either, so I’m glad this one is on the West Coast and within reach. The sprint is one of the very few times in a year when this many Python core team members are in the same room, focused on nothing but Python. It is still one of my favorite Python events of the year. Thank you to Brandt and OpenAI for hosting us!

October 20, 2026 02:00 PM UTC


Python Software Foundation

Wikis: Relaunched!

October 20, 2026 12:29 PM UTC


LernerPython blog, from Reuven Lerner

Pandas DatetimeIndex slicing: Fix KeyError with sort_index

Slice an unsorted datetime index in Python Pandas, and you’ll likely get: KeyError: ‘Value based partial slicing on non-monotonic DatetimeIndexes with non-existing keys is not allowed.’ Why? If the dates […]

The post Pandas DatetimeIndex slicing: Fix KeyError with sort_index appeared first on LernerPython.

October 20, 2026 06:00 AM UTC


Seth Michael Larson

Documenting certificate distribution pain points for the Python ecosystem

October 20, 2026 12:00 AM UTC


PyCon Ireland

Schedule for PyCon Ireland 2026

The sessions, speakers, and workshops for PyCon Ireland 2026 are now available. Buy a ticket and join us in Dublin on 21 November.

October 20, 2026 12:00 AM UTC

October 19, 2026


Rodrigo Girão Serrão

Startup configuration files

Learn how to use startup configuration files to run package entry points when the Python interpreter starts up.

A startup configuration file is a file with the extension .start. Starting from Python 3.15, the Python interpreter uses startup configuration files to run package entry points when the interpreter starts up.

Here is an example of a simple startup configuration file that installs error-links when the Python interpreter starts:

error_links:install

The entry point error_links:install from the above points to the function install from the module error_links. In general, an entry point resembles an import:

  1. the import path
  2. followed by a colon
  3. followed by the callable that gets called

For the entry point error_links:install, the equivalent import would be from error_links import install.

The module site and some historical context

The module site, from the standard library, is imported automatically when the Python interpreter starts up. When imported, the module site does a couple of things. Among them, it adds some paths to the module search path and then checks them for configuration paths.

In Python 3.14 or earlier, configuration files were .pth files. .pth files can be used to extend sys.path by listing directories. Alongside that, and for backwards compatibility reasons, .pth files could also include import lines.

import lines in a .pth represent a security risk, so PEP 829 introduced a safer way of running custom hooks during Python interpreter start up. import lines in .pth files are now deprecated and Python 3.15+ also looks for .start files to run the listed entry points.

Python 3.15 brings much more to the table

From the two new built-ins frozendict and sentinel, to lazy imports, package startup configuration files, typing improvements, or more colour everywhere, Python 3.15 has a lot more to offer. If you want to learn more about what's new in Python 3.15, take a look at the “15 days of Python 3.15” series I'm running. For 15 days, I'll explain a new Python 3.15 feature every day.

Get the free 3.15 email series:

October 19, 2026 07:19 PM UTC


Django Weblog

Quarterly contributor outreach

Hi Django community, thank you all for continuing to contribute to Django.

The Steering Council is reaching out to bring people's attention to a few areas. We have major features we'd like to test and review for 6.2, smaller changes that could use attention and then various New Feature ideas we'd like community input on.

Major features

These PRs are things we'd like to refine, test and get merged in. We're looking for people to test the features themselves and review the PRs. Please see our guidelines on reviewing PRs.

  1. CompositeField (multi-column subqueries)
  2. Only needs testing, not review.
  3. DEFAULT_PK_FIELD setting (e.g. UUID primary keys)
  4. Move models between apps

Sage Abdullah has a great Django London talk on how to test your project against Django's main branch. Please note that you would need to change the branch to point to the PR’s specific branch.

Other features

These are other PRs that we thought would be cool to have included in 6.2. They are in various states of refinement. We're looking for people to test and review the PRs. They are smaller in nature, so it may be easier to get involved here.

  1. Adding QuerySet.executed_queries
  2. Partitioned cookies
  3. Support for the HTTP QUERY method
  4. Improve CSRF debug messaging behind proxies

New Features

This section is bringing attention to the New Features queue. Ideas are in various stages and require different types of input. With over 150 ideas so far, we'll try to provide direction for those who have limited time to participate.

Ideas needing technical vetting [medium+ effort]

These are ideas the community would like integrated, but we need contributor opinion on. The links are to proposals that could use vetting.

  1. Ability to customize model Meta and migration generation
  2. Implement modern CSRF protection
  3. Add timeout API for tasks
  4. Subresource integrity (SRI)
  5. Adding import maps to Django

Ideas needing community input [low effort]

We encourage people to review the entire New Feature queue and use the emoji reactions. Please use the 😕 emoji to register a "saw this, but have no opinion". This helps us understand what has been reviewed by the community. We have selected a few from the list that we'd like people to weigh in on:

  1. Better hooks to customize PasswordResetForm email sending
  2. Add PR help in Working with Git GitHub contribution documentation
  3. Service URL parsing in core (e.g. database and cache URLs)
  4. Standardise Task execution order
  5. Update AuthenticationMiddleware to delegate to Authentication Backends
  6. Support sending to Unicode email addresses via SMTP

Thank you

Django is built by the community and every bit helps move Django forward. We encourage everyone to feel empowered to participate. If you aren't sure where to start or have questions, ask on the Django Forum or in the Django Discord. We're happy to help you find your way in.

- The Django Steering Council

October 19, 2026 05:28 PM UTC


Hugo van Kemenade

Releasing Python 3.15.0

Prologue #

Like last year, I livetooted the release of Python 3.15.0. Here it is in blogpost form!


Two weeks #

Two weeks until Python 3.15.0 final!

#Python #Python315
Fri, Sep 18, 2026, 00:30 EEST

One week #

One week until Python 3.15.0 final!!

What are you most looking forward to?

#Python #Python315
Tue, Sep 22, 2026, 21:17 EEST

Python 3.15.0 release day! #

First blocker, we’re getting 503s on docs.python.org and buildbot.python.org, the latter of which is needed to check the tier 1 and 2 buildbots are passing, needed for a release.

It’s a certificate issue from an incompatible pyOpenSSL upgrade. We’re waiting for the US to wake up and poke it with a stick.

buildbot.python.org: 503 Service Unavailable. No server is available to handle this request

docs.python.org: 503 Service Unavailable. No server is available to handle this request

#Python #Python315
Thu, Oct 1, 2026, 14:19 EEST

Red #

The US woke up and they’re both back up!

Now, there’s one tier 1 failure to check.

Python Release Status Dashboard: 3.16 is yellow, 3.14-3.11 are green but 3.15 is red and ‘✘ Unreleasable: Tier-1 build failed’

3.15 Tier-1 build failed, Tier-2 build failed (1): AMD64 Fedora Stable Refleaks 3.15)

#Python #Python315 #release
Thu, Oct 1, 2026, 14:22 EEST

Flaky #

RuntimeError: join took too long: <Process name='Process-2107' pid=2290504 parent=2276730 started daemon>

Looks like a flaky test, and python/cpython#157184 has a fix to increase a timeout. Will try restarting for now.

#Python #Python315 #release
Thu, Oct 1, 2026, 14:25 EEST

Green #

That passed, the buildbots are back to green ✅️

Python Release Status Dashboard: 3.16 is yellow, 3.15-3.11 are green: ✔ Releasable

Next, issues/PRs with release-blocker label.

One is a straightforward docs update, I marked as blocker so I don’t forget, to change future tense to present.

Then three last-minute lazy import blockers that need a closer look.

List of GitHub issues and PRs labelled as release-blocker

#Python #Python315 #release
Thu, Oct 1, 2026, 15:11 EEST

Traditional surprise rc3 #

Following recent tradition, I’m going to add a surprise third release candidate!

It makes sense to include the last-minute lazy-import fixes in 3.15.0 final.

It also makes sense to give time to test them properly, so today’s planned 3.15.0 final is postponed, and I’m going to release a 3.15.0rc3 tomorrow, assuming everything is in place.

And then 3.15.0 final will follow about week later. Exact date to be announced.

We’re nearly there! 🤞

#Python #Python315 #release
Fri, Oct 2, 2026, 00:49 EEST

Missing backport #

The three lazy blockers are finally merged into main, two have been backported to 3.15, but wait, the third failed, because it depends on some tests not yet backported.

Okay, backport created, merge conflict fixed, CI is now spinning, and automerge enabled. That’ll merge in about 15 mins, then we can update it into the last blocker PR, that should merge about 30 mins later, and rc3 can begin!

#Python #Python315 #release
Fri, Oct 2, 2026, 20:58 EEST

rc3 #

Get yer rc3 here!

You know the drill: please test and report bugs!

Library maintainers, join the Cool Testers’ Club 😎 and add 3.15 to your test matrix.

Python 3.15.0 final planned for 2026-10-09.

#Python #Python315 #release
Sat, Oct 3, 2026, 00:14 EEST

Python 3.15.0 release day (second attempt)! #

✅️ Release date updated in What’s New in Python 3.15

✅️ No release blockers

✅️ No deferred blockers

✅️ Buildbots all green

Python Release Status Dashboard: 3.16-3.11 all green: ✔ Releasable

#Python #Python315 #release
Fri, Oct 9, 2026, 13:03 EEST

Cooldowns #

Pydantic finally added support for Python 3.15 yesterday, and aiohttp on Monday, so I could use Python 3.15 rc3 to run the release scripts and release Python 3.15.0 final!

But… I’m going to respect our seven-day cooldown, and stick with 3.14.

You also use cooldowns for your dependencies, right?

#Python #Python315 #release
Fri, Oct 9, 2026, 13:12 EEST

blurb bug #

Pushing the big launch button:

.venv/bin/python run_release.py --repository ../cpython --ssh-user hugovk --release 3.15.0

… and immediately ran into a bug with our changelog tool blurb, because we’ve had no new NEWS fragments since rc3 :)

Start of the release script, showing a number of successful checks, before the start of a traceback from blurb Remainder of blurb traceback, ending with BlurbError: Error in Misc/NEWS.d/3.15.0.rst:8: Invalid gh-issue number: ‘0’ (must be at least 32426)

This needs a fix in blurb, a new PyPI release, and then the docs lockfile regenerated and backported to 3.15.

Fix PR: python/blurb#92

#Python #Python315 #release
Fri, Oct 9, 2026, 13:43 EEST

blurb fix #

OK, merged and released (really easy using Trusted Publishing), lockfile updated and backported.

Restarted the release and that’s better now.

A temporary branch and tag has been pushed to my fork, and I need to verify the release commit does not contain any unexpected changes.

All looks good. Next to start the installer and artifact builds.

#Python #Python315 #release
Fri, Oct 9, 2026, 14:21 EEST

Installers #

The release artifact build failed, need to bump blurb in that lockfile too.

Like this: python/release-tools#451

Now restarted that workflow with the existing CPython tag, no need for retag.

This builds source+docs tarballs and Android+iOS artifacts. Takes ~30 mins.

GitHub Actions building docs, source, iOS and Android artifacts

Ned Deily has started the macOS installer builds. And I’ve started the Windows installer builds, takes ~2 hours.

Azure Pipelines building Windows installers

#Python #Python315 #release
Fri, Oct 9, 2026, 14:56 EEST

SBOM #

In the meantime, the GitHub Actions build has finished, SBOMs created and some things uploaded.

Release script showing download of artifact files, SBOM creation, upload to PSF servers, and waiting for Windows and Mac files

The Windows process has paused a couple of times, awaiting button clicks to approve signing of binaries. The whole release team gets emails about this, so no sneaking out signed releases. 🥷

Azure Pipelines: 1 approval needs your review before this run can continue to Sign binaries

Azure Pipelines: 1 approval needs your review before this run can continue to Pack

#Python #Python315 #release
Fri, Oct 9, 2026, 16:04 EEST

Nearly there #

Windows complete, tags pushed upstream, Sigstore signing done, adding files to python.org… nearly there…

#Python #Python315 #release
Fri, Oct 9, 2026, 17:11 EEST

Out now #

🐍🚀 Out now: Python 3.15.0 final!

💤 Lazy imports!
🧊 frozendict builtin!
💂 sentinel builtin!
📉 Tachyon profiler!
🖼️ Frame pointers everywhere!
🛅 Unpacking in comprehensions!
🗣️ UTF-8 as the default encoding!
🛞 Stable ABI for free-threading!
🆕 Package startup config files!
⌨️ TypedDict & TypeForm!
🐎 Faster JIT!
🎨 More colour!
🚌 & more!

Huge thanks to the Sovereign Tech Agency supporting my work as release manager and enabling another smooth release!

Python 3.15 logo: a purple heart with “3.15” in blue and yellow, flanked by a blue and a yellow snake, with lightning bolts, pink clouds and laurel branches, framed by the release’s headline features

#Python #Python315 #CPython #release
Fri, Oct 9, 2026, 17:23 EEST

It’s not over yet! #

I updated PEP 790, which also updates the PEPs API, which is used to point the docs at /3/ to 3.15, kicked off a docs build: docs.python.org/3/

Unpin one toot and pin another to my profile.

(3.14 might not be the newest, but we can still celebrate with pie!)

And then unlock the 3.15 branch so the core team can start merging 185 PRs that didn’t get in during RC.

#Python #Python315 #release
Fri, Oct 9, 2026, 18:27 EEST

Also #

✅️ update 3.15 label
✅️ rebuild devguide to update: devguide.python.org/versions/
✅️ unlock 3.15 branch

And I think that’s it!

Hey, @savannah, you’re up next with the first 3.16 alpha on Tuesday! 🚀

#Python #Python315 #Python316 #release
Fri, Oct 9, 2026, 18:58 EEST

October 19, 2026 10:21 AM UTC