CINXE.COM

Python Weekly

<!DOCTYPE html><html lang="en" class="h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="theme-color" content="#000000"/><script>window.__AppGlobals__={"SENTRY_CLIENT_DSN":"https://35c3cc890abe9dbb51e6e513fcd6bbca@o922922.ingest.us.sentry.io/4507170453979136","SENTRY_ENV":"production","SENTRY_RELEASE":"b93a106c394dabeb6e2986b898c97b46073491d6","STRIPE_PUBLISHABLE_KEY":"pk_live_51IekcQKHPFAlBzyyGNBguT5BEI7NEBqrTxJhsYN1FI1lQb9iWxU5U2OXfi744NEMx5p7EDXh08YXrudrZkkG9bGc00ZCrkXrxL","VAPID_PUBLIC_KEY":"BEhdtfPr1iefl9Jd16511ML4L5eC4dp4exGTAqE95rZEgjRPqc-k1FymD_b-e7XaC5g43hejZ0y_VGJq72zncjY","VITE_HUMAN_ENABLED":"true","VITE_HUMAN_URL":"//client.px-cloud.net/PXeBumDLwe/main.min.js","VITE_ADNETWORK_PIXELJS_URL":"https://beehiiv-adnetwork-production.s3.amazonaws.com/pixel-js.js"};</script><title>Python Weekly</title><meta content="programming, artificial intelligence, technology" name="keywords"/><meta content="Python Weekly" name="author"/><meta content="Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python." name="description"/><meta content="website" property="og:type"/><meta content="https://www.pythonweekly.com/" property="og:url"/><meta content="Python Weekly" property="og:title"/><meta content="Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python." property="og:description"/><meta content="Python Weekly" property="og:site_name"/><meta content="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" property="og:image"/><meta content="1200" property="og:image:width"/><meta content="630" property="og:image:height"/><meta content="Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python." property="og:image:alt"/><meta content="https://www.pythonweekly.com/" name="twitter:url"/><meta content="Python Weekly" name="twitter:title"/><meta content="Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python." name="twitter:description"/><meta content="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" name="twitter:image"/><meta content="summary_large_image" name="twitter:card"/><meta content="1932054120322754" name="fb:app_id"/><link href="https://www.pythonweekly.com/" rel="canonical"/><link as="image" href="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg" rel="icon"/><link href="https://fonts.googleapis.com/css2?family=Inter&amp;display=swap" rel="stylesheet"/><link as="style" href="https://fonts.googleapis.com/css2?family=Inter&amp;display=swap" rel="preload"/><script type="application/ld+json">{}</script><style>:root { --wt-primary-color: #030712; --wt-text-on-primary-color: #F9FAFB; --wt-secondary-color: #F9FAFB; --wt-text-on-secondary-color: #030712; --wt-tertiary-color: #FFFFFF; --wt-text-on-tertiary-color: #222222; --wt-background-color: #FFFFFF; --wt-text-on-background-color: #030712; --wt-subscribe-background-color: #FFFFFF; --wt-text-on-subscribe-background-color: #030712; --wt-header-font: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --wt-body-font: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --wt-button-font: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --wt-border-radius: 8px } .bg-wt-primary { background-color: var(--wt-primary-color); } .text-wt-primary { color: var(--wt-primary-color); } .border-wt-primary { border-color: var(--wt-primary-color); } .bg-wt-text-on-primary { background-color: var(--wt-text-on-primary-color); } .text-wt-text-on-primary { color: var(--wt-text-on-primary-color); } .border-wt-text-on-primary { border-color: var(--wt-text-on-primary-color); } .bg-wt-secondary { background-color: var(--wt-secondary-color); } .text-wt-secondary { color: var(--wt-secondary-color); } .border-wt-secondary { border-color: var(--wt-secondary-color); } .bg-wt-text-on-secondary { background-color: var(--wt-text-on-secondary-color); } .text-wt-text-on-secondary { color: var(--wt-text-on-secondary-color); } .border-wt-text-on-secondary { border-color: var(--wt-text-on-secondary-color); } .bg-wt-tertiary { background-color: var(--wt-tertiary-color); } .text-wt-tertiary { color: var(--wt-tertiary-color); } .border-wt-tertiary { border-color: var(--wt-tertiary-color); } .bg-wt-text-on-tertiary { background-color: var(--wt-text-on-tertiary-color); } .text-wt-text-on-tertiary { color: var(--wt-text-on-tertiary-color); } .border-wt-text-on-tertiary { border-color: var(--wt-text-on-tertiary-color); } .bg-wt-background { background-color: var(--wt-background-color); } .text-wt-background { color: var(--wt-background-color); } .border-wt-background { border-color: var(--wt-background-color); } .bg-wt-text-on-background { background-color: var(--wt-text-on-background-color); } .text-wt-text-on-background { color: var(--wt-text-on-background-color); } .border-wt-text-on-background { border-color: var(--wt-text-on-background-color); } .bg-wt-subscribe-background { background-color: var(--wt-subscribe-background-color); } .text-wt-subscribe-background { color: var(--wt-subscribe-background-color); } .border-wt-subscribe-background { border-color: var(--wt-subscribe-background-color); } .bg-wt-text-on-subscribe-background { background-color: var(--wt-text-on-subscribe-background-color); } .text-wt-text-on-subscribe-background { color: var(--wt-text-on-subscribe-background-color); } .border-wt-text-on-subscribe-background { border-color: var(--wt-text-on-subscribe-background-color); } .rounded-wt { border-radius: var(--wt-border-radius); } .wt-header-font { font-family: var(--wt-header-font); } .wt-body-font { font-family: var(--wt-body-font); } .wt-button-font { font-family: var(--wt-button-font); } input:focus { --tw-ring-color: transparent !important; } li a { word-break: break-word; } @media only screen and (max-width:667px) { .mob-stack { display: block !important; width: 100% !important; } .mob-w-full { width: 100% !important; } } </style><link rel="apple-touch-icon" href="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg"/><link rel="apple-touch-startup-image" href="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg"/><link rel="stylesheet" href="/assets/root-Bowg7DY3.css"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><script src="https://beehiiv-adnetwork-production.s3.amazonaws.com/pixel-js.js" async=""></script></head><body class="flex h-full flex-col bg-wt-background text-wt-text-on-background"><div class=""><div class="flex min-h-screen flex-col"><div></div><div id="_rht_toaster" style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"></div><nav class="px-4 sm:px-6 w-full py-2" style="background-color:#FFFFFF"><div class="mx-auto w-full max-w-6xl"><div class="mx-auto flex items-center justify-between"><div class="flex items-center space-x-2"><a class="rounded-lg transition:all px-2 py-1 hover:bg-black/5" data-discover="true" href="/"><div class="flex items-center space-x-2"><div class="h-8 w-8 overflow-hidden rounded-wt"><figure class="aspect-square relative h-full overflow-hidden w-full"><img class="absolute inset-0 h-full w-full object-cover" width="100" height="100" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg" alt="Python Weekly logo"/></figure></div><span style="color:#030712;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="sm:text-md wt-text-primary hidden text-sm md:block text-md font-regular font-ariel">Python Weekly</span></div></a><div class="opacity-0 block"><div class="z-20 flex gap-1"></div></div></div><div class="flex items-center space-x-2"><div class="flex items-center space-x-2"><button class="border font-medium shadow-sm wt-button-font inline-flex items-center disabled:bg-gray-400 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-offset-2 justify-center transition-colors rounded-wt px-4 py-2 text-sm border-gray-300 text-gray-700 bg-white shadow-md focus:ring-wt-primary !text-sm !font-semibold shadow-none" style="background:#F9FAFB;border:1px solid #E5E7EB;color:#030712;font-family:Inter">Login</button><a class="border font-medium shadow-sm wt-button-font inline-flex items-center disabled:bg-gray-400 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-offset-2 justify-center transition-colors rounded-wt px-4 py-2 text-sm border-wt-primary text-wt-text-on-primary bg-wt-primary disabled:border-gray-500 focus:ring-wt-primary whitespace-nowrap !text-sm !font-semibold shadow-none" style="background:#030712;border:1px solid #030712;color:#F9FAFB;font-family:Inter" data-discover="true" href="/subscribe">Join For Free!</a></div><div class="relative inline-block text-left" data-headlessui-state=""><button aria-label="Menu" class="rounded-full transition-all" id="headlessui-menu-button-:Rd5al:" type="button" aria-haspopup="menu" aria-expanded="false" data-headlessui-state=""><div class="mt-1.5 rounded hover:bg-black/5" style="color:#030712"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></div></button></div></div></div></div></nav><main class="flex-grow"><div style="background-color:#FFFFFF" class="min-h-screen overflow-x-hidden"><div class="relative py-8" style="background-color:#FFFFFF;background-position:center;background-repeat:no-repeat;background-size:cover"><div class="relative left-0 top-0 h-full w-full"><div class="px-4 sm:px-6"><div class="mx-auto w-full max-w-6xl"><div class="mx-auto mb-10 w-full max-w-2xl p-0 rounded-lg border" style="border-color:transparent;background-color:transparent"><div class="flex-start flex flex-col items-center py-2"><div class="mb-4 overflow-hidden rounded h-20 w-20"><figure class="aspect-square relative h-full overflow-hidden w-full"><img width="128" height="128" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly" class="absolute inset-0 h-full w-full object-cover"/></figure></div><div class="space-y-4"><div class="mx-auto w-full max-w-xl"><h1 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="w-full text-center text-4xl sm:text-5xl font-bold font-ariel"><p>Python Weekly</p></h1></div><div style="color:#030712;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="w-full text-center text-xl sm:text-2xl font-regular font-ariel"><p>Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python.</p></div></div></div><div class="mx-auto mt-4 max-w-sm sm:max-w-lg"><div class="flex w-full flex-col items-center"><form method="post" action="/create" class="group w-full rounded-wt bg-transparent"><input name="redirect_path" type="hidden" value="/"/><input name="sent_from_orchid" type="hidden" value="true"/><input name="fallback_path" type="hidden" value="/"/><input name="double_opt" type="hidden" value="true"/><input name="trigger_redirect" type="hidden" value="false"/><input hidden="" name="subscribe_error_message" value="Oops, something went wrong."/><input hidden="" name="subscribe_success_message" value="Please check your email to confirm your subscription."/><div class="flex flex-col"><div style="background-color:#F9FAFB;border:none" class="flex w-full flex-col items-center sm:flex-row overflow-hidden p-1 rounded-lg"><div class="flex w-full items-center" style="background-color:#F9FAFB"><input type="email" name="email" autoComplete="email" required="" style="font-family:Inter;color:#111827" class="wt-button-font z-10 w-full border-none bg-transparent placeholder-shown:text-ellipsis text-lg focus:text-lg active:text-lg sm:text-lg" placeholder="Enter Your Email"/></div><input type="submit" style="background-color:#030712;color:#F9FAFB;font-family:Inter" class="cursor-pointer px-5 py-3 font-semibold w-full sm:w-auto text-lg focus:text-lg active:text-lg sm:text-lg rounded-md" value="Subscribe"/></div></div></form></div></div></div><div class="flex flex-wrap items-end justify-between gap-4"></div></div></div></div></div><div class="px-4 sm:px-6 mx-auto w-full max-w-6xl"><div class="mx-auto w-full max-w-6xl"><div id="header-ad-placement"></div></div></div><div class="px-4 sm:px-6"><div class="mx-auto w-full max-w-6xl"><div class="mb-0 lg:mb-16"></div></div></div><div class="px-4 sm:px-6 pt-0"><div class="mx-auto w-full max-w-6xl"><div class="grid w-full grid-cols-12"><div class="order-last col-span-12 pb-4 pt-2 lg:order-first mb-8"><div><div class="mb-4"><div class="flex flex-col space-y-0"><h4 style="font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="text-3xl sm:text-4xl font-bold wt-header-font">Archive</h4></div></div><div class="mb-8"><div class="relative w-full pb-4"><div class="group relative w-full transition-all"><div class="absolute left-2 top-1/2 -translate-y-1/2 transform"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" style="color:#111827" class="h-4 w-4"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"></path></svg></div><input type="text" name="q" id="q" style="color:#111827;border:1px solid #F9FAFB;background-color:#F9FAFB" class="rounded-lg w-full max-w-none pl-8 sm:max-w-4xl" placeholder="Search posts..." value=""/></div></div><div class="mb-2 flex flex-wrap gap-2"></div></div><div class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3"><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-693-april-3-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 693 April 3 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-693-april-3-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-04-03T15:00:00.000Z">Apr 03, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 693 April 3 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-692-march-27-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 692 March 27 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-692-march-27-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-03-27T15:00:00.000Z">Mar 27, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 692 March 27 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-691-march-20-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 691 March 20 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-691-march-20-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-03-20T15:00:00.000Z">Mar 20, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 691 March 20 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-690-march-13-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 690 March 13 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-690-march-13-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-03-13T15:00:00.000Z">Mar 13, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 690 March 13 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-689-march-6-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 689 March 6 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-689-march-6-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-03-06T16:00:00.000Z">Mar 06, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 689 March 6 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-688-february-27-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 688 February 27 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-688-february-27-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-02-27T16:00:00.000Z">Feb 27, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 688 February 27 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-687-february-13-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 687 February 13 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-687-february-13-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-02-13T16:00:00.000Z">Feb 13, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 687 February 13 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-686-february-6-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 686 February 6 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-686-february-6-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-02-06T16:00:00.000Z">Feb 06, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 686 February 6 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-685-january-30-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 685 January 30 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-685-january-30-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-01-30T16:00:00.000Z">Jan 30, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 685 January 30 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-684-january-23-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 684 January 23 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-684-january-23-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-01-23T16:00:00.000Z">Jan 23, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 684 January 23 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-683-january-16-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 683 January 16 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-683-january-16-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-01-16T16:00:00.000Z">Jan 16, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 683 January 16 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div><div class="transparent h-full cursor-pointer overflow-hidden rounded-lg flex flex-col"><div class="relative w-full"><div class="flex items-center gap-1 absolute left-4 top-4 z-10"></div><a class="" data-discover="true" href="/p/python-weekly-issue-682-january-9-2025"><div class="w-full rounded-lg overflow-hidden"><figure class="aspect-social relative h-full overflow-hidden w-full"><img loading="eager" width="800" height="421" src="https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg" alt="Python Weekly (Issue 682 January 9 2025)" class="absolute inset-0 h-full w-full object-cover"/></figure></div></a></div><div class="w-full p-3"><div class="space-y-3"><a class="" data-discover="true" href="/p/python-weekly-issue-682-january-9-2025"><div class="space-y-2"><div class="flex flex-wrap-reverse items-center justify-between"><div class="flex items-center space-x-1"><span style="color:#1F2937;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="!text-xs text-gray-600 text-xs sm:text-sm font-light wt-body-font"><time dateTime="2025-01-09T16:00:00.000Z">Jan 09, 2025</time></span></div><div class="flex items-center space-x-3"><span style="color:#1F2937" class="flex items-center space-x-0.5 text-sm font-regular font-ariel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="h-4 w-4"><path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"></path></svg></span></div></div><div class="cursor-pointer space-y-1"><h2 style="color:#111827;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="line-clamp-2 hover:underline sm:line-clamp-3 text-lg sm:text-xl font-semibold wt-header-font">Python Weekly (Issue 682 January 9 2025)</h2></div></div></a><a class="group flex flex-col items-start space-x-0 space-y-1 sm:flex-row sm:items-center sm:space-x-2 sm:space-y-0" data-discover="true" href="/authors"><div class="flex -space-x-1.5 overflow-hidden"><div class="h-7 w-7 rounded-full"><img class="inline-block h-7 w-7 rounded-full" src="https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png" alt="Rahul Chaudhary" style="border:1px solid #ffffff"/></div></div><div class="flex items-center"><span style="color:#0C4A6E;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="group-hover:underline text-xs sm:text-sm font-semibold wt-body-font">Rahul Chaudhary</span></div></a></div></div></div></div><div class="col-span-12 mx-auto mt-12 grid grid-cols-4 grid-rows-2 items-center gap-3 px-4 py-4 pb-8 sm:flex sm:justify-center"><div class="wt-button-font order-2 col-span-2 flex justify-end gap-2"><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary pointer-events-none cursor-not-allowed opacity-40" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=1">First</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary pointer-events-none cursor-not-allowed opacity-40" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=0"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="rotate-180 transform" height="16px"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"></path></svg>Back</a></div><div class="order-1 col-span-4 flex justify-center gap-3 sm:order-2"><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#F9FAFB;border:1px solid #E5E7EB;background-color:#030712" data-discover="true" href="/archive?page=1">1</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=2">2</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=3">3</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=4">4</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=5">5</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=6">6</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=7">7</a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=8">8</a></div><div class="wt-button-font order-2 col-span-2 flex items-center gap-2"><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=2">Next<!-- --> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" height="16px"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"></path></svg></a><a class="rounded-lg flex items-center gap-2 border border-transparent px-3 py-1 transition duration-150 ease-in-out hover:border-wt-primary" style="color:#030712;border:1px solid #E5E7EB;background-color:#F9FAFB" data-discover="true" href="/archive?page=30">Last</a></div></div></div></div></div></div></div></div></main><footer class="px-4 sm:px-6 py-8" style="background-color:#030712"><div class="mx-auto w-full max-w-6xl"><div class="flex flex-col gap-y-6"><div class="grid grid-cols-1 gap-y-6 sm:grid-cols-3"><div class="sm:px-6"><div class="flex w-full flex-col items-center sm:items-start"><div class="flex items-center gap-x-2 py-4"><img src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg" alt="Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python." width="40" height="40" class="overflow-hidden"/><p style="color:#F9FAFB;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="text-md font-semibold font-ariel">Python Weekly</p></div><div class="text-center sm:text-left"><p style="color:#F9FAFB;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="text-sm font-regular font-ariel">Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python.</p></div></div></div><div class="mx-auto hidden sm:flex sm:flex-row w-1/2"><div class="flex grow basis-0 flex-col gap-y-3"><p style="color:#F9FAFB;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="text-xs sm:text-sm font-semibold font-ariel">Home</p><div class="flex flex-col gap-y-2"><a class="sm:max-w-36 sm:text-wrap" data-discover="true" href="/"><p style="color:#F9FAFB;font-family:Inter, sans-ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,&quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" class="text-xs sm:text-sm font-regular font-ariel">Posts</p></a></div></div></div><div class="flex flex-col items-center gap-y-4 sm:items-start sm:px-6"><div class="flex w-full flex-col items-center"><form method="post" action="/create" class="group w-full rounded-wt bg-transparent"><input name="redirect_path" type="hidden" value="/"/><input name="sent_from_orchid" type="hidden" value="true"/><input name="fallback_path" type="hidden" value="/"/><input name="double_opt" type="hidden" value="true"/><input name="trigger_redirect" type="hidden" value="false"/><input hidden="" name="subscribe_error_message" value="Oops, something went wrong."/><input hidden="" name="subscribe_success_message" value="Please check your email to confirm your subscription."/><div class="flex flex-col"><div style="background-color:#F9FAFB;border:none" class="flex w-full flex-col items-center sm:flex-row overflow-hidden p-1 rounded-lg"><div class="flex w-full items-center" style="background-color:#F9FAFB"><input type="email" name="email" autoComplete="email" required="" style="font-family:Inter;color:#111827" class="wt-button-font z-10 w-full border-none bg-transparent placeholder-shown:text-ellipsis text-lg focus:text-lg active:text-lg sm:text-lg" placeholder="Enter Your Email"/></div><input type="submit" style="background-color:#030712;color:#F9FAFB;font-family:Inter" class="cursor-pointer px-5 py-3 font-semibold w-full sm:w-auto text-lg focus:text-lg active:text-lg sm:text-lg rounded-md" value="Subscribe"/></div></div></form></div><div class="flex flex-wrap items-center justify-center gap-2 sm:items-start sm:justify-start"></div></div></div><div class="flex w-full flex-col items-center gap-y-4 sm:flex-row sm:justify-between sm:px-6"><div class="w-full text-center sm:w-1/2 sm:text-left"><p style="color:#F9FAFB" class="!text-xs text-md font-light font-ariel">漏 2025 Python Weekly.</p></div><div class="flex w-full flex-col items-center gap-y-4 sm:w-1/2 sm:flex-row sm:justify-end sm:gap-x-4"><div class="flex gap-x-2 sm:gap-x-5"><a href="https://beehiiv.com/privacy" target="_blank" class="whitespace-nowrap underline underline-offset-1 hover:opacity-80" rel="noreferrer" style="color:#F9FAFB"><p style="color:#F9FAFB" class="!text-xs text-md font-light font-ariel">Privacy Policy</p></a><a href="https://beehiiv.com/tou" target="_blank" class="whitespace-nowrap underline underline-offset-1 hover:opacity-80" rel="noreferrer" style="color:#F9FAFB"><p style="color:#F9FAFB" class="!text-xs text-md font-light font-ariel">Terms of Use</p></a></div><div class="w-fit"><span class="text-gray-700 text-md font-regular"><a target="_blank" rel="noreferrer" href="https://www.beehiiv.com/?utm_source=Python Weekly&amp;utm_medium=footer" class="extra-light flex items-center rounded border border-gray-300 bg-white px-3 py-2 text-xs"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="mr-2 h-4 w-4" viewBox="0 0 30 30"><path fill="#0B0D2A" d="M25.692 13.168H3.866c-.556 0-1.01-.458-1.01-1.017V10.6c0-1.755 1.414-3.178 3.157-3.178H23.52c1.743 0 3.157 1.423 3.157 3.177v1.55a.98.98 0 0 1-.985 1.018ZM21.092 5.745H8.462a1.044 1.044 0 0 1-1.036-1.042C7.426 2.11 9.523 0 12.099 0h5.356c2.576 0 4.673 2.11 4.673 4.703 0 .584-.455 1.042-1.036 1.042ZM26.702 14.845H2.855C1.288 14.845 0 16.142 0 17.718c0 1.576 1.288 2.872 2.855 2.872h8.462c.303-1.627 1.718-2.872 3.436-2.872a3.532 3.532 0 0 1 3.46 2.872h8.463c1.567 0 2.855-1.296 2.855-2.872 0-1.576-1.263-2.873-2.83-2.873ZM25.663 22.268h-7.401v5.745h5.557c1.567 0 2.855-1.297 2.855-2.873v-1.83a1.006 1.006 0 0 0-1.01-1.042ZM3.864 22.268c-.556 0-1.036.457-1.036 1.042v1.83c0 1.576 1.288 2.873 2.855 2.873h5.557v-5.745H3.864Z"></path></svg><span class="text-gray-700 text-md font-regular">Powered by beehiiv</span></a></span></div></div></div></div></div></footer></div></div><script>((STORAGE_KEY, restoreKey) => { if (!window.history.state || !window.history.state.key) { let key = Math.random().toString(32).slice(2); window.history.replaceState({ key }, ""); } try { let positions = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || "{}"); let storedY = positions[restoreKey || window.history.state.key]; if (typeof storedY === "number") { window.scrollTo(0, storedY); } } catch (error) { console.error(error); sessionStorage.removeItem(STORAGE_KEY); } })("positions", null)</script><link rel="modulepreload" href="/assets/manifest-b45be612.js"/><link rel="modulepreload" href="/assets/entry.client-u_HpKf0S.js"/><link rel="modulepreload" href="/assets/jsx-runtime-Cf8x2fCZ.js"/><link rel="modulepreload" href="/assets/dayjs.min-By0gEVcE.js"/><link rel="modulepreload" href="/assets/performance--NEEPFzJ.js"/><link rel="modulepreload" href="/assets/index-CnhpwU98.js"/><link rel="modulepreload" href="/assets/AppGlobals-CCvI5bTR.js"/><link rel="modulepreload" href="/assets/i18next-BGmvVs3U.js"/><link rel="modulepreload" href="/assets/components-MUvJN_Vi.js"/><link rel="modulepreload" href="/assets/context-D-2EtPe0.js"/><link rel="modulepreload" href="/assets/index-yBjzXJbu.js"/><link rel="modulepreload" href="/assets/index-BHkt3zb0.js"/><link rel="modulepreload" href="/assets/index-B4P2qLrl.js"/><link rel="modulepreload" href="/assets/index-C1HsH3Xv.js"/><link rel="modulepreload" href="/assets/useTranslation-CMWGipsT.js"/><link rel="modulepreload" href="/assets/index-DtClww1U.js"/><link rel="modulepreload" href="/assets/index-B_xe7MBA.js"/><link rel="modulepreload" href="/assets/index-DfxmtkDy.js"/><link rel="modulepreload" href="/assets/WebThemeContext-FsIy-vr7.js"/><link rel="modulepreload" href="/assets/PoweredByBeehiiv-DxMKwUNr.js"/><link rel="modulepreload" href="/assets/CreateAction-BHCalnac.js"/><link rel="modulepreload" href="/assets/popover-Bxg2GWS2.js"/><link rel="modulepreload" href="/assets/useIsLoggedIn-DLyBBDcB.js"/><link rel="modulepreload" href="/assets/YoutubeIcon-CJe8iYPn.js"/><link rel="modulepreload" href="/assets/Image-BgM8QS0f.js"/><link rel="modulepreload" href="/assets/index-D1H9sqQ-.js"/><link rel="modulepreload" href="/assets/index-DHTM2fGq.js"/><link rel="modulepreload" href="/assets/index-76jK7shb.js"/><link rel="modulepreload" href="/assets/XMarkIcon-MMkJNPmE.js"/><link rel="modulepreload" href="/assets/transition-DXtNuaf8.js"/><link rel="modulepreload" href="/assets/useSetLastViewedResource-CFB869gR.js"/><link rel="modulepreload" href="/assets/index-DcpNk-OI.js"/><link rel="modulepreload" href="/assets/ChevronDownIcon-CJAot4nw.js"/><link rel="modulepreload" href="/assets/XMarkIcon-Durbfwvh.js"/><link rel="modulepreload" href="/assets/dialog-DueC5Y5o.js"/><link rel="modulepreload" href="/assets/index-CxzkuDoV.js"/><link rel="modulepreload" href="/assets/PageProvider-DJ36AOM3.js"/><link rel="modulepreload" href="/assets/index-Da2q5lFc.js"/><link rel="modulepreload" href="/assets/useIsMobile-cLAehecu.js"/><link rel="modulepreload" href="/assets/disclosure-0Zsl9srF.js"/><link rel="modulepreload" href="/assets/SparklesIcon-DQAb4AId.js"/><link rel="modulepreload" href="/assets/useSignupRedirects-BRqZgvvc.js"/><link rel="modulepreload" href="/assets/CheckIcon-D6YEfQzK.js"/><link rel="modulepreload" href="/assets/useTypedLoaderData-wt0nERwK.js"/><link rel="modulepreload" href="/assets/useWebBuilderCommunicator-Dxwkq0s0.js"/><link rel="modulepreload" href="/assets/StatusInputs-C2fwlicj.js"/><link rel="modulepreload" href="/assets/useToast-Z33VfwyX.js"/><link rel="modulepreload" href="/assets/use-root-containers-vZUxTWOC.js"/><link rel="modulepreload" href="/assets/keyboard-DGYiofhD.js"/><link rel="modulepreload" href="/assets/hidden-DMDDffAz.js"/><link rel="modulepreload" href="/assets/bugs-D7qcOA8r.js"/><link rel="modulepreload" href="/assets/use-is-mounted-CLLClO16.js"/><link rel="modulepreload" href="/assets/use-tree-walker-B-0Ld7D_.js"/><link rel="modulepreload" href="/assets/LoginWithPasswordAction-Bc7FCaWl.js"/><link rel="modulepreload" href="/assets/usePublication-Dyad7v54.js"/><link rel="modulepreload" href="/assets/Input-DuHNcmkM.js"/><link rel="modulepreload" href="/assets/RedirectToHiddenInput-DwARamz-.js"/><link rel="modulepreload" href="/assets/description-DeO2P9h5.js"/><link rel="modulepreload" href="/assets/index-CSFWhkXZ.js"/><link rel="modulepreload" href="/assets/root-fOYt8cUy.js"/><link rel="modulepreload" href="/assets/index-Djgea4my.js"/><link rel="modulepreload" href="/assets/index-B0ssoKgt.js"/><link rel="modulepreload" href="/assets/ChevronRightIcon-BisdA8W9.js"/><link rel="modulepreload" href="/assets/ArrowLeftIcon-CLtL19Yy.js"/><link rel="modulepreload" href="/assets/index-DJhTZp2H.js"/><link rel="modulepreload" href="/assets/FreeGatedContent-BLPnkaTm.js"/><link rel="modulepreload" href="/assets/index-DTnEVzph.js"/><link rel="modulepreload" href="/assets/index-DA1hdeBh.js"/><link rel="modulepreload" href="/assets/relativeTime-DdZlBsJ9.js"/><link rel="modulepreload" href="/assets/HeroChatIcon-DUUHomXd.js"/><link rel="modulepreload" href="/assets/LockClosedIcon-ntWxtlG2.js"/><link rel="modulepreload" href="/assets/useDebounce-C9BMXqrQ.js"/><link rel="modulepreload" href="/assets/MagnifyingGlassIcon-BjJxTX8i.js"/><link rel="modulepreload" href="/assets/index-DJp8c0E5.js"/><script>window.__remixContext = {"basename":"/","future":{"v3_fetcherPersist":false,"v3_relativeSplatPath":false,"v3_throwAbortReason":false,"v3_routeConfig":false,"v3_singleFetch":false,"v3_lazyRouteDiscovery":false,"unstable_optimizeDeps":false},"isSpaMode":false,"state":{"loaderData":{"root":{"canShowCookieBanner":true,"publication":{"id":"0dfe72e1-380f-4399-a50e-134919512092","name":"Python Weekly","description":"Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python.","tags":[{"id":60,"name":"programming","created_at":"2021-06-15T00:05:24.089Z","updated_at":"2021-06-15T00:05:24.089Z"},{"id":90,"name":"artificial intelligence","created_at":"2021-06-15T00:05:24.893Z","updated_at":"2021-06-15T00:05:24.893Z"},{"id":98,"name":"technology","created_at":"2021-06-15T00:05:25.036Z","updated_at":"2021-06-15T00:05:25.036Z"}],"url":"https://www.pythonweekly.com/","web_theme":{"primary_color":"#030712","text_on_primary_color":"#F9FAFB","secondary_color":"#F9FAFB","text_on_secondary_color":"#030712","tertiary_color":"#FFFFFF","text_on_tertiary_color":"#222222","background_color":"#FFFFFF","text_on_background_color":"#030712","subscribe_background_color":"#FFFFFF","text_on_subscribe_background_color":"#030712","subscribe_theme":"light","content_theme":"light","border_style":"round","border_radius":"8px","border_color":"#E5E7EB","header_font":"Inter","body_font":"Inter","button_font":"Inter","logo_shadow":"md","post_page_custom_css":"","name":null,"purpose":"web","owner_id":"0dfe72e1-380f-4399-a50e-134919512092"},"cta_text":"Join For Free!","copyright_text":"","noindex_enabled":false,"double_opt_required":true,"premium_enabled":false,"premium_offering_name":"Premium Membership","premium_summary":null,"premium_features":[],"stripe_user_id":null,"facebook_url":null,"instagram_url":null,"linkedin_url":null,"tiktok_url":null,"twitter_url":null,"youtube_url":null,"discord_url":null,"threads_url":null,"tiktok_pixel":null,"facebook_pixel":null,"google_analytics_4_pixel":null,"twitter_pixel":null,"google_analytics_pixel":null,"gtm_pixel":null,"gsc_verification_code":null,"post_subscribe_form_id":null,"post_unsubscribe_form_id":null,"email_sender_name":"Python Weekly","render_authors_widget":true,"render_breadcrumbs":true,"render_pagination":true,"enable_cookie_banner":null,"enable_signup_confirmation":null,"terms_of_service":null,"has_referral_program":true,"has_recommendations":false,"beehiiv_branding":true,"has_polls":true,"stripe_payment_method_domain_enabled":false,"has_pages":true,"language":"en","configured_domain":"www.pythonweekly.com","has_live_web_posts":true,"has_web_builder_v2":true,"has_landing_pages":true,"has_upgrade_page":true,"has_subscriber_preferences":true,"has_subscription_password":true,"private":false,"require_subscriber_approval":false,"subscriber_tax_id_collection_enabled":false,"one_time_password_enabled":false,"thumbnail":{"url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg"},"web_template":{"id":475810,"theme":"default","post_padding":"15px","enable_featured_post_badges":false,"enable_recommended_reading":true,"enable_customize_category_ids":false,"enable_recommendations":false,"enable_recaptcha":true,"category_ids":[],"signup_flow":[{"id":1,"title":"Recommendations Page","href":"/subscribe?recommendations=true","managed_type":"recommendations","enabled":false,"full_url":"https://www.pythonweekly.com/subscribe?recommendations=true","action_text":"Remove","modal_header":"Remove any recommendations or boosts first!","modal_body":"To remove this page from your subscribe flow, you will need to make sure you have removed any active recommendations or boosts you currently have set up.","page_message":""},{"id":2,"title":"Subscribe Survey","href":"/forms/","managed_type":"survey","enabled":false,"full_url":"https://www.pythonweekly.com/forms/","action_text":"Remove","modal_header":"Remove Survey","modal_body":"This will remove the survey that users see after subscribing. You can always add it back later.","page_message":""},{"id":3,"title":"Upgrade Page","href":"/upgrade","managed_type":"upgrade","enabled":false,"full_url":"https://www.pythonweekly.com/upgrade","action_text":"Remove","modal_header":"Remove Upgrade Redirect","modal_body":"This will remove the Upgrade Page from the subscribe flow. Not to worry, the Upgrade Page will still be live and available on your site and you can always add it back to the subscribe flow later.","page_message":""},{"id":4,"title":"Multi Pubs","href":"/publications","managed_type":"publications","enabled":false,"full_url":"https://www.pythonweekly.com/publications","action_text":"Remove","modal_header":"Remove Multi Publications","modal_body":"This will remove Multi Publications from the subscribe flow. Not to worry, the page will still be live and available on your site and you can always add it back to the subscribe flow later.","page_message":""},{"id":5,"title":"Home Page","href":"","managed_type":"custom","enabled":false,"full_url":"","action_text":"Remove","modal_header":"Remove Custom Redirect","modal_body":"This will remove the custom redirect. When users complete the subscribe flow they will now be sent to the default home page. You can always add this back later.","page_message":""}],"multi_pub_ids":[],"author_ids":[],"signup_flow_messaging":{"success_message":"Thanks for subscribing!","subscribe_survey_message":"","upgrade_message":"","recommendations_message":"","multi_pubs_message":""},"logged_subscribe_form":true,"signup_flow_avatar_url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg","external_upgrade_page_href":null,"comments_ordering":"desc","notifications_enabled":false,"pwa_enabled":false,"one_time_password_enabled":true,"web_theme":{"color_primary":"#030712","color_text_on_primary":"#F9FAFB","color_secondary":"#F9FAFB","color_text_on_secondary":"#030712","color_background":"#FFFFFF","color_border":"#E5E7EB","color_link":"#0C4A6E","color_overline_text":"#1F2937","color_heading":"#111827","color_body":"#030712","color_underline_text":"#1F2937","shadow":null,"radius":"lg","font_header":"Inter","font_body":"Inter","font_button":"Inter","navbar_template":"template-1","navbar_background_color":"#FFFFFF","navbar_text_color":"#030712","navbar_button_primary_background_color":"#030712","navbar_button_primary_text_color":"#F9FAFB","navbar_button_primary_border_color":"#030712","navbar_button_primary_shadow":"","navbar_button_secondary_background_color":"#F9FAFB","navbar_button_secondary_text_color":"#030712","navbar_button_secondary_border_color":"#E5E7EB","navbar_button_secondary_shadow":"","navbar_login_button_desktop_enabled":true,"navbar_font_family":"Inter","navbar_logo_width":"14px","subscribe_widget_template":"template-1","subscribe_widget_button_background_color":"#030712","subscribe_widget_button_border_color":null,"subscribe_widget_button_text_color":"#F9FAFB","subscribe_widget_font_family":"Inter","subscribe_widget_button_font_family":"Inter","subscribe_widget_border_enabled":false,"subscribe_widget_email_icon_enabled":false,"subscribe_widget_border_color":"#030712","subscribe_widget_body_color":"#111827","subscribe_widget_cta_text":"Subscribe","subscribe_widget_placeholder_text":"Enter Your Email","post_page_background_color":"#FFFFFF","post_page_text_color":"#030712","post_page_custom_css":null,"posts_home_page_header_style":"default","post_background_fill_enabled":false,"post_background_color":"#FFFFFF","post_border_radius":"lg","post_border_color":"#E5E7EB","post_content_tags_enabled":true,"post_content_tags_background_color":"#082F49","post_content_tags_text_color":"#F9FAFB","post_insights_likes_comments_enabled":true,"post_insights_time_fields_enabled":true,"post_insights_color":"#1F2937","post_premium_badge_background_color":"#D1D5DB","post_premium_badge_text_color":"#030712","post_heading_font_family":"Inter","post_heading_font_color":"#111827","post_description_font_family":"Inter","post_description_font_color":"#030712","post_authors_font_color":"#0C4A6E","post_authors_show_image":true,"footer_background_color":"#030712","footer_text_color":"#F9FAFB","footer_logo_width":"100","footer_external_link_color":null,"footer_external_link_underline_color":null,"subscribe_widget_text_color":"#F9FAFB"},"global_fonts":["https://fonts.googleapis.com/css2?family=Inter\u0026display=swap"],"nav_groups":[]},"logo":{"url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","thumb":{"url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg"}},"content_tags":[],"authors":[],"rss_feeds":[]},"rootStyles":":root {\n --wt-primary-color: #030712;\n --wt-text-on-primary-color: #F9FAFB;\n\n --wt-secondary-color: #F9FAFB;\n --wt-text-on-secondary-color: #030712;\n\n --wt-tertiary-color: #FFFFFF;\n --wt-text-on-tertiary-color: #222222;\n\n --wt-background-color: #FFFFFF;\n --wt-text-on-background-color: #030712;\n\n --wt-subscribe-background-color: #FFFFFF;\n --wt-text-on-subscribe-background-color: #030712;\n\n --wt-header-font: \"Inter\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto,\"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --wt-body-font: \"Inter\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --wt-button-font: \"Inter\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n\n --wt-border-radius: 8px\n}\n\n.bg-wt-primary { background-color: var(--wt-primary-color); }\n.text-wt-primary { color: var(--wt-primary-color); }\n.border-wt-primary { border-color: var(--wt-primary-color); }\n\n.bg-wt-text-on-primary { background-color: var(--wt-text-on-primary-color); }\n.text-wt-text-on-primary { color: var(--wt-text-on-primary-color); }\n.border-wt-text-on-primary { border-color: var(--wt-text-on-primary-color); }\n\n.bg-wt-secondary { background-color: var(--wt-secondary-color); }\n.text-wt-secondary { color: var(--wt-secondary-color); }\n.border-wt-secondary { border-color: var(--wt-secondary-color); }\n\n.bg-wt-text-on-secondary { background-color: var(--wt-text-on-secondary-color); }\n.text-wt-text-on-secondary { color: var(--wt-text-on-secondary-color); }\n.border-wt-text-on-secondary { border-color: var(--wt-text-on-secondary-color); }\n\n.bg-wt-tertiary { background-color: var(--wt-tertiary-color); }\n.text-wt-tertiary { color: var(--wt-tertiary-color); }\n.border-wt-tertiary { border-color: var(--wt-tertiary-color); }\n\n.bg-wt-text-on-tertiary { background-color: var(--wt-text-on-tertiary-color); }\n.text-wt-text-on-tertiary { color: var(--wt-text-on-tertiary-color); }\n.border-wt-text-on-tertiary { border-color: var(--wt-text-on-tertiary-color); }\n\n.bg-wt-background { background-color: var(--wt-background-color); }\n.text-wt-background { color: var(--wt-background-color); }\n.border-wt-background { border-color: var(--wt-background-color); }\n\n.bg-wt-text-on-background { background-color: var(--wt-text-on-background-color); }\n.text-wt-text-on-background { color: var(--wt-text-on-background-color); }\n.border-wt-text-on-background { border-color: var(--wt-text-on-background-color); }\n\n.bg-wt-subscribe-background { background-color: var(--wt-subscribe-background-color); }\n.text-wt-subscribe-background { color: var(--wt-subscribe-background-color); }\n.border-wt-subscribe-background { border-color: var(--wt-subscribe-background-color); }\n\n.bg-wt-text-on-subscribe-background { background-color: var(--wt-text-on-subscribe-background-color); }\n.text-wt-text-on-subscribe-background { color: var(--wt-text-on-subscribe-background-color); }\n.border-wt-text-on-subscribe-background { border-color: var(--wt-text-on-subscribe-background-color); }\n\n.rounded-wt { border-radius: var(--wt-border-radius); }\n\n.wt-header-font { font-family: var(--wt-header-font); }\n.wt-body-font { font-family: var(--wt-body-font); }\n.wt-button-font { font-family: var(--wt-button-font); }\n\ninput:focus { --tw-ring-color: transparent !important; }\n\nli a { word-break: break-word; }\n\n@media only screen and (max-width:667px) {\n .mob-stack {\n display: block !important;\n width: 100% !important;\n }\n\n .mob-w-full {\n width: 100% !important;\n }\n}\n\n","isLoggedIn":false,"admin":null,"subscription":null,"isProdEnv":true,"facebookAppId":"1932054120322754","currentPath":"/","hasWebBuilderV2":true,"webThemev2":{"color_primary":"#030712","color_text_on_primary":"#F9FAFB","color_secondary":"#F9FAFB","color_text_on_secondary":"#030712","color_background":"#FFFFFF","color_border":"#E5E7EB","color_link":"#0C4A6E","color_overline_text":"#1F2937","color_heading":"#111827","color_body":"#030712","color_underline_text":"#1F2937","shadow":null,"radius":"lg","font_header":"Inter","font_body":"Inter","font_button":"Inter","navbar_template":"template-1","navbar_background_color":"#FFFFFF","navbar_text_color":"#030712","navbar_button_primary_background_color":"#030712","navbar_button_primary_text_color":"#F9FAFB","navbar_button_primary_border_color":"#030712","navbar_button_primary_shadow":"","navbar_button_secondary_background_color":"#F9FAFB","navbar_button_secondary_text_color":"#030712","navbar_button_secondary_border_color":"#E5E7EB","navbar_button_secondary_shadow":"","navbar_login_button_desktop_enabled":true,"navbar_font_family":"Inter","navbar_logo_width":"14px","subscribe_widget_template":"template-1","subscribe_widget_button_background_color":"#030712","subscribe_widget_button_border_color":null,"subscribe_widget_button_text_color":"#F9FAFB","subscribe_widget_font_family":"Inter","subscribe_widget_button_font_family":"Inter","subscribe_widget_border_enabled":false,"subscribe_widget_email_icon_enabled":false,"subscribe_widget_border_color":"#030712","subscribe_widget_body_color":"#111827","subscribe_widget_cta_text":"Subscribe","subscribe_widget_placeholder_text":"Enter Your Email","post_page_background_color":"#FFFFFF","post_page_text_color":"#030712","post_page_custom_css":null,"posts_home_page_header_style":"default","post_background_fill_enabled":false,"post_background_color":"#FFFFFF","post_border_radius":"lg","post_border_color":"#E5E7EB","post_content_tags_enabled":true,"post_content_tags_background_color":"#082F49","post_content_tags_text_color":"#F9FAFB","post_insights_likes_comments_enabled":true,"post_insights_time_fields_enabled":true,"post_insights_color":"#1F2937","post_premium_badge_background_color":"#D1D5DB","post_premium_badge_text_color":"#030712","post_heading_font_family":"Inter","post_heading_font_color":"#111827","post_description_font_family":"Inter","post_description_font_color":"#030712","post_authors_font_color":"#0C4A6E","post_authors_show_image":true,"footer_background_color":"#030712","footer_text_color":"#F9FAFB","footer_logo_width":"100","footer_external_link_color":null,"footer_external_link_underline_color":null,"subscribe_widget_text_color":"#F9FAFB"},"signupWidgetConfigs":{"template":"template-1","buttonBgColor":"#030712","buttonTextColor":"#F9FAFB","fontFamily":"Inter","buttonFontFamily":"Inter","buttonText":"Subscribe","placeholderBgColor":"#F9FAFB","placeholderText":"Enter Your Email","borderEnabled":false,"borderColor":"#030712","emailIconEnabled":false,"bodyTextColor":"#111827"},"isInitialLoadFromSwarm":false,"showLoggedInToast":false,"hostName":"www.pythonweekly.com","SENTRY_RELEASE":"b93a106c394dabeb6e2986b898c97b46073491d6"},"routes/index":{"requestUrl":"http://www.pythonweekly.com/","showExampleSite":false,"cardStyles":{"show_author_image":true,"bg_color":"","is_image_radius_applied":true,"border_color":"","text_color":"#111827","heading_font_family":"Inter","heading_font_color":"#111827","description_font_family":"Inter","description_font_color":"#030712","premium_bg_color":"#D1D5DB","premium_text_color":"#030712","timefields_enabled":true,"likes_comments_enabled":true,"timestamp_text_color":"#1F2937","likes_comments_color":"#1F2937","tags_enabled":true,"tags_bg_color":"#082F49","tags_text_color":"#F9FAFB","authors_text_color":"#0C4A6E","border_radius":"lg","font":"Inter"},"signupWidgetConfigs":{"template":"template-1","buttonBgColor":"#030712","buttonTextColor":"#F9FAFB","fontFamily":"Inter","buttonFontFamily":"Inter","buttonText":"Subscribe","placeholderBgColor":"#F9FAFB","placeholderText":"Enter Your Email","borderEnabled":false,"borderColor":"#030712","emailIconEnabled":false,"bodyTextColor":"#111827"},"paginatedPosts":{"pagination":{"page":1,"per_page":12,"total":353,"total_pages":30,"ids":null},"posts":[{"id":"61ea430c-9c4f-4212-acfa-84bda4a38879","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 693 April 3 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-04-03T15:00:00.000Z","slug":"python-weekly-issue-693-april-3-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 693 April 3 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 693 April 3 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 693 April 3 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":9,"estimated_reading_time_display":"9 minutes","paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-04-03T03:22:05Z","updated_at":"2025-04-03T15:00:32Z"},{"id":"0c04990a-33a6-4996-bc3e-d015a93d82be","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 692 March 27 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-03-27T15:00:00.000Z","slug":"python-weekly-issue-692-march-27-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 692 March 27 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 692 March 27 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 692 March 27 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":7,"estimated_reading_time_display":"7 minutes","paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-03-27T02:40:51Z","updated_at":"2025-03-27T15:00:55Z"},{"id":"588ca653-3f28-413b-ac33-6da4adbb8602","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 691 March 20 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-03-20T15:00:00.000Z","slug":"python-weekly-issue-691-march-20-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 691 March 20 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 691 March 20 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 691 March 20 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":8,"estimated_reading_time_display":"8 minutes","paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-03-20T01:29:25Z","updated_at":"2025-03-20T15:01:17Z"},{"id":"7a98c90c-bbe0-4686-95be-84defdd1c8bc","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 690 March 13 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-03-13T15:00:00.000Z","slug":"python-weekly-issue-690-march-13-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 690 March 13 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 690 March 13 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 690 March 13 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":7,"estimated_reading_time_display":"7 minutes","paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-03-13T03:47:20Z","updated_at":"2025-03-13T15:01:16Z"},{"id":"69365fd5-ab9b-4e32-a2f0-20ce2647f8bc","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 689 March 6 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-03-06T16:00:00.000Z","slug":"python-weekly-issue-689-march-6-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 689 March 6 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 689 March 6 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 689 March 6 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":6,"estimated_reading_time_display":"6 minutes","paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-03-06T05:11:53Z","updated_at":"2025-03-06T16:00:32Z"},{"id":"0fa5cb49-3667-4518-bf21-445fc71ab8e8","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 688 February 27 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-02-27T16:00:00.000Z","slug":"python-weekly-issue-688-february-27-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 688 February 27 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 688 February 27 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 688 February 27 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":10,"estimated_reading_time_display":"10 minutes","paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-02-27T04:22:33Z","updated_at":"2025-02-27T16:01:04Z"},{"id":"0a2056ca-5f26-42b3-99ad-58c4a4f9349f","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 687 February 13 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-02-13T16:00:00.000Z","slug":"python-weekly-issue-687-february-13-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 687 February 13 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 687 February 13 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 687 February 13 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":null,"estimated_reading_time_display":null,"paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-02-13T00:38:49Z","updated_at":"2025-02-13T16:00:46Z"},{"id":"8a90b210-076d-4aa3-bd25-a3170dca6606","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 686 February 6 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-02-06T16:00:00.000Z","slug":"python-weekly-issue-686-february-6-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 686 February 6 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 686 February 6 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 686 February 6 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":null,"estimated_reading_time_display":null,"paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-02-06T03:49:48Z","updated_at":"2025-02-06T16:01:51Z"},{"id":"b433c654-a14e-4af3-b455-5d59ec2f037f","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 685 January 30 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-01-30T16:00:00.000Z","slug":"python-weekly-issue-685-january-30-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 685 January 30 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 685 January 30 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 685 January 30 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":null,"estimated_reading_time_display":null,"paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-01-30T04:02:12Z","updated_at":"2025-01-30T16:00:57Z"},{"id":"5715fea2-5dfc-4387-9df7-ef2983b7c609","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 684 January 23 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-01-23T16:00:00.000Z","slug":"python-weekly-issue-684-january-23-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 684 January 23 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 684 January 23 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 684 January 23 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":null,"estimated_reading_time_display":null,"paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-01-23T04:11:01Z","updated_at":"2025-01-23T16:01:01Z"},{"id":"fdd5603e-a238-4376-9727-9887762068f5","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 683 January 16 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-01-16T16:00:00.000Z","slug":"python-weekly-issue-683-january-16-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 683 January 16 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 683 January 16 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 683 January 16 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":true,"enable_popup_on_scroll":false,"email_capture_title":"Subscribe to keep reading","email_capture_message":"This content is free, but you must be subscribed to Python Weekly to continue reading.","email_capture_cta":"Subscribe","estimated_reading_time":null,"estimated_reading_time_display":null,"paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-01-16T02:43:09Z","updated_at":"2025-01-16T16:00:35Z"},{"id":"ce1205e9-4ee5-4ca1-b038-3575a58f4d10","publication_id":"0dfe72e1-380f-4399-a50e-134919512092","web_title":"Python Weekly (Issue 682 January 9 2025)","web_subtitle":"","web_audiences":"free","status":"published","override_scheduled_at":"2025-01-09T16:00:00.000Z","slug":"python-weekly-issue-682-january-9-2025","is_premium":false,"image_url":"https://beehiiv-images-production.s3.amazonaws.com/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","meta_default_title":"Python Weekly (Issue 682 January 9 2025)","meta_default_description":"","meta_og_title":"Python Weekly (Issue 682 January 9 2025)","meta_og_description":"","meta_twitter_title":"Python Weekly (Issue 682 January 9 2025)","meta_twitter_description":"","audience":"free","comments_enabled":false,"comments_state":"disabled","enforce_gated_content":false,"enable_popup_on_scroll":true,"email_capture_title":"Enjoying this post?","email_capture_message":"Subscribe to get more content like this delivered to your inbox for free!","email_capture_cta":"Join For Free","estimated_reading_time":null,"estimated_reading_time_display":null,"paywall_id":null,"authors":[{"id":"a3e795cc-4369-49a2-9448-2995941ce086","name":"Rahul Chaudhary","profile_picture":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/profile_picture.png","thumb":{"url":"https://beehiiv-images-production.s3.amazonaws.com/static_assets/defaults/thumb_profile_picture.png"},"landscape":{"url":null}}}],"content_tags":[],"created_at":"2025-01-09T02:43:18Z","updated_at":"2025-01-10T06:45:07Z"}]},"publication":{"id":"0dfe72e1-380f-4399-a50e-134919512092","name":"Python Weekly","description":"Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python.","tags":[{"id":60,"name":"programming","created_at":"2021-06-15T00:05:24.089Z","updated_at":"2021-06-15T00:05:24.089Z"},{"id":90,"name":"artificial intelligence","created_at":"2021-06-15T00:05:24.893Z","updated_at":"2021-06-15T00:05:24.893Z"},{"id":98,"name":"technology","created_at":"2021-06-15T00:05:25.036Z","updated_at":"2021-06-15T00:05:25.036Z"}],"url":"https://www.pythonweekly.com/","web_theme":{"primary_color":"#030712","text_on_primary_color":"#F9FAFB","secondary_color":"#F9FAFB","text_on_secondary_color":"#030712","tertiary_color":"#FFFFFF","text_on_tertiary_color":"#222222","background_color":"#FFFFFF","text_on_background_color":"#030712","subscribe_background_color":"#FFFFFF","text_on_subscribe_background_color":"#030712","subscribe_theme":"light","content_theme":"light","border_style":"round","border_radius":"8px","border_color":"#E5E7EB","header_font":"Inter","body_font":"Inter","button_font":"Inter","logo_shadow":"md","post_page_custom_css":"","name":null,"purpose":"web","owner_id":"0dfe72e1-380f-4399-a50e-134919512092"},"cta_text":"Join For Free!","copyright_text":"","noindex_enabled":false,"double_opt_required":true,"premium_enabled":false,"premium_offering_name":"Premium Membership","premium_summary":null,"premium_features":[],"stripe_user_id":null,"facebook_url":null,"instagram_url":null,"linkedin_url":null,"tiktok_url":null,"twitter_url":null,"youtube_url":null,"discord_url":null,"threads_url":null,"tiktok_pixel":null,"facebook_pixel":null,"google_analytics_4_pixel":null,"twitter_pixel":null,"google_analytics_pixel":null,"gtm_pixel":null,"gsc_verification_code":null,"post_subscribe_form_id":null,"post_unsubscribe_form_id":null,"email_sender_name":"Python Weekly","render_authors_widget":true,"render_breadcrumbs":true,"render_pagination":true,"enable_cookie_banner":null,"enable_signup_confirmation":null,"terms_of_service":null,"has_referral_program":true,"has_recommendations":false,"beehiiv_branding":true,"has_polls":true,"stripe_payment_method_domain_enabled":false,"has_pages":true,"language":"en","configured_domain":"www.pythonweekly.com","has_live_web_posts":true,"has_web_builder_v2":true,"has_landing_pages":true,"has_upgrade_page":true,"has_subscriber_preferences":true,"has_subscription_password":true,"private":false,"require_subscriber_approval":false,"subscriber_tax_id_collection_enabled":false,"one_time_password_enabled":false,"thumbnail":{"url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg"},"web_template":{"id":475810,"theme":"default","post_padding":"15px","enable_featured_post_badges":false,"enable_recommended_reading":true,"enable_customize_category_ids":false,"enable_recommendations":false,"enable_recaptcha":true,"category_ids":[],"signup_flow":[{"id":1,"title":"Recommendations Page","href":"/subscribe?recommendations=true","managed_type":"recommendations","enabled":false,"full_url":"https://www.pythonweekly.com/subscribe?recommendations=true","action_text":"Remove","modal_header":"Remove any recommendations or boosts first!","modal_body":"To remove this page from your subscribe flow, you will need to make sure you have removed any active recommendations or boosts you currently have set up.","page_message":""},{"id":2,"title":"Subscribe Survey","href":"/forms/","managed_type":"survey","enabled":false,"full_url":"https://www.pythonweekly.com/forms/","action_text":"Remove","modal_header":"Remove Survey","modal_body":"This will remove the survey that users see after subscribing. You can always add it back later.","page_message":""},{"id":3,"title":"Upgrade Page","href":"/upgrade","managed_type":"upgrade","enabled":false,"full_url":"https://www.pythonweekly.com/upgrade","action_text":"Remove","modal_header":"Remove Upgrade Redirect","modal_body":"This will remove the Upgrade Page from the subscribe flow. Not to worry, the Upgrade Page will still be live and available on your site and you can always add it back to the subscribe flow later.","page_message":""},{"id":4,"title":"Multi Pubs","href":"/publications","managed_type":"publications","enabled":false,"full_url":"https://www.pythonweekly.com/publications","action_text":"Remove","modal_header":"Remove Multi Publications","modal_body":"This will remove Multi Publications from the subscribe flow. Not to worry, the page will still be live and available on your site and you can always add it back to the subscribe flow later.","page_message":""},{"id":5,"title":"Home Page","href":"","managed_type":"custom","enabled":false,"full_url":"","action_text":"Remove","modal_header":"Remove Custom Redirect","modal_body":"This will remove the custom redirect. When users complete the subscribe flow they will now be sent to the default home page. You can always add this back later.","page_message":""}],"multi_pub_ids":[],"author_ids":[],"signup_flow_messaging":{"success_message":"Thanks for subscribing!","subscribe_survey_message":"","upgrade_message":"","recommendations_message":"","multi_pubs_message":""},"logged_subscribe_form":true,"signup_flow_avatar_url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg","external_upgrade_page_href":null,"comments_ordering":"desc","notifications_enabled":false,"pwa_enabled":false,"one_time_password_enabled":true,"web_theme":{"color_primary":"#030712","color_text_on_primary":"#F9FAFB","color_secondary":"#F9FAFB","color_text_on_secondary":"#030712","color_background":"#FFFFFF","color_border":"#E5E7EB","color_link":"#0C4A6E","color_overline_text":"#1F2937","color_heading":"#111827","color_body":"#030712","color_underline_text":"#1F2937","shadow":null,"radius":"lg","font_header":"Inter","font_body":"Inter","font_button":"Inter","navbar_template":"template-1","navbar_background_color":"#FFFFFF","navbar_text_color":"#030712","navbar_button_primary_background_color":"#030712","navbar_button_primary_text_color":"#F9FAFB","navbar_button_primary_border_color":"#030712","navbar_button_primary_shadow":"","navbar_button_secondary_background_color":"#F9FAFB","navbar_button_secondary_text_color":"#030712","navbar_button_secondary_border_color":"#E5E7EB","navbar_button_secondary_shadow":"","navbar_login_button_desktop_enabled":true,"navbar_font_family":"Inter","navbar_logo_width":"14px","subscribe_widget_template":"template-1","subscribe_widget_button_background_color":"#030712","subscribe_widget_button_border_color":null,"subscribe_widget_button_text_color":"#F9FAFB","subscribe_widget_font_family":"Inter","subscribe_widget_button_font_family":"Inter","subscribe_widget_border_enabled":false,"subscribe_widget_email_icon_enabled":false,"subscribe_widget_border_color":"#030712","subscribe_widget_body_color":"#111827","subscribe_widget_cta_text":"Subscribe","subscribe_widget_placeholder_text":"Enter Your Email","post_page_background_color":"#FFFFFF","post_page_text_color":"#030712","post_page_custom_css":null,"posts_home_page_header_style":"default","post_background_fill_enabled":false,"post_background_color":"#FFFFFF","post_border_radius":"lg","post_border_color":"#E5E7EB","post_content_tags_enabled":true,"post_content_tags_background_color":"#082F49","post_content_tags_text_color":"#F9FAFB","post_insights_likes_comments_enabled":true,"post_insights_time_fields_enabled":true,"post_insights_color":"#1F2937","post_premium_badge_background_color":"#D1D5DB","post_premium_badge_text_color":"#030712","post_heading_font_family":"Inter","post_heading_font_color":"#111827","post_description_font_family":"Inter","post_description_font_color":"#030712","post_authors_font_color":"#0C4A6E","post_authors_show_image":true,"footer_background_color":"#030712","footer_text_color":"#F9FAFB","footer_logo_width":"100","footer_external_link_color":null,"footer_external_link_underline_color":null,"subscribe_widget_text_color":"#F9FAFB"},"global_fonts":["https://fonts.googleapis.com/css2?family=Inter\u0026display=swap"],"nav_groups":[]},"logo":{"url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/Python-Weekly-Square-Logo.jpg","thumb":{"url":"https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/0dfe72e1-380f-4399-a50e-134919512092/thumb_Python-Weekly-Square-Logo.jpg"}},"content_tags":[],"authors":[],"rss_feeds":[]},"featuredPosts":[],"homePage":{"id":"07e2a786-47df-47b5-baac-14585b5ffc65","main_bg_image_url":null,"general_section":{"theme":{"bg_color":"#FFFFFF","text_color":"#111827","body_color":"#030712","border_color":"#E5E7EB","accent_color":null,"font":"Inter","header_type":"default"},"header":{"width":"contained"}},"seo_section":{"title":"","description":""},"main_section":{"general":{"bg_color":"#FFFFFF","bg_gloss_color":"#ffffff","bg_gloss_opacity":"0","bg_size":"auto","bg_width":null,"bg_height":null},"content_container":{"border_radius":"lg","border_color":"transparent","border_width":"xs","padding":"none","border_sides":"all","bg_color":"transparent"},"logo":{"enabled":true,"shadow":null,"size":"md"},"headline":{"text":"Python Weekly","font":"Inter","size":"5xl","color":"#111827"},"description":{"text":"Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python.","font":"Inter","size":"2xl","color":"#030712"},"signup_widget":{"bg_color":"#030712","border_color":"#030712","text_color":"#F9FAFB","cta_text":"Subscribe","placeholder_text":"Enter Your Email","font":"Inter"},"authors_widget":{"enabled":true,"text_color":"#111827","dropdown_bg_color":"#FFFFFF","dropdown_text_color":"#030712","label":"","text":""},"social_widget":{"enabled":true,"text_color":"#111827","icons_bg_color":"#030712","icons_text_color":"#F9FAFB","label":""}},"widgets_section":{"widgets_enabled":[]},"posts_section":{"featured_sections":{"font":"Inter","featured_posts_label":"Featured Posts","featured_posts_description":"","featured_posts":true,"latest_posts_label":"Latest Posts","latest_posts_description":"","latest_posts":true,"category_posts":[]},"archive":{"layout":"grid","load_more_posts_type":"pagination","header_text_color":null,"show_archive_header":true,"header_text":null,"font_size":"4xl","button_bg_color":"#F9FAFB","button_text_color":"#030712","button_active_bg_color":"#030712","button_active_text_color":"#F9FAFB"},"card":{"fill_enabled":false,"bg_color":"#FFFFFF","border_color":"#E5E7EB","text_color":"#111827","body_text_color":"#030712","premium_text_color":"#030712","premium_bg_color":"#D1D5DB","authors_text_color":"#0C4A6E","timestamp_text_color":"#1F2937","tags_enabled":true,"tags_bg_color":"#082F49","tags_text_color":"#F9FAFB","border_radius":"lg","shadow":"none","hover_shadow":"none","hover_underline":"none","heading_font":"Inter","font":"Inter"}},"renderable_fonts":["https://fonts.googleapis.com/css2?family=Inter\u0026display=swap"]},"metaTitle":"Python Weekly","metaDescription":"Get the best hand curated news, articles, new releases, tools and libraries, events etc related to Python.","isInitialLoadFromSwarm":false,"hasWebThemesEnabled":true,"isDraft":false}},"actionData":null,"errors":null}};</script><script type="module" async="">import "/assets/manifest-b45be612.js"; import * as route0 from "/assets/root-fOYt8cUy.js"; import * as route1 from "/assets/index-DJp8c0E5.js"; window.__remixRouteModules = {"root":route0,"routes/index":route1}; import("/assets/entry.client-u_HpKf0S.js");</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'92d36f725f08ff87',t:'MTc0NDEzMjgyNi4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10