

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.
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.
Episodes
Mentioned books

Mar 31, 2023 • 1h 1min
Evaluating Python Packages & Celebrating 20 Years of PyCon US
Have you ever installed a Python package without knowing anything about it? What best practices should you employ to ensure the quality of your next package installation? Christopher Trudeau is back this week, bringing another batch of PyCoder’s Weekly articles and projects. We also have Python Software Foundation executive director, Deb Nicholson, to share details about PyCon US 2023.
We cover a recent Real Python tutorial by Philipp Acsany on evaluating the quality of Python packages. The piece provides a tool kit for researching the traits, history, software license, and current condition of external Python packages. We also discuss the techniques that we personally use before selecting a package for our Python projects.
We share several other articles and projects from the Python community, with topics such as the underlying structure of virtual environments, the overhead of Python asyncio tasks, documentation for Python projects with Sphinx and Read the Docs, a project for creating argparse boilerplate, and a way to generate seemingly realistic fake numbers using Benford’s law.
Deb Nicholson is also here to talk about the 20th anniversary of PyCon US, hosted in Salt Lake City. We dig into the details of the upcoming conference, including keynote speakers, tutorials, scheduled talks, and improvements to the hybrid online experience.
Course Spotlight: Documenting Python Projects With Sphinx and Read the Docs
In this video series, you’ll create project documentation from scratch using Sphinx, the de facto standard for Python. You’ll also hook your code repository up to Read The Docs to automatically build and publish your code documentation.
Topics:
00:00:00 – Introduction
00:02:46 – How to Evaluate the Quality of Python Packages
00:11:35 – Overhead of Python asyncio Tasks
00:14:53 – Sponsor: Courier
00:15:37 – How Virtual Environments Work
00:23:48 – Documenting Python Projects With Sphinx and Read the Docs
00:28:29 – duckargs: Code Generator for argparse Boilerplate
00:30:46 – Video Course Spotlight
00:32:04 – Are Those Numbers Realistic or Fake? Try Using Benford’s Law
00:34:37 – Introduction for Deb Nicholson
00:36:33 – What is your role with PyCon US?
00:37:28 – Hybrid conference and dates
00:39:07 – Tutorials
00:40:30 – Education Summit and Typing Summit
00:42:06 – Keynote speakers
00:42:57 – Lightning talks, posters, and job fair
00:45:04 – 20th anniversary of PyCon US
00:46:56 – Resources for proposals and talks
00:49:22 – Previous podcast guests and talks
00:51:26 – Mentored sprints for diverse beginners
00:53:12 – PyLadies auction
00:54:29 – COVID policy
00:56:50 – What are you excited about in the world of Python?
00:58:07 – What do you want to learn next?
00:59:24 – How to follow the PSF and PyCon US?
00:59:55 – Thanks and goodbye
Show Links:
How to Evaluate the Quality of Python Packages – Just like you shouldn’t download any file from the Internet, you shouldn’t install third-party Python packages without evaluating them first. This tutorial will give you the tool set to evaluate the quality of external Python packages before you incorporate them into your Python projects.
Overhead of Python Asyncio Tasks – The Textual library uses a lot of asyncio tasks. In order to determine whether to spend time optimizing them, Will measured the cost of creating asyncio tasks. TLDR; optimize something else. This article also spawned a conversation on Hacker News.
How Virtual Environments Work – This article attempts to demystify virtual environments, specifically why they exist and how they work. It even delves into why Brett is heading down this alley and how running into challenges with cross-platform tools has prompted the creation of microvenv.
Documenting Python Projects With Sphinx and Read the Docs – In this video series, you’ll create project documentation from scratch using Sphinx, the de facto standard for Python. You’ll also hook your code repository up to Read The Docs to automatically build and publish your code documentation.
Projects:
duckargs: Code Generator for argparse Boilerplate
Are Those Numbers Realistic or Fake? Try Using Benford’s Law – How can you tell whether a set of figures is trustworthy? It’s not always simple, but Benford’s Law gives you one way to find out. There’s even a Python Package to help you check: randalyze.
PyCon US 2023 Links:
Welcome to PyCon US 2023
Python Software Foundation
Registration Information - PyCon US 2023
Talks Schedule - PyCon US 2023
Tutorials Schedule - PyCon US 2023
Education Summit - PyCon US 2023
PyCon US Stories Slideshow
Proposal Guidelines - PyCon US 2023
PyLadies Auction - PyCon US 2023
Volunteering - PyCon US 2023
Additional Links:
Libraries.io - The Open Source Discovery Service
Licenses - Choose a License
Python Virtual Environments: A Primer – Real Python
EU Cyber Resilience Act - Shaping Europe’s digital future
Python Software Foundation News: Where is the PSF?
Signup for the Python Software Foundation Newsletter
The Boston Python User Group (Cambridge, MA) - Meetup
PyLadies – Women Who Love Coding in Python
Level up your Python skills with our expert-led courses:
Building Python Project Documentation With MkDocs
Documenting Python Projects With Sphinx and Read the Docs
Documenting Code in Python
Support the podcast & join our community of Pythonistas

