PyCoder’s Weekly
2026-03-17T19:30:00+00:00
https://pycoders.com/
PyCoder’s Weekly
Issue #726: Lazy Imports, Pydantic AI, Classes, and More (March 17, 2026)
https://pycoders.com/issues/726
2026-03-17T19:30:00+00:00
<p> <span>#726 – MARCH 17, 2026</span><br> <span><a href="https://pycoders.com/issues/726/feed">View in Browser »</a></span> </p> <p><a href="https://pycoders.com"><img alt="The PyCoder’s Weekly Logo" src="https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5" style="max-width: 100%;"></a></p> <hr> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16144/feed" target="_blank">The Story of Python’s Lazy Imports</a></h3> <p style="margin-bottom: 0;"> This article is about why lazy imports took 3 years and 2 attempts to be added to the language. From PEP 690’s rejection to PEP 810’s unanimous acceptance.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16144/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TECHLIFE</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16125/feed" target="_blank">Pydantic AI: Build Type-Safe LLM Agents in Python</a></h3> <p style="margin-bottom: 0;"> Learn how to use Pydantic AI to build type-safe LLM agents in Python with structured outputs, function calling, and dependency injection patterns.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16125/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16118/feed" target="_blank">Agents as API Services, Not Prompt Chains.</a></h3> <a href="https://pycoders.com/link/16118/feed" target="_blank"><img style="float:right; margin-left: 16px; margin-top: 7px; width: 17%;" src="https://cdn.pycoders.com/ccfaaf99831c2232e401ea409e24e4fb" alt></a> <p style="margin-bottom: 0;"> Clone a working 100-agent Python system: Autonomous Engineering Team, Deep Security Auditor, or Adversarial Code Reviewer. Agents run as API services, discover each other at runtime. No DAGs, no glue code. Any model. Apache 2.0. <a href="https://pycoders.com/link/16118/feed" target="_blank">Clone a Recipe →</a><br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16118/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">AGENTFIELD.AI</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;">sponsor</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16133/feed" target="_blank">When Are Classes Used in Python?</a></h3> <p style="margin-bottom: 0;"> While you don’t often need to make your own classes in Python, they can sometimes make your code reusable and easier to read.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16133/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TREY HUNNER</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16143/feed" target="_blank">Learn the Agentic Coding Workflow That Actually Works on Real Projects</a></h3> <p style="margin-bottom: 0;"> 65% of Python developers are stuck using AI for small tasks that fall apart on anything real. This 2-day live course (March 21-22 via Zoom) walks you through building a complete Python CLI app with Claude Code, from an empty directory to a shipped project on GitHub.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16143/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16119/feed" target="_blank">DuckDB 1.5.0 Released</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16119/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">DUCKDB.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16149/feed" target="_blank">PyPy v7.3.21 Released</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16149/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYPY.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16127/feed" target="_blank">Python 3.15.0 Alpha 7</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16127/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHON.ORG</a></span> </p> </div> <h2>Python Jobs</h2> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16141/feed" target="_blank">Python + AI Content Specialist (Anywhere)</a></h3> <p><a href="https://pycoders.com/link/16141/feed" target="_blank">Real Python</a></p> <p><a href="https://www.pythonjobshq.com?utm_source=newsletter&utm_campaign=pycoders726&utm_medium=feed" target="_blank">More Python Jobs >>></a></p> <h2>Articles & Tutorials</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16124/feed" target="_blank">Crafting and Editing in-Depth Tutorials at Real Python</a></h3> <p style="margin-bottom: 0;"> 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.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16124/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;">podcast</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16121/feed" target="_blank">The Optimization Ladder</a></h3> <p style="margin-bottom: 0;"> Python loses every public benchmark by 21-875x. Cemrehan took the exact problems people use to dunk on Python and climbed every rung of the optimization ladder: from CPython version upgrades to Rust. Real numbers, real code, real effort costs.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16121/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CEMREHAN ÇAVDAR</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16117/feed" target="_blank">Ship Voice Agents That Sound Like Human with Async</a></h3> <a href="https://pycoders.com/link/16117/feed" target="_blank"><img style="float:right; margin-left: 16px; margin-top: 7px; width: 17%;" src="https://cdn.pycoders.com/9ad436d3a7cd66c0654ae64dc7ec79bd" alt></a> <p style="margin-bottom: 0;"> Async Voice API is a human-like low-latency text-to-speech API for real-time apps and agents. 15 languages, streaming-ready, integrations with n8n, LiveKit, Twilio. Top-ranked on the Hugging Face TTS Arena. From$0.50/hour with a 24/7 SLA. <a href="https://pycoders.com/link/16117/feed" target="_blank">Try Now →</a><br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16117/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">ASYNC</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;">sponsor</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16134/feed" target="_blank">Lock the Ghost in <code>uv.lock</code></a></h3> <p style="margin-bottom: 0;"> In the software world, “remove” is not equal to “gone.” Take a short trip through how the Python Package Index handles removals and how you can lock a ghost package in an uv.lock file forever!<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16134/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CERT.AT</a> • Shared by Kamil Mańkowski</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16148/feed" target="_blank">Comparing PDF Table Extraction Tools</a></h3> <p style="margin-bottom: 0;"> This article explores three Python tools for PDF table extraction: Docling, Marker, and LlamaParse. Learn which handles merged cells and multi-level headers best.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16148/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CODECUT.AI</a> • Shared by <a href="https://pycoders.com/link/16135/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">Khuyen Tran</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16128/feed" target="_blank">What Is Code Review For?</a></h3> <p style="margin-bottom: 0;"> 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.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16128/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GLYPH</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16132/feed" target="_blank">Caching an Asyncio Function the Easy Way</a></h3> <p style="margin-bottom: 0;"> Caching an async function is trickier than expected, this article walks through why that is and how to use Asyncio primitives to solve the problem.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16132/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CHANGS.CO.UK</a> • Shared by Jamie Chang</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16145/feed" target="_blank">Working With APIs in Python: Reading Public Data</a></h3> <p style="margin-bottom: 0;"> Learn how to consume REST APIs with Python using the requests library, including authentication, query parameters, and handling responses.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16145/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;">course</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16150/feed" target="_blank">Nobody Gets Promoted for Simplicity</a></h3> <p style="margin-bottom: 0;"> Our industry often rewards complexity and ignores simplicity. In interviews, design reviews, and promotions. Here’s how to fix it.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16150/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TERRIBLE SOFTWARE</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16122/feed" target="_blank">You Store Data and You Do Stuff With Data</a></h3> <p style="margin-bottom: 0;"> This post explores the Object Oriented Programming mindset and why you want to associate your data with the operations upon it.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16122/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">STEPHEN GRUPPETTA</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16130/feed" target="_blank">pandas’ Public API Is Now Type-Complete</a></h3> <p style="margin-bottom: 0;"> Marco tells the story of how his team helped make pandas’ public API type-complete, and how to prevent it from regressing.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16130/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MARCO GORELLI</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16120/feed" target="_blank">Remove Extra Spaces</a></h3> <p style="margin-bottom: 0;"> Learn how to remove extra spaces from a string using regex, string splitting, a fixed point, and <code>itertools.groupby</code>.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16120/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">RODRIGO GIRÃO SERRÃO</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16152/feed" target="_blank">CPython: 36 Years of Source Code</a></h3> <p style="margin-bottom: 0;"> A graphical analysis of the growth of CPython’s codebase from its first commits to the present day<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16152/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHON.ORG</a></span> </p> </div> <h2>Projects & Code</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16147/feed" target="_blank">100 Days, 100 MicroPython IoT Projects</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16147/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/KRITISHMOHAPATRA</a> • Shared by <a href="https://pycoders.com/link/16142/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">Kritish Mohapatra</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16131/feed" target="_blank">OpenDocs: Turn Your README Into Documentation</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16131/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/IOTEVERYTHIN</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16126/feed" target="_blank">Cycast: Internet Radio Streaming Server</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16126/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/LUKEB42</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16151/feed" target="_blank">Crime-Related Datasets for Python</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16151/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYPI.ORG</a> • Shared by <a href="https://pycoders.com/link/16123/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">Renzo Caceres Rossi</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16136/feed" target="_blank">django-tasks-db: An ORM-based Backend for Django Tasks</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16136/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/REALORANGEONE</a></span> </p> </div> <h2>Events</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16146/feed" target="_blank">Weekly Real Python Office Hours Q&A (Virtual)</a></h3> <p style="margin-bottom: 0;"> March 18, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16146/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REALPYTHON.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16137/feed" target="_blank">PyData Bristol Meetup</a></h3> <p style="margin-bottom: 0;"> March 19, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16137/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16139/feed" target="_blank">PyLadies Dublin</a></h3> <p style="margin-bottom: 0;"> March 19, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16139/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYLADIES.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16129/feed" target="_blank">Chattanooga Python User Group</a></h3> <p style="margin-bottom: 0;"> March 20 to March 21, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16129/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16143/feed" target="_blank">Claude Code for Python Developers: Hands-On Agentic Coding Course</a></h3> <p style="margin-bottom: 0;"> March 21 to March 23, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16143/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16138/feed" target="_blank">PyCascades 2026</a></h3> <p style="margin-bottom: 0;"> March 21 to March 23, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16138/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYCASCADES.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16140/feed" target="_blank">PythonAsia 2026</a></h3> <p style="margin-bottom: 0;"> March 21 to March 24, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16140/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHONASIA.ORG</a></span> </p> </div> <hr> <p>Happy Pythoning!<br>This was PyCoder’s Weekly Issue #726.<br><a href="https://pycoders.com/issues/726/feed">View in Browser »</a></p> <img src="https://pycoders.com/issues/726/open/feed" width="1" height="1" alt>
<hr />
<p><em>[ Subscribe to 🐍 PyCoder’s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week <a href="https://pycoders.com/?utm_source=pycoders&utm_medium=feed&utm_campaign=footer">>> Click here to learn more</a> ]</em></p>
Issue #725: Generators, __init__.py, Pointblank, and More (March 10, 2026)
https://pycoders.com/issues/725
2026-03-10T19:30:00+00:00
<p> <span>#725 – MARCH 10, 2026</span><br> <span><a href="https://pycoders.com/issues/725/feed">View in Browser »</a></span> </p> <p><a href="https://pycoders.com"><img alt="The PyCoder’s Weekly Logo" src="https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5" style="max-width: 100%;"></a></p> <hr> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16108/feed" target="_blank">Invent Your Own Comprehensions in Python</a></h3> <p style="margin-bottom: 0;"> 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.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16108/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TREY HUNNER</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16095/feed" target="_blank">What Does Python’s <code>__init__.py</code> Do?</a></h3> <p style="margin-bottom: 0;"> Learn how Python’s <code>__init__.py</code> declares packages, initializes variables, simplifies imports, and controls what gets exported.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16095/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;">course</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16081/feed" target="_blank">Replay: Where Developers Build Reliable AI</a></h3> <a href="https://pycoders.com/link/16081/feed" target="_blank"><img style="float:right; margin-left: 16px; margin-top: 7px; width: 17%;" src="https://cdn.pycoders.com/960c8557da1b223c307d71a618e3e2a8" alt></a> <p style="margin-bottom: 0;"> Replay is a practical conference for developers building real systems. The Python AI & versioning workshop covers durable AI agents, safe workflow evolution, and production-ready deployment techniques. <a href="https://pycoders.com/link/16081/feed" target="_blank">Use code PYCODER75 for 75% off your ticket →</a><br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16081/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TEMPORAL</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;">sponsor</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16092/feed" target="_blank">Validating Data With Pointblank in Python</a></h3> <p style="margin-bottom: 0;"> Bad data results in bad choices. This article introduces you to Pointblank a data verification library.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16092/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MARK PITBLADO</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16088/feed" target="_blank">PEP 825: Wheel Variants: Package Format (Added)</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16088/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHON.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16109/feed" target="_blank">PEP 827: Type Manipulation (Added)</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16109/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHON.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16101/feed" target="_blank">Python 3.12.13, 3.11.15 and 3.10.20 Released</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16101/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHON.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16093/feed" target="_blank">Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16093/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">DJANGO SOFTWARE FOUNDATION</a></span> </p> </div> <h2>Python Jobs</h2> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16082/feed" target="_blank">Python + AI Content Specialist (Anywhere)</a></h3> <p><a href="https://pycoders.com/link/16082/feed" target="_blank">Real Python</a></p> <p><a href="https://www.pythonjobshq.com?utm_source=newsletter&utm_campaign=pycoders725&utm_medium=feed" target="_blank">More Python Jobs >>></a></p> <h2>Articles & Tutorials</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16100/feed" target="_blank">Guido Interviews Thomas Wouters</a></h3> <p style="margin-bottom: 0;"> After last year’s release of the Python documentary, Guido decided to explore those contributors who weren’t mentioned. He’s started a written interview series with a variety of contributors over Python’s first 25 years. This interview is with Thomas Wouters.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16100/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GUIDO VAN ROSSUM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16098/feed" target="_blank">Using <code>tox</code> to Test Across Multiple Django Versions</a></h3> <p style="margin-bottom: 0;"> <code>tox</code> is a popular testing tool that uses isolated virtual environments to put your code through its paces using different versions of Python. This post shows you how to use it to test your Django App across multiple versions of Django.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16098/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">DJANGOTRICKS</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16091/feed" target="_blank">What <code>asyncio</code> Primitives Get Wrong About Shared State</a></h3> <p style="margin-bottom: 0;"> Aaron’s company tried <code>Event</code>, <code>Condition</code>, and <code>Queue</code> for handling concurrent shared state, but each one still breaks under real concurrency. This article is about the observable pattern that finally worked for them.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16091/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">AARON HARPER</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16097/feed" target="_blank">Deprecate Confusing APIs Like <code>os.path.commonprefix()</code></a></h3> <p style="margin-bottom: 0;"> In this opinion piece, Seth argues that <code>os.path.commonprefix()</code> is confusing due to its placement in the <code>os.path</code> module, and this results in security issues. He thinks it should be deprecated, read on to learn why.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16097/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">SETH LARSON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16087/feed" target="_blank">Replacing <code>tox</code> With <code>uv</code></a></h3> <p style="margin-bottom: 0;"> UV is quickly becoming the only tool you need in Python, this article looks at how UV can be used to test different versions of dependencies replacing what is traditionally done with tox.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16087/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CHANGS.CO.UK</a> • Shared by Jamie Chang</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16102/feed" target="_blank">A History of Attempts to Eliminate Programmers</a></h3> <p style="margin-bottom: 0;"> From COBOL in the 1960s to AI in the 2020s, every generation promises to eliminate programmers. Explore the recurring cycles of software simplification hype.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16102/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">IVAN TURKOVIC</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16085/feed" target="_blank">Building Rapidlog: Why I Made a 3x Faster Python Logger</a></h3> <p style="margin-bottom: 0;"> Siddharth built a benchmark-focused Python logging implementation for high-concurrency workloads. This article tells you why and how it was done.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16085/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">DEV.TO</a> • Shared by Siddharth Pogul</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16111/feed" target="_blank">How to Use the OpenRouter API to Access Multiple AI Models</a></h3> <p style="margin-bottom: 0;"> Access models from popular AI providers in Python through OpenRouter’s unified API with smart routing, fallbacks, and cost controls.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16111/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16083/feed" target="_blank">Quiz: Use the OpenRouter API to Access Multiple AI Models</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16083/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16112/feed" target="_blank">Automate Python Data Analysis With YData Profiling</a></h3> <p style="margin-bottom: 0;"> Automate exploratory data analysis by transforming DataFrames into interactive reports with one command from YData Profiling.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16112/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16104/feed" target="_blank">Quiz: Automate Python Data Analysis With YData Profiling</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16104/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> </p> </div> <h2>Projects & Code</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16110/feed" target="_blank">cinderx: High-Performance Python Runtime Extensions</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16110/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/FACEBOOKINCUBATOR</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16099/feed" target="_blank">usdatasets: Installable Collection of Datasets on USA</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16099/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYPI.ORG</a> • Shared by <a href="https://pycoders.com/link/16113/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">Renzo Caceres Rossi</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16103/feed" target="_blank">python_template: Modern Python Project Template</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16103/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/MAMELI</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16105/feed" target="_blank">django-lsp: Django Language Server Protocol Library</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16105/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/ADAMGHILL</a></span> </p> </div> <h2>Events</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16115/feed" target="_blank">Python asyncio Internals</a></h3> <p style="margin-bottom: 0;"> March 10, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16115/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">LUMA.COM</a> • Shared by Adarsh Divakaran</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16084/feed" target="_blank">Weekly Real Python Office Hours Q&A (Virtual)</a></h3> <p style="margin-bottom: 0;"> March 11, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16084/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REALPYTHON.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16107/feed" target="_blank">Python Atlanta</a></h3> <p style="margin-bottom: 0;"> March 12 to March 13, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16107/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16090/feed" target="_blank">PyConf Hyderabad 2026</a></h3> <p style="margin-bottom: 0;"> March 14 to March 16, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16090/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYCONFHYD.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16086/feed" target="_blank">DFW Pythoneers 2nd Saturday Teaching Meeting</a></h3> <p style="margin-bottom: 0;"> March 14, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16086/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16094/feed" target="_blank">DjangoCologne</a></h3> <p style="margin-bottom: 0;"> March 17, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16094/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16116/feed" target="_blank">PyCascades 2026</a></h3> <p style="margin-bottom: 0;"> March 21 to March 23, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16116/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYCASCADES.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16106/feed" target="_blank">PythonAsia 2026</a></h3> <p style="margin-bottom: 0;"> March 21 to March 24, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16106/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHONASIA.ORG</a></span> </p> </div> <hr> <p>Happy Pythoning!<br>This was PyCoder’s Weekly Issue #725.<br><a href="https://pycoders.com/issues/725/feed">View in Browser »</a></p> <img src="https://pycoders.com/issues/725/open/feed" width="1" height="1" alt>
<hr />
<p><em>[ Subscribe to 🐍 PyCoder’s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week <a href="https://pycoders.com/?utm_source=pycoders&utm_medium=feed&utm_campaign=footer">>> Click here to learn more</a> ]</em></p>
Issue #724: Unit Testing Performance, Ordering, FastAPI, and More (March 3, 2026)
https://pycoders.com/issues/724
2026-03-03T19:30:00+00:00
<p> <span>#724 – MARCH 3, 2026</span><br> <span><a href="https://pycoders.com/issues/724/feed">View in Browser »</a></span> </p> <p><a href="https://pycoders.com"><img alt="The PyCoder’s Weekly Logo" src="https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5" style="max-width: 100%;"></a></p> <hr> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16079/feed" target="_blank">Unit Testing: Catching Speed Changes</a></h3> <p style="margin-bottom: 0;"> This second post in a series covers how to use unit testing to ensure the performance of your code. This post talks about catching differences in performance after code has changed.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16079/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">ITAMAR TURNER-TRAURING</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16066/feed" target="_blank">Lexicographical Ordering in Python</a></h3> <p style="margin-bottom: 0;"> Python lexicographically orders tuples, strings, and all other sequences, comparing element-by-element. Learn what this means when you compare values or sort.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16066/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TREY HUNNER</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16051/feed" target="_blank">A Cheaper Heroku? See for Yourself</a></h3> <a href="https://pycoders.com/link/16051/feed" target="_blank"><img style="float:right; margin-left: 16px; margin-top: 7px; width: 17%;" src="https://cdn.pycoders.com/4373666f0f4efd84fc5ff93afe6c4c06" alt></a> <p style="margin-bottom: 0;"> Is PaaS too expensive for your Django app? We built a comparison calculator that puts the <a href="https://pycoders.com/link/16051/feed" target="_blank">fully-managed hosting options head-to-head →</a><br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16051/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">JUDOSCALE</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;">sponsor</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16076/feed" target="_blank">Start Building With FastAPI</a></h3> <p style="margin-bottom: 0;"> Learn how to build APIs with FastAPI in Python, including Pydantic models, HTTP methods, CRUD operations, and interactive documentation.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16076/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REAL PYTHON</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;">course</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16078/feed" target="_blank">PEP 743: Add Py_OMIT_LEGACY_API to the Python C API (Rejected)</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16078/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYTHON.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16053/feed" target="_blank">DjangoCon US 2026 (Chicago) Call for Proposals Open</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16053/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">DJANGOCON.US</a></span> </p> </div> <h2>Python Jobs</h2> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16056/feed" target="_blank">Python + AI Content Specialist (Anywhere)</a></h3> <p><a href="https://pycoders.com/link/16056/feed" target="_blank">Real Python</a></p> <p><a href="https://www.pythonjobshq.com?utm_source=newsletter&utm_campaign=pycoders724&utm_medium=feed" target="_blank">More Python Jobs >>></a></p> <h2>Articles & Tutorials</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16074/feed" target="_blank">Serving Private Files With Django and S3</a></h3> <p style="margin-bottom: 0;"> Django’s <code>FileField</code> and <code>ImageField</code> are good at storing files, but on their own they don’t let you control access. Serving files from S3 just makes this more complicated. Learn how to secure a file behind your login wall.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16074/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">RICHARD TERRY</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16072/feed" target="_blank">FastAPI Error Handling: Types, Methods, and Best Practices</a></h3> <p style="margin-bottom: 0;"> FastAPI provides various error-handling mechanisms to help you build robust applications. With built-in validation models, exceptions, and custom exception handlers, you can build robust and scalable FastAPI applications.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16072/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">HONEYBADGER.IO</a> • Shared by Addison Curtis</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16058/feed" target="_blank">CLI Subcommands With Lazy Imports</a></h3> <p style="margin-bottom: 0;"> Python 3.15 will support lazy imports, meaning modules don’t get pulled in until they are needed. This can be particularly useful with Command Line Interfaces where a subcommand doesn’t need everything to be useful.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16058/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">BRETT CANNON</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16061/feed" target="_blank">How the Self-Driving Tech Stack Works</a></h3> <p style="margin-bottom: 0;"> A technical guide to how self-driving cars actually work. CAN bus protocols, neural networks, sensor fusion, and control system with open source implementations, most of which can be accessed through Python.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16061/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CARDOG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16057/feed" target="_blank">Managing Shared Data Science Code With Git Submodules</a></h3> <p style="margin-bottom: 0;"> Learn how to manage shared code across projects using Git submodules. Prevent version drift, maintain reproducible workflows, and support team collaboration with practical examples.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16057/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">CODECUT.AI</a> • Shared by <a href="https://pycoders.com/link/16077/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">Khuyen Tran</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16071/feed" target="_blank">Datastar: Modern Web Dev, Simplified</a></h3> <p style="margin-bottom: 0;"> Talk Python interviews Delaney Gillilan, Ben Croker, and Chris May about the Datastar framework, a library that combines the concepts of HTMX, Alpine, and more.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16071/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TALK PYTHON</a></span> <span style="color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;">podcast</span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16065/feed" target="_blank">Introducing the Zen of DevOps</a></h3> <p style="margin-bottom: 0;"> Inspired by the Zen of Python, Tibo has written a Zen of DevOps, applying similar ideas from your favorite language to the world of servers and deployment.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16065/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">TIBO BEIJEN</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16054/feed" target="_blank">Stop Using Pickle Already. Seriously, Stop It!</a></h3> <p style="margin-bottom: 0;"> Python’s Pickle is insecure by design, so using it in public facing code is highly problematic. This article explains why and suggests alternatives.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16054/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MICHAL NAZAREWICZ</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16070/feed" target="_blank">Raw+DC: The ORM Pattern of 2026?</a></h3> <p style="margin-bottom: 0;"> After 25+ years championing ORMs, Michael has switched to raw database queries paired with Python dataclasses. This post explains why.<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16070/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MICHAEL KENNEDY</a></span> </p> </div> <h2>Projects & Code</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16080/feed" target="_blank">InvenTree: OSS Inventory Management System</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16080/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/INVENTREE</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16067/feed" target="_blank">marimo-jupyter-extension: Integrate Marimo Into JupyterLab</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16067/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/MARIMO-TEAM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16075/feed" target="_blank">py2many: Transpiler of Python to Many Other Languages</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16075/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/PY2MANY</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16068/feed" target="_blank">ptapplot: Make Pressure Tap Plots</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16068/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/PAULENORMAN</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16055/feed" target="_blank">django-bolt: Rust-Powered API Framework for Django</a></h3> <p style="margin-bottom: 0;"> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16055/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">GITHUB.COM/FARHANALIRAZA</a></span> </p> </div> <h2>Events</h2> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16060/feed" target="_blank">Weekly Real Python Office Hours Q&A (Virtual)</a></h3> <p style="margin-bottom: 0;"> March 4, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16060/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">REALPYTHON.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16052/feed" target="_blank">Python Unplugged on PyTV</a></h3> <p style="margin-bottom: 0;"> March 4 to March 5, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16052/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">JETBRAINS.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16063/feed" target="_blank">Canberra Python Meetup</a></h3> <p style="margin-bottom: 0;"> March 5, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16063/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16069/feed" target="_blank">Sydney Python User Group (SyPy)</a></h3> <p style="margin-bottom: 0;"> March 5, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16069/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">SYPY.ORG</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16062/feed" target="_blank">PyDelhi User Group Meetup</a></h3> <p style="margin-bottom: 0;"> March 7, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16062/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">MEETUP.COM</a></span> </p> </div> <div> <h3 style="margin-bottom: 0;"><a href="https://pycoders.com/link/16073/feed" target="_blank">PyConf Hyderabad 2026</a></h3> <p style="margin-bottom: 0;"> March 14 to March 16, 2026<br> <span style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;"><a href="https://pycoders.com/link/16073/feed" style="color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" target="_blank">PYCONFHYD.ORG</a></span> </p> </div> <hr> <p>Happy Pythoning!<br>This was PyCoder’s Weekly Issue #724.<br><a href="https://pycoders.com/issues/724/feed">View in Browser »</a></p> <img src="https://pycoders.com/issues/724/open/feed" width="1" height="1" alt>
<hr />
<p><em>[ Subscribe to 🐍 PyCoder’s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week <a href="https://pycoders.com/?utm_source=pycoders&utm_medium=feed&utm_campaign=footer">>> Click here to learn more</a> ]</em></p>