The Real Python Podcast

The Real Python Podcast

https://realpython.com/podcasts/rpp/feed
669 Followers 290 Episodes Claim Ownership
A weekly Python podcast hosted by Christopher Bailey with interviews, coding tips, and conversation with guests from the Python community. The show covers a wide range of topics including Python programming best practices, career tips, and related software development topics. Join us every Friday morning to hear what's new in the world of Python programming and become a more effective Pythonista.

Episode List

Limitations in Human and Automated Code Review

Mar 27th, 2026 12:00 PM

With the mountains of Python code that it’s possible to generate now, how’s your code review going? What are the limitations of human review, and where does machine review excel? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We discuss a recent piece from Glyph titled, “What Is Code Review For?” We dig into the limitations of human review and where software tools like linters and formatters can help you. We cover the challenges developers and open-source maintainers face with the rise of LLM-generated code and pull requests. We also share other articles and projects from the Python community, including a collection of recent releases and announcements, creating publication-ready tables from DataFrames, choosing the right Python task queue, mastering context managers, statically checking Python dicts for completeness, an open-source inventory management system, and an ORM-based backend for Django tasks. This episode is sponsored by SerpApi. Spotlight: Intermediate Python Deep Dive: Write Better Python and Build Better Systems Master advanced patterns, OOP, and Pythonic design in eight weeks–with live expert guidance. Topics: 00:00:00 – Introduction 00:02:32 – DuckDB 1.5.0 Released 00:03:11 – PyPy v7.3.21 Released 00:03:30 – Sunsetting Jazzband 00:04:08 – Thoughts on OpenAI acquiring Astral and uv/ruff/ty 00:05:19 – Great Tables: Publication-Ready Tables From DataFrames 00:10:24 – Comparing PDF Table Extraction Tools 00:11:53 – Sponsor: SerpApi 00:12:55 – Choosing the Right Python Task Queue 00:16:57 – Mastering Python Context Managers 00:22:40 – Statically Checking Python Dicts for Completeness 00:25:00 – Spotlight: Intermediate Python Deep Dive 00:26:16 – What Is Code Review For? 00:43:48 – usdatasets: Installable Collection of Datasets on USA 00:45:22 – InvenTree: OSS Inventory Management System 00:48:01 – django-tasks-db: An ORM-based Backend for Django Tasks 00:49:41 – Thanks and goodbye News: DuckDB 1.5.0 Released PyPy v7.3.21 Released Sunsetting Jazzband Thoughts on OpenAI acquiring Astral and uv/ruff/ty OpenAI Acquiring Astral: A 4th Option for Fun - Will Vincent Show Links: Great Tables: Publication-Ready Tables From DataFrames – Learn how to create publication-ready tables from Pandas and Polars DataFrames using Great Tables. Format currencies, add sparklines, apply conditional styling, and export to PNG. Comparing PDF Table Extraction Tools – This article explores three Python tools for PDF table extraction: Docling, Marker, and LlamaParse. Learn which handles merged cells and multi-level headers best. Choosing the Right Python Task Queue – Python has great options for task queues. Choosing between Celery and RQ isn’t an easy decision. Jump in and learn how each option compares! Mastering Python Context Managers – Go beyond just using open() and learn how Python context managers work and where they are useful. Statically Checking Python Dicts for Completeness – To keep code concerns separate, you might have two data structures (like an Enum and a dict) that are supposed to change in sequence: adding a value to the Enum requires you to add a similar value in the dict. This is common when separating business logic from UI code. This article shows you ways of making sure the corresponding changes happen together. Discussion: What Is Code Review For? – This post explores just what you should and should not use code reviews for. Learn when to use linters to catch problems vs when human review is important. Your job is to deliver code you have proven to work Projects: usdatasets: Installable Collection of Datasets on USA InvenTree: OSS Inventory Management System django-tasks-db: An ORM-based Backend for Django Tasks Additional Links: Episode #214: Build Captivating Display Tables in Python With Great Tables Great Blogposts – great_tables Python’s with Statement: Manage External Resources Safely – Real Python Context Managers and Using Python’s with Statement – Real Python Episode #183: Exploring Code Reviews in Python and Automating the Process Episode #246: Learning Intermediate Python With a Deep Dive Course Level up your Python skills with our expert-led courses: Modern Python Linting With Ruff Context Managers and Using Python's with Statement Creating Asynchronous Tasks With Celery and Django Support the podcast & join our community of Pythonistas

