Skip to content
Artwork for The Real Python Podcast

The Real Python Podcast

Real Python

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.

Play
  • 23 episodes
  • weekly
  • Avg 57 min
  • English
Counted on this page — what you have heard stays on this device, so it is not something the list can be paged by.
  • #289
    March 27 · 51 min

    Limitations in Human and Automated Code Review

    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: Context Managers and Using Python's with Statement Creating Asynchronous Tasks With Celery and Django Modern Python Linting With Ruff Support the podcast & join our community of Pythonistas

  • #288
    March 20 · 56 min

    Automate Exploratory Data Analysis & Invent Python Comprehensions

    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

  • #287
    March 13 · 1 hr 21 min

    Crafting and Editing In-Depth Tutorials at Real Python

    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: Python Basics: Code Your First Python Program Getting Started With Claude Code Write Python Docstrings Effectively Support the podcast & join our community of Pythonistas

Showing 21–23 of 23 episodes