{"title":"PyCoder\u2019s Weekly","link":[{"@attributes":{"href":"https:\/\/pycoders.com\/feed\/KAjPR18f","rel":"self"}},{"@attributes":{"href":"https:\/\/pycoders.com\/"}}],"updated":"2026-04-14T19:30:00+00:00","id":"https:\/\/pycoders.com\/","author":{"name":"PyCoder\u2019s Weekly"},"entry":[{"title":"Issue #730: Typing Django, Dictionaries, pandas vs Polars, and More (April 14, 2026)","id":"https:\/\/pycoders.com\/issues\/730","link":{"@attributes":{"href":"https:\/\/pycoders.com\/issues\/730"}},"updated":"2026-04-14T19:30:00+00:00","content":"\n         <p> <span>#730 \u2013 APRIL 14, 2026<\/span><br> <span><a href=\"https:\/\/pycoders.com\/issues\/730\/feed\">View in Browser \u00bb<\/a><\/span> <\/p> <p><a href=\"https:\/\/pycoders.com\"><img alt=\"The PyCoder&rsquo;s Weekly Logo\" src=\"https:\/\/cdn.pycoders.com\/37bdf31dc645f968ffb90196e5d38ff5\" style=\"max-width: 100%;\"><\/a><\/p> <hr> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16274\/feed\" target=\"_blank\">Typing Your Django Project in 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Django was first released 10 years before Python standardized its type hints syntax. Because of this it\u2019s not surprising that getting type hints to work in your Django project is not trivial.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16274\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">AN\u017dE&#x27;S BLOG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16258\/feed\" target=\"_blank\">Dictionaries in Python<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how dictionaries in Python work: create and modify key-value pairs using dict literals, the <code>dict()<\/code> constructor, built-in methods, and operators.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16258\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16257\/feed\" target=\"_blank\">Secure Your Python MCP Servers With Auth and Access Control<\/a><\/h3> <a href=\"https:\/\/pycoders.com\/link\/16257\/feed\" target=\"_blank\"><img style=\"float:right; margin-left: 16px; margin-top: 7px; width: 17%;\" src=\"https:\/\/cdn.pycoders.com\/d25ee17873450fd050761aaa2f5549db\" alt><\/a> <p style=\"margin-bottom: 0;\"> Use the Descope Python MCP SDK to easily secure your MCP server with user auth, consent, OAuth 2.1 with PKCE, MCP client registration, scope-based access at the <a href=\"https:\/\/pycoders.com\/link\/16257\/feed\" target=\"_blank\">tool level, and more \u2192<\/a><br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16257\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DESCOPE<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;\">sponsor<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16285\/feed\" target=\"_blank\">pandas vs Polars: Backed by a 10 Million Row Study<\/a><\/h3> <p style=\"margin-bottom: 0;\"> A benchmark study of 10M rows comparing Pandas vs. Polars. Explore the architectural shifts, lazy execution, and Rust-based speed of modern data tools.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16285\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">QUBRICA.COM<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16292\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Rakshath<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16261\/feed\" target=\"_blank\">Python 3.15.0a8, 3.14.4 and 3.13.13 Released<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16261\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTHON.ORG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16278\/feed\" target=\"_blank\">PyCon US 2026 Schedule Is Live<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16278\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYCON US<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16281\/feed\" target=\"_blank\">Django Security Releases: 6.0.4, 5.2.13, and 4.2.30<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16281\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DJANGO SOFTWARE FOUNDATION<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16266\/feed\" target=\"_blank\">DjangoCon Europe 2027 Call for Organizers<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16266\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DJANGO SOFTWARE FOUNDATION<\/a><\/span> <\/p> <\/div> <h2>Articles &amp; Tutorials<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16268\/feed\" target=\"_blank\">Switching All My Packages to PyPI Trusted Publishing<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Matthias maintains several Python packages including the django-debug-toolbar. To help protect these projects from malicious release uploads, he&rsquo;s switching to the PyPI Trusted Publishing mechanism. This article explains why and what it protects.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16268\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MATTHIAS KESTENHOLZ<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16269\/feed\" target=\"_blank\">Cutting Python Web App Memory Over 31%<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Michael reduced Python web app memory by 3.2 GB using async workers, import isolation, the Raw+DC database pattern, and disk caching. The article includes detailed before and after numbers for each technique.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16269\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MICHAEL KENNEDY<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16256\/feed\" target=\"_blank\">B2B AI Agent Auth Support<\/a><\/h3> <a href=\"https:\/\/pycoders.com\/link\/16256\/feed\" target=\"_blank\"><img style=\"float:right; margin-left: 16px; margin-top: 7px; width: 17%;\" src=\"https:\/\/cdn.pycoders.com\/ba733fdaad1bc21b72eb28c2bc6d79f6\" alt><\/a> <p style=\"margin-bottom: 0;\"> Your users are asking if they can connect their AI agent to your product, but you want to make sure they can do it safely and securely. <a href=\"https:\/\/pycoders.com\/link\/16256\/feed\" target=\"_blank\">PropelAuth makes that possible \u2192<\/a><br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16256\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PROPELAUTH<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;\">sponsor<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16283\/feed\" target=\"_blank\">Understanding FSMs by Building One From Scratch<\/a><\/h3> <p style=\"margin-bottom: 0;\"> After having worked with the transitions library for a while, Bob wondered how Finite State Machines work under the hood. This article shows you how he built one from scratch, modelling GitHub pull requests.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16283\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">BOB BELDERBOS<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16289\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Bob Belderbos<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16259\/feed\" target=\"_blank\">Python for Java Developers<\/a><\/h3> <p style=\"margin-bottom: 0;\"> The article outlines how Java developers can transition to Python by building on their existing object-oriented knowledge while focusing on the key differences between the two languages.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16259\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">NIKOS VAGGALIS<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16284\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Andrew Solomon<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16290\/feed\" target=\"_blank\">Why Aren&rsquo;t We <code>uv<\/code> Yet?<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Reading articles on the net you&rsquo;d think that <code>uv<\/code> was all the things. It is popular but not as much as you&rsquo;d think. This article looks at the data.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16290\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">ALEX YANKOV<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16280\/feed\" target=\"_blank\">Using Loguru to Simplify Python Logging<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how to use Loguru for simpler Python logging, from zero-config setup and custom formats to file rotation, retention, and adding context.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16280\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;\">course<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16271\/feed\" target=\"_blank\">Quiz: Using Loguru to Simplify Python Logging<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16271\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16275\/feed\" target=\"_blank\">SQLite Features You Didn&rsquo;t Know It Had<\/a><\/h3> <p style=\"margin-bottom: 0;\"> SQLite has evolved far beyond a simple embedded database. Explore modern features like JSON, FTS5, window functions, strict tables, and more.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16275\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">SLICKER.ME<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16270\/feed\" target=\"_blank\">Using a <code>~\/.pdbrc<\/code> File to Customize the Python Debugger<\/a><\/h3> <p style=\"margin-bottom: 0;\"> You can customize the Python debugger (PDB) by creating custom aliases within a .pdbrc file in your home directory. Read on to learn how.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16270\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">TREY HUNNER<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16291\/feed\" target=\"_blank\">Python: Introducing Profiling-Explorer<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Adam has added another project to his list of profiling tools, this one is for examining data from Python&rsquo;s built-in profilers.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16291\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">ADAM JOHNSON<\/a><\/span> <\/p> <\/div> <h2>Projects &amp; Code<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16262\/feed\" target=\"_blank\">dj-signals-panel: View Django Signals in the Admin<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16262\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/YASSI<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16276\/feed\" target=\"_blank\">form-filler: Generate Bookmarklets That Fill Web Forms<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16276\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/HAMATTI<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16267\/feed\" target=\"_blank\">great-docs: Documentation Site Generator for Python Packages<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16267\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/POSIT-DEV<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16277\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Richard Iannone<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16288\/feed\" target=\"_blank\">rsloop: An Event Loop for Asyncio Written in Rust<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16288\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/RUSTEDBYTES<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16264\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Yehor Smoliakov<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16260\/feed\" target=\"_blank\">S3 Commander: Python Based AWS S3 Browser<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16260\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/ROMANZDK<\/a> \u2022 Shared by Roman<\/span> <\/p> <\/div> <h2>Events<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16286\/feed\" target=\"_blank\">DjangoCon Europe 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 15 to April 20, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16286\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DJANGOCON.EU<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16272\/feed\" target=\"_blank\">Weekly Real Python Office Hours Q&amp;A (Virtual)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 15, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16272\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REALPYTHON.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16263\/feed\" target=\"_blank\">PyData Bristol Meetup<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 16, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16263\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MEETUP.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16265\/feed\" target=\"_blank\">PyLadies Dublin<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 16, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16265\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYLADIES.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16287\/feed\" target=\"_blank\">PyTexas 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 17 to April 20, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16287\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTEXAS.ORG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16282\/feed\" target=\"_blank\">Chattanooga Python User Group<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 17 to April 18, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16282\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MEETUP.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16279\/feed\" target=\"_blank\">PyCon Austria 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 19 to April 21, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16279\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYCON.AT<\/a><\/span> <\/p> <\/div> <hr> <p>Happy Pythoning!<br>This was PyCoder&rsquo;s Weekly Issue #730.<br><a href=\"https:\/\/pycoders.com\/issues\/730\/feed\">View in Browser \u00bb<\/a><\/p> <img src=\"https:\/\/pycoders.com\/issues\/730\/open\/feed\" width=\"1\" height=\"1\" alt> \n        <hr \/>\n        <p><em>[ Subscribe to \ud83d\udc0d PyCoder&rsquo;s Weekly \ud83d\udc8c \u2013 Get the best Python news, articles, and tutorials delivered to your inbox once a week <a href=\"https:\/\/pycoders.com\/?utm_source=pycoders&amp;utm_medium=feed&amp;utm_campaign=footer\">&gt;&gt; Click here to learn more<\/a> ]<\/em><\/p>\n      "},{"title":"Issue #729: NumPy Music, Ollama, Iterables, and More (April 7, 2026)","id":"https:\/\/pycoders.com\/issues\/729","link":{"@attributes":{"href":"https:\/\/pycoders.com\/issues\/729"}},"updated":"2026-04-07T19:30:00+00:00","content":"\n         <p> <span>#729 \u2013 APRIL 7, 2026<\/span><br> <span><a href=\"https:\/\/pycoders.com\/issues\/729\/feed\">View in Browser \u00bb<\/a><\/span> <\/p> <p><a href=\"https:\/\/pycoders.com\"><img alt=\"The PyCoder&rsquo;s Weekly Logo\" src=\"https:\/\/cdn.pycoders.com\/37bdf31dc645f968ffb90196e5d38ff5\" style=\"max-width: 100%;\"><\/a><\/p> <hr> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16226\/feed\" target=\"_blank\">NumPy as Synth Engine<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Kenneth has &ldquo;recorded&rdquo; a song in a Python script. The catch? No sampling, no recording, no pre-recorded sound. Everything was done through generating wave functions in NumPy. Learn how to become a mathematical musician.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16226\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">KENNETH REITZ<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16238\/feed\" target=\"_blank\">How to Use Ollama to Run Large Language Models Locally<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how to use Ollama to run large language models locally. Install it, pull models, and start chatting from your terminal without needing API keys.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16238\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16222\/feed\" target=\"_blank\">Ship AI Agents With Accurate, Fresh Web Search Data<\/a><\/h3> <a href=\"https:\/\/pycoders.com\/link\/16222\/feed\" target=\"_blank\"><img style=\"float:right; margin-left: 16px; margin-top: 7px; width: 17%;\" src=\"https:\/\/cdn.pycoders.com\/829c8a2d3c3a74ff2a229135a72a9343\" alt><\/a> <p style=\"margin-bottom: 0;\"> Stop building scrapers just to feed your AI app web search data. SerpApi returns structured JSON from Google and 100+ search engines via a simple GET request. No proxy management, no CAPTCHAs. Power product research, price tracking, or agentic search in minutes. <a href=\"https:\/\/pycoders.com\/link\/16222\/feed\" target=\"_blank\">Used by Shopify, NVIDIA, and Uber \u2192<\/a><br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16222\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">SERPAPI<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;\">sponsor<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16223\/feed\" target=\"_blank\">Indexable Iterables<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how objects are automatically iterable if you implement integer indexing.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16223\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">RODRIGO GIR\u00c3O SERR\u00c3O<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16232\/feed\" target=\"_blank\">Claude Code for Python Developers (Live Course)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> &ldquo;This is one of the best training sessions I&rsquo;ve joined in the last year across multiple platforms.&rdquo; Two-day course where you build a complete Python project with an AI agent in your terminal. Next session April 11\u201312.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16232\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16236\/feed\" target=\"_blank\">PEP 803: <code>\"abi3t\"<\/code>: Stable ABI for Free-Threaded Builds (Accepted)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16236\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTHON.ORG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16254\/feed\" target=\"_blank\">PEP 829: Structured Startup Configuration via .site.toml Files (Added)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16254\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTHON.ORG<\/a><\/span> <\/p> <\/div> <h2>Articles &amp; Tutorials<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16228\/feed\" target=\"_blank\">Fire and Forget at Textual<\/a><\/h3> <p style=\"margin-bottom: 0;\"> In this follow up to a previous article (<a href=\"https:\/\/pycoders.com\/link\/16237\/feed\" target=\"_blank\">Fire and forget (or never) with Python&rsquo;s asyncio<\/a>, Michael discusses a similar article by Will McGugan as it relates to Textual. He found the problematic pattern in over 500K GitHub files.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16228\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MICHAEL KENNEDY&#x27;<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16252\/feed\" target=\"_blank\">pixi: One Package Manager for Python Libraries<\/a><\/h3> <p style=\"margin-bottom: 0;\"> uv is great for pure Python projects, but it can&rsquo;t install compiled system libraries like GDAL or CUDA. pixi fills that gap by managing both PyPI and conda-forge packages in one tool, with fast resolution, automatic lockfiles, and project-level environments.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16252\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">CODECUT.AI<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16234\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Khuyen Tran<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16221\/feed\" target=\"_blank\">Dignified Python: Pytest for Agent-Generated Code<\/a><\/h3> <a href=\"https:\/\/pycoders.com\/link\/16221\/feed\" target=\"_blank\"><img style=\"float:right; margin-left: 16px; margin-top: 7px; width: 17%;\" src=\"https:\/\/cdn.pycoders.com\/1f2ba5720af984e0eb8518d608c755d7\" alt><\/a> <p style=\"margin-bottom: 0;\"> Learn how to define clear pytest patterns for agent-generated tests: separate fast unit vs integration, use fakes, constrain generation, and avoid brittle patterns to <a href=\"https:\/\/pycoders.com\/link\/16221\/feed\" target=\"_blank\">keep tests reliable and maintainable \u2192<\/a><br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16221\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DAGSTER LABS<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;\">sponsor<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16235\/feed\" target=\"_blank\">Learning Rust Made Me a Better Python Developer<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Bob thinks that learning Rust made him a better Python developer. Not because Rust is better, but because it made him think differently about how he has been writing Python. The compiler forced him to confront things he&rsquo;d been ignoring.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16235\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">BOB BELDERBOS<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16249\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Bob Belderbos<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16227\/feed\" target=\"_blank\">Django <code>bulk_update<\/code> Memory Issue<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Recently, An\u017ee had to write a Django migration to update hundreds of thousands of database objects. With some paper-napkin math he calculated it could fit in memory, but that turned out not to be the case. Read on to find out why.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16227\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">AN\u017dE&#x27;S BLOG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16225\/feed\" target=\"_blank\">Catching Up With the Python Typing Council<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Talk Python interviews Carl Meyer, Jelle Zijstra, and Rebecca Chen, three members of the Python Typing Council. They talk about how the typing system is governed and just how much is the right amount of type hinting in your code.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16225\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">TALK PYTHON<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;\">podcast<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16245\/feed\" target=\"_blank\">Python 3.3: The Version That Quietly Rewired Everything<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <code>yield from<\/code>, <code>venv<\/code>, and namespace packages are three features from Python 3.3 that looked minor when they came out in 2012, but turned out to be the scaffolding modern Python is built on.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16245\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">TUREK SENTURK<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16241\/feed\" target=\"_blank\">Incident Report: LiteLLM\/Telnyx Supply-Chain Attacks<\/a><\/h3> <p style=\"margin-bottom: 0;\"> This post from the PyPI blog outlines two recent supply chain attacks, how they were different, and how you can protect yourself from future incidents.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16241\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYPI.ORG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16233\/feed\" target=\"_blank\">Python Classes: The Power of Object-Oriented Programming<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how to define and use Python classes to implement object-oriented programming. Dive into attributes, methods, inheritance, and more.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16233\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16247\/feed\" target=\"_blank\">Timesliced Reservoir Sampling for Profilers<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Reservoir sampling lets you pick a sample from an unlimited stream of events; learn how it works, and a new variant useful for profilers.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16247\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">ITAMAR TURNER-TRAURING<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16248\/feed\" target=\"_blank\">Adding Python to PATH<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how to add Python to your PATH environment variable on Windows, macOS, and Linux so you can run Python from the command line.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16248\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;\">course<\/span> <\/p> <\/div> <h2>Projects &amp; Code<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16253\/feed\" target=\"_blank\">OracleTrace: Visualize Function Flows<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16253\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/KAYKCAPUTO<\/a> \u2022 Shared by Kayk Aparecido de Paula Caputo<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16224\/feed\" target=\"_blank\">pywho: Explain Your Python Environment and Detect Shadows<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16224\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/AHSANSHERAZ<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16255\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Ahsan Sheraz <\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16251\/feed\" target=\"_blank\">asyncstdlib: The Missing Toolbox for an Async World<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16251\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/MAXFISCHER2781<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16239\/feed\" target=\"_blank\">nitro-pandas: pandas-Compatible Polars Wrapper<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16239\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/WASSIM17LABDI<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16244\/feed\" target=\"_blank\">django-mail-auth: Django Auth via Login URLs<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16244\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/CODINGJOE<\/a><\/span> <\/p> <\/div> <h2>Events<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16229\/feed\" target=\"_blank\">Weekly Real Python Office Hours Q&amp;A (Virtual)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 8, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16229\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REALPYTHON.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16231\/feed\" target=\"_blank\">PyCon Lithuania 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 8 to April 11, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16231\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYCON.LT<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16246\/feed\" target=\"_blank\">Python Atlanta<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 9 to April 10, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16246\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MEETUP.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16242\/feed\" target=\"_blank\">DFW Pythoneers 2nd Saturday Teaching Meeting<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 11, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16242\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MEETUP.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16240\/feed\" target=\"_blank\">PyCon DE &amp; PyData 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 14 to April 18, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16240\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYCON.DE<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16230\/feed\" target=\"_blank\">DjangoCon Europe 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 15 to April 20, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16230\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DJANGOCON.EU<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16250\/feed\" target=\"_blank\">PyTexas 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 17 to April 20, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16250\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTEXAS.ORG<\/a><\/span> <\/p> <\/div> <hr> <p>Happy Pythoning!<br>This was PyCoder&rsquo;s Weekly Issue #729.<br><a href=\"https:\/\/pycoders.com\/issues\/729\/feed\">View in Browser \u00bb<\/a><\/p> <img src=\"https:\/\/pycoders.com\/issues\/729\/open\/feed\" width=\"1\" height=\"1\" alt> \n        <hr \/>\n        <p><em>[ Subscribe to \ud83d\udc0d PyCoder&rsquo;s Weekly \ud83d\udc8c \u2013 Get the best Python news, articles, and tutorials delivered to your inbox once a week <a href=\"https:\/\/pycoders.com\/?utm_source=pycoders&amp;utm_medium=feed&amp;utm_campaign=footer\">&gt;&gt; Click here to learn more<\/a> ]<\/em><\/p>\n      "},{"title":"Issue #728: Django With Alpine, Friendly Classes, SQLAlchemy, and More (March 31, 2026)","id":"https:\/\/pycoders.com\/issues\/728","link":{"@attributes":{"href":"https:\/\/pycoders.com\/issues\/728"}},"updated":"2026-03-31T19:30:00+00:00","content":"\n         <p> <span>#728 \u2013 MARCH 31, 2026<\/span><br> <span><a href=\"https:\/\/pycoders.com\/issues\/728\/feed\">View in Browser \u00bb<\/a><\/span> <\/p> <p><a href=\"https:\/\/pycoders.com\"><img alt=\"The PyCoder&rsquo;s Weekly Logo\" src=\"https:\/\/cdn.pycoders.com\/37bdf31dc645f968ffb90196e5d38ff5\" style=\"max-width: 100%;\"><\/a><\/p> <hr> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16215\/feed\" target=\"_blank\">Django Apps With Alpine AJAX, Revisited<\/a><\/h3> <p style=\"margin-bottom: 0;\"> The author has been modifying his approach to Django projects with Alpine AJAX over the last nine months. This post describes what he&rsquo;s changed and how his process has improved.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16215\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">LOOPWERK<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16213\/feed\" target=\"_blank\">Making Friendly Classes<\/a><\/h3> <p style=\"margin-bottom: 0;\"> What&rsquo;s a friendly class? One that accepts sensible arguments, has a nice string representation, and supports equality checks. Read on to learn how to write them.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16213\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">TREY HUNNER<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16187\/feed\" target=\"_blank\">Right-Size Your Celery &amp; RQ Workers<\/a><\/h3> <a href=\"https:\/\/pycoders.com\/link\/16187\/feed\" target=\"_blank\"><img style=\"float:right; margin-left: 16px; margin-top: 7px; width: 17%;\" src=\"https:\/\/cdn.pycoders.com\/4373666f0f4efd84fc5ff93afe6c4c06\" alt><\/a> <p style=\"margin-bottom: 0;\"> CPU doesn&rsquo;t tell you if tasks are piling up. Queue latency does. Autoscale your workers based on <a href=\"https:\/\/pycoders.com\/link\/16187\/feed\" target=\"_blank\">the metric that matters \u2192<\/a><br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16187\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">JUDOSCALE<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;\">sponsor<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16198\/feed\" target=\"_blank\">Understanding CRUD Operations in SQL<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Learn how CRUD operations work in SQL by writing raw SQL queries with SQLite and using SQLAlchemy as an ORM in Python.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16198\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REAL PYTHON<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;\">course<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16194\/feed\" target=\"_blank\">Starlette 1.0 Released<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16194\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MARCELOTRYLE.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16220\/feed\" target=\"_blank\">PyCon Austria April 19-20, Registrations Open<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16220\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYCON.AT<\/a> \u2022 Shared by Horst JENS<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16197\/feed\" target=\"_blank\">PyOhio 2026 Call for Proposals Now Open!<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16197\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PRETALX.COM<\/a> \u2022 Shared by Anurag Saxena<\/span> <\/p> <\/div> <h2>Articles &amp; Tutorials<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16200\/feed\" target=\"_blank\">When Vectorized Arrays Aren&rsquo;t Enough<\/a><\/h3> <p style=\"margin-bottom: 0;\"> This is a deep dive post about vectorized arrays in NumPy and how some optimizations work and some do not. There is also a follow-up as well: <a href=\"https:\/\/pycoders.com\/link\/16199\/feed\" target=\"_blank\">Vectorized Hardware Instructions Rule Everything Around Me<\/a>.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16200\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">NRPOSNER<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16218\/feed\" target=\"_blank\">Zensical: A Modern Static Site Generator<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Talk Python interviews Martin Donath a contributor to MKDocs and recent creator of the new Zensical package. They talk about why he has built something new and what lessons he&rsquo;s applied to the new project.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16218\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">TALK PYTHON<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;\">podcast<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16188\/feed\" target=\"_blank\">Dignified Python: 10 Rules to Improve your LLM Agents<\/a><\/h3> <a href=\"https:\/\/pycoders.com\/link\/16188\/feed\" target=\"_blank\"><img style=\"float:right; margin-left: 16px; margin-top: 7px; width: 17%;\" src=\"https:\/\/cdn.pycoders.com\/1f2ba5720af984e0eb8518d608c755d7\" alt><\/a> <p style=\"margin-bottom: 0;\"> At Dagster, we created \u201cDignified Python\u201d to improve LLM-generated code by embedding clear coding principles into prompts. Instead of messy, pattern-based output, our agents produce code that reflects intent, consistency, and team standards. <a href=\"https:\/\/pycoders.com\/link\/16188\/feed\" target=\"_blank\">Here are the 10 rules from our Claude prompt \u2192<\/a><br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16188\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">DAGSTER LABS<\/a><\/span> <span style=\"color: #AAAAAA;text-transform:uppercase;padding:1px 4px;border:1px solid #dddddd;margin-left:4px;font-size:0.8em;border-radius:2px;background-color:#ffffe0;\">sponsor<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16206\/feed\" target=\"_blank\">Smello for HTTP Requests<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Roman built Smello, an open-source tool that captures outgoing HTTP requests from your Python code and displays them in a local web dashboard. Learn why he did it and how he uses it to debug API access.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16206\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">ROMAN IMANKULOV<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16211\/feed\" target=\"_blank\">Gotchas With SQLite in Production<\/a><\/h3> <p style=\"margin-bottom: 0;\"> What you need to know before putting a Django project that uses SQLite in production. This is part 5 of a series that includes information on write-ahead logging, locking errors, performance, and more.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16211\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">AN\u017dE<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16214\/feed\" target=\"_blank\">Comparing Portable DataFrame Tools in Python<\/a><\/h3> <p style=\"margin-bottom: 0;\"> This article explores three tools for DataFrame portability in Python: Ibis, Narwhals, and Fugue. Learn when to use each to write code that runs across multiple backends.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16214\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">CODECUT.AI<\/a> \u2022 Shared by <a href=\"https:\/\/pycoders.com\/link\/16202\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">Khuyen Tran<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16216\/feed\" target=\"_blank\">Lessons From Pyre That Shaped Pyrefly<\/a><\/h3> <p style=\"margin-bottom: 0;\"> Pyrefly is a Python type checker from the same team that developed pyre. This article discusses lessons from developing Pyre that influenced how they designed Pyrefly.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16216\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYREFLY<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16209\/feed\" target=\"_blank\">Connecting MongoDB to Python<\/a><\/h3> <p style=\"margin-bottom: 0;\"> This tutorial is a hands-on introduction to connecting MongoDB with Python using PyMongo, guiding readers through the essential first steps in just 10 minutes.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16209\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">ANAIYA RAISINGHANI<\/a> \u2022 Shared by Tony Kim<\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16193\/feed\" target=\"_blank\">How Do Large Companies Manage CI\/CD at Scale?<\/a><\/h3> <p style=\"margin-bottom: 0;\"> What changes for CI\/CD when your company grows to hundreds of developers, dozens of services, and thousands of daily builds?<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16193\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PETE MILORAVAC<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16189\/feed\" target=\"_blank\">Apply to Join the PSF Meetup Pro Network<\/a><\/h3> <p style=\"margin-bottom: 0;\"> The PSF helps support approved Python Meetup groups and the process to become one has recently been re-opened.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16189\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTHON SOFTWARE FOUNDATION<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16219\/feed\" target=\"_blank\">Inspect a Lazy Import in Python 3.15<\/a><\/h3> <p style=\"margin-bottom: 0;\"> This quick &ldquo;things I learned&rdquo; post shows you how to inspect a lazy import object in Python 3.15.<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16219\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MATHSPP.COM<\/a><\/span> <\/p> <\/div> <h2>Projects &amp; Code<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16205\/feed\" target=\"_blank\">syrupy: The Sweeter pytest Snapshot Plugin<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16205\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/SYRUPY-PROJECT<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16196\/feed\" target=\"_blank\">pendulum: Python Datetimes Made Easy<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16196\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/PYTHON-PENDULUM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16190\/feed\" target=\"_blank\">validatedata: An Easier Way to Validate Data in Python<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16190\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/EDWARD-K1<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16191\/feed\" target=\"_blank\">awesome-marimo: Curated List of Awesome Marimo Things<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16191\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/MARIMO-TEAM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16212\/feed\" target=\"_blank\">dj-urls-panel: Visualize URL Routes in the Django Admin<\/a><\/h3> <p style=\"margin-bottom: 0;\"> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16212\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">GITHUB.COM\/YASSI<\/a><\/span> <\/p> <\/div> <h2>Events<\/h2> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16210\/feed\" target=\"_blank\">Weekly Real Python Office Hours Q&amp;A (Virtual)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 1, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16210\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">REALPYTHON.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16201\/feed\" target=\"_blank\">Canberra Python Meetup<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 2, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16201\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MEETUP.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16204\/feed\" target=\"_blank\">Sydney Python User Group (SyPy)<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 2, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16204\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">SYPY.ORG<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16203\/feed\" target=\"_blank\">Python Leiden User Group<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 2, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16203\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYTHONLEIDEN.NL<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16192\/feed\" target=\"_blank\">PyDelhi User Group Meetup<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 4, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16192\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">MEETUP.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16217\/feed\" target=\"_blank\">Melbourne Python Users Group, Australia<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 6, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16217\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">J.MP<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16207\/feed\" target=\"_blank\">PyBodensee Monthly Meetup<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 6, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16207\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYBODENSEE.COM<\/a><\/span> <\/p> <\/div> <div> <h3 style=\"margin-bottom: 0;\"><a href=\"https:\/\/pycoders.com\/link\/16208\/feed\" target=\"_blank\">PyCon Lithuania 2026<\/a><\/h3> <p style=\"margin-bottom: 0;\"> April 8 to April 11, 2026<br> <span style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-size:0.8em;text-transform:normal;\"><a href=\"https:\/\/pycoders.com\/link\/16208\/feed\" style=\"color: #AAAAAA;font-weight: normal;text-decoration: none;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;\" target=\"_blank\">PYCON.LT<\/a><\/span> <\/p> <\/div> <hr> <p>Happy Pythoning!<br>This was PyCoder&rsquo;s Weekly Issue #728.<br><a href=\"https:\/\/pycoders.com\/issues\/728\/feed\">View in Browser \u00bb<\/a><\/p> <img src=\"https:\/\/pycoders.com\/issues\/728\/open\/feed\" width=\"1\" height=\"1\" alt> \n        <hr \/>\n        <p><em>[ Subscribe to \ud83d\udc0d PyCoder&rsquo;s Weekly \ud83d\udc8c \u2013 Get the best Python news, articles, and tutorials delivered to your inbox once a week <a href=\"https:\/\/pycoders.com\/?utm_source=pycoders&amp;utm_medium=feed&amp;utm_campaign=footer\">&gt;&gt; Click here to learn more<\/a> ]<\/em><\/p>\n      "}]}