Automate Exploratory Data Analysis & Invent Python Comprehensions

Mar 20th, 2026 12:00 PM

How do you quickly get an understanding of what’s inside a new set of data? How can you share an exploratory data analysis with your team? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. We discuss a recent Real Python tutorial about YData Profiling. This library lets you quickly generate an exploratory data analysis (EDA) report with a few lines of code. The report provides column-level analysis, visualizations, and summary statistics that can be exported to HTML to share with others. We cover an article by Trey Hunner about building your own Python comprehensions. Python includes list, dictionary, and set comprehensions. But what if you want to create ones for other collections, such as a tuple, frozenset, or a Counter? We also share other articles and projects from the Python community, including a collection of recent releases and PEPs, using the Django ORM as a standalone module, a history of attempts to eliminate programmers, a discussion of bad managers, a modern Python project template, and a CLI to summarize code size by language. This episode is sponsored by AgentField. Course Spotlight: Understanding Python List Comprehensions Python list comprehensions make it easy to create lists while performing sophisticated filtering, mapping, and conditional logic on their members. In this course, you’ll learn when to use list comprehensions in Python and how to create them effectively. Topics: 00:00:00 – Introduction 00:02:46 – Python 3.12.13, 3.11.15, 3.10.20 and Python 3.15.0 alpha 7 Released 00:03:25 – Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29 00:03:39 – PEP 825: Wheel Variants: Package Format 00:04:20 – PEP 827: Type Manipulation 00:05:11 – Automate Python Data Analysis With YData Profiling 00:11:31 – Django ORM Standalone: Querying an Existing Database 00:16:43 – Sponsor: AgentField 00:17:42 – Invent Your Own Comprehensions in Python 00:22:34 – A History of Attempts to Eliminate Programmers 00:28:51 – Video Course Spotlight 00:30:03 – Three Bad Managers 00:50:42 – python_template: Modern Python Project Template 00:53:38 – tallyman: CLI to Summarize Code Size by Language 00:55:06 – Thanks and goodbye News: Python 3.12.13, 3.11.15 and 3.10.20 Released Python 3.15.0 alpha 7 - Python Insider Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29 PEP 825: Wheel Variants: Package Format (Added) PEP 827: Type Manipulation (Added) Show Links: Automate Python Data Analysis With YData Profiling – Automate exploratory data analysis by transforming DataFrames into interactive reports with one command from YData Profiling. Django ORM Standalone: Querying an Existing Database – A practical step-by-step guide to using Django ORM in standalone mode to connect to and query an existing database using inspectdb. Invent Your Own Comprehensions in Python – Python doesn’t have tuple, frozenset, or Counter comprehensions, but you can invent your own by passing a generator expression to any iterable-accepting callable. A History of Attempts to Eliminate Programmers – From COBOL in the 1960s to AI in the 2020s, every generation promises to eliminate programmers. Explore the recurring cycles of software simplification hype. Discussion: Three Bad Managers – Rands in Repose Projects: python_template: Modern Python Project Template tallyman: CLI to Summarize Code Size by Language Additional Links: When to Use a List Comprehension in Python – Real Python Understanding Python List Comprehensions – Real Python A Modern Python Stack for Data Projects copier Cookiecutter Level up your Python skills with our expert-led courses: Understanding Python List Comprehensions How to Set Up a Django Project The pandas DataFrame: Working With Data Efficiently Support the podcast & join our community of Pythonistas

Crafting and Editing In-Depth Tutorials at Real Python

Mar 13th, 2026 12:00 PM

