skip to navigation
skip to content

Planet Python

Last update: December 06, 2025 07:44 AM UTC

December 05, 2025


Real Python

The Real Python Podcast – Episode #276: Exploring Quantum Computing & Python Frameworks

What are the recent advances in the field of quantum computing and high-performance computing? And what Python tools can you use to develop programs that run on quantum computers? This week on the show, Real Python author Negar Vahid discusses her tutorial, "Quantum Computing Basics With Qiskit."

December 05, 2025 12:00 PM UTC


Mark Dufour

Shed Skin restricted-Python-to-C++ compiler v0.9.11

December 05, 2025 03:08 AM UTC

December 03, 2025


Caktus Consulting Group

LLM Basics: Ollama Function Calling

In our previous post, we introduced function calling and learned how to do it with OpenAI’s LLMs. In this post, we’ll call the same cactify_name function from that post using Meta’s Llama 3.2 model, installed locally using Ollama. The techniques in this post should also work with other Ollama models that support function-calling.

December 03, 2025 04:42 PM UTC


Real Python

How to Use Google's Gemini CLI for AI Code Assistance

Learn how to use Gemini CLI to bring Google's AI-powered coding assistance directly into your terminal to help you analyze and fix code.

December 03, 2025 02:00 PM UTC


Django Weblog

Django 6.0 released

The Django team is happy to announce the release of Django 6.0.

The release notes assembles a mosaic of modern tools and thoughtful design. A few highlights are:

You can get Django 6.0 from our downloads page or from the Python Package Index.

The PGP key ID used for this release is Natalia Bidart: 2EE82A8D9470983E

With the release of Django 6.0, Django 5.2 has reached the end of mainstream support. The final minor bug fix release, 5.2.9, was issued yesterday. Django 5.2 will receive security and data loss fixes until April 2028. All users are encouraged to upgrade before then to continue receiving fixes for security issues.

Django 5.1 has reached the end of extended support. The final security release, 5.1.15, was issued on Dec. 2, 2025. All Django 5.1 users are encouraged to upgrade to a supported Django version.

See the downloads page for a table of supported versions and the future release schedule.

December 03, 2025 12:00 PM UTC


Real Python

Quiz: How to Use Google's Gemini CLI for AI Code Assistance

Learn how to install, authenticate, and safely use the Gemini CLI to interact with Google's Gemini models.

December 03, 2025 12:00 PM UTC


Talk Python to Me

#529: Computer Science from Scratch

A lot of people building software today never took the traditional CS path. They arrived through curiosity, a job that needed automating, or a late-night itch to make something work. This week, David Kopec joins me to talk about rebuilding computer science for exactly those folks, the ones who learned to program first and are now ready to understand the deeper ideas that power the tools they use every day.

December 03, 2025 08:00 AM UTC

December 02, 2025


Christian Ledermann

Game development with SpecKit, Rust and Bevy

brkrs — a fun, playable brick-breaker game & learning playground

brkrs is a real, playable Breakout/Arkanoid-style game written in Rust 🦀 using the Bevy engine.
It’s also a hands-on learning project, letting you explore:

Every feature starts as a spec, flows through an issue or PR, and ends as working Rust code. You can play the game, explore the code, and learn modern Rust/Bevy workflows all at the same time.

Linus Torvalds said: “Talk is cheap. Show me the code.”

brkrs lets you play, tinker, and see the specs come alive in a real game.

The Story Behind brkrs

I always wanted to rewrite my old Arkanoid/Breakout-style game, YaAC 🐧, in a modern game framework.

I began by manually implementing the core gameplay foundations: reading documentation, following examples, and building a basic proof-of-concept with the essential mechanics (ball, paddle, bricks).

It quickly became clear that doing everything manually would involve a steep learning curve and a lot of time.

brkrs was born as a solution: a way to learn modern Rust game development, apply spec-first workflows, and experiment with AI-assisted coding, all while still having fun playing a real game.

Try it now

You can play a web version on GitHub Pages

Key Features

brkrs is a Breakout/Arkanoid style game implemented in Rust with the Bevy engine. It extends the classic formula with richer physics, paddle rotation, and per-level configuration.

Quickstart (play & learn)

