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

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

  
    <entry>
      <title>Issue #743: Stacks &amp; Queues, Django F-Expressions, MCP Clients, and More (2026-07-14)</title>
      <id>https://pycoders.com/issues/743</id>
      <link href="https://pycoders.com/issues/743"/>
      <updated>2026-07-14T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#743 – JULY 14, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/743/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/16758/feed&quot; target=&quot;_blank&quot;&gt;Stacks and Queues in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This post shows you how to use a Python list for stack operations (last-in, first-out) and a &lt;code&gt;deque&lt;/code&gt; from the collections module for queue operations (first-in, first-out).&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/16758/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/16750/feed&quot; target=&quot;_blank&quot;&gt;Nifty Django Feature: F Expressions&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Django&amp;rsquo;s F-Expression provides a way of querying fields from the ORM. They&amp;rsquo;re particularly handy to traverse relationships in more complex queries.&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/16750/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;TIM SCHILLING&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16768/feed&quot; target=&quot;_blank&quot;&gt;Secure Your Code, Wherever, or However You Write It&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16768/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/0fafca54f5a6be369b399de6d2919c7b&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; AI coding agents have blind spots, they reproduce patterns but struggle with security context. AURI by Endor Labs plugs into your editor via MCP, catching flaws, signaling exposed secrets, and spotting malicious dependencies. Ship secure by default. &lt;a href=&quot;https://pycoders.com/link/16768/feed&quot; target=&quot;_blank&quot;&gt;Try AURI Free →&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/16768/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;ENDOR 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/16744/feed&quot; target=&quot;_blank&quot;&gt;Testing MCP Servers With a Python MCP Client&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to build a Python MCP client that tests MCP servers from your terminal. List their tools, prompts, and resources, then call each one.&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/16744/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/16741/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Testing MCP Servers With a Python MCP 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/16741/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/16751/feed&quot; target=&quot;_blank&quot;&gt;PEP 797: Shared Object Proxies (Rejected)&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/16751/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/16747/feed&quot; target=&quot;_blank&quot;&gt;Django Security Releases Issued: 6.0.7 and 5.2.16&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16747/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/16759/feed&quot; target=&quot;_blank&quot;&gt;Constructing and Judging Modern Agentic Workflows&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; How can you improve your LLM agent systems through specification enrichment? What are the advantages of having an LLM act as a judge within an agent system? This week on the show, Senior IEEE Member and Quality Engineer Suneet Malhotra joins us to discuss building and evaluating agentic architecture.&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/16759/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/16765/feed&quot; target=&quot;_blank&quot;&gt;What &lt;code&gt;for x in y&lt;/code&gt; Hides From You&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; An explanation of how Python’s &lt;code&gt;for x in y&lt;/code&gt; syntax is a thin wrapper around the iterator protocol: &lt;code&gt;iter(...)&lt;/code&gt;, &lt;code&gt;next(...)&lt;/code&gt;, and &lt;code&gt;StopIteration&lt;/code&gt;. Using examples from Memphis, a Python interpreter written in Rust, it shows how this design makes lists, ranges, and generators feel unified rather than magical.&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/16765/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;TYLER GREEN&lt;/a&gt; • Shared by Tyler Green&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/16767/feed&quot; target=&quot;_blank&quot;&gt;Stop stitching 5 different systems together for your agents.&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16767/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/5be1f986dec8f247515673d049711de2&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Dev teams spend weeks fitting together vector DBs, graph DBs, relational stores, filesystem primitives and optimizing cache. How about everything via a single API? P90 sub-200ms recall - the fastest graph database to unlock true agent memory, knowledge graphs and user-personalization. &lt;a href=&quot;https://pycoders.com/link/16767/feed&quot; target=&quot;_blank&quot;&gt;Click Here to Try HydraDB Out for Free&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/16767/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;HYDRADB&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/16748/feed&quot; target=&quot;_blank&quot;&gt;Building a Fast HTML Toolkit in C for Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;code&gt;turbohtml&lt;/code&gt; began as a patch to speed up &lt;code&gt;html.escape&lt;/code&gt; and &lt;code&gt;html.unescape&lt;/code&gt; in CPython. When the core team declined to maintain SIMD in the standard library, it became a third party library instead. This post is its story.&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/16748/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;BERNÁT GÁBOR&lt;/a&gt; • Shared by Bernát Gábor&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/16757/feed&quot; target=&quot;_blank&quot;&gt;How to Publish to PyPI Using GitHub Actions Securely&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; If you&amp;rsquo;re using GitHub Actions to publish your Python libraries, this article is for you. Learn what are the best practices to ensure the process is secure and what tools you can use to validate it.&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/16757/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;BRETT CANNON&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/16738/feed&quot; target=&quot;_blank&quot;&gt;Python 3.15&amp;rsquo;s Ultra-Low Overhead Interpreter Profiling Mode&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Ken is one of the key contributors to the experimental JIT. This post talks about how Python 3.15’s interpreter profiling mode is helping them figure out what is working with the JIT and what isn&amp;rsquo;t.&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/16738/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;KEN JIN&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/16766/feed&quot; target=&quot;_blank&quot;&gt;PEP 814: Add Frozendict Built-in Type&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Victor has been involved in multiple attempts to add a frozen dict type to Python. His latest PEP has been accepted and frozen dictionaries will be added to Python 3.15. This post is his story.&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/16766/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;VICTOR STINNER&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/16753/feed&quot; target=&quot;_blank&quot;&gt;How to Clean Messy CSV Files With Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This introductory article shows you how to do data cleaning on CSV files using pandas, including dealing with duplicate rows, missing values, mixed date formats, 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/16753/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;ABID ALI AWAN,&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/16739/feed&quot; target=&quot;_blank&quot;&gt;PSF News: Security, Elections, and PyCon US 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This post is the monthly news round up of all things PSF. It covers a re-cap of PyCon US, several security fixes, updates from the PSF board, 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/16739/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/16743/feed&quot; target=&quot;_blank&quot;&gt;How to Use GitHub&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to use GitHub step by step to create a remote repository, push your local Python project, and collaborate with others using GitHub Issues.&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/16743/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/16742/feed&quot; target=&quot;_blank&quot;&gt;Quiz: How to Use GitHub&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/16742/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Projects &amp;amp; Code&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16754/feed&quot; target=&quot;_blank&quot;&gt;pyStrich: 1D and 2D Barcode Generator Library&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/16754/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/MMULQUEEN&lt;/a&gt; • Shared by Michael Mulqueen&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/16749/feed&quot; target=&quot;_blank&quot;&gt;Snakie: Cross-Platform MicroPython IDE&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/16749/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/KEVINMCALEER&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/16756/feed&quot; target=&quot;_blank&quot;&gt;Notion2Pandas: Import Notion Databases Into pandas&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; GitLab.com&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/16756/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;GITLAB.COM/JAEGER87&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/16740/feed&quot; target=&quot;_blank&quot;&gt;envgap: Find Gaps Between &lt;code&gt;.env&lt;/code&gt;, Shell Env, and Python Code&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/16740/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/PINAK-DATTA&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16762/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;Pinak Datta&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/16745/feed&quot; target=&quot;_blank&quot;&gt;CLI-based Text-to-Speech Tool&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16745/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/REALPACIFIC&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16755/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;Prashant Barahi&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/16760/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; July 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/16760/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/16763/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; July 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/16763/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/16764/feed&quot; target=&quot;_blank&quot;&gt;PyLadies Dublin&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 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/16764/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/16761/feed&quot; target=&quot;_blank&quot;&gt;DjangoGirls Tamale 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 17 to July 19, 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/16761/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;DJANGOGIRLS.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/16752/feed&quot; target=&quot;_blank&quot;&gt;EuroSciPy 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 18 to July 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/16752/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;EUROSCIPY.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/16746/feed&quot; target=&quot;_blank&quot;&gt;PyData PyCon Armenia 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 24 to July 26, 2026&lt;br&gt; &lt;span style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16746/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.AM&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 #743.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/743/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/743/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 #742: Wagtail as Admin, Random Values, Code Quality, and More (2026-07-07)</title>
      <id>https://pycoders.com/issues/742</id>
      <link href="https://pycoders.com/issues/742"/>
      <updated>2026-07-07T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#742 – JULY 7, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/742/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/16702/feed&quot; target=&quot;_blank&quot;&gt;Wagtail as Django Admin on Steroids&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Wagtail can do pretty much everything the Django Admin can do, but includes a much more modern UI and more features. This article shows you how to use Wagtail as an Admin alternative.&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/16702/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;TIM KAMANIN&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/16730/feed&quot; target=&quot;_blank&quot;&gt;Selecting Random Values in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Python&amp;rsquo;s random module provides utilities for generating pseudorandom numbers. For cryptographically-secure randomness, use the secrets module instead.&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/16730/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/16736/feed&quot; target=&quot;_blank&quot;&gt;Let AI Agents Into Your B2B App. Securely.&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16736/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/012e0a1cbc39d888c748f46d3b3a4e1a&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; More of your users are asking to connect AI agents to your product, and you want to say yes. PropelAuth lets you give each agent scoped, revocable access, so you stay in control of what it can do. &lt;a href=&quot;https://pycoders.com/link/16736/feed&quot; target=&quot;_blank&quot;&gt;Learn 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/16736/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/16715/feed&quot; target=&quot;_blank&quot;&gt;Managing and Measuring Python Code Quality&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Master Python code quality tools like linters, formatters, type checkers, and profilers to measure, manage, and improve the code you write.&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/16715/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/16717/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Managing and Measuring Python Code Quality&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/16717/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/16731/feed&quot; target=&quot;_blank&quot;&gt;PEP 752: Package Repository Namespaces (Final)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16731/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/16703/feed&quot; target=&quot;_blank&quot;&gt;PEP 836: JIT Go Brrr: The Path to a Supported JIT Compiler for CPython (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/16703/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/16705/feed&quot; target=&quot;_blank&quot;&gt;PyCon US 2026 Videos Are Up&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/16705/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;YOUTUBE.COM&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/16737/feed&quot; target=&quot;_blank&quot;&gt;The Path to a Supported JIT Compiler for CPython&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/16737/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/16706/feed&quot; target=&quot;_blank&quot;&gt;Thinking About Running for the PSF Board? Let&amp;rsquo;s Talk!&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The Python Software Foundation Board has announced two office-hour sessions dedicated to giving information on running for the PSF Board. If you&amp;rsquo;re thinking of running in the upcoming election, these sessions can help you understand the ins and outs.&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/16706/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/16701/feed&quot; target=&quot;_blank&quot;&gt;Celery on AWS ECS: Complete Guide&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Running Celery on AWS ECS without losing tasks and making sure that all the work is done is not as straightforward as it may seem. Learn how to configure Celery and structure your tasks for reliable processing.&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/16701/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;JAN GIACOMELLI&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16718/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;Špela Giacomelli&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/16734/feed&quot; target=&quot;_blank&quot;&gt;Learn the Agentic Coding Workflow That Actually Works on Real Projects&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16734/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/e0075dff45b282a65ab9fa0ba4104786&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; 65% of Python developers are stuck using AI for small tasks that fall apart on anything real. This 2-day live course (July 11-12 via Zoom) walks you through building a complete Python app with OpenAI&amp;rsquo;s Codex, from an empty directory to a shipped project on GitHub. &lt;a href=&quot;https://pycoders.com/link/16734/feed&quot; target=&quot;_blank&quot;&gt;See the Full Curriculum →&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/16734/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16732/feed&quot; target=&quot;_blank&quot;&gt;Free-Threaded Python: Past, Present, and Future&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This post summarizes a talk by core developer Thomas Wouters at PyCon US 2026 on Free-threaded Python: the attempt to remove the GIL. It describes why it is being done and what future work looks like.&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/16732/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;JAKE EDGE&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/16713/feed&quot; target=&quot;_blank&quot;&gt;In Search of a New Contribution Model&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This opinion piece from Carlton Gibson, a core Django contributor, talks about the state of contributions to OSS, how AI has made them more complicated, and how some key things are still broken.&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/16713/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/16723/feed&quot; target=&quot;_blank&quot;&gt;How to Get TIFF MetaData With Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; The Pillow image library gives you lots of tools for dealing with images. This article teaches you how to extract metadata from TIFF files in a few lines of 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/16723/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/16700/feed&quot; target=&quot;_blank&quot;&gt;Profile First: A 10x Faster Django Test Suite&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Bob&amp;rsquo;s Django test suite took 30 seconds. cProfile showed 83% of it was one function: password hashing. Here&amp;rsquo;s how he found the bottleneck and the five-line fix.&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/16700/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/16714/feed&quot; target=&quot;_blank&quot;&gt;Python 3.15 Preview: Upgraded JIT Compiler&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how the upgraded Python 3.15 JIT compiler speeds up your code with a new tracing frontend, register allocation, and in-place numeric operations.&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/16714/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/16729/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Python 3.15 Preview: Upgraded JIT Compiler&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/16729/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/16720/feed&quot; target=&quot;_blank&quot;&gt;Store Extra Data for Objects in a &lt;code&gt;WeakKeyDictionary&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; In several programs Adam has wanted to solve the problem of associating extra data with an object. This article outlines his latest approach.&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/16720/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;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16719/feed&quot; target=&quot;_blank&quot;&gt;How to Get Started With the GitHub Copilot CLI&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to install, authenticate, and use the GitHub Copilot CLI to plan, write, and review Python code from your terminal with AI agents.&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/16719/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/16704/feed&quot; target=&quot;_blank&quot;&gt;Quiz: How to Get Started With the GitHub Copilot CLI&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/16704/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;h2&gt;Projects &amp;amp; Code&lt;/h2&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16709/feed&quot; target=&quot;_blank&quot;&gt;pytest-tia: Run Only the Tests Your Git Diff Actually Affects&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/16709/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/BREADMSA&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16716/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;BreadWasEaten&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/16712/feed&quot; target=&quot;_blank&quot;&gt;Sifty: OSS Windows Maintenance CLI&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/16712/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/VORTRIX5&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16724/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;Amine Zouaoui&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/16725/feed&quot; target=&quot;_blank&quot;&gt;purejq: A Pure-Python Implementation of &lt;code&gt;jq&lt;/code&gt;&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/16725/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/ADAM2GO&lt;/a&gt; • Shared by adam2go&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/16707/feed&quot; target=&quot;_blank&quot;&gt;supertree: Decision Tree Visualization&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/16707/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/MLJAR&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16727/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;Piotr Płoński&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/16733/feed&quot; target=&quot;_blank&quot;&gt;ninejs: Bringing Interactivity to Plotnine&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/16733/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/Y-SUNFLOWER&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/16722/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; July 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/16722/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/16711/feed&quot; target=&quot;_blank&quot;&gt;Python Atlanta&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 9 to July 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/16711/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/16708/feed&quot; target=&quot;_blank&quot;&gt;PyDelhi User Group Meetup&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 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/16708/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/16710/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; July 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/16710/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/16721/feed&quot; target=&quot;_blank&quot;&gt;EuroPython 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 13 to July 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/16721/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;EUROPYTHON.EU&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16728/feed&quot; target=&quot;_blank&quot;&gt;SciPy 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 13 to July 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/16728/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;SCIPY.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/16726/feed&quot; target=&quot;_blank&quot;&gt;EuroSciPy 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 18 to July 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/16726/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;EUROSCIPY.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 #742.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/742/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/742/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 #741: Root Loggers, PEP 832, Django Tasks, and More (2026-06-30)</title>
      <id>https://pycoders.com/issues/741</id>
      <link href="https://pycoders.com/issues/741"/>
      <updated>2026-06-30T19:30:00+00:00</updated>
      
      <content type="html">
         &lt;p&gt; &lt;span&gt;#741 – JUNE 30, 2026&lt;/span&gt;&lt;br&gt; &lt;span&gt;&lt;a href=&quot;https://pycoders.com/issues/741/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/16675/feed&quot; target=&quot;_blank&quot;&gt;Please Don&amp;rsquo;t Hijack My Python Root Logger&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Some Python libraries configure the root logger at import time, which can silently override application logging choices. This article walks through the logger hierarchy, shows why libraries should use named loggers with &lt;code&gt;NullHandler&lt;/code&gt;, and gives practical patterns that keep logging behavior under the application&amp;rsquo;s control.&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/16675/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;REDOWAN DELOWAR&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16681/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;Redowan Delowar&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/16678/feed&quot; target=&quot;_blank&quot;&gt;Why I Wrote PEP 832: Virtual Environment Discovery&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; PEP 832 proposes a way to describe where your virtual environment is so that your tools can look in the right place. Although a relatively simple proposal it has caused some contention in the community. This post by Brett, the PEP&amp;rsquo;s author, describes his reasoning.&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/16678/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;BRETT CANNON&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/16699/feed&quot; target=&quot;_blank&quot;&gt;An Open-Source Code Reviewer That Runs on Any LLM&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Your agents open PRs faster than you can review them. pr-af is a multi-agent reviewer that drops into GitHub Actions and runs on the model you already use — open-source, self-hosted, or closed. Every finding ships with evidence. &lt;a href=&quot;https://pycoders.com/link/16699/feed&quot; target=&quot;_blank&quot;&gt;Star it 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/16699/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;AGENTFIELD&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16679/feed&quot; target=&quot;_blank&quot;&gt;Django Tasks: Exploring the Built-in Tasks Framework&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Explore Django Tasks, the new built-in framework in Django 6.0, and run background jobs with &lt;code&gt;@task&lt;/code&gt;, named queues, and a lightweight alternative to Celery.&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/16679/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/16685/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Django Tasks: Exploring the Built-in Tasks Framework&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/16685/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/16691/feed&quot; target=&quot;_blank&quot;&gt;Python 3.15.0 Beta 3 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/16691/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/16676/feed&quot; target=&quot;_blank&quot;&gt;Django 6.1 Beta 1 Released&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16676/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/16695/feed&quot; target=&quot;_blank&quot;&gt;Astral Joins OpenAI&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; OpenAI recently acquired Astral, the company behind uv, Ruff, and ty. And if your first thought was &amp;lsquo;wait, is uv toast?&amp;rsquo;, you are not alone. Talk Python interviews Charlie Marsh and they talk about the acquisition experience and how they&amp;rsquo;re shipping more code than ever.&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/16695/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/16669/feed&quot; target=&quot;_blank&quot;&gt;The Fastest Python Struct?&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; An adventure in Python struct benchmarking: slotted class, NamedTuple, dataclass, attrs, msgspec, record-type, and a new C extension based on record-type and msgspec. Focus is on import-time, type-construction, memory, and instantiation cost.&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/16669/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;JP HUTCHINS&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/16696/feed&quot; target=&quot;_blank&quot;&gt;Codex for Python Developers: A Hands-on Live Course&lt;/a&gt;&lt;/h3&gt; &lt;a href=&quot;https://pycoders.com/link/16696/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/e0075dff45b282a65ab9fa0ba4104786&quot; alt&gt;&lt;/a&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Build a complete Python project from an empty directory with OpenAI&amp;rsquo;s Codex in this two-day live course (July 11-12). You&amp;rsquo;ll scaffold, build, debug, and ship a real CLI app using an agent that works inside your codebase. &lt;a href=&quot;https://pycoders.com/link/16696/feed&quot; target=&quot;_blank&quot;&gt;See the Full Curriculum →&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/16696/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;REAL PYTHON&lt;/a&gt;&lt;/span&gt; &lt;span style=&quot;color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;&quot;&gt;sponsor&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16670/feed&quot; target=&quot;_blank&quot;&gt;Write a Coding Agent From First Principles&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to write a coding agent in this Python tutorial that teaches how to interact with an LLM through an API, how to manage the conversation context, and how to do tool calling.&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/16670/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; • Shared by &lt;a href=&quot;https://pycoders.com/link/16665/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/16694/feed&quot; target=&quot;_blank&quot;&gt;Free Threading Internals: PyMutex&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; This is part 3 in an series about Free Threading internals (removal of the GIL) and talks about PyMutex, a one byte lock with fast inlineable lock and unlock functions.&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/16694/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;VICTOR STINNER&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/16673/feed&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;uv&lt;/code&gt; in Production: The Speed Is Real, the Integration Isn&amp;rsquo;t Free&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Oleg&amp;rsquo;s work moved their tooling from &lt;code&gt;pip&lt;/code&gt; to &lt;code&gt;uv&lt;/code&gt; and lived with it for ~90 days. They discovered that the speed is real, but that doesn&amp;rsquo;t mean there aren&amp;rsquo;t complications.&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/16673/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;OLEG TSVETKOV&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16684/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;Oleg&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/16686/feed&quot; target=&quot;_blank&quot;&gt;Using LlamaIndex for RAG in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; Learn how to set up LlamaIndex, load your data, build and persist an index, and run queries to get grounded answers with RAG 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/16686/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/16682/feed&quot; target=&quot;_blank&quot;&gt;Quiz: Using LlamaIndex for RAG in Python&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; &lt;span style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16682/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/16671/feed&quot; target=&quot;_blank&quot;&gt;Python for Data Analysis: A Practical Guide&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; In this tutorial, you&amp;rsquo;ll learn data analysis with Python by following a structured workflow with pandas, Matplotlib, and scikit-learn.&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/16671/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/16690/feed&quot; target=&quot;_blank&quot;&gt;When to Use &lt;code&gt;classmethod&lt;/code&gt;, &lt;code&gt;staticmethod&lt;/code&gt;, or Instance Methods&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; A simple decision rule for when to use a &lt;code&gt;@classmethod&lt;/code&gt;, a &lt;code&gt;@staticmethod&lt;/code&gt;, or a plain instance method 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/16690/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/16683/feed&quot; target=&quot;_blank&quot;&gt;7 More Common Mistakes in Architecture Diagrams&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; A rundown of seven more common mistakes in system architecture diagrams and how to fix 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/16683/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;BILLY PILGER&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/16677/feed&quot; target=&quot;_blank&quot;&gt;pyappdist: Turn a Python App Into a Native Installer&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/16677/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/ATSUOISHIMOTO&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16668/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;Atsuo Ishimtoo&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/16667/feed&quot; target=&quot;_blank&quot;&gt;flawed: Framework-Aware Static Analysis for Python Web Apps&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/16667/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/EXECVEAT&lt;/a&gt; • Shared by Andrew Konstantinov&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/16687/feed&quot; target=&quot;_blank&quot;&gt;pytest-mrt: Catch Database Migration Rollback Failures&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/16687/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/CROC100&lt;/a&gt; • Shared by &lt;a href=&quot;https://pycoders.com/link/16664/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;JUNEBEOM BAEK (croc)&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/16692/feed&quot; target=&quot;_blank&quot;&gt;linkedin2md: Export LinkedIn Data to Structured Markdown&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/16692/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/JUANMANUELDAZA&lt;/a&gt; • Shared by Juan Manuel Daza&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/16674/feed&quot; target=&quot;_blank&quot;&gt;Ozark: Examine Python ASTs, &amp;amp; Bytecode in Your 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/16674/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;FROMSCRATCHCODE.COM&lt;/a&gt; • Shared by Tyler Green&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/16680/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; July 1, 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/16680/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/16666/feed&quot; target=&quot;_blank&quot;&gt;Canberra Python Meetup&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 2, 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/16666/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/16693/feed&quot; target=&quot;_blank&quot;&gt;Sydney Python User Group (SyPy)&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 2, 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/16693/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;SYPY.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/16688/feed&quot; target=&quot;_blank&quot;&gt;Python Leiden User Group&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 2, 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/16688/feed&quot; style=&quot;color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;&quot; target=&quot;_blank&quot;&gt;PYTHONLEIDEN.NL&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;/div&gt; &lt;div&gt; &lt;h3 style=&quot;margin-bottom: 0;&quot;&gt;&lt;a href=&quot;https://pycoders.com/link/16672/feed&quot; target=&quot;_blank&quot;&gt;Python Norte 2026&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 3 to July 6, 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/16672/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;PYTHONNORTE.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/16689/feed&quot; target=&quot;_blank&quot;&gt;Melbourne Python Users Group, Australia&lt;/a&gt;&lt;/h3&gt; &lt;p style=&quot;margin-bottom: 0;&quot;&gt; July 6, 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/16689/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;J.MP&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 #741.&lt;br&gt;&lt;a href=&quot;https://pycoders.com/issues/741/feed&quot;&gt;View in Browser »&lt;/a&gt;&lt;/p&gt; &lt;img src=&quot;https://pycoders.com/issues/741/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>
