Featured image of post This Month for Pythonistas - July 2025

This Month for Pythonistas - July 2025

Python 3.14 RC1, Agentic AI, context engineering and other fun stuff

from datetime import date

print(date.today().year, date.today().month)
# 2025 7

Welcome back Pythonistas! I hope you enjoy your summer vacation if you actually have one. But in any case I’m glad to see you back reading the fifth issue of my “This month for Pythonistas” series which curates the news, articles, tutorials, podcasts, and more Python stuff worth noting in this month.

Before we continue, please note that this blog is synced across several platforms:

Ready? Let’s get started!


Events & Social

EuroPython 2025 took place in Prague again this year. For those of you who did not attend, there’s no official recordings of the talks yet.

New Versions

Python 3.14.0 release candidate 1

The first release candidate of Python 3.14 is ready! Source code as well as binary distributions can be found here.

The second candidate (and the last planned release preview) is scheduled for Tuesday, 2025-08-26, while the official release of 3.14.0 is scheduled for Tuesday, 2025-10-07.

Tutorials

In this course, you’ll learn three common post-training methods—Supervised Fine-Tuning (SFT), Direct Preference Optimization (DPO), and Online Reinforcement Learning (RL)—and how to use each one effectively.

Use Pydantic to generate structured outputs from LLMs, ensuring the responses follow a specific format that your application can reliably process.

Articles

The blog post explains how global variables work in Python bytecode using the Memphis interpreter built in Rust as an example. It highlights that while the VM doesn’t store the names of local variables, it performs dynamic name resolution for global variables, a key aspect of Python’s flexibility.

This article explains how to use Python’s dis module to view the bytecode generated from a simple script. The bytecode is a low-level representation of the Python code, showing the sequence of operations the Python interpreter performs. For example, the LOAD_CONST and STORE_NAME instructions represent assigning a constant value to a variable, while the CALL instruction indicates a function call.

The article discusses four ways to accelerate Python code: efficiency improvements by reducing unnecessary calculations, using compilation to optimize performance, leveraging parallelism with multiple CPU cores, and adopting development processes like benchmarking and testing. An example analyzing letter frequency in Jane Austen’s Northanger Abbey demonstrates how combining these methods yields significant speedups, ultimately achieving a 330× faster performance.

The article discusses state management using Signals in Python, highlighting their benefits in handling complex state dependencies and cascading updates. It contrasts Signals with traditional manual approaches, which can lead to bugs and maintenance challenges due to implicit dependencies.

This blog post discusses the current state of CPython’s JIT (Just-In-Time) compiler. The author highlights that while the JIT is still experimental and not always faster than the interpreter, a growing community of contributors is working on improving it. Key areas for improvement include performance and coverage.

The addition of free-threaded Python allows for better thread scalability, particularly in Python extensions like NumPy. Nathan Goldbaum and Lysandros Nikolaou presented at PyCon US 2025 about the challenges and solutions for migrating the Python ecosystem to support the new free-threaded model, emphasizing the importance of maintaining compatibility with existing C/C++/Rust-based extensions.

The author details a method for converting a blog from reStructuredText to Markdown, using an LLM to generate and validate scripts, emphasizing the importance of trust in the automated process. It concludes that while MCP may be useful for certain tasks, it currently faces limitations in composability and context management compared to direct code generation.

The article introduces Wasm-agents, a blueprint for creating AI agents that can run directly in your browser. These agents are packaged as standalone HTML files, utilizing WebAssembly and Pyodide to execute Python scripts and libraries.

The article discusses lessons learned from developing an AI code review agent at Cubic. Initially, the tool was too noisy, generating many false positives and irrelevant comments. Improvements included requiring the AI to explicitly justify its findings, simplifying the toolset to essential components, and employing specialized micro-agents for different tasks. These changes reduced false positives by 51%, improved developer trust, and streamlined the code review process.

The article reviews various LLMs and web research tools for internet-based research tasks. Overall, standard ChatGPT with web search is recommended for its speed, manageability, and iterative capabilities, while more complex, slower tools are less practical for routine research tasks.

This article discusses “context engineering”, which involves providing the right information to agents (like LLMs) within their context window to help them perform tasks effectively. It covers four strategies: write, select, compress, and isolate.

The article discusses Peter Naur’s 1985 idea that programming is about building a shared theory of how a system works. Source code is just a representation, and critical knowledge is in developers’ minds. Today’s AI tools and novice developers risk losing this underlying theory, leading to incoherent code and technical debt. Senior developers are now more vital than ever because they preserve and evaluate the theoretical framework, ensuring system coherence and understanding the “why” behind code decisions.

The article argues that while the creation of code may be sped up by tools like LLMs, the true bottlenecks in software engineering lie in code reviews, testing, debugging, coordination, and communication. These processes, which require deep understanding and collaboration, remain critical and cannot be bypassed.

Podcasts

đŸ„ core.py

🐍 RealPython Podcast

đŸ„§ Python Bytes Podcast

🩜 Talk Python to me

🍕 Pybites Podcast

Repositories

blog -> ScreenEnv: Deploy your full stack Desktop Agent

blog -> Announcing GenAI Processors: Build powerful and flexible Gemini applications


As we wrap up this journey together, I want to take a moment to express my gratitude for your reading. If you’ve enjoyed what you just read and would like to help sustain this blog, consider starring this blog on github, it would be great motivation for me to keep updating the blogs!

Alright, that concludes the fifth issue of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful, and see you in August!

Built with Hugo
Theme Stack designed by Jimmy