8 snips
Mar 24, 2023 • 1h 2min
Lessons Learned From Four Years Programming With Python
What are the core lessons you’ve learned along your Python development journey? What are key takeaways you would share with new users of the language? This week on the show, Duarte Oliveira e Carmo is here to discuss his recent talk, “Four Years of Python.”
Duarte works at the crossroads of machine learning, data science, and software engineering. He began using Python in his graduate studies and never looked back. In 2021, he wrote a blog post about some of the valuable lessons he’s learned. Then he decided the lessons and concepts in the post might make a good conference talk.
We cover the steps in his process of crafting the presentation, practicing it at a smaller conference, and finally presenting it at PyCon Italia last year.
We also dig into the four major themes of the talk. Along the way, we share a collection of resources to help you continue learning on your Python journey.
Course Spotlight: Building a URL Shortener With FastAPI and Python
In this video course, you’ll build an app to create and manage shortened URLs. Your Python URL shortener can receive a full target URL and return a shortened URL. You’ll also use the automatically created documentation of FastAPI to try out your API endpoints.
Topics:
00:00:00 – Introduction
00:02:38 – Four years of Python
00:04:18 – Why did you create a blog?
00:06:19 – A singular vs wide focus for the blog
00:09:19 – Pitching the talk to conferences
00:13:02 – Resources for preparing your talk
00:16:03 – What was your programming and Python background?
00:19:00 – Sponsor: InfluxData
00:19:47 – Reading is better than Googling
00:26:23 – What are some of your favorite docs?
00:28:48 – Thoughts on GPT and Copilot
00:31:45 – Keep it stupid simple
00:36:07 – What’s extensible code?
00:38:29 – Video Course Spotlight
00:39:54 – Learning testing techniques & testing data science code
00:46:05 – Continuous learning
00:51:46 – What do you use for RSS?
00:53:06 – Resources for machine learning
00:57:20 – What are you excited about in the world of Python?
00:58:57 – What do you want to learn next?
01:00:55 – How can people follow the work you do?
01:01:20 – Thanks and goodbye
Show Links:
Four years of Python - Duarte O.Carmo
Four years of Python - Duarte Carmo - YouTube
Practices of the Python Pro
Pelican 4.8.0
“One for Them, One for Me” - Blank Check Movies From Famous Directors
PyData
NumFOCUS: A Nonprofit Supporting Open Code for Better Science
Proposing a Talk - PyCon US 2023
pandas documentation - pandas 1.5.3 documentation
scikit-learn 1.2.2 - User guide - documentation
FastAPI - Tutorial - User Guide
Using FastAPI to Build Python Web APIs - Real Python
Python 3.11.2 Documentation
Kindle Highlights Newsletter
Reeder 5
Welcome to Feedly
Normconf: The Normcore Tech Conference
Tech Blog - ★❤✰ Vicki Boykis ★❤✰
Sebastian Raschka - Blog
Blog of a data person. - koaning.io
Machine Learning Design Patterns - Book
The Practical AI Podcast - Changelog
tidytuesday: Official repo for the #tidytuesday project
PyCon.DE & PyData Berlin, 2023 - PyConDE & PyData Berlin 2023
PyCon Italia - 2023
ruff - PyPI
Effective Python › The Book: Second Edition
Episode #3: Effective Python and Python at Google Scale - The Real Python Podcast
Duarte O.Carmo
Talks - Duarte O.Carmo
Duarte O.Carmo - LinkedIn
Level up your Python skills with our expert-led courses:
Python REST APIs With FastAPI
Splitting Datasets With scikit-learn and train_test_split()
Building a URL Shortener With FastAPI and Python
Support the podcast & join our community of Pythonistas

