<?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/SF6DxIUR" rel="self"/>
  <link href="https://pycoders.com/"/>
  <updated>2026-04-21T19:30:00+00:00</updated>
  <id>https://pycoders.com/</id>
  <author>
    <name>PyCoder’s Weekly</name>
  </author>

  
    <entry>
      <title>Issue #731: Visualize ML, Vector DBs, Type Checker Comparison, and More (April 21, 2026)</title>
      <id>https://pycoders.com/issues/731</id>
      <link href="https://pycoders.com/issues/731"/>
      <updated>2026-04-21T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#731 – APRIL 21, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/731/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/16323/feed&quot; target=&quot;_blank&quot;&gt;Machine Learning Visualized&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This is a series of Jupyter notebooks that help visualize the algorithms that are used in machine learning. Learn more about neural networks, regression, k-means clustering, and more.&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/16323/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;GAVING HUNG&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/16301/feed&quot; target=&quot;_blank&quot;&gt;Vector Databases and Embeddings With ChromaDB&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use ChromaDB, an open-source vector database, to store embeddings and give context to large language models in Python.&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/16301/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/16294/feed&quot; target=&quot;_blank&quot;&gt;Wallaby for Python runs Tests as you Type and Streams Results Next to Code, Plus AI Context&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16294/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/6e033334b6a6ea979e931b8106a21780&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Wallaby brings pytest / unittest results, runtime values, coverage, errors, and time-travel debugging into VS Code, so you can fix Python faster and give Copilot, Cursor, or Claude the execution context they need to stop guessing. &lt;a href=&quot;https://pycoders.com/link/16294/feed&quot; target=&quot;_blank&quot;&gt;Try it free, now in beta →&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/16294/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;WALLABY TEAM&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/16295/feed&quot; target=&quot;_blank&quot;&gt;Python Type Checker Comparison: Speed and Memory Usage&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; A benchmark comparison of speed and memory usage across Python type checkers including Pyrefly, Ty, Pyright, and Mypy.&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/16295/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;AARON POLLACK&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/16314/feed&quot; target=&quot;_blank&quot;&gt;PEP 831: Frame Pointers Everywhere: Enabling System-Level Observability for Python (Draft)&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/16314/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/16311/feed&quot; target=&quot;_blank&quot;&gt;PEP 800: Solid Bases in the Type System (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/16311/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/16304/feed&quot; target=&quot;_blank&quot;&gt;PEP 772: Packaging Council Governance Process (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/16304/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/16324/feed&quot; target=&quot;_blank&quot;&gt;PEP 832: Virtual Environment Discovery (Draft)&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/16324/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/16309/feed&quot; target=&quot;_blank&quot;&gt;PEP 830: Add Timestamps to Exceptions and Tracebacks (Draft)&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/16309/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;Discussions&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16312/feed&quot; target=&quot;_blank&quot;&gt;Reverting the Incremental GC in Python 3.14 and 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/16312/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/16315/feed&quot; target=&quot;_blank&quot;&gt;Reassessing the LLM Landscape &amp;amp; Summoning Ghosts&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; What are the current techniques being employed to improve the performance of LLM-based systems? How is the industry shifting from post-training towards context engineering and multi-agent orchestration? This week on the show, Jodie Burchell, data scientist and Python Advocacy Team Lead at JetBrains, returns to discuss the current AI coding landscape.&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/16315/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/16307/feed&quot; target=&quot;_blank&quot;&gt;Security Best Practices Featuring &lt;code&gt;uv&lt;/code&gt; and &lt;code&gt;pip&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This collection of security practices explains how to best use your package management tools to help avoid malicious packages. Example: implement a cool-down period; most malicious packages are found quickly, by not installing on the day of a release your chances of getting something bad go down.&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/16307/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/LIRANTAL&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/16293/feed&quot; target=&quot;_blank&quot;&gt;Beyond Basic RAG: Build Persistent AI Agents&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Master next-gen AI with Python notebooks for agentic reasoning, memory engineering, and multi-agent orchestration. Scale apps using production-ready patterns for LangChain, LlamaIndex, and high-performance vector search. &lt;a href=&quot;https://pycoders.com/link/16293/feed&quot; target=&quot;_blank&quot;&gt;Explore &amp;amp; Star on GitHub →&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/16293/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;ORACLE&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/16316/feed&quot; target=&quot;_blank&quot;&gt;The Economics of Software Teams&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Subtitled &amp;ldquo;Why Most Engineering Organizations Are Flying Blind&amp;rdquo;, this article is a breakdown of what software development teams actually cost, what they need to generate to be financially viable, and why most organizations have no visibility into either number.&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/16316/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;VIKTOR CESSAN&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/16319/feed&quot; target=&quot;_blank&quot;&gt;OWASP Top 10 (2025 List) for Python Devs&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The OWASP Top 10 is a list of common security vulnerabilities in code, like SQL injection. The list has recently been updated and Talk Python interviews Tanya Janca to discuss all the big changes this time around.&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/16319/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/16317/feed&quot; target=&quot;_blank&quot;&gt;Textual: An Intro to DOM Queries&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The Textual TUI framework uses a tree structure to store all of the widgets on the page. This DOM is query-able, giving you the ability to find widgets on the fly in your 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/16317/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/16321/feed&quot; target=&quot;_blank&quot;&gt;Reflecting on 5 Years as the Developer in Residence&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Łukasz Langa is stepping down as the Python Software Foundation&amp;rsquo;s first CPython Developer in residence. This post talks about his experience there and everything accomplished.&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/16321/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/16306/feed&quot; target=&quot;_blank&quot;&gt;Decoupling Your Business Logic From the Django ORM&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Where should I keep my business logic? This is a perennial topic in Django. This article proposes a continuum of cases, each with increasing complexity.&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/16306/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;CARLTON GIBSON&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/16302/feed&quot; target=&quot;_blank&quot;&gt;How to Add Features to a Python Project With Codex CLI&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 via the terminal. Master AI-powered coding 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/16302/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/16303/feed&quot; target=&quot;_blank&quot;&gt;PyPI Has Completed Its Second Audit&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; PyPI has completed its second external security audit. This post shows all the things found and what they&amp;rsquo;re doing about each of 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/16303/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 FIEDLER&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/16296/feed&quot; target=&quot;_blank&quot;&gt;New Technical Governance: Request for Community Feedback&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The Django Steering Council has proposed new governance mechanism and is looking for feedback from the community.&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/16296/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;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/16320/feed&quot; target=&quot;_blank&quot;&gt;django-modern-rest: REST With Types and Async Support&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/16320/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/WEMAKE-SERVICES&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/16308/feed&quot; target=&quot;_blank&quot;&gt;django-freeze: Convert Django Sites to Static Ones&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/16308/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/FABIOCACCAMO&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/16322/feed&quot; target=&quot;_blank&quot;&gt;spy: SPy the Compilable Python-Like Language&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/16322/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/SPYLANG&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/16299/feed&quot; target=&quot;_blank&quot;&gt;prettytable: Tabular Data in a Visually Appealing ASCII&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/16299/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/PRETTYTABLE&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/16313/feed&quot; target=&quot;_blank&quot;&gt;endcord: Feature Rich Discord TUI Client&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/16313/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/SPARKLOST&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/16305/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; April 22, 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/16305/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/16318/feed&quot; target=&quot;_blank&quot;&gt;The Carpentries&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 22 to April 24, 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/16318/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;INSTATS.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/16297/feed&quot; target=&quot;_blank&quot;&gt;AgentCamp Amsterdam 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 23, 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/16297/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/16300/feed&quot; target=&quot;_blank&quot;&gt;North Bay Python 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 25 to April 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/16300/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;NORTHBAYPYTHON.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/16298/feed&quot; target=&quot;_blank&quot;&gt;Python Sheffield&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 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/16298/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;hr&gt; &lt;p&gt;Happy Pythoning!&lt;br&gt;This was PyCoder&amp;rsquo;s Weekly Issue #731.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/731/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/731/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 #730: Typing Django, Dictionaries, pandas vs Polars, and More (April 14, 2026)</title>
      <id>https://pycoders.com/issues/730</id>
      <link href="https://pycoders.com/issues/730"/>
      <updated>2026-04-14T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#730 – APRIL 14, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/730/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/16274/feed&quot; target=&quot;_blank&quot;&gt;Typing Your Django Project in 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Django was first released 10 years before Python standardized its type hints syntax. Because of this it’s not surprising that getting type hints to work in your Django project is not trivial.&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/16274/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;ANŽE&amp;#x27;S BLOG&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/16258/feed&quot; target=&quot;_blank&quot;&gt;Dictionaries in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how dictionaries in Python work: create and modify key-value pairs using dict literals, the &lt;code&gt;dict()&lt;/code&gt; constructor, built-in methods, and operators.&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/16258/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/16257/feed&quot; target=&quot;_blank&quot;&gt;Secure Your Python MCP Servers With Auth and Access Control&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16257/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/d25ee17873450fd050761aaa2f5549db&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Use the Descope Python MCP SDK to easily secure your MCP server with user auth, consent, OAuth 2.1 with PKCE, MCP client registration, scope-based access at the &lt;a href=&quot;https://pycoders.com/link/16257/feed&quot; target=&quot;_blank&quot;&gt;tool level, and more →&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/16257/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;DESCOPE&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/16285/feed&quot; target=&quot;_blank&quot;&gt;pandas vs Polars: Backed by a 10 Million Row Study&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; A benchmark study of 10M rows comparing Pandas vs. Polars. Explore the architectural shifts, lazy execution, and Rust-based speed of modern data 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/16285/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;QUBRICA.COM&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16292/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;Rakshath&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/16261/feed&quot; target=&quot;_blank&quot;&gt;Python 3.15.0a8, 3.14.4 and 3.13.13 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/16261/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/16278/feed&quot; target=&quot;_blank&quot;&gt;PyCon US 2026 Schedule Is Live&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/16278/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 US&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/16281/feed&quot; target=&quot;_blank&quot;&gt;Django Security Releases: 6.0.4, 5.2.13, and 4.2.30&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/16281/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/16266/feed&quot; target=&quot;_blank&quot;&gt;DjangoCon Europe 2027 Call for Organizers&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/16266/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/16268/feed&quot; target=&quot;_blank&quot;&gt;Switching All My Packages to PyPI Trusted Publishing&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Matthias maintains several Python packages including the django-debug-toolbar. To help protect these projects from malicious release uploads, he&amp;rsquo;s switching to the PyPI Trusted Publishing mechanism. This article explains why and what it protects.&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/16268/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;MATTHIAS KESTENHOLZ&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/16269/feed&quot; target=&quot;_blank&quot;&gt;Cutting Python Web App Memory Over 31%&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Michael reduced Python web app memory by 3.2 GB using async workers, import isolation, the Raw+DC database pattern, and disk caching. The article includes detailed before and after numbers for each technique.&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/16269/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;MICHAEL KENNEDY&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/16256/feed&quot; target=&quot;_blank&quot;&gt;B2B AI Agent Auth Support&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16256/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/ba733fdaad1bc21b72eb28c2bc6d79f6&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Your users are asking if they can connect their AI agent to your product, but you want to make sure they can do it safely and securely. &lt;a href=&quot;https://pycoders.com/link/16256/feed&quot; target=&quot;_blank&quot;&gt;PropelAuth makes that possible →&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/16256/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;PROPELAUTH&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/16283/feed&quot; target=&quot;_blank&quot;&gt;Understanding FSMs by Building One From Scratch&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; After having worked with the transitions library for a while, Bob wondered how Finite State Machines work under the hood. This article shows you how he built one from scratch, modelling GitHub pull requests.&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/16283/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;BOB BELDERBOS&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16289/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;Bob Belderbos&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/16259/feed&quot; target=&quot;_blank&quot;&gt;Python for Java Developers&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The article outlines how Java developers can transition to Python by building on their existing object-oriented knowledge while focusing on the key differences between the two languages.&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/16259/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; • Shared by &lt;a href=&quot;https://pycoders.com/link/16284/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;Andrew Solomon&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/16290/feed&quot; target=&quot;_blank&quot;&gt;Why Aren&amp;rsquo;t We &lt;code&gt;uv&lt;/code&gt; Yet?&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Reading articles on the net you&amp;rsquo;d think that &lt;code&gt;uv&lt;/code&gt; was all the things. It is popular but not as much as you&amp;rsquo;d think. This article looks at the data.&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/16290/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;ALEX YANKOV&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/16280/feed&quot; target=&quot;_blank&quot;&gt;Using Loguru to Simplify Python Logging&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use Loguru for simpler Python logging, from zero-config setup and custom formats to file rotation, retention, and adding context.&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/16280/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/16271/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Using Loguru to Simplify Python Logging&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/16271/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/16275/feed&quot; target=&quot;_blank&quot;&gt;SQLite Features You Didn&amp;rsquo;t Know It Had&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; SQLite has evolved far beyond a simple embedded database. Explore modern features like JSON, FTS5, window functions, strict tables, and more.&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/16275/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;SLICKER.ME&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/16270/feed&quot; target=&quot;_blank&quot;&gt;Using a &lt;code&gt;~/.pdbrc&lt;/code&gt; File to Customize the Python Debugger&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; You can customize the Python debugger (PDB) by creating custom aliases within a .pdbrc file in your home directory. Read on to learn how.&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/16270/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/16291/feed&quot; target=&quot;_blank&quot;&gt;Python: Introducing Profiling-Explorer&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Adam has added another project to his list of profiling tools, this one is for examining data from Python&amp;rsquo;s built-in profilers.&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/16291/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;ADAM JOHNSON&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/16262/feed&quot; target=&quot;_blank&quot;&gt;dj-signals-panel: View Django Signals in the Admin&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/16262/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/YASSI&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/16276/feed&quot; target=&quot;_blank&quot;&gt;form-filler: Generate Bookmarklets That Fill Web Forms&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/16276/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/HAMATTI&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/16267/feed&quot; target=&quot;_blank&quot;&gt;great-docs: Documentation Site Generator for Python Packages&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/16267/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/POSIT-DEV&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16277/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;Richard Iannone&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/16288/feed&quot; target=&quot;_blank&quot;&gt;rsloop: An Event Loop for Asyncio Written in Rust&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/16288/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/RUSTEDBYTES&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16264/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;Yehor Smoliakov&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/16260/feed&quot; target=&quot;_blank&quot;&gt;S3 Commander: Python Based AWS S3 Browser&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/16260/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/ROMANZDK&lt;/a&gt; • Shared by Roman&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/16286/feed&quot; target=&quot;_blank&quot;&gt;DjangoCon Europe 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 15 to April 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/16286/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.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/16272/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; April 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/16272/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/16263/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; April 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/16263/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/16265/feed&quot; target=&quot;_blank&quot;&gt;PyLadies Dublin&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 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/16265/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/16287/feed&quot; target=&quot;_blank&quot;&gt;PyTexas 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 17 to April 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/16287/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;PYTEXAS.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/16282/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; April 17 to April 18, 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/16282/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/16279/feed&quot; target=&quot;_blank&quot;&gt;PyCon Austria 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 19 to April 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/16279/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.AT&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 #730.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/730/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/730/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 #729: NumPy Music, Ollama, Iterables, and More (April 7, 2026)</title>
      <id>https://pycoders.com/issues/729</id>
      <link href="https://pycoders.com/issues/729"/>
      <updated>2026-04-07T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#729 – APRIL 7, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/729/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/16226/feed&quot; target=&quot;_blank&quot;&gt;NumPy as Synth Engine&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Kenneth has &amp;ldquo;recorded&amp;rdquo; a song in a Python script. The catch? No sampling, no recording, no pre-recorded sound. Everything was done through generating wave functions in NumPy. Learn how to become a mathematical musician.&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/16226/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;KENNETH REITZ&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/16238/feed&quot; target=&quot;_blank&quot;&gt;How to Use Ollama to Run Large Language Models Locally&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use Ollama to run large language models locally. Install it, pull models, and start chatting from your terminal without needing API keys.&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/16238/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/16222/feed&quot; target=&quot;_blank&quot;&gt;Ship AI Agents With Accurate, Fresh Web Search Data&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16222/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/829c8a2d3c3a74ff2a229135a72a9343&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Stop building scrapers just to feed your AI app web search data. SerpApi returns structured JSON from Google and 100+ search engines via a simple GET request. No proxy management, no CAPTCHAs. Power product research, price tracking, or agentic search in minutes. &lt;a href=&quot;https://pycoders.com/link/16222/feed&quot; target=&quot;_blank&quot;&gt;Used by Shopify, NVIDIA, and Uber →&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/16222/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;SERPAPI&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/16223/feed&quot; target=&quot;_blank&quot;&gt;Indexable Iterables&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how objects are automatically iterable if you implement integer indexing.&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/16223/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/16232/feed&quot; target=&quot;_blank&quot;&gt;Claude Code for Python Developers (Live Course)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &amp;ldquo;This is one of the best training sessions I&amp;rsquo;ve joined in the last year across multiple platforms.&amp;rdquo; Two-day course where you build a complete Python project with an AI agent in your terminal. Next session April 11–12.&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/16232/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/16236/feed&quot; target=&quot;_blank&quot;&gt;PEP 803: &lt;code&gt;&quot;abi3t&quot;&lt;/code&gt;: Stable ABI for Free-Threaded Builds (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/16236/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/16254/feed&quot; target=&quot;_blank&quot;&gt;PEP 829: Structured Startup Configuration via .site.toml Files (Added)&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/16254/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/16228/feed&quot; target=&quot;_blank&quot;&gt;Fire and Forget at Textual&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; In this follow up to a previous article (&lt;a href=&quot;https://pycoders.com/link/16237/feed&quot; target=&quot;_blank&quot;&gt;Fire and forget (or never) with Python&amp;rsquo;s asyncio&lt;/a&gt;, Michael discusses a similar article by Will McGugan as it relates to Textual. He found the problematic pattern in over 500K GitHub files.&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/16228/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;MICHAEL KENNEDY&amp;#x27;&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/16252/feed&quot; target=&quot;_blank&quot;&gt;pixi: One Package Manager for Python Libraries&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; uv is great for pure Python projects, but it can&amp;rsquo;t install compiled system libraries like GDAL or CUDA. pixi fills that gap by managing both PyPI and conda-forge packages in one tool, with fast resolution, automatic lockfiles, and project-level environments.&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/16252/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/16234/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/16221/feed&quot; target=&quot;_blank&quot;&gt;Dignified Python: Pytest for Agent-Generated Code&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16221/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/1f2ba5720af984e0eb8518d608c755d7&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to define clear pytest patterns for agent-generated tests: separate fast unit vs integration, use fakes, constrain generation, and avoid brittle patterns to &lt;a href=&quot;https://pycoders.com/link/16221/feed&quot; target=&quot;_blank&quot;&gt;keep tests reliable and maintainable →&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/16221/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;DAGSTER LABS&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/16235/feed&quot; target=&quot;_blank&quot;&gt;Learning Rust Made Me a Better Python Developer&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Bob thinks that learning Rust made him a better Python developer. Not because Rust is better, but because it made him think differently about how he has been writing Python. The compiler forced him to confront things he&amp;rsquo;d been ignoring.&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/16235/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;BOB BELDERBOS&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16249/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;Bob Belderbos&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/16227/feed&quot; target=&quot;_blank&quot;&gt;Django &lt;code&gt;bulk_update&lt;/code&gt; Memory Issue&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Recently, Anže had to write a Django migration to update hundreds of thousands of database objects. With some paper-napkin math he calculated it could fit in memory, but that turned out not to be the case. Read on to find out why.&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/16227/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;ANŽE&amp;#x27;S BLOG&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/16225/feed&quot; target=&quot;_blank&quot;&gt;Catching Up With the Python Typing Council&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Talk Python interviews Carl Meyer, Jelle Zijstra, and Rebecca Chen, three members of the Python Typing Council. They talk about how the typing system is governed and just how much is the right amount of type hinting in your 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/16225/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/16245/feed&quot; target=&quot;_blank&quot;&gt;Python 3.3: The Version That Quietly Rewired Everything&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;code&gt;yield from&lt;/code&gt;, &lt;code&gt;venv&lt;/code&gt;, and namespace packages are three features from Python 3.3 that looked minor when they came out in 2012, but turned out to be the scaffolding modern Python is built on.&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/16245/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;TUREK SENTURK&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/16241/feed&quot; target=&quot;_blank&quot;&gt;Incident Report: LiteLLM/Telnyx Supply-Chain Attacks&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This post from the PyPI blog outlines two recent supply chain attacks, how they were different, and how you can protect yourself from future incidents.&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/16241/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;PYPI.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/16233/feed&quot; target=&quot;_blank&quot;&gt;Python Classes: The Power of Object-Oriented Programming&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to define and use Python classes to implement object-oriented programming. Dive into attributes, methods, inheritance, and more.&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/16233/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/16247/feed&quot; target=&quot;_blank&quot;&gt;Timesliced Reservoir Sampling for Profilers&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Reservoir sampling lets you pick a sample from an unlimited stream of events; learn how it works, and a new variant useful for profilers.&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/16247/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;ITAMAR TURNER-TRAURING&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/16248/feed&quot; target=&quot;_blank&quot;&gt;Adding Python to PATH&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to add Python to your PATH environment variable on Windows, macOS, and Linux so you can run Python from the command line.&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/16248/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;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/16253/feed&quot; target=&quot;_blank&quot;&gt;OracleTrace: Visualize Function Flows&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/16253/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/KAYKCAPUTO&lt;/a&gt; • Shared by Kayk Aparecido de Paula Caputo&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/16224/feed&quot; target=&quot;_blank&quot;&gt;pywho: Explain Your Python Environment and Detect Shadows&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/16224/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/AHSANSHERAZ&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16255/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;Ahsan Sheraz &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/16251/feed&quot; target=&quot;_blank&quot;&gt;asyncstdlib: The Missing Toolbox for an Async World&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/16251/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/MAXFISCHER2781&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/16239/feed&quot; target=&quot;_blank&quot;&gt;nitro-pandas: pandas-Compatible Polars Wrapper&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/16239/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/WASSIM17LABDI&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/16244/feed&quot; target=&quot;_blank&quot;&gt;django-mail-auth: Django Auth via Login URLs&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/16244/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/CODINGJOE&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/16229/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; April 8, 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/16229/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/16231/feed&quot; target=&quot;_blank&quot;&gt;PyCon Lithuania 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 8 to April 11, 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/16231/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.LT&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/16246/feed&quot; target=&quot;_blank&quot;&gt;Python Atlanta&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 9 to April 10, 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/16246/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/16242/feed&quot; target=&quot;_blank&quot;&gt;DFW Pythoneers 2nd Saturday Teaching Meeting&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 11, 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/16242/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/16240/feed&quot; target=&quot;_blank&quot;&gt;PyCon DE &amp;amp; PyData 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 14 to April 18, 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/16240/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.DE&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/16230/feed&quot; target=&quot;_blank&quot;&gt;DjangoCon Europe 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 15 to April 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/16230/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.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/16250/feed&quot; target=&quot;_blank&quot;&gt;PyTexas 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; April 17 to April 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/16250/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;PYTEXAS.ORG&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 #729.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/729/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/729/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>
