Constructing and Judging Modern Agentic Workflows
How can you improve your LLM agent systems through specification enrichment? What are the advantages of having an LLM act as a judge within an agent system? This week on the show, Senior IEEE Member and Quality Engineer Suneet Malhotra joins us to discuss building and evaluating agentic architecture. Suneet Malhotra is an independent practitioner-researcher with 18 years of experience in Quality Engineering (QE) and test automation for consumer-scale platforms. He discusses building specification-enrichment loops, monitoring performance, and using Cohen’s kappa to measure agreement between LLM judgments. Suneet is currently publishing multiple papers that are under peer review on these topics. He also provides links to his work and GitHub projects if you want to experiment with these concepts and methods yourself. Quick Survey: Get more out of the podcast show notes Video Course Spotlight: Testing MCP Servers With a Python MCP Client Learn how to build a Python MCP client that tests MCP servers from your terminal. List their tools, prompts, and resources, then call each one. Topics: 00:00:00 – Introduction 00:00:56 – Survey: RP Podcast show notes 00:02:11 – How did you get into testing? 00:05:04 – Has working for large public-facing corporations changed how you approach testing? 00:07:06 – Writing a paper on LLM-as-Judge 00:09:22 – Looking across the Software Development Lifecycle 00:14:46 – Agentic AI: theater vs methodology 00:17:23 – Specification enrichment 00:27:52 – Video Course Spotlight 00:29:18 – Saving the specifications 00:31:27 – Using the LLM as a judge & Cohen’s kappa 00:39:31 – How can people try out the project? 00:43:35 – What are some of the failure modes you’ve seen? 00:50:26 – What’s an inexpensive way to try these ideas out? 00:54:04 – What are you excited about in the world of Python? 00:56:14 – What do you want to learn next? 00:57:14 – How can people follow your work online? 00:57:32 – Thanks and goodbye Show Links: Suneet Malhotra - AI-Driven Quality Engineering Leader SuneetMalhotra - GitHub Suneet Malhotra - ORCID Cross-Layer Observability for LLM-Assisted Test Automation — Reference Implementation and Evaluation Data - Zenodo Specification Enrichment v28 (EISEJ submission) — Reference implementation and empirical evaluation - Zenodo Visual Oracle Bench — Two-Judge Synthetic-HTML Pilot for LLM-as-Judge Visual Regression Detection with Specificity Reporting - Zenodo Cohen’s kappa - Wikipedia Suneet Malhotra - LinkedIn Survey: Get more out of every Real Python Podcast episode Level up your Python skills with our expert-led courses: Improving Your Tests With the Python Mock Object Library Building Type-Safe LLM Agents With Pydantic AI Testing MCP Servers With a Python MCP Client Support the podcast & join our community of Pythonistas
Running Python Locally in a Sandbox
How do you avoid the risk of running a Python application locally that could be malicious, break your code, or leak private data? How can you create a sandboxed local environment using WASM and MicroPython? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We cover a recent article by previous guest Simon Willison titled “Running Python code in a sandbox with MicroPython and WASM.” Simon has been experimenting for years on how to run Python code in a sandbox to reduce the risk of trying out new software, untrusted libraries, and wild ideas. He’s developed a solution using WASM and MicroPython and is sharing it as an alpha package on PyPI. We also share other articles and projects from the Python community, including new releases, community announcements, a roundup of recent Real Python tutorials and video courses, a plugin case study using Pluggy, a look at whether you’re expected to run five type-checkers now, wrapping programs using the subprocess module, a project for star charts and maps, and a tool for trend detection in Python. This episode is sponsored by DataDriven. Spotlight: Codex for Python Developers: Hands-On Agentic Coding Course Most Python developers use AI as fancy autocomplete. This 2-day live course teaches you to build entire projects with Codex, an AI agent that works inside your codebase. Topics: 00:00:00 – Introduction 00:02:48 – PSF Board Election Dates for 2026 00:03:28 – Python 3.15.0 beta 3 is here! 00:03:58 – PEP 835: Shorthand Syntax for Annotated Type Metadata 00:05:13 – Announcing the Search for a DSF Executive Director 00:05:53 – Django 6.1 beta 1 released 00:06:24 – PyData London 26 Videos Released 00:06:50 – Implementing Interfaces in Python: ABCs and Protocols 00:07:36 – Building Python Skills for the Job Market 00:08:21 – Context Engineering for Python Codebases 00:09:14 – Python for Data Analysis: A Practical Guide 00:09:47 – Using LlamaIndex for RAG in Python 00:10:07 – Django Tasks: Exploring the Built-in Tasks Framework 00:10:59 – Plugins Case Study: Pluggy 00:15:10 – Sponsor: DataDriven 00:15:57 – Pyodide 314.0 Release 00:18:54 – Python in a Sandbox With MicroPython and WASM 00:22:35 – The subprocess Module: Wrapping Programs With Python 00:30:08 – Spotlight: Codex for Python Developers 00:31:51 – Are You Expected to Run 5 Type-Checkers Now? 00:39:41 – starplot: ✨ Star charts and maps in Python 00:42:01 – marimo-tutorials: Collection of Marimo Tutorials 00:42:48 – pytrendy: Trend Detection in Python 00:44:35 – Thanks and goodbye News: PSF Board Election Dates for 2026 Python 3.15.0 beta 3 is here! - Python Insider PEP 835: Shorthand Syntax for Annotated Type Metadata (Added) Announcing the Search for a DSF Executive Director Django 6.1 beta 1 released - Django Weblog PyData London 26 Videos Released Real Python News: Implementing Interfaces in Python: ABCs and Protocols Building Python Skills for the Job Market Context Engineering for Python Codebases Python for Data Analysis: A Practical Guide Using LlamaIndex for RAG in Python Django Tasks: Exploring the Built-in Tasks Framework Topics: Plugins Case Study: Pluggy – Pluggy is an open source plugin system used by frameworks such as pytest and tox. This article introduces you to how it works and what you can do with it. Pyodide 314.0 Release – This post announces the Pyodide 314.0 release and describes its features, including a focus on standardization and packaging. You can now build Pyodide wheels and post them to PyPI. Python in a Sandbox With MicroPython and WASM – Simon’s been in search of the perfect code sandbox. This article is about his latest attempt and covers why he wants a sandbox and what tech he’s used to achieve it. The subprocess Module: Wrapping Programs With Python – Python’s subprocess module allows you to run shell commands and manage external processes directly from your Python code. By using subprocess, you can execute shell commands like ls or dir, launch applications, and handle both input and output streams. Are You Expected to Run 5 Type-Checkers Now? – Library maintainers may feel overwhelmed by the plurality of type checkers that exist. We offer some guidance on how to focus their efforts where they matter most. Projects: starplot: ✨ Star charts and maps in Python marimo-tutorials: Collection of Marimo Tutorials pytrendy: Trend Detection in Python Additional Links: Episode #226: PySheets: Spreadsheets in the Browser Using PyScript Datasette: An open source multi-tool for exploring and publishing data Exploring Astrophysics in Python With pandas and Matplotlib Using Astropy for Astronomy With Python Investigating Quasar Data With Polars and Interactive marimo Notebooks JupyterLite — JupyterLite 0.8.0 documentation DataDriven - Data Engineer Interview Practice Problems Level up your Python skills with our expert-led courses: Using Astropy for Astronomy With Python Using LlamaIndex for RAG in Python Building Python Skills for the Job Market Support the podcast & join our community of Pythonistas
Maintaining Your Python Developer Instincts While Using LLM Tools
Do you feel like your Python skills are atrophying after using LLM coding tools? How do you add the right kind of friction into your coding routine to keep your developer instincts sharp? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We discuss a recent article by previous guest Bob Belderbos about developers keeping their instincts when AI is writing the code. He stresses the importance of the right kind of friction for maintaining skills and scheduling a deliberate coding practice routine. We also share other articles and projects from the Python community, including new releases, a roundup of recent Real Python tutorials and video courses, sending emails with Python, libraries to enhance your Python Polars workflows, exploring Django Integrity-Policy, a next-generation HTTP client for Python, and a project to detect lazy imports incompatibilities. This episode is sponsored by AURI by Endor Labs Course Spotlight: Accessing Multiple AI Models With the OpenRouter API Access models from popular AI providers in Python through OpenRouter’s unified API with smart routing, fallbacks, and cost controls. Topics: 00:00:00 – Introduction 00:02:53 – Python 3.14.6, 3.13.14, and 3.15.0b2 Released 00:03:20 – Django Security Releases Issued: 6.0.6 and 5.2.15 00:03:35 – PyPy v7.3.23 Released 00:04:25 – Python sleep(): How to Add Time Delays to Your Code 00:04:59 – Structuring Your Python Script 00:05:36 – How to Use GitHub Copilot Code Review in Pull Requests 00:06:13 – Accessing Multiple AI Models With the OpenRouter API 00:07:25 – Cursor vs Windsurf: Which AI Code Editor Is Best for Python? 00:08:28 – Sending Emails With Python 00:16:31 – Sponsor:AURI from Endor Labs 00:17:17 – Announcing Polars 1.41 00:19:43 – Libraries for Your Python Polars Workflows 00:23:42 – Django: Introducing Django-Integrity-Policy 00:28:39 – Video Course Spotlight 00:30:21 – Keep Your Developer Instincts When AI Writes the Code 00:39:58 – Lifeguard: Detect Lazy Imports Incompatibilities 00:42:46 – httpx2: A Next Generation HTTP Client for Python 00:45:34 – Thanks and goodbye News: Python 3.14.6 and 3.13.14 Released Python 3.15.0b2 Released Django Security Releases Issued: 6.0.6 and 5.2.15 PyPy v7.3.23 Released Real Python News: Python sleep(): How to Add Time Delays to Your Code - Tutorial Structuring Your Python Script - Video Course How to Use GitHub Copilot Code Review in Pull Requests – Tutorial Accessing Multiple AI Models With the OpenRouter API – Video Course Cursor vs Windsurf: Which AI Code Editor Is Best for Python? – Tutorial Show Links: Sending Emails With Python – Learn how to send emails with Python using SMTP, attach files, format HTML messages, and personalize bulk emails for your contact list. Announcing Polars 1.41 – Polars 1.41 is out and this post covers the new features it includes. Learn about faster parquet metadata decoding, nested subplan elimination, and more. Libraries for Your Python Polars Workflows – Four excellent libraries for your data science workflow with support for Polars DataFrames Django: Introducing Django-Integrity-Policy – Recently, browsers have added support for the new Integrity-Policy response header (Firefox 145+, Chrome 138+). Adam quickly went to work to build a library that enables your Django project to take advantage of the feature. How to Keep Your Developer Instincts When AI Writes the Code – The promise was less friction. The cost, it turns out, is instinct, a high price to pay. Bob’s answer: add deliberate practice to your routine, and keep the struggle. Projects: Lifeguard: Detect Lazy Imports Incompatibilities httpx2: A Next Generation HTTP Client for Python Additional Links: OpenRouter Episode #214: Build Captivating Display Tables in Python With Great Tables Using ggplot in Python: Visualizing Data With plotnine – Tutorial Learning Rust Made Me a Better Python Developer HTTPXYZ AURI for Developers - AI-Native AppSec Platform - Endor Labs Level up your Python skills with our expert-led courses: Graph Your Data With Python and ggplot Structuring Your Python Script Accessing Multiple AI Models With the OpenRouter API Support the podcast & join our community of Pythonistas
EuroPython 2026: Celebrating 25 Years
What’s happening at EuroPython 2026? The conference celebrates its 25th anniversary this year in Kraków, Poland. This week on the show, organizers Mia Bajić and Daria Linhart Grudzien join me to discuss this year’s conference. Mia serves as the Vice Chair of the EuroPython Society, and Daria leads the EuroPython communications team. We dig into the details of the conference, including the wide variety of tracks, the reasoning for selecting the location, and the additional activities surrounding the event. We talk about volunteering, organizing, and continuing support for conferences. Mia and Daria also share the talks they’re excited to check out and how they use Python currently. Course Spotlight: Building Command Line Interfaces With argparse In this step-by-step Python video course, you’ll learn how to take your command line Python scripts to the next level by adding a convenient command line interface that you can write with argparse. Topics: 00:00:00 – Introduction 00:02:27 – EuroPython 2026 details 00:05:02 – Daria and Mia’s roles with the conference 00:09:08 – Practices to continue growing a conference 00:13:16 – What makes EuroPython different? 00:18:40 – Video Course Spotlight 00:20:17 – Wide variety of tracks, talks, and topics 00:28:54 – How are you using Python currently? 00:32:38 – What are you excited about in the world of Python? 00:35:12 – What do you want to learn next? 00:37:30 – How can people follow the work you do online? 00:39:06 – Thanks and goodbye Show Links: EuroPython 2026 - July 13-19, 2026 - Kraków, Poland 🎂 25th Anniversary of EuroPython: Social Media Challenge 🎂 Schedule for 2026 ICE Kraków Congress Centre EuroPython: Overview - LinkedIn EuroPython Conference - YouTube EuroPython - Fosstodon EuroPython Conference (@europython) - Instagram EuroPython (@europython) - TikTok EuroPython 2026, Kraków (@europython.eu) - Bluesky EuroPython (@europython) - X Mia Links: Mia Bajić - LinkedIn Mia Bajić (@clytaemnestra_) - Instagram Mia Bajić (@clytaemnestra.bsky.social) - Bluesky Behind the Commit - YouTube mia@europython.eu Daria Links: Daria Linhart Grudzien - LinkedIn daria@europython.eu Level up your Python skills with our expert-led courses: Building Command Line Interfaces With argparse Structuring Your Python Script Accessing Multiple AI Models With the OpenRouter API Support the podcast & join our community of Pythonistas
Reducing the Size of Python Docker Containers
How can you easily reduce the size of a Python Docker container? What are the exceptions you should catch in your code? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We cover a tutorial by Khuyen Tran at CodeCut about shrinking the size of a Python Docker container. The piece explores SlimToolKit, which analyzes a container at runtime, identifies what files are used, and then builds a minimal image with only those dependencies. We dig into a recent piece by Trey Hunner about Python exceptions. When trying to determine a strategy to handle potential errors, which exceptions should you catch and which should you leave unhandled? We also share other articles and projects from the Python community, including recent releases, two PEPs that have been deferred to 3.16, a critical vulnerability in an open-source ASGI framework, resolving a lazy import manually, a project to anonymize sensitive PII data, and a tool for loading Django settings from a TOML file. This episode is sponsored by AURI by Endor Labs. Course Spotlight: Raising and Handling Python Exceptions In this course, you’ll learn what an exception is and how it differs from a syntax error. You’ll learn about raising exceptions, making assertions, and catching exceptions to change the control flow of your program using the try, except, else, and finally keywords. Topics: 00:00:00 – Introduction 00:02:32 – Django 6.1 Alpha 1 Released 00:03:07 – Nuitka Python Compiler Release 4.1 00:04:00 – PEP 813: The Pretty Print Protocol (Deferred to 3.16) 00:04:28 – PEP 830: Add Timestamps to Exceptions and Tracebacks 00:04:50 – Millions of AI agents imperiled by critical vulnerability in open source package 00:07:27 – What Types of Exceptions Should You Catch? 00:13:28 – Sponsor: AURI from Endor Labs 00:14:18 – PyCon US 2026 Packaging Summit Recap 00:18:39 – Slim Down Python Docker Containers 00:24:17 – Video Course Spotlight 00:25:45 – Resolve a Lazy Import Manually 00:28:04 – presidio: Detect, Redact, & Anonymize Sensitive Data (PII) 00:32:37 – dj-toml-settings: Load Django settings from a TOML file 00:37:14 – Thanks and goodbye News: Django 6.1 Alpha 1 Released Nuitka Python Compiler Release 4.1 PEP 813: The Pretty Print Protocol (Deferred to 3.16) PEP 830: Add Timestamps to Exceptions and Tracebacks (Deferred to 3.16) Millions of AI agents imperiled by critical vulnerability in open source package - Ars Technica Missing Host header validation poisons request.url.path, bypassing path-based security checks · Advisory · Kludex/starlette Show Links: What Types of Exceptions Should You Catch? – The trickiest programming bugs are often caused by catching exceptions that you didn’t mean to catch or handling exceptions in ways that obfuscate the actual error that’s occurring. Which exceptions should you catch and which should you leave unhandled? PyCon US 2026 Packaging Summit Recap – Per-talk notes from the PyCon US 2026 Packaging Summit, including: Emma Smith on Wheel 2.0 and Zstandard compression, Mike Fiedler on PyPI abuse vectors, Mahe Iram Khan on ecosystems, lightning talks on PEP 772, mobile wheels, AI accelerator variants, and the roundtable discussions. Slim Down Python Docker Containers – Learn how SlimToolKit can reduce a Python Docker image by analyzing what your app actually uses at runtime. This tutorial walks through slimming a Chainlit LLM chatbot image, shows where container bloat comes from, and explains how to avoid breaking lazily loaded Python frameworks. Resolve a Lazy Import Manually – Learn how to work around the Python 3.15 machinery to resolve an explicit lazy import manually. TIL #141 – Inspect a lazy import - mathspp Projects: presidio: Detect, Redact, & Anonymize Sensitive Data (PII) dj-toml-settings: Load Django settings from a TOML file Additional Links: Using raise for Effective Exceptions - Real Python Video Course Working With Python’s Built-in Exceptions – Real Python Video Course Episode #177: Welcoming PyPI’s Safety & Security Engineer Mike Fiedler Chainlit - Build AI applications AURI for Developers - AI-Native AppSec Platform - Endor Labs Level up your Python skills with our expert-led courses: Raising and Handling Python Exceptions Advanced Python import Techniques Working With Python's Built-in Exceptions Support the podcast & join our community of Pythonistas