Mar 17, 2023 • 53min
Coding With namedtuple & Python's Dynamic Superpowers
Have you explored Python’s collections module? Within it, you’ll find a powerful factory function called namedtuple(), which provides multiple enhancements over the standard tuple for writing clearer and cleaner code. This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
Christopher discusses his Real Python video course about writing more Pythonic code using namedtuple(). With namedtuple(), you can create immutable sequence types that allow you to access their values using descriptive field names and dot notation instead of clunky integer indices.
We also discuss metaprogramming and the unique advantages of Python’s dynamism. Christopher shares potential paths for this type of coding from web applications, testing, and AST techniques.
We share several other articles and projects from the Python community, including a news update, the Arrow revolution happening in pandas 2.0, a new PEP for inlined comprehensions, tips and techniques for modern Flask apps, a Python helper tool for building and running a REPL with custom commands, and a project to turn a pandas DataFrame into a Tableau-style UI.
Course Spotlight: Writing Clean, Pythonic Code With namedtuple
In this video course, you’ll learn what Python’s namedtuple is and how to use it in your code. You’ll also learn about the main differences between named tuples and other data structures, such as dictionaries, data classes, and typed named tuples.
Topics:
00:00:00 – Introduction
00:02:17 – Python 3.12.0 alpha 6 released
00:02:40 – Django Developers Survey 2022 Results
00:03:12 – Writing Clean, Pythonic Code With namedtuple
00:07:40 – pandas 2.0 and the Arrow Revolution (Part I)
00:17:21 – Sponsor: RevSys
00:18:10 – PEP 709: Inlined Comprehensions
00:20:51 – 13 Tips and Techniques for Modern Flask Apps
00:25:54 – Video Course Spotlight
00:27:24 – Discussion: Python’s “Disappointing” Superpowers
00:47:54 – replbuilder: Python helper tool for building and running a REPL with custom commands
00:49:58 – pygwalker: Turn pandas Into a Tableau-Style UI
00:52:15 – Thanks and goodbye
News:
Python Insider: Python 3.12.0 alpha 6 released
Django Developers Survey 2022 Results - Django Weblog
Show Links:
Writing Clean, Pythonic Code With namedtuple – In this video course, you’ll learn what Python’s namedtuple is and how to use it in your code. You’ll also learn about the main differences between named tuples and other data structures, such as dictionaries, data classes, and typed named tuples.
pandas 2.0 and the Arrow Revolution (Part I) – This article details the changes in the pandas 2.0 release, with emphasis on the underlying adoption of Apache Arrow.
PEP 709: Inlined Comprehensions – Python Enhancement Proposal 709 covers a change to how comprehensions are handled. Currently, they’re compiled as nested functions. Benchmarking shows that treating list, dict, and set comprehensions as inline code can result in a 2x speedup on the comprehension.
13 Tips and Techniques for Modern Flask Apps – Flask is approaching its 13th birthday, and to celebrate, Phillip has written 13 tips for writing modern Flask apps. It covers dealing with JSON, environment-based configuration, auto-generated docs, and more.
Discussion:
Python’s “Disappointing” Superpowers - lukeplant.me.uk
I am disappointed by dynamic typing - Buttondown
Python’s “Disappointing” superpowers - Hacker News
Python’s “Disappointing” Superpowers - Lobsters
Projects:
replbuilder: Python helper tool for building and running a repl with custom commands
pygwalker: Turn pandas Into a Tableau-Style UI
Additional Links:
Write Pythonic and Clean Code With namedtuple – Real Python
Episode #146: Using NumPy and Linear Algebra for Faster Python Code – The Real Python Podcast
Apache Arrow and the “10 Things I Hate About pandas” - Wes McKinney
Data science without borders - Wes McKinney (Two Sigma Investments) - YouTube
Joining Forces for an Arrow-Native Future - Wes McKinney
pandas arrays, scalars, and data types — pandas 2.1.0.dev0+171.gc293caf2e9 documentation
Episode #18: Ten Years of Flask: Conversation With Creator Armin Ronacher – The Real Python Podcast
Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 1 – Real Python
Python Metaclasses – Real Python
Kanaries AI enhanced data exploration
Level up your Python skills with our expert-led courses:
Data Cleaning With pandas and NumPy
Lists and Tuples in Python
Writing Clean, Pythonic Code With namedtuple
Support the podcast & join our community of Pythonistas

Mar 10, 2023 • 1h 11min
Sharing Your Python App Across Platforms With BeeWare
Are you interested in deploying your Python project everywhere? This week on the show, Russell Keith-Magee, founder and maintainer of the BeeWare project, returns. Russell shares recent updates to Briefcase, a tool that converts a Python application into native installers on macOS, Windows, Linux, and mobile devices.
We cover how Anaconda hired him last year to work full-time on the BeeWare project. He shares how this has helped him focus his efforts and move the project forward.
We also discuss his recent talk at DjangoCon US 2022 on how to turn your website into an app (and why maybe you shouldn’t). Russell details the problems of converting from the Web to a mobile platform. We also contrast WebAssembly System Interface (WASI) with the tools that his team works on.
Course Spotlight: Managing Attributes With Python’s property()
In this video course, you’ll learn how to create managed attributes, also known as properties, using Python’s property() in your custom classes.
Topics:
00:00:00 – Introduction
00:02:06 – BeeWare project update and open-source funding
00:06:47 – What are BeeWare and Briefcase?
00:08:19 – Toga GUI and contributions
00:10:47 – Pace of the project now
00:12:47 – PEP 517 and binary packages with C or Rust
00:17:29 – WASM and Briefcase for Web
00:22:22 – Sponsor: InfluxData
00:23:10 – How to turn your Website into an App - Talk
00:28:14 – Bridging libraries that access platform hardware
00:40:56 – Video Course Spotlight
00:42:27 – WASI - WebAssembly System Interface
00:48:18 – Do you need an app or a website?
00:54:23 – Getting started with BeeWare
01:00:06 – What to do first if interested in contributing?
01:02:33 – Channels for the project
01:04:55 – Upcoming conference talks
01:05:26 – What are you excited about in the world of Python?
01:06:42 – What do you want to learn next?
01:09:28 – How can people follow your work online?
01:10:10 – Thanks and goodbye
Show Links:
Write once. Deploy everywhere. — BeeWare
Russell Keith-Magee - Keynote - PyCon 2019 - YouTube
Anaconda - Open Source
PyScript - Run Python in your HTML
Episode #22: Create Cross-Platform Python GUI Apps With BeeWare – The Real Python Podcast
How to turn your Website into an App (and why maybe you shouldn’t!) with Russell Keith Magee - YouTube
PEP 517 – A build-system independent format for source trees - peps.python.org
rubicon-objc - PyPI
Chaquopy – Python SDK for Android
WASI.dev
CAP theorem - Wikipedia
BeeWare Tutorial
The Buzz - BeeWare Blog
You can take it with you: Packaging your Python code with Briefcase - PyCon US 2023
BeeWare (@PyBeeWare) - Twitter
Russell Keith-Magee (@freakboy3742@cloudisland.nz) - Mastodon
Level up your Python skills with our expert-led courses:
Managing Attributes With Python's property()
Everyday Project Packaging With pyproject.toml
Getters and Setters in Python
Support the podcast & join our community of Pythonistas