What goes into creating the tutorials you read at Real Python? What are the steps in the editorial process, and who are the people behind the scenes? This week on the show, Real Python team members Martin Breuss, Brenda Weleschuk, and Philipp Acsany join us to discuss topic curation, review stages, and quality assurance. We start by sharing the multiple roles our panel of guests perform across the editorial process. They describe the phases a tutorial passes through, including layers of reviews, from technical accuracy to educational effectiveness. We also discuss our editorial independence, external authors, and the continuous feedback loop with our readers. This episode is sponsored by AgentField. Spotlight: Claude Code Course: Stop Copy-Pasting From ChatGPT Most Python developers use AI as fancy autocomplete. This 2-day course teaches you to build entire projects with an AI agent inside your codebase. Topics: 00:00:00 – Introduction 00:03:33 – Martin’s role at Real Python 00:04:35 – Philipp’s role at Real Python 00:05:27 – Brenda’s role at Real Python 00:06:49 – Internal core team and external contributors 00:13:46 – Selecting topics and subjects 00:21:43 – Outlining and review 00:28:26 – Sponsor: AgentField 00:29:27 – Writing drafts 00:34:03 – Changes to our style and format 00:37:32 – Technical review and using Git 00:43:53 – Didactic review 00:52:59 – Language edit 00:57:16 – Spotlight: Claude Code Live Course 00:59:00 – Final QA 01:01:00 – Scheduling 01:03:36 – Reader feedback and updating existing tutorials 01:06:04 – Using modern tools 01:13:59 – Shining the light on contributors 01:16:26 – Independence and editorial choices 01:19:10 – Thanks and goodbye Show Links: Editorial Guidelines – Real Python Meet Our Team About Martin Breuss About Philipp Acsany About Brenda Weleschuk Create Your Learning Plan Python Learning Paths Reference – Real Python Join the Real Python Team – Real Python Cohort-Based Live Python Courses – Real Python Level up your Python skills with our expert-led courses: Getting Started With Claude Code Write Python Docstrings Effectively Python Basics: Code Your First Python Program Support the podcast & join our community of Pythonistas

Overcoming Testing Obstacles With Python's Mock Object Library

Feb 27th, 2026 12:00 PM

Do you have complex logic and unpredictable dependencies that make it hard to write reliable tests? How can you use Python’s mock object library to improve your tests? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects. Christopher shares details about his recent Real Python video course, “Improving Your Tests With the Python Mock Object Library.” He describes how mocking in Python with unittest.mock allows you to simulate complex logic or unpredictable dependencies, such as responses from external services. He covers how the Mock class can imitate real objects, and the patch() function lets you temporarily substitute mocks for real objects in your tests. We also share other articles and projects from the Python community, including a collection of recent releases, using open source AI at Wagtail, updates from the inaugural PyPI Support Specialist, a lightweight OS for microcontrollers in MicroPythonOS, why match-case is not necessarily switch-case for Python, thinking about time in programming, a TUI-based presentation tool for the terminal, and a tool to check Django projects for dead code. This episode is sponsored by AgentField. Course Spotlight: Improving Your Tests With the Python Mock Object Library Master Python testing with unittest.mock. Create mock objects to tame complex logic and unpredictable dependencies. Topics: 00:00:00 – Introduction 00:02:53 – Python 3.14.3 and 3.13.12 Released 00:03:15 – Django Security Releases Issued: 6.0.2, 5.2.11, and 4.2.28 00:03:36 – Open Source AI We Use to Work on Wagtail 00:07:27 – Dispatch From the Inaugural PyPI Support Specialist 00:09:01 – MicroPythonOS Graphical Operating System 00:11:27 – Sponsor: AgentField 00:12:21 – Improving Your Tests With the Python Mock Object Library 00:17:30 – Need Switch-Case in Python? It’s Not Match-Case! 00:26:03 – Video Course Spotlight 00:27:38 – How to Think About Time in Programming 00:31:58 – Prezo: A TUI-based Presentation Tool for the Terminal 00:34:52 – django-deadcode: Tracks URLs, Templates, and Django Views 00:38:09 – Thanks and goodbye News: Python 3.14.3 and 3.13.12 Released Python 3.15.0 Alpha 6 Released Django Security Releases Issued: 6.0.2, 5.2.11, and 4.2.28 Show Links: Open Source AI We Use to Work on Wagtail – One of the core maintainers at Wagtail CMS shares what open source models have been working best for the project so far. Dispatch From the Inaugural PyPI Support Specialist – Maria Ashna (Thespi-Brain on GitHub) is the inaugural PyPI Support Specialist and she’s written up how the first year went. MicroPythonOS Graphical Operating System – MicroPythonOS lightweight OS for microcontrollers targets applications with graphical user interfaces with a look similar to Android/iOS. Improving Your Tests With the Python Mock Object Library – Master Python testing with unittest.mock. Create mock objects to tame complex logic and unpredictable dependencies. Need Switch-Case in Python? It’s Not Match-Case! – Python’s match-case is not a switch-case statement. If you need switch-case, you can often use a dictionary instead. How to Think About Time in Programming – Time is a complex thing to code. This article is a very deep dive, covering absolute measurement, civil time, modern time keeping, the mess that are timezones, and much more. Projects: Prezo: A TUI-based Presentation Tool for the Terminal django-deadcode: Tracks URLs, Templates, and Django Views Additional Links: AI in the CMS: steering the ecosystem - Wagtail CMS Episode #258: Supporting the Python Package Index MicroPythonOS: A complete operating system for microcontrollers like the ESP32, inspired by Android and iOS. MicroPythonOS - The Ultimate MicroPython Operating System LVGL — Light and Versatile Embedded Graphics Library Structural Pattern Matching in Python – Real Python Textual Level up your Python skills with our expert-led courses: Improving Your Tests With the Python Mock Object Library Testing Your Code With pytest Using Python's assert to Debug and Test Your Code Support the podcast & join our community of Pythonistas