Prerequisites: Rust + Cargo + Git

git clone https://github.com/cleder/brkrs.git
cd brkrs
cargo run --release

Controls: move paddle with mouse, scroll wheel to rotate (if enabled), ESC to pause.

Play, tweak, and learn — modify levels, bricks, or mechanics to see specs turn into features.

Core Systems

  1. Physics (Rapier3D) – 3D physics constrained to a flat play plane.
  2. Game State – (planned) menu, playing, paused, game over, transitions.
  3. Level Loader – RON file parsing, entity spawning, per-level gravity.
  4. Brick System – Extensible brick behaviors via components & events.
  5. Pause System – ESC to pause, click to resume, with window mode switching (native).

Learning Path & Contribution

This project is intended to be fun and educational. Suggested learning steps:

  1. Read a spec in the repo or wiki
  2. Pick a small issue to implement
  3. Submit a PR that fulfills the spec
  4. Experiment with AI-assisted features or gameplay tweaks

Documentation

Full documentation is available at brkrs.readthedocs.io:

Why You’ll Enjoy It

December 02, 2025 10:00 PM UTC


PyCoder’s Weekly

Issue #711: pairwise(), Mocks, Claude, and More (Dec. 2, 2025)

December 02, 2025 07:30 PM UTC


Python Morsels

Wrapping text output in Python

Python's textwrap module includes utilities for wrapping text to a maximum line length.

Table of contents

  1. Improving readability with text wrapping
  2. Wrapping text to a fixed width with textwrap.wrap
  3. Rendering wrapped text as a single string with textwrap.fill
  4. Wrapping text with multiple paragraphs
  5. Indentation, line breaks, and more
  6. Text wrapping with TextWrapper class

Improving readability with text wrapping

Sometimes programmers like to manually wrap their text to a specific maximum line length.

This is unwrapped free-flowing text (made with a multiline string):

license = """
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
""".strip()

print(license)

When we print this text at the terminal, it will something like this:

$ python3 license.py
Permission is hereby granted, free of charge, to any person obtaining a copy of this softwar
e and associated documentation files (the "Software"), to deal in the Software without restr
iction, including without limitation the rights to use, copy, modify, merge, publish, distri
bute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Soft
ware is furnished to do so, subject to the following conditions:

Let's manually wrap this text to a 78-character line length:

license = """
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
""".strip()

print(license)

When we print this text, we'll now see that it's a bit easier to read in our terminal:

$ python3 license.py
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

How can we do this text wrapping automatically?

Wrapping text to a fixed width with textwrap.wrap

Python's textwrap module has a …

Read the full article: https://www.pythonmorsels.com/wrapping-text/

December 02, 2025 04:00 PM UTC


Nicola Iarocci

Eve 2.2.4

Eve v2.2.4 was just released on PyPI. It is a minor update, with a validation fix contributed by smeng9. See the changelog for details.

December 02, 2025 03:06 PM UTC


Real Python

Introduction to pandas

Learn pandas DataFrames: explore, clean, and visualize data with powerful tools for analysis. Delete unneeded data, import data from a CSV file, and more.

December 02, 2025 02:00 PM UTC


Django Weblog

Django security releases issued: 5.2.9, 5.1.15, and 4.2.27

In accordance with our security release policy, the Django team is issuing releases for Django 5.2.9, Django 5.1.15, and Django 4.2.27. These releases address the security issues detailed below. We encourage all users of Django to upgrade as soon as possible.

CVE-2025-13372: Potential SQL injection in FilteredRelation column aliases on PostgreSQL

FilteredRelation was subject to SQL injection in column aliases, using a suitably crafted dictionary, with dictionary expansion, as the **kwargs passed to QuerySet.annotate() or QuerySet.alias() on PostgreSQL.

Thanks to Stackered for the report.

This issue has severity "high" according to the Django security policy.

CVE-2025-64460: Potential denial-of-service vulnerability in XML serializer text extraction

Algorithmic complexity in django.core.serializers.xml_serializer.getInnerText() allowed a remote attacker to cause a potential denial-of-service triggering CPU and memory exhaustion via specially crafted XML input submitted to a service that invokes XML Deserializer. The vulnerability resulted from repeated string concatenation while recursively collecting text nodes, which produced superlinear computation resulting in service degradation or outage.