Mar 3, 2023 • 1h 8min
Django Deployment Strategies & Preparing for PyCascades 2023
Have you decided how you’re going to deploy your Django project? Should you use a VPS or a PaaS? Christopher Trudeau is back this week, bringing another batch of PyCoder’s Weekly articles and projects. We also have organizers from PyCascades to share details about this year’s hybrid in-person and virtual conference.
Christopher shares an article about selecting an appropriate Django project deployment strategy. The guide compares VPS (virtual private server) and PaaS (platform as a service) systems. He also covers hosting providers for each and highlights potential pitfalls.
We share several other articles and projects from the Python community, including a news update, what’s new in SQLAlchemy 2.0, how to flush the output of the Python print function, the dangers behind image resizing for machine learning, a project that visualizes pathfinding algorithms, and a runtime executor project.
We also have three special guests from PyCascades 2023 to dig into the details of the conference. Conference chair Eliza Sarobhasa is CTO at Women Who Drone and Leadership Fellow (Python Track) & Python Developer Advocate at Women Who Code. Sprints chair Chethana Gopinath is a Software Engineer at realtor.com and a Senior Lead at Women Who Code Python. Speaker Support Chair Jolene Wong is a Senior Software Engineer at Cisco based in Vancouver. We discuss hosting a hybrid conference, participating in open-source sprints, and finding a local Python community.
Course Spotlight: The Python print() Function: Go Beyond the Basics
In this step-by-step course, you’ll learn about the print() function in Python and discover some of its lesser-known features. Avoid common mistakes, take your “hello world” to the next level, and know when to use a better alternative.
Topics:
00:00:00 – Introduction
00:02:47 – Django 4.2 beta 1 released
00:03:04 – What’s New in SQLAlchemy 2.0?
00:06:42 – How to Flush the Output of the Python Print Function
00:14:30 – The Essential Django Deployment Guide
00:21:37 – Sponsor: Snyk
00:22:30 – The Dangers Behind Image Resizing
00:29:40 – Pathfinding-Visualizer: Visualize Pathfinding With Pygame
00:32:40 – rtx: Runtime Executor (asdf Rust Clone)
00:36:19 – Video Course Spotlight
00:37:31 – PyCascades 2023 Details
00:38:53 – Hybrid conference
00:41:11 – How did Chethana get involved?
00:42:30 – Open-source sprints
00:45:19 – How did Jolene get involved?
00:46:31 – How did Eliza get involved?
00:50:21 – Venue details
00:52:32 – Scheduled talks
00:56:13 – Conference sponsors
00:57:48 – Advice for attendees
01:00:46 – Tickets and virtual platform
01:03:01 – What are you excited about in the world of Python?
01:06:13 – Thanks and goodbye
News:
Django 4.2 beta 1 released | Weblog | Django
SQLAlchemy 2.0 Released
Show Links:
What’s New in SQLAlchemy 2.0? – SQLAlchemy 2.0 was launched in January. This article reviews the latest changes, whether it is worth the upgrade, and how to go about it.
How to Flush the Output of the Python Print Function – In this tutorial, you’ll learn how to flush the output of Python’s print function. You’ll explore output stream buffering in Python using code examples and learn that output streams are block-buffered by default, and that print() with its default arguments executes line-buffered when interactive.
The Essential Django Deployment Guide – Going from “it works on my machine” to deploying to the public can be a daunting task. This guide details the choices between VPS and PaaS systems, how to choose, what the options are, and what you need to know to get your Django code live.
The Dangers Behind Image Resizing – When training an ML model on image data you likely want smaller, consistently sized images. That means image processing in your pipeline, but the expectation that image resizing is the same across libraries can cause unforeseen problems.
Projects:
Pathfinding-Visualizer: Visualize Pathfinding With Pygame
rtx: Runtime Executor (asdf Rust Clone)
PyCascades Links:
Home - PyCascades 2023
The Team - PyCascades 2023
Schedule - PyCascades 2023
Sprints - PyCascades 2023
PyCascades 2023 - Sprints Sign Up Form
COVID Policy - PyCascades 2023
Venueless - PyCascades 2023
Become A Sponsor - PyCascades 2023
PyCascades - YouTube
Episode #44: Creating an Interactive Online Python Conference for PyCascades 2021 – The Real Python Podcast
Additional Links:
File Object - Glossary - Python Documentation
The Python print() Function: Go Beyond the Basics – Real Python
functools — Higher-order functions and operations on callable objects — Python 3.11.2 documentation
Python - Women Who Code
WWCodePython - Tiktok Creator & Bio Links - Beacons
PyLadies – Women Who Love Coding in Python
PyLadies Vancouver (Vancouver, BC) | Meetup
Level up your Python skills with our expert-led courses:
Deploy a Django App With Gunicorn and Nginx
The Python print() Function: Go Beyond the Basics
SQLite and SQLAlchemy in Python: Moving Your Data Beyond Flat Files
Support the podcast & join our community of Pythonistas