Exploring MCP Apps & Adding Interactive UIs to Clients

Feb 20th, 2026 12:00 PM

How can you move your MCP tools beyond plain text? How do you add interactive UI components directly inside chat conversations? This week on the show, Den Delimarsky from Anthropic joins us to discuss MCP Apps and interactive UIs in MCP. Den is a member of the MCP Steering Committee and a Core Maintainer focusing on auth and security. He explains how MCP acts as a universal bridge, providing AI models with the real-time context they need. He shares insights on working with MCP Apps and moving beyond simple text to render web-based user interfaces directly in your chat window. Den previously worked on GitHub Spec Kit, and we discuss taking advantage of spec-driven development and how to use “Skills” to remove the toil from your workflow. We also talk briefly about his podcast and his conversations about navigating careers in technology. This episode is sponsored by AgentField. Course Spotlight: Getting Started With Google Gemini CLI Learn how to use Gemini CLI to bring Google’s AI-powered coding assistance into your terminal for faster code analysis, debugging, and fixes. Topics: 00:00:00 – Introduction 00:02:17 – Den’s Background 00:02:53 – The Work Item Podcast 00:06:55 – Career Move to Anthropic 00:10:24 – What is Model Context Protocol (MCP)? 00:11:39 – MCP UI and MCP Apps 00:16:17 – Sponsor: AgentField 00:17:13 – Structuring MCP Tools 00:24:52 – Cloudflared & tunneling 00:29:59 – Reverse engineering with Ghidra MCP 00:35:43 – Connecting MCP tools 00:43:10 – Video Course Spotlight 00:44:23 – Spec-Driven Development & Context Management 00:57:23 – Leveraging Skills for Model Guidance 01:02:51 – What are you excited about in the world of Python? 01:03:42 – What do you want to learn next? 01:07:14 – How can people follow your work online? 01:07:48 – Thanks and goodbye Show Links: The Work Item Podcast Den Delimarsky - Principal Product Engineer, Tinkerer, Nerd, Trail Explorer Hello, Anthropic · Den Delimarsky What is the Model Context Protocol (MCP)? - Model Context Protocol MCP Apps And Interactive UIs In MCP Clients - Den Delimarsky ext-apps: Official repo for spec & SDK of MCP Apps protocol MCP Will Never Be The Same - Render UI With MCP Apps - YouTube playwright-mcp: Playwright MCP server NationalSecurityAgency/ghidra: Software reverse engineering (SRE) framework GhidraMCP: MCP Server for Ghidra Ralph Loop – Claude Plugin - Anthropic Spec Kit - AI-Powered Specification-Driven Development Toolkit Introducing Agent Skills - Claude Welcome to FastMCP 2.0! - FastMCP uv - Astral Den Delimarsky (@den.dev) — Bluesky Den Delimarsky (@localden@mastodon.social) - Mastodon Level up your Python skills with our expert-led courses: Getting Started With Claude Code Getting Started With Google Gemini CLI Write Python Docstrings Effectively Support the podcast & join our community of Pythonistas

Get this podcast on your phone, Free

Create Your Podcast In Minutes

  • Full-featured podcast site
  • Unlimited storage and bandwidth
  • Comprehensive podcast stats
  • Distribute to Apple Podcasts, Spotify, and more
  • Make money with your podcast
Get Started
It is Free