Thanks to Seokchan Yoon (https://ch4n3.kr/) for the report.

This issue has severity "moderate" according to the Django security policy.

Affected supported versions

  • Django main
  • Django 6.0 (currently at release candidate status)
  • Django 5.2
  • Django 5.1
  • Django 4.2

Resolution

Patches to resolve the issue have been applied to Django's main, 6.0 (currently at release candidate status), 5.2, 5.1, and 4.2 branches. The patches may be obtained from the following changesets.

CVE-2025-13372: Potential SQL injection in FilteredRelation column aliases on PostgreSQL

CVE-2025-64460: Potential denial-of-service vulnerability in XML serializer text extraction

The following releases have been issued

The PGP key ID used for this release is Natalia Bidart: 2EE82A8D9470983E

General notes regarding security reporting

As always, we ask that potential security issues be reported via private email to security@djangoproject.com, and not via Django's Trac instance, nor via the Django Forum. Please see our security policies for further information.

December 02, 2025 12:00 PM UTC


Python Software Foundation

Sovereign Tech Agency and PSF Security Partnership

December 02, 2025 07:00 AM UTC

December 01, 2025


Mike Driscoll

ANN: Vibe Coding Video Games with Python

I am happy to announce my latest book, Vibe Coding Video Games with Python. Here’s the announcement from my Kickstarter: Welcome to Vibe Coding Video Games with Python. In this book, you will learn how to use artificial intelligence to create mini-games. You will attempt to recreate the look and feel of various classic video […]

The post ANN: Vibe Coding Video Games with Python appeared first on Mouse Vs Python.

December 01, 2025 04:11 PM UTC


Caktus Consulting Group

LLM Basics: OpenAI Function Calling

In our previous post, we explored how to send text to an LLM and receive a text response in return. That is useful for chatbots, but often we need to integrate LLMs with other systems. We may want the model to query a database, call an external API, or perform calculations.

December 01, 2025 03:00 PM UTC


Real Python

Quantum Computing Basics With Qiskit

Understand quantum computing basics like qubits, superposition, and entanglement. Then use Python Qiskit to build your first quantum circuit.

December 01, 2025 02:00 PM UTC


death and gravity

reader 3.20 released – we're so back

December 01, 2025 01:43 PM UTC


Real Python

Quiz: Quantum Computing Basics With Qiskit

Test your understanding of quantum computing basics, including superposition, qubits, entanglement, and key programming concepts.

December 01, 2025 12:00 PM UTC


Zero to Mastery

[November 2025] Python Monthly Newsletter 🐍

72nd issue of Andrei's Python Monthly: , and much more. Read the full newsletter to get up-to-date with everything you need to know from last month.

December 01, 2025 10:00 AM UTC


Python Bytes

#460 Overlooked Python Typing

Topics include Advent of Code, Django 6 is coming, Advanced, Overlooked Python Typing, and codespell.

December 01, 2025 08:00 AM UTC


Zato Blog

Network Packet Broker Automation in Python

Network Packet Broker Automation in Python

What is a network packet broker and what does it do?

Packet brokers are crucial for network engineers, providing a clear, detailed view of network traffic, aiding in efficient issue identification and resolution.

But what is a network packet broker (NBP) really? Why are they needed? And how to automate one in Python?

➤ Read this article about network packet brokers and their automation in Python to find out more.

More resources

Click here to read more about using Python and Zato in telecommunications
➤ Python API integration tutorials
What is an integration platform?
Open-source iPaaS in Python

December 01, 2025 03:00 AM UTC


Brian Okken

Is Cyber Monday still a thing?

I kinda forgot about CyberMonday.
However, when I saw a bunch of announcements this morning, I figured why not participate.

December 01, 2025 12:00 AM UTC


Seth Michael Larson

One weird trick for cheaper physical Switch 2 games?

December 01, 2025 12:00 AM UTC

November 30, 2025


The Python Coding Stack

My Life • The Autobiography of a Python Object

A short post showing Python from the eyes of object 0x101dd38c0

November 30, 2025 11:10 AM UTC