12 snips
Feb 24, 2023 • 1h 9min
Using NumPy and Linear Algebra for Faster Python Code
Are you still using loops and lists to process your data in Python? Have you heard of a Python library with optimized data structures and built-in operations that can speed up your data science code? This week on the show, Jodie Burchell, developer advocate for data science at JetBrains, returns to share secrets for harnessing linear algebra and NumPy for your projects.
Jodie details how most people begin their data science journey using loops to iterate over values and apply operations sequentially. We talk about how loops are friendly for beginners, being clear to read and easy to debug, but unfortunately don’t scale well, especially with large amounts of data.
Jodie shares some of the basics of linear algebra and how to organize data into vectors. We talk about how the NumPy library leverages those concepts to improve data processing. We discuss how the library includes operations for vector and matrix addition and subtraction, and why these operations are more efficient than loops. We also cover how NumPy stores arrays in memory and when working with them is faster vs when it’s not.
Course Spotlight: Data Cleaning With pandas and NumPy
In this video course, you’ll learn how to clean up messy data using pandas and NumPy. You’ll become equipped to deal with a range of problems, such as missing values, inconsistent formatting, malformed records, and nonsensical outliers.
Topics:
00:00:00 – Introduction
00:02:35 – Vectorize all the things! - PyCon UK 2022 Talk
00:06:39 – Becoming familiar with linear algebra
00:09:05 – Beginners start with loops
00:11:25 – Starting with basic linear algebra
00:12:25 – The basic unit of a vector
00:18:06 – NumPy representing vectors in Python
00:23:25 – Sponsor: InfluxDB
00:24:13 – Block management
00:25:54 – Replacing a loop with vector-based operations
00:34:06 – NumPy broadcasting
00:38:52 – Approximating nearest neighbors
00:43:49 – Video Course Spotlight
00:45:15 – Solving the problem
00:46:44 – Getting rid of nested loops
00:48:54 – A peek under the hood
00:53:28 – How arrays vs lists are stored in memory
01:00:24 – Considering a GPU
01:03:37 – Real Python resources on the subject
01:04:08 – Upcoming talks and conferences
01:07:31 – Thanks and goodbye
Show Links:
Vectorize all the things! How basic linear algebra can speed up your data science code - YouTube
Introduction to Linear Algebra, 5th Edition
Linear Algebra - Mathematics - MIT OpenCourseWare
Linear Algebra and Learning from Data
Linear Algebra in Python: Matrix Inverses and Least Squares
NumPy: the absolute basics for beginners - NumPy Manual
Broadcasting — NumPy v1.24 Manual
spotify/annoy: Approximate Nearest Neighbors in C++/Python optimized
Look Ma, No For-Loops: Array Programming With NumPy – Real Python
NumPy Tutorial: Your First Steps Into Data Science in Python – Real Python
How to Iterate Over Rows in pandas, and Why You Shouldn’t – Real Python
RADAR: Thrive in the era of data - DataCamp
Vectorize all the things! Using linear algebra and NumPy to make your Python code lightning fast. - Python Web Conference 2023
Jodie Burchell - PyCon US 2023
Jodie Burchell’s Blog - Standard error
Jodie Burchell 🇦🇺🇩🇪 (@t_redactyl) - Twitter
Jodie Burchell 🇦🇺🇩🇪 (@t_redactyl@fosstodon.org) - Fosstodon
JetBrains: Essential tools for software developers and teams
Level up your Python skills with our expert-led courses:
Data Cleaning With pandas and NumPy
Histogram Plotting in Python: NumPy, Matplotlib, Pandas & Seaborn
Using NumPy's np.arange() Effectively
Support the podcast & join our community of Pythonistas

