<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>PyCoder’s Weekly</title>
  <link href="https://pycoders.com/feed" rel="self"/>
  <link href="https://pycoders.com/"/>
  <updated>2026-05-26T19:30:00+00:00</updated>
  <id>https://pycoders.com/</id>
  <author>
    <name>PyCoder’s Weekly</name>
  </author>

  
    <entry>
      <title>Issue #736: Polars Sort-Merge Joins, Zen, Resolving Lazy Imports, and More (2026-05-26)</title>
      <id>https://pycoders.com/issues/736</id>
      <link href="https://pycoders.com/issues/736"/>
      <updated>2026-05-26T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#736 – MAY 26, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/736/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://pycoders.com&quot;&gt;&lt;img alt=&quot;The PyCoder&amp;rsquo;s Weekly Logo&quot; src=&quot;https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;hr&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16516/feed&quot; target=&quot;_blank&quot;&gt;Streaming Sort-Merge Joins in Polars&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &amp;ldquo;Joins are often one of the most expensive parts of a query. Once tables get large, the join can heavily impact both runtime and memory usage&amp;hellip; If the join keys are already sorted, Polars can now take a cheaper path: a streaming sort-merge join.&amp;rdquo;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16516/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;THIJS NIEUWDORP&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16496/feed&quot; target=&quot;_blank&quot;&gt;Tapping Into the Zen of Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Explore the Zen of Python and its 19 guiding principles for writing readable, practical code. Learn its history, jokes, and meaning.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16496/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;&quot;&gt;course&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16522/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Tapping Into the Zen of Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16522/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16526/feed&quot; target=&quot;_blank&quot;&gt;FREE Python Error Tracking From Honeybadger – all Signal, no Noise&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16526/feed&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;float:right; margin-left: 16px; margin-top: 7px; width: 17%;&quot; src=&quot;https://cdn.pycoders.com/1c6c84f607726b24503f1292a5dd693f&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Production bugs don’t arrive one at a time. Honeybadger groups similar errors into a single issue and lets you pause or ignore alerts in a single click. More signal. Less noise. ⚡ &lt;a href=&quot;https://pycoders.com/link/16526/feed&quot; target=&quot;_blank&quot;&gt;Sign Up for Your FREE Developer Account →&lt;/a&gt;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16526/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;HONEYBADGER&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;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;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16523/feed&quot; target=&quot;_blank&quot;&gt;Resolve a Lazy Import Manually&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to work around the Python 3.15 machinery to resolve an explicit lazy import manually.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16523/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;RODRIGO GIRÃO SERRÃO&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16502/feed&quot; target=&quot;_blank&quot;&gt;Django 6.1 Alpha 1 Released&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Posted by Jacob Walls on May 20, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16502/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;DJANGO SOFTWARE FOUNDATION&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16498/feed&quot; target=&quot;_blank&quot;&gt;Nuitka Python Compiler Release 4.1&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16498/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;NUITKA.NET&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16503/feed&quot; target=&quot;_blank&quot;&gt;Call for Onsite Volunteers: Make EuroPython 2026 Happen&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16503/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;EUROPYTHON.EU&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16515/feed&quot; target=&quot;_blank&quot;&gt;PEP 831: Frame Pointers Everywhere: Enabling System-Level Observability for Python (Final)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This PEP proposes two things:&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16515/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16519/feed&quot; target=&quot;_blank&quot;&gt;PEP 808: Including Static Values in Dynamic Metadata (Accepted)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16519/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Articles &amp;amp; Tutorials&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16517/feed&quot; target=&quot;_blank&quot;&gt;PyCon US 2026 Packaging Summit Recap&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Per-talk notes from the PyCon US 2026 Packaging Summit, including: Emma Smith on Wheel 2.0 and Zstandard compression, Mike Fiedler on PyPI abuse vectors, Mahe Iram Khan on ecosystems, lightning talks on PEP 772, mobile wheels, AI accelerator variants, and the roundtable discussions.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16517/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;BERNÁT GÁBOR&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16495/feed&quot; target=&quot;_blank&quot;&gt;Slim Down Python Docker Containers&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how SlimToolkit can reduce a Python Docker image by analyzing what your app actually uses at runtime. This tutorial walks through slimming a Chainlit LLM chatbot image, shows where container bloat comes from, and explains how to avoid breaking lazily loaded Python frameworks.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16495/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;CODECUT.AI&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16494/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;Khuyen Tran&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16525/feed&quot; target=&quot;_blank&quot;&gt;Object-Oriented Python: 5-Day Live Workshop, June 8 to 12&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; A new live cohort for Python developers comfortable with the basics who want to design classes that hold up under change. Across five 2-hour sessions, OOP features appear at the moment a growing project actually needs them. You leave with a working app and the judgment to know when a class &lt;a href=&quot;https://pycoders.com/link/16525/feed&quot; target=&quot;_blank&quot;&gt;earns its keep →&lt;/a&gt;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16525/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;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;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16505/feed&quot; target=&quot;_blank&quot;&gt;What Types of Exceptions Should You Catch?&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The trickiest programming bugs are often caused by catching exceptions that you didn&amp;rsquo;t mean to catch or handling exceptions in ways that obfuscate the actual error that&amp;rsquo;s occurring. Which exceptions should you catch and which should you leave unhandled?&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16505/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;TREY HUNNER&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16506/feed&quot; target=&quot;_blank&quot;&gt;Reverse Geocoding With Overture Maps&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Mark is working on a reverse geocoder that can fetch the 2-letter ISO country code for any point on a map in a country&amp;rsquo;s boundaries. This post talks about the prototype and his progress on the project.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16506/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MARK LITWINTSCHIK&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16507/feed&quot; target=&quot;_blank&quot;&gt;Stop Writing Edge Case Tests. Use Hypothesis Instead&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; An introduction to property-based testing in Python with Hypothesis: the mental shift from &amp;lsquo;what input should I test?&amp;rsquo; to &amp;lsquo;what invariant should always hold?&amp;rsquo;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16507/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PEYTON GREEN&lt;/a&gt; • Shared by Anonymous&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16518/feed&quot; target=&quot;_blank&quot;&gt;Opaque Types in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use the &lt;code&gt;NewType&lt;/code&gt; to mask a private class while still providing a public construction mechanism for the users of your library.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16518/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GLYPH LEFKOWITZ&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16499/feed&quot; target=&quot;_blank&quot;&gt;How to Use the Claude API in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use the Claude API in Python to send prompts, control responses with system instructions, and get structured JSON output.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16499/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16520/feed&quot; target=&quot;_blank&quot;&gt;Quiz: How to Use the Claude API in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16520/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16509/feed&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;uv&lt;/code&gt; Is Fantastic, but Its Package UX Is a Mess&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This opinion piece talks about how uv&amp;rsquo;s CLI feels surprisingly clunky compared to its peers like pnpm or Poetry.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16509/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;KEVIN RENSKERS&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16524/feed&quot; target=&quot;_blank&quot;&gt;Python Built-in Functions: A Complete Guide&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Use Python&amp;rsquo;s built-in functions for math, data types, iterables, and I/O to write shorter, more Pythonic code.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16524/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Projects &amp;amp; Code&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16501/feed&quot; target=&quot;_blank&quot;&gt;flake8-lazy: Detect Lazy-Importable Modules in Python 3.15+&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16501/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/HENRYIII&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16511/feed&quot; target=&quot;_blank&quot;&gt;django-arch-check: Static Checker for Common Django Issues&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16511/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/RJ-GAMER&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16504/feed&quot; target=&quot;_blank&quot;&gt;tdb: A Python Debugger Based on Textual&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16504/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/ALDANIAL&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16508/feed&quot; target=&quot;_blank&quot;&gt;postman2pytest: Convert Postman Collection Into pytest Suite&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16508/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/GOLIKOVICHEV&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16510/feed&quot; target=&quot;_blank&quot;&gt;agent-memory-guard: OWASP ASI06 AI Agent Memory Guard&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16510/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/OWASP&lt;/a&gt; • Shared by Vaishnavi Gudur&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Events&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16497/feed&quot; target=&quot;_blank&quot;&gt;PyCon Italia 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 27 to May 31, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16497/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYCON.IT&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16512/feed&quot; target=&quot;_blank&quot;&gt;Weekly Real Python Office Hours Q&amp;amp;A (Virtual)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 27, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16512/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REALPYTHON.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16514/feed&quot; target=&quot;_blank&quot;&gt;PyLadies Amsterdam: Scalable Data Harvesting for AI&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 28, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16514/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16513/feed&quot; target=&quot;_blank&quot;&gt;Python Leiden User Group&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 28, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16513/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHONLEIDEN.NL&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16521/feed&quot; target=&quot;_blank&quot;&gt;PyDelhi User Group Meetup&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 30, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16521/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16500/feed&quot; target=&quot;_blank&quot;&gt;PyLadies El Alto: Flash Talks&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 30 to May 31, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16500/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;hr&gt; &lt;p&gt;Happy Pythoning!&lt;br&gt;This was PyCoder&amp;rsquo;s Weekly Issue #736.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/736/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/736/open/feed&quot; width=&quot;1&quot; height=&quot;1&quot; alt&gt; 
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Subscribe to 🐍 PyCoder&amp;rsquo;s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week &lt;a href=&quot;https://pycoders.com/?utm_source=pycoders&amp;amp;utm_medium=feed&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Issue #735: Agentic Architecture, Python is Weird, 3.15, and More (2026-05-19)</title>
      <id>https://pycoders.com/issues/735</id>
      <link href="https://pycoders.com/issues/735"/>
      <updated>2026-05-19T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#735 – MAY 19, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/735/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://pycoders.com&quot;&gt;&lt;img alt=&quot;The PyCoder&amp;rsquo;s Weekly Logo&quot; src=&quot;https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;hr&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16476/feed&quot; target=&quot;_blank&quot;&gt;Agentic Architecture: Why Files Aren&amp;rsquo;t Always Enough&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; What are the limitations of using a file-based agent workflow? Why do massive context windows tend to collapse? This week on the show, Mikiko Bazeley from MongoDB joins us to discuss agentic architecture and context engineering.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16476/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;&quot;&gt;podcast&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16485/feed&quot; target=&quot;_blank&quot;&gt;Python Is Weird&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Here is a collection of things that surprised Maciej about Python. Some you might know and some that might surprise you too.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16485/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MACIEJ KOWALSKI&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16493/feed&quot; target=&quot;_blank&quot;&gt;Harness Orchestration: The Next Primitive for AI Agents&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16493/feed&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;float:right; margin-left: 16px; margin-top: 7px; width: 17%;&quot; src=&quot;https://cdn.pycoders.com/408649fcefb848c34806dcf2d3621f4c&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; A Python SDK that lets you compose Claude Code, Codex, and Gemini as one autonomous harness - agents become FastAPI-style routes you can wire, version, and deploy. Open source. Fork SWE-AF (a 100+ agent software factory) or our cloud-security harness as starter kits. &lt;a href=&quot;https://pycoders.com/link/16493/feed&quot; target=&quot;_blank&quot;&gt;Clone a Recipe →&lt;/a&gt;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16493/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;AGENTFIELD&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;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;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16474/feed&quot; target=&quot;_blank&quot;&gt;Python 3.15: Features That Didn&amp;rsquo;t Make the Headlines&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Every release there are changes that don&amp;rsquo;t make the headlines, here are a few in the upcoming Python 3.15 release&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16474/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;CHANGS.CO.UK&lt;/a&gt; • Shared by Jamie Chang&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16490/feed&quot; target=&quot;_blank&quot;&gt;Python 3.15.0 Beta 1 Released&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16490/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16466/feed&quot; target=&quot;_blank&quot;&gt;Python 3.14.5 Released&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16466/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16472/feed&quot; target=&quot;_blank&quot;&gt;Announcing PSF Community Service Award Recipients&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16472/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON SOFTWARE FOUNDATION&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16471/feed&quot; target=&quot;_blank&quot;&gt;PEP 830: Add Timestamps to Exceptions and Tracebacks (Deferred to 3.16)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16471/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16468/feed&quot; target=&quot;_blank&quot;&gt;PEP 788: Protecting the C API From Interpreter Finalization (Final)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16468/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16491/feed&quot; target=&quot;_blank&quot;&gt;PEP 813: The Pretty Print Protocol (Deferred to 3.16)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16491/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16475/feed&quot; target=&quot;_blank&quot;&gt;2026 Django Developers Survey&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16475/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;DJANGO SOFTWARE FOUNDATION&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16484/feed&quot; target=&quot;_blank&quot;&gt;DjangoCon US 2026 Tickets Available&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16484/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;DJANGOCON.US&lt;/a&gt; • Shared by Aayush Gauba&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Articles &amp;amp; Tutorials&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16461/feed&quot; target=&quot;_blank&quot;&gt;PyCon US 2026 Typing Summit Recap&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Per-talk notes from the PyCon US 2026 Typing Summit. Includes info on: Pyrefly and AI agents, ty constraint sets, Lean formalization, tensor shape types, intersection types, PEP 827, Guido on the direction of typing, and the Typing Council Q&amp;amp;A.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16461/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;BERNÁT GÁBOR&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16470/feed&quot; target=&quot;_blank&quot;&gt;Event Sourcing Design Pattern&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Talk Python interviews Chris May and they discuss the event sourcing design pattern: a mechanism for databases to work like git with immutable, replayable events. Learn what libraries help you do this in Python and when to use the pattern.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16470/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;TALK PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;&quot;&gt;podcast&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16486/feed&quot; target=&quot;_blank&quot;&gt;Strategic Planning at the PSF&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The Python Software Foundation Board has been developing a strategic plan to guide the foundation&amp;rsquo;s direction over the next five years. This post describes the process and future goals.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16486/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON SOFTWARE FOUNDATION&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16492/feed&quot; target=&quot;_blank&quot;&gt;How Python&amp;rsquo;s GIL Actually Works (And When It Bites You)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This post explains how Python&amp;rsquo;s GIL limits the amount of concurrency you can get through threading alone, why it is there, and how it is changing as Python evolves.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16492/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;ATHREYA AKA MANESHWAR&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16480/feed&quot; target=&quot;_blank&quot;&gt;Concurrency: A Deep Dive Into Multithreading With Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &amp;ldquo;This article explains concurrency in Python including topics like multithreading, multiprocessing, race conditions, and synchronization mechanisms such as locks.&amp;rdquo;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16480/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;NIKOS VAGGALIS&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16489/feed&quot; target=&quot;_blank&quot;&gt;Shipping Django as a Desktop App&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This is a summary of Jochen Wersdörfer&amp;rsquo;s talk at DjangoCon EU where he outlined how his team used Electron to turn a Django project into an installable app.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16489/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REINOUT VAN REES&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16465/feed&quot; target=&quot;_blank&quot;&gt;Pydantic Forks &lt;code&gt;httpx&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The Pydantic team has forked httpx and named it httpx2. The folks who created httpxyz have decided to let the larger organization take the reins.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16465/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MICHIEL BEIJEN&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16483/feed&quot; target=&quot;_blank&quot;&gt;How to Flatten a List of Lists in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to flatten a list of lists in Python using for loops, list comprehensions, itertools, functools, NumPy, and recursion.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16483/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16479/feed&quot; target=&quot;_blank&quot;&gt;Quiz: How to Flatten a List of Lists in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16479/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16473/feed&quot; target=&quot;_blank&quot;&gt;Building Type-Safe LLM Agents With Pydantic AI&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Build type-safe LLM agents in Python with Pydantic AI using structured outputs, function calling, and dependency injection.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16473/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;&quot;&gt;course&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16469/feed&quot; target=&quot;_blank&quot;&gt;Pyrefly v1.0 Is Here!&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Pyrefly has reached stable version 1.0 status, read about the new features and how to get started.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16469/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYREFLY.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Projects &amp;amp; Code&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16460/feed&quot; target=&quot;_blank&quot;&gt;kubex: Python Asynchronous Client for Kubernetes&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16460/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/CODEMAGEDDON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16488/feed&quot; target=&quot;_blank&quot;&gt;gh-profiler: Examine GitHub User&amp;rsquo;s Profile&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16488/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/EHMATTHES&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16478/feed&quot; target=&quot;_blank&quot;&gt;presidio: Detect, Redact, &amp;amp; Anonymize Sensitive Data (PII)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16478/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/MICROSOFT&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16463/feed&quot; target=&quot;_blank&quot;&gt;fotomagoufis: CLI Photo Correction Tool&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16463/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/DIMATOSJ&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16487/feed&quot; target=&quot;_blank&quot;&gt;DiffSinger: Advanced Singing Voice Synthesis&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16487/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/OPENVPI&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Events&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16481/feed&quot; target=&quot;_blank&quot;&gt;Weekly Real Python Office Hours Q&amp;amp;A (Virtual)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 20, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16481/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REALPYTHON.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16462/feed&quot; target=&quot;_blank&quot;&gt;PyData Bristol Meetup&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 21, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16462/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16467/feed&quot; target=&quot;_blank&quot;&gt;PyLadies Dublin&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 21, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16467/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYLADIES.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16477/feed&quot; target=&quot;_blank&quot;&gt;Python Sheffield&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 26, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16477/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GOOGLE.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16464/feed&quot; target=&quot;_blank&quot;&gt;PyCon Italia 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 27 to May 31, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16464/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYCON.IT&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16482/feed&quot; target=&quot;_blank&quot;&gt;Python Southwest Florida (PySWFL)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 27, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16482/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;hr&gt; &lt;p&gt;Happy Pythoning!&lt;br&gt;This was PyCoder&amp;rsquo;s Weekly Issue #735.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/735/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/735/open/feed&quot; width=&quot;1&quot; height=&quot;1&quot; alt&gt; 
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Subscribe to 🐍 PyCoder&amp;rsquo;s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week &lt;a href=&quot;https://pycoders.com/?utm_source=pycoders&amp;amp;utm_medium=feed&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Issue #734: Dunder-Gets, Django Tasks in Prod, Codex CLI, and More (2026-05-12)</title>
      <id>https://pycoders.com/issues/734</id>
      <link href="https://pycoders.com/issues/734"/>
      <updated>2026-05-12T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#734 – MAY 12, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/734/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://pycoders.com&quot;&gt;&lt;img alt=&quot;The PyCoder&amp;rsquo;s Weekly Logo&quot; src=&quot;https://cdn.pycoders.com/37bdf31dc645f968ffb90196e5d38ff5&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;hr&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16439/feed&quot; target=&quot;_blank&quot;&gt;Do You Get It Now?&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn about Python&amp;rsquo;s &lt;code&gt;.__getitem__()&lt;/code&gt;, &lt;code&gt;.__getattr__()&lt;/code&gt;, &lt;code&gt;.__getattribute__()&lt;/code&gt;, and &lt;code&gt;.__get__()&lt;/code&gt;: how they&amp;rsquo;re different and where to use them.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16439/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;STEPHEN GRUPPETTA&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16445/feed&quot; target=&quot;_blank&quot;&gt;Using Django Tasks in Production&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Django added a generic API for dealing with concurrent tasks in version 6. This post talks about how it has been used in production.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16445/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;TIM SCHILLING&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16430/feed&quot; target=&quot;_blank&quot;&gt;Use Codex CLI to Enhance Your Python Projects&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use Codex CLI to add features to Python projects directly from your terminal, without needing a browser or IDE plugins.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16430/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;&quot;&gt;course&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16459/feed&quot; target=&quot;_blank&quot;&gt;Depot CI: Built for the Agent era&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16459/feed&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;float:right; margin-left: 16px; margin-top: 7px; width: 17%;&quot; src=&quot;https://cdn.pycoders.com/633447d4ba4a284f4456b6f98ec4d4fa&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Depot CI: A new CI engine. Fast by design. Your GitHub Actions workflows, running on a fundamentally faster engine — instant job startup, parallel steps, full debuggability, per-second billing. &lt;a href=&quot;https://pycoders.com/link/16459/feed&quot; target=&quot;_blank&quot;&gt;One command to migrate →&lt;/a&gt;&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16459/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;DEPOT&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;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;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16453/feed&quot; target=&quot;_blank&quot;&gt;PEP 828: Supporting &amp;lsquo;Yield From&amp;rsquo; in Asynchronous Generators (Deferred to 3.16)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16453/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16456/feed&quot; target=&quot;_blank&quot;&gt;PEP 797: Shared Object Proxies (Deferred to 3.16)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16456/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16438/feed&quot; target=&quot;_blank&quot;&gt;Django Security Releases: 6.0.5 and 5.2.14&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16438/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;DJANGO SOFTWARE FOUNDATION&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Articles &amp;amp; Tutorials&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16431/feed&quot; target=&quot;_blank&quot;&gt;Handling Schema Issues in Polars&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; You&amp;rsquo;ve got this great data pipeline going until one day it stops working. A schema error causes by a column upstream has stopped you in your tracks. This post talks about the four different causes of schema errors and what to do about them.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16431/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;THIJS NIEUWDORP&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16436/feed&quot; target=&quot;_blank&quot;&gt;Textual: An Intro to DOM Queries (Part II)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Textual is a TUI framework library for building terminal applications. It uses a DOM to represent the widgets in the application, and that DOM is queryable. This is part 2 in a series on how to find things in your Textual DOM.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16436/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MIKE DRISCOLL&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16443/feed&quot; target=&quot;_blank&quot;&gt;Everything You Always Wanted to Know About PyCon Sprints!&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; PyCon US includes coding sprints to work on CPython itself, or projects in the ecosystem like Django, Flask, and BeeWare. This post tells you all about sprints and how you can join in on the fun.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16443/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;DEB NICHOLSON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16440/feed&quot; target=&quot;_blank&quot;&gt;Why TUIs Are Back&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Terminal User Interfaces are seeing a resurgence in the tools space. This opinion piece briefly talks about the history of interfaces and why we are where we are now.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16440/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;ALCIDES FONSECA&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16455/feed&quot; target=&quot;_blank&quot;&gt;Parallel Python at Anyscale With Ray&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Talk Python interviews Richard Liaw and Edward Oakes. They talk about Ray, an open source Python framework a distributed execution engine for AI workloads.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16455/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;TALK PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;&quot;&gt;podcast&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16432/feed&quot; target=&quot;_blank&quot;&gt;Python 3.14.5 Release Candidate&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Normally nobody fusses over a release candidate of a point release, but 3.14.5 includes a major change: rolling back of the incremental garbage collector.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16432/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;HUGO VAN KEMENADE&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16449/feed&quot; target=&quot;_blank&quot;&gt;Wagtail 7.4: Custom Page Explorer, Preview Checks &amp;amp; More&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Between autosave improvements, new ways to sort your pages, and a content checker upgrade, you&amp;rsquo;ll have a lot of reasons to move to Wagtail 7.4&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16449/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEAGEN VOSS&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16450/feed&quot; target=&quot;_blank&quot;&gt;The Simplest MCP Example Possible in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This guide introduces you to connecting your code to a local LLM model. It covers Ollama and FastMCP and what you can do with these tools.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16450/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;AL SWEIGART&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16458/feed&quot; target=&quot;_blank&quot;&gt;ChatterBot: Build a Chatbot With Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Build a Python chatbot with the ChatterBot library. Clean real conversation data, train on custom datasets, and add local AI with Ollama.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16458/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16444/feed&quot; target=&quot;_blank&quot;&gt;Hardening Firefox With Claude Mythos Preview&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; New details about what Mozilla found and how agentic harnesses helped them reproduce real bugs and dismiss false positives.&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16444/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MOZILLA&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Projects &amp;amp; Code&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16457/feed&quot; target=&quot;_blank&quot;&gt;pytest-fly: pytest Observer&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16457/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/JAMESABEL&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16434/feed&quot; target=&quot;_blank&quot;&gt;Pymetrica: A Codebase Analysis Tool&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16434/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/JUANJFARINA&lt;/a&gt; • Shared by Juan José Farina&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16446/feed&quot; target=&quot;_blank&quot;&gt;PyWry: Cross-Platform Rendering Engine and UI Toolkit&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16446/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/DEELEERAMONE&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16454/feed&quot; target=&quot;_blank&quot;&gt;secure: HTTP Security Headers for FastAPI, Flask, Django&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16454/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/TYPEERROR&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16433/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;Caleb Kinney&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16451/feed&quot; target=&quot;_blank&quot;&gt;Kirokyu: Modular Task Management System&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16451/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;GITHUB.COM/AMRYOUNIS&lt;/a&gt; • Shared by Amr Younis&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Events&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16448/feed&quot; target=&quot;_blank&quot;&gt;Weekly Real Python Office Hours Q&amp;amp;A (Virtual)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 13, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16448/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REALPYTHON.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16435/feed&quot; target=&quot;_blank&quot;&gt;PyCon US 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 13 to May 20, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16435/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYCON.ORG&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16441/feed&quot; target=&quot;_blank&quot;&gt;Python Atlanta&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 14 to May 15, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16441/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16437/feed&quot; target=&quot;_blank&quot;&gt;Chattanooga Python User Group&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 15 to May 16, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16437/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16442/feed&quot; target=&quot;_blank&quot;&gt;PyDelhi User Group Meetup&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; May 16, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16442/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;MEETUP.COM&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16447/feed&quot; target=&quot;_blank&quot;&gt;PyData London&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; June 5 to June 7, 2026&lt;br&gt; &lt;span style=&quot;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;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16447/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYDATA.ORG&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16452/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;Tomara Youngblood&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;hr&gt; &lt;p&gt;Happy Pythoning!&lt;br&gt;This was PyCoder&amp;rsquo;s Weekly Issue #734.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/734/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/734/open/feed&quot; width=&quot;1&quot; height=&quot;1&quot; alt&gt; 
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Subscribe to 🐍 PyCoder&amp;rsquo;s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week &lt;a href=&quot;https://pycoders.com/?utm_source=pycoders&amp;amp;utm_medium=feed&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  

</feed>