Feb 17, 2023 • 59min
Creating a Python Wordle Clone & Testing Environments With Nox
Would you like to practice your Python skills while building a challenging word game? Have you been wanting to learn more about creating command-line interfaces and making them colorful and interactive? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We share a recent Real Python step-by-step project about creating a clone of Wordle. In the project, you’ll practice building a terminal application, validating user input, and refactoring code into functions.
Christopher shares an article that compares two popular testing tools, Nox and Tox. He discusses how each framework approaches test environment configuration and why the author leans toward using Nox’s Python decorator–based format.
We share several other articles and projects from the Python community, including a news update, a guide to trying out code and ideas quickly with the Python REPL, a PEP about requiring virtual environments by default, a discussion about lessons learned in twenty years as a software engineer, a project for a spreadsheet GUI inside of JupyterLab notebooks, and adding C-style for loops to Python.
Course Spotlight: Getters and Setters in Python
In this video course, you’ll learn what getter and setter methods are, how Python properties are preferred over getters and setters when dealing with attribute access and mutation, and when to use getter and setter methods instead of properties in Python.
Topics:
00:00:00 – Introduction
00:02:21 – Django Security Releases Issued
00:02:43 – PSF Is Hiring a Security Developer-in-Residence
00:03:44 – Python 3.11.2, Python 3.10.10 and 3.12.0 alpha 5 are available
00:04:02 – Build a Wordle Clone With Python and Rich
00:10:05 – Why I Like Nox
00:16:44 – Sponsor: Anaconda Cloud
00:17:26 – PEP 704: Require Virtual Environments by Default
00:27:17 – The Python Standard REPL: Try Out Code and Ideas Quickly
00:33:08 – Video Course Spotlight
00:34:35 – 20 Things I’ve Learned in My 20 Years as a Software Engineer
00:47:50 – Mito: A Spreadsheet Inside Your JupyterLab Notebooks
00:51:37 – How I Added C-Style for-Loops to Python
00:58:08 – Thanks and goodbye
News:
Django Security Releases Issued: 4.1.6, 4.0.9, and 3.2.17
PSF Is Hiring a Security Developer-in-Residence
Python Insider: Python 3.11.2, Python 3.10.10 and 3.12.0 alpha 5 are available
Show Links:
Build a Wordle Clone With Python and Rich – In this step-by-step project, you’ll build your own Wordle clone with Python. Your game will run in the terminal, and you’ll use Rich to ensure your word-guessing app looks good. Learn how to build a command-line application from scratch and then challenge your friends to a wordly competition!
Why I Like Nox – Both Nox and Tox are multi-environment testing tools. This opinion piece by Hynek compares and contrasts them and explains why he is increasingly using Nox.
PEP 704: Require Virtual Environments by Default
The Python Standard REPL: Try Out Code and Ideas Quickly – In this tutorial, you’ll learn how to use the Python standard REPL (Read-Eval-Print Loop) to run your code interactively. This tool will allow you to test new ideas, explore and experiment with new tools and libraries, refactor and debug your code, try out examples, and more.
Discussion
20 Things I’ve Learned in My 20 Years as a Software Engineer – Justin writes a list of things he’s learned over his past twenty years in development. He starts by stating how context is important and that his lessons are from small teams that emphasize productivity and are tool agnostic.
The 10x Programmer Myth - Simple Thread
Projects:
Mito: A Spreadsheet Inside Your JupyterLab Notebooks
How I Added C-Style for-Loops to Python – Ever wanted a C-style for loop in Python? No? Well, you can have one anyway. See how Tushar implemented with for (i := var(0), i < 10, i + 2):
Additional Links:
Alpha-Omega - Open Source Security Foundation
Welcome to Nox - Nox 2022.11.21 documentation
Classifying Python Virtual Environment Workflows
PEP 704 - Require virtual environments by default for package installers - Discourse on Python.org
Creating Virtual Environments - Python Packaging User Guide
Python Virtual Environments: A Primer – Real Python
JupyterLab for an Enhanced Notebook Experience
Level up your Python skills with our expert-led courses:
Intro to Object-Oriented Programming (OOP) in Python
Python Basics: Object-Oriented Programming
Getters and Setters in Python
Support the podcast & join our community of Pythonistas

4 snips
Feb 10, 2023 • 52min
Wrangling Business Process Models With Python and SpiffWorkflow
Can you describe your business processes with flowcharts? What if you could define the steps in a standard notation and implement the workflows in pure Python? This week on the show, Dan Funk from Sartography is here to discuss SpiffWorkflow.
SpiffWorkflow is a Python tool for translating Business Process Model and Notation (BPMN) diagrams into a workflow engine. You can manipulate this visual chain of events to suit your team’s business requirements. Individual events in the workflow can contain blocks or scripts of Python code to be executed.
We discuss the concept of low-code software tools. Dan also talks about how SpiffWorkflow aims at getting non-developers within an organization involved in development.
Course Spotlight: Cool New Features in Python 3.11 – Real Python
In this video course, you’ll explore what Python 3.11 brings to the table. You’ll learn how Python 3.11 is the fastest and most user-friendly version of CPython yet, and learn about improvements to the typing system and to the asynchronous features of Python.
Topics:
00:00:00 – Introduction
00:02:14 – What is SpiffWorkflow?
00:03:12 – What is BPMN?
00:06:29 – What did you need to add to the project?
00:07:12 – What are the components of a diagram?
00:12:42 – Examples of workflow
00:13:54 – Sponsor: TelemetryHub
00:14:29 – What types of industries use BPMN?
00:18:02 – Decision Model and Notation (DMN)
00:19:34 – What is low-code?
00:27:02 – How could someone get involved?
00:28:02 – How do you host a workflow?
00:29:43 – Video Course Spotlight
00:31:05 – What has the project taught you as a developer?
00:37:29 – Empowering more members of the organization
00:42:07 – Project direction for the next year
00:42:51 – Where to start with SpiffWorkflow?
00:43:15 – What are you excited about in the world of Python?
00:45:59 – What do you want to learn next?
00:51:06 – Thanks and goodbye
Show Links:
SpiffWorkflow
Overview SpiffWorkflow 1.2.1 documentation
SpiffWorkflow: A powerful workflow engine implemented in pure Python - GitHub
Sartography
Business Process Model and Notation - Wikipedia
Decision Model and Notation™ (DMN™) | Object Management Group
Web-based tooling for BPMN, DMN, CMMN, and Forms | bpmn.io
Creating a Low-Code Business Process Execution Platform With Python, BPMN, and DMN - IEEE Software
The Low Code Wall, SpiffWorkflow
SpiffArena, SpiffWorkflow
Install SpiffArena then build and run your first diagram - YouTube
MindTrails - University of Virginia
Practices of the Python Pro
Episode #49: The Challenges of Developing Into a Python Professional – The Real Python Podcast
PEP 678: Exceptions can be enriched with notes - Python 3.11.1 documentation
Building a Ship in a Bottle. : 14 Steps (with Pictures) - Instructables
Status - Private, Secure Communication
Dan Funk - LinkedIn
SpiffWorkflow (@SpiffWorkflow) - Twitter
Level up your Python skills with our expert-led courses:
Building Python Project Documentation With MkDocs
Cool New Features in Python 3.11
Editing Excel Spreadsheets in Python With openpyxl
Support the podcast & join our community of Pythonistas

Feb 3, 2023 • 1h 3min
Create Interactive Maps & Geospatial Data Visualizations With Python
Would you like to quickly add data to a map with Python? Have you wanted to create beautiful interactive maps and export them as a stand-alone static web page? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We share a recent Real Python tutorial about using Python Folium to create geospatial data visualizations. Folium harnesses the power of the JavaScript library Leaflet. The project shares how to combine this graphical power with Python’s data-wrangling strength.
Christopher shares a recent Python Enhancement Proposal (PEP) about the Global Interpreter Lock (GIL) in CPython. The PEP proposes a change to the build process that implements a flag for optionally building a GIL-less interpreter.
We share several other articles and projects from the Python community, including a news update, a YAML document from hell, a set of logging practices to follow, a discussion about the discourse surrounding the recent Python packaging user survey, a modern Python UI library based on Tkinter, and a lightweight tool kit for bounding boxes.
Course Spotlight: Everyday Project Packaging With pyproject.toml
In this Code Conversation video course, you’ll learn how to package your everyday projects with pyproject.toml. Playing on the same team as the import system means you can call your project from anywhere, ensure consistent imports, and have one file that’ll work for many build systems.
Topics:
00:00:00 – Introduction
00:02:33 – Bleach 6.0.0 release and deprecation
00:05:03 – Python Folium: Create Web Maps From Your Data
00:10:37 – PEP 703: Making the GIL Optional in CPython
00:15:36 – Sponsor: Influxdata
00:16:24 – The YAML Document From Hell
00:27:53 – Logging Practices I Follow
00:32:08 – How to improve Python packaging
00:36:55 – Video Course Spotlight
00:38:25 – Thoughts on the Python packaging ecosystem
00:58:16 – CustomTkinter: Python UI library Based on Tkinter
01:00:16 – pybboxes: Lightweight Tool Kit for Bounding Boxes
01:01:36 – Thanks and goodbye
News:
Bleach 6.0.0 release and deprecation - Will’s Blog
Show Links:
Python Folium: Create Web Maps From Your Data – You’ll learn how to create web maps from data using Folium. The package combines Python’s data-wrangling strengths with the data-visualization power of the JavaScript library Leaflet. In this tutorial, you’ll create and style a choropleth world map that shows the ecological footprint per country.
PEP 703: Making the GIL Optional in CPython – This PEP proposes changes to the CPython build process that would allow you to build a GIL-less interpreter. This kind of interpreter would not be ABI compatible with the GIL-based one, and the programmer would become responsible for some locking situations in C-extensions. If implemented, this would lead the way to being able to operate without the GIL in cases where backward-compatibility issues aren’t important.
The yaml Document From Hell – As a data format, YAML is extremely complicated and it has many footguns. In this post, Ruud explains some of those pitfalls by means of an example and suggests a few simpler and safer YAML alternatives.
Logging Practices I Follow – “No matter what kind of software you’re developing, you most definitely leverage logging to some extent, probably every single day.” This article outlines good cross-language logging practices, making it easier to find bugs and understand what has happened in your software.
Discussion:
How to improve Python packaging, or why fourteen tools are at least twelve too many - Chris Warrick
Thoughts on the Python packaging ecosystem - Pradyun Gedam
Python Packaging User Survey - Results PDF
Python Packaging Strategy Discussion - Part 1 - Packaging - Discussions on Python.org
Thoughts on the Python packaging ecosystem | Hacker News
Stargirl: “So You Want to Solve Python Packaging” - Fosstodon
xkcd: Standards
Projects:
CustomTkinter: Python UI Library Based on Tkinter
pybboxes: Lightweight Tool Kit for Bounding Boxes
Additional Links:
PEP 554 – Multiple Interpreters in the Stdlib - peps.python.org
YAML: The Missing Battery in Python – Real Python
Python and TOML: New Best Friends – Real Python
PEP 665 – A file format to list Python dependencies for reproducibility of an application - peps.python.org
tkinter — Python interface to Tcl/Tk — Python 3.11.1 docs
Python GUI Programming With Tkinter – Real Python
Level up your Python skills with our expert-led courses:
Logging Inside Python
Everyday Project Packaging With pyproject.toml
Graph Your Data With Python and ggplot
Support the podcast & join our community of Pythonistas

Jan 27, 2023 • 54min
Orchestrating Large and Small Projects With Apache Airflow
Have you worked on a project that needed an orchestration tool? How do you define the workflow of an entire data pipeline or a messaging system with Python? This week on the show, Calvin Hendryx-Parker is back to talk about using Apache Airflow and orchestrating Python projects.
Calvin is the co-founder and CTO of Six Feet Up and a Python Web Conference co-organizer. He’s recently been working on a massive project that requires thousands of jobs involving transferring and transforming data. Through his research into orchestration systems, he found Apache Airflow.
Airflow is an open-source tool to define, schedule, and monitor workflows. The platform is pure Python and integrates with a wide variety of services. We discuss how workflows are defined by creating directed acyclic graphs (DAG).
Calvin talks about how a recent project outgrew the system and how his team built a clever solution using Python. We also discuss the upcoming Python Web Conference and what virtual attendees can expect.
Course Spotlight: Python Basics: Object-Oriented Programming
In this video course, you’ll get to know OOP, or object-oriented programming. You’ll learn how to create a class, use classes to create new objects, and instantiate classes with attributes.
Topics:
00:00:00 – Introduction
00:02:24 – Describing the large data pipeline
00:04:38 – What format was the data in?
00:06:04 – Was the format of the data changed for storage?
00:09:34 – Data engineering and describing sources and targets
00:11:29 – Apache Airflow orchestration and hitting limitations
00:18:12 – Sponsor: CData Software
00:18:54 – DAG: Directed acyclic graphs
00:22:29 – Streaming data and other tool choices
00:25:38 – Overcoming DAG Factory limitations
00:31:49 – Another industry example for Airflow
00:34:24 – Finding solutions as a consultancy
00:35:12 – Is there a minimum-size project for Airflow?
00:37:37 – Django under the hood
00:38:31 – Video Course Spotlight
00:39:58 – The Python Web Conference 2023
00:44:24 – Do you have any upcoming conference talks?
00:45:53 – How can people follow your work online?
00:46:52 – IndyPy talk by Mariatta Wijaya
00:48:01 – What are you excited about in the world of Python?
00:51:45 – What do you want to learn next?
00:53:22 – Thanks and goodbye
Show Links:
Apache Airflow - Documentation
Too Big for DAG Factories? — Six Feet Up
Directed acyclic graph - Wikipedia
DAGs — Airflow Documentation
Dynamically generating DAGs in Airflow - Astronomer Documentation
Data Lakehouse Architecture and AI Company - Databricks
Episode #10: Python Job Hunting in a Pandemic – The Real Python Podcast
Episode #124: Exploring Recursion in Python With Al Sweigart – The Real Python Podcast
The Recursive Book of Recursion
Episode #61: Scaling Data Science and Machine Learning Infrastructure Like Netflix – The Real Python Podcast
IndyPy — Indiana Python User Group
Contributing to Python - Mariatta Wijaya - Python Core Developer - YouTube
Home Assistant
Arturia - MicroFreak
Arturia - Pigments
CalvinHP (@calvinhp@fosstodon.org) - Fosstodon
calvinhp - Twitter
Six Feet Up - Blog
Python Web Conference 2023
Level up your Python skills with our expert-led courses:
Data Cleaning With pandas and NumPy
Python Basics: Object-Oriented Programming
Intro to Object-Oriented Programming (OOP) in Python
Support the podcast & join our community of Pythonistas