<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Pycon on BlueberryPy</title><description>Recent content in Pycon on BlueberryPy</description><link>https://blueberrypy.netlify.app/tags/pycon/</link><language>en-us</language><item><title>This Month for Pythonistas - September 2026</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-09/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-09/</guid><description>&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(date.today().year, date.today().month)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# 2026 9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2026-09&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;719&quot; src=&quot;/_astro/splash.BUoIKTok_2k1zW0.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! This is the September 2026 issue of “This Month for Pythonistas”, curating Python news, tutorials, articles, podcasts, repositories and community highlights for this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across the following platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberry-py.github.io/blog/post/this-month-for-pythonistas-2026-09/&quot;&gt;Github Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-09/&quot;&gt;Netlify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.onrender.com/post/this-month-for-pythonistas-2026-09/&quot;&gt;Render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy-blog.vercel.app/post/this-month-for-pythonistas-2026-09/&quot;&gt;Vercel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.blueberrypy.workers.dev/post/this-month-for-pythonistas-2026-09/&quot;&gt;Cloudflare&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ready? Let’s get started!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;events--social&quot;&gt;Events &amp;amp; Social&lt;/h2&gt;
&lt;h3 id=&quot;risc-v-is-now-officially-supported-by-cpython&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/08/riscv-now-officially-supported/&quot;&gt;RISC-V is now officially supported by CPython!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;CPython now officially supports RISC‑V as a tier‑3 platform, thanks to months of community work and RISE project hardware. Contributors fixed architecture‑specific issues, improved builds, and added testing on real hardware. Ongoing CI integration and potential tier‑2 promotion are planned, plus architecture‑specific optimizations. Users with RISC‑V hardware are encouraged to build CPython, run workloads, and report issues to help improve support.&lt;/p&gt;
&lt;h3 id=&quot;gpt-61-sol&quot;&gt;&lt;a href=&quot;https://openai.com/index/introducing-gpt-6-1-sol/&quot;&gt;GPT-6.1 Sol&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;OpenAI introduced GPT‑6.1 Sol, an upgraded version of GPT‑6 Sol tuned for agentic coding, computer use and professional work, delivering performance close to flagship GPT‑6 Astra at roughly one‑fifth the price ($2/$10 per million input/output tokens, $0.10 cached). It gains +6.4 points on DeepSWE, beats Opus 5.5 on GDP.pdf and AutomationBench at far lower cost, improves OSWorld 2.0 by 7 points, more than doubles Terminal‑Bench Science scores, and lowers factual‑error rate to 4.1%, with stronger alignment.&lt;/p&gt;
&lt;h3 id=&quot;introducing-claude-opus-55&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/claude-opus-5-5&quot;&gt;Introducing Claude Opus 5.5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Anthropic introduces Claude Opus 5.5, the first model in its Claude 5.5 family — a new flagship roughly matching Claude Fable 5.1 while costing ~40% less than Opus 5 ($4/$20 per million tokens, $0.20 cache reads) and producing output 30%+ faster. It leads in agentic coding, computer use, knowledge work, and science benchmarks, with testers citing dramatic efficiency gains on long jobs like codebase migrations. It scores best-ever on Anthropic’s behavioral audit, resists prompt injection better, keeps biology/cyber safeguards via verification programs, and writes more clearly.&lt;/p&gt;
&lt;h3 id=&quot;introducing-claude-sonnet-55&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/claude-sonnet-5-5&quot;&gt;Introducing Claude Sonnet 5.5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Claude Sonnet 5.5 is the second model in the Claude 5.5 family: a faster, cheaper complement to Opus 5.5, best for well-scoped everyday tasks, bug fixes, and polished documents, slides, and spreadsheets. It runs 30%+ faster and costs up to 30% less per task than Sonnet 5 at unchanged pricing. Gains are dramatic — 70.6% versus 10.3% on Terminal-Bench 4.0, near-Opus results on GDPval-AA, OSWorld, and chart recognition, and it’s the first Sonnet to beat Pokémon Red from screenshots alone.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3150-candidate-2-is-here&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/09/python-3150-rc2/&quot;&gt;Python 3.15.0 candidate 2 is here!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This release, 3.15.0rc2, is the final planned release candidate, containing around 144 bugfixes, build improvements and documentation changes from 76 contributors since 3.15.0rc1. The next release of Python 3.15 will be 3.15.0 final, scheduled for 2026-10-01.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;pytorch-214-release-blog&quot;&gt;&lt;a href=&quot;https://pytorch.org/blog/pytorch-2-14-release-blog/&quot;&gt;PyTorch 2.14 Release Blog&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PyTorch 2.14 is released, built from 2,995 commits by 487 contributors since 2.13. Highlights include NVGEMM (CuTeDSL-based CUTLASS GEMM kernels in Inductor with epilogue fusion and NVFP4 support), a preview of the rewritten “nccl2” NCCL backend from torchcomms, first-class fault tolerance in c10d with in-place process-group reconfiguration, one-sided RMA windows, and a backend-agnostic Flight Recorder. Apple Silicon gains native linear algebra (SVD, QR, Cholesky) plus more Metal kernels. New compiler features include torch.switch, graph-captured while_loop, declarative @dynamic_spec shapes, experimental complex-tensor compilation, Python 3.15/free-threaded wheels, and expanded ROCm 7.14, Intel XPU, and NVIDIA Rubin support.&lt;/p&gt;
&lt;h3 id=&quot;pypy-v800-release&quot;&gt;&lt;a href=&quot;https://pypy.org/posts/2026/09/pypy-v800-release.html&quot;&gt;PyPy v8.0.0 release&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PyPy v8.0.0 is a major version shipping three interpreters: PyPy2.7, PyPy3.11 (likely the last 3.11 release), and a first-ever “beta”-quality PyPy3.12. The major bump reflects Linux builds moving to manylinux_2_28 (AlmaLinux 8, glibc 2.28, gcc14). Python 3.12 adds cp312-abi3 support by hiding PyPy’s internal &lt;code&gt;ob_pypy_link&lt;/code&gt; field, so CPython limited-ABI wheels should work — though import machinery and pip/uv acceptance remain unfinished. RPython code generation improved via computed gotos, inlining, and source-mapping comments. The internal HPy backend was dropped, and the clang-based pyhdrdump tool was revived.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;h3 id=&quot;deeplearningais-building-adaptive-ai-agents-by-oracle&quot;&gt;deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/building-adaptive-ai-agents&quot;&gt;Building Adaptive AI Agents&lt;/a&gt; by Oracle&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll work with three adaptation layers. For behavior adaptation, you’ll build a skill induction pipeline that turns the agent’s traces, its conversations, tool calls, errors, and fixes, into reusable skills it applies the next time it sees a similar task, with a human in the loop approving each skill. For knowledge adaptation, you’ll build a code knowledge graph that connects files through imports, function calls, and co-edits in git history, so the agent retrieves context by navigating the structure of the codebase instead of relying on keyword search. For model adaptation, you’ll learn when it makes sense to adapt the model itself with techniques like fine-tuning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;deeplearningais-building-ai-assistants-with-on-device-memory-by-qdrant&quot;&gt;deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/building-ai-assistants-with-on-device-memory&quot;&gt;Building AI Assistants with On-Device Memory&lt;/a&gt; by Qdrant&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A cloud-based assistant can remember what it sees, hears, and is told, but only by staying connected and sending that data to a remote server. An assistant that runs on the device builds that memory locally instead. Every note, photo, or recording becomes a vector you can search by meaning, tag with context, and delete on command, all without leaving the device.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;realpythons-how-to-write-an-agentsmd-file-for-a-python-project&quot;&gt;RealPython’s &lt;a href=&quot;https://realpython.com/agents-md/&quot;&gt;How to Write an AGENTS.md File for a Python Project&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An AGENTS.md file gives your AI coding agent the context it needs to write code that fits your project’s guidelines. It’s a plain Markdown file at your project root where you can pin your Python version, dependency manager, coding conventions, and constraints. In this tutorial, you’ll build one of these files section by section and watch your agent go from sloppy output to clean, idiomatic code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;realpythons-how-to-review-ai-generated-python-code-efficiently&quot;&gt;RealPython’s &lt;a href=&quot;https://realpython.com/review-ai-generated-code/&quot;&gt;How to Review AI-Generated Python Code Efficiently&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An AI coding agent writes code faster than any human can read it, which makes you the bottleneck. Your job and responsibilities stay the same, but the volume and speed increase. To manage this, you need to review the code with a plan. You can’t read every line, so focus on the parts where the risk is highest.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;h3 id=&quot;speeding-up-a-python-service-with-cinderx-jit-and-static-typing&quot;&gt;&lt;a href=&quot;https://dev.to/deadlovelll/speeding-up-a-python-service-with-cinderx-jit-and-static-typing-53bh&quot;&gt;Speeding Up a Python Service with CinderX: JIT and Static Typing&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article examines &lt;code&gt;CinderX&lt;/code&gt;, a CPython extension adding a full JIT compiler, “Static Python” typed subset, parallel garbage collector, and heap immortalization. Unlike CPython 3.14’s cheaper copy-and-patch tier 2, CinderX compiles entire functions through typed HIR/LIR SSA passes into machine code. Benchmarking a real recommendation service shows only typed kernels plus JIT meaningfully helped: throughput rose from 140 to 250 requests/second, p99 fell from 279ms to 13ms. Flags alone changed nothing; NumPy-bound endpoints gained zero. Types without JIT cost 3.4× more.&lt;/p&gt;
&lt;h3 id=&quot;soft-deprecating-rematch&quot;&gt;&lt;a href=&quot;https://hugovk.dev/blog/2026/soft-deprecating-re.match/&quot;&gt;Soft-deprecating re.match()&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This post from Hugo van Kemenade explains Python 3.15’s soft deprecation of &lt;code&gt;re.match()&lt;/code&gt;, whose start-anchored-but-not-end-anchored behavior surprises many developers. Soft deprecation, introduced by &lt;a href=&quot;https://peps.python.org/pep-0387/&quot;&gt;PEP 387&lt;/a&gt;, is a documentation-only recommendation: no warnings, no removal, and it doesn’t graduate into hard deprecation. The release adds &lt;code&gt;re.prefixmatch()&lt;/code&gt;, an explicit alias for &lt;code&gt;match()&lt;/code&gt;, embodying “explicit is better than implicit.” New code should use &lt;code&gt;prefixmatch()&lt;/code&gt; for prefix matching, &lt;code&gt;re.search()&lt;/code&gt; for unanchored matching, or &lt;code&gt;re.fullmatch()&lt;/code&gt; when both ends must match; existing code supporting older Pythons can keep &lt;code&gt;match()&lt;/code&gt;. The post includes a comparison table and Ruff config to ban &lt;code&gt;re.match()&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;introducing-wrapture&quot;&gt;&lt;a href=&quot;https://grahamdumpleton.me/posts/2026/08/introducing-wrapture/&quot;&gt;Introducing wrapture&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Wrapture&lt;/em&gt; is a Python library that wraps real code rather than replacing it, enabling observation, testing and monkey‑patching from a single mechanism. Bindings name target methods, a timeline records calls with arguments, return values and call‑graph nesting, and can be queried in tests or streamed to sinks (printer, JSON, OpenTelemetry). The same bindings also support stubbing, raising, argument/result transforms, and ad‑hoc tracing of running applications without code changes.&lt;/p&gt;
&lt;h3 id=&quot;the-mullet-stack-javascript-in-the-front-python-in-the-back&quot;&gt;&lt;a href=&quot;https://seanhelvey.com/mullet-stack/guide/&quot;&gt;The Mullet Stack: JavaScript in the front, Python in the back.&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Mullet Stack guide pairs React + TypeScript frontend (Vite) with FastAPI + Pydantic backend, JavaScript in front, Python in back. It walks through parallel setup, defining/validating an Item model, contrasting TypeScript’s build-time structural typing with Pydantic’s runtime validation, testing with Vitest and pytest, handling CORS, and deriving frontend types from FastAPI’s OpenAPI schema via openapi-typescript to prevent drift, noting alternatives like Django, Next.js, GraphQL, and concluding codegen unifies the stack.&lt;/p&gt;
&lt;h3 id=&quot;making-a-python-interpreter-in-1024-bytes&quot;&gt;&lt;a href=&quot;https://austinhenley.com/blog/python1024.html&quot;&gt;Making a Python interpreter in 1024 bytes&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The author describes building a Python-like interpreter in just 1024 bytes of C code, targeting a FizzBuzz program with recognizable Python syntax (def, colons, indentation). His first 512-byte attempt failed. Rather than tokenizing/compiling like CPython, he uses global arrays for source and symbols, recursive-descent parsing that executes immediately, the C call stack for indented blocks, and backward jumps re-parsing the source for loops and function calls (even recursion). Heavy “code golf” tricks — single-letter names, ASCII comparisons, bitwise/ternary tricks, C89 implicit ints — shrank a 4800-byte readable version to 1024.&lt;/p&gt;
&lt;h3 id=&quot;how-libraries-run-rust-inside-python-with-pyo3&quot;&gt;&lt;a href=&quot;https://belderbos.dev/blog/how-libraries-run-rust-inside-python/&quot;&gt;How Libraries Run Rust Inside Python (with PyO3)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The blog post explains how libraries like Pydantic v2 embed Rust in Python using &lt;code&gt;PyO3&lt;/code&gt;, demonstrated with a hand-rolled JSON parser. Four steps get Rust into Python: write a Rust module, annotate it with &lt;code&gt;#[pyfunction]&lt;/code&gt;/&lt;code&gt;#[pymodule]&lt;/code&gt; macros, compile with &lt;code&gt;maturin&lt;/code&gt; into a shared library, and import it. The parser returns a Rust &lt;code&gt;JsonValue&lt;/code&gt; enum, which Python never sees directly. The key insight: &lt;code&gt;.into_pyobject()&lt;/code&gt; must rebuild the entire tree as native Python objects, so on large documents this conversion can cost more than parsing itself. Errors translate via a &lt;code&gt;From&lt;/code&gt; impl into Python exceptions. For scalar returns, port freely; for large structures, profile the boundary and consider lazy, Rust-backed views.&lt;/p&gt;
&lt;h3 id=&quot;creating-temporary-files-in-python&quot;&gt;&lt;a href=&quot;https://www.pythonmorsels.com/temporary-files/&quot;&gt;Creating temporary files in Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article by Trey Hunner explains creating temporary files and directories using Python’s standard-library &lt;strong&gt;tempfile&lt;/strong&gt; module. &lt;code&gt;NamedTemporaryFile&lt;/code&gt; creates a file deleted when its &lt;code&gt;with&lt;/code&gt; block exits; use &lt;code&gt;delete=False&lt;/code&gt; (or Python 3.12’s better &lt;code&gt;delete_on_close=False&lt;/code&gt;) to keep the file so other code can use its name, then delete it manually. &lt;code&gt;TemporaryDirectory&lt;/code&gt; offers an auto-deleted folder. &lt;code&gt;TemporaryFile&lt;/code&gt; returns only a file descriptor, not a real filename, so a named file is usually preferable. Prefer pytest’s built-in temp utilities when available; otherwise use &lt;code&gt;NamedTemporaryFile&lt;/code&gt; and &lt;code&gt;TemporaryDirectory&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;pytest-plugins-that-actually-change-how-you-test-in-2026&quot;&gt;&lt;a href=&quot;https://dev.to/peytongreen_dev/pytest-plugins-that-actually-change-how-you-test-in-2026-1ecn&quot;&gt;pytest plugins that actually change how you test in 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In this hands-on guide, the author recommends seven pytest plugins that reshape testing workflows in 2026: &lt;code&gt;pytest-httpx&lt;/code&gt; mocks HTTP at the transport layer and fails tests when registered mocks go unused; &lt;code&gt;pytest-randomly&lt;/code&gt; exposes order dependencies via randomized runs and reproducible seeds; anyio’s built-in plugin simplifies async tests across asyncio and trio backends; &lt;code&gt;syrupy&lt;/code&gt; enables snapshot or golden-file testing; &lt;code&gt;pytest-watch&lt;/code&gt; reruns tests on file save; &lt;code&gt;freezegun&lt;/code&gt; deterministically freezes time, avoiding the outdated pytest-freezegun wrapper; and &lt;code&gt;pytest-cov&lt;/code&gt;, configured with branch coverage, skip-covered reporting and thresholds, reveals real gaps. Together they form a free, no-subscription testing stack.&lt;/p&gt;
&lt;h3 id=&quot;agentic-engineering-in-python-from-vibes-to-evidence&quot;&gt;&lt;a href=&quot;https://realpython.com/agentic-engineering/&quot;&gt;Agentic Engineering in Python: From Vibes to Evidence&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article introduces &lt;strong&gt;agentic engineering&lt;/strong&gt; — delegating bounded coding tasks to AI agents while humans retain ownership of intent, constraints, review, and release. Unlike vibe coding, which accepts plausible-looking output, agentic engineering demands evidence. It centers on two loops: a fast agent execution loop and a slower human acceptance loop. Key tools include the eight-level Engineering Evidence Ladder (from code existing to CI integration) and the RECAP review checklist (Role, Edges, Contracts, Assumptions, Proof). The article also warns against implementation-mirroring tests, scope creep, poor audit trails, and excessive agent access.&lt;/p&gt;
&lt;h2 id=&quot;podcasts&quot;&gt;Podcasts&lt;/h2&gt;
&lt;h3 id=&quot;-realpython-podcast&quot;&gt;🐍 RealPython Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/310/&quot;&gt;Episode 310: Performance Engineering: Profiling and Making Apps Fast by Default&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/311/&quot;&gt;Episode 311: Django Developers Survey Results &amp;amp; Reproducible Python Builds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/312/&quot;&gt;Episode 312: Navigating AI in Open Source: Insights From Wagtail&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-python-bytes-podcast&quot;&gt;🍕 Python Bytes Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/494/python-wrapture&quot;&gt;#494 Python Wrapture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/495/banned&quot;&gt;#495 Banned&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/496/a-lake-house-in-seattle&quot;&gt;#496 A lake house in Seattle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/497/faster-than-light-profiling&quot;&gt;#497 Faster than light profiling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/498/a-tiny-episode&quot;&gt;#498 A Tiny Episode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-talk-python-to-me&quot;&gt;📣 Talk Python to me&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/561/tonio-a-multi-threaded-async-runtime-for-python&quot;&gt;#561: TonIO, a Multi-threaded Async Runtime for Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/562/ducklake-the-lakehouse-thats-just-sql-and-parquet&quot;&gt;#562: DuckLake: The Lakehouse That’s Just SQL and Parquet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/563/getting-started-with-rust-as-python-devs&quot;&gt;#563: Getting Started with Rust as Python Devs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/564/eve-online-departs-for-python-3&quot;&gt;#564: EVE Online Departs for Python 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;h3 id=&quot;bruceeckelthinkinginpython-cc-by-nc-nd-40&quot;&gt;&lt;a href=&quot;https://github.com/BruceEckel/ThinkingInPython&quot;&gt;BruceEckel/ThinkingInPython&lt;/a&gt; (CC BY-NC-ND 4.0)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An intermediate-to-advanced book for experienced programmers. It opens with a fast introduction for programmers coming from other languages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;reflex-devxy-apache-20&quot;&gt;&lt;a href=&quot;https://github.com/reflex-dev/xy&quot;&gt;reflex-dev/xy&lt;/a&gt; (Apache 2.0)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;XY is an extremely fast, interactive, customizable Python charting library for the web, notebooks, and static exports. Charts are composed declaratively or through matplotlib conventions. You can fully customize them with Python, CSS, or Tailwind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;gi0barotonio-bsd-3-clause&quot;&gt;&lt;a href=&quot;https://github.com/gi0baro/tonio&quot;&gt;gi0baro/tonio&lt;/a&gt; (BSD-3-Clause)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TonIO is a multi-threaded async runtime for free-threaded Python, built in Rust on top of the mio crate, and inspired by tinyio, trio and tokio. It supports both using &lt;code&gt;yield&lt;/code&gt; and the more canonical &lt;code&gt;async&lt;/code&gt;/&lt;code&gt;await&lt;/code&gt; notations, with the latter being available as part of the &lt;code&gt;tonio.colored&lt;/code&gt; module.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;the-move-to-python-3-begins&quot;&gt;&lt;a href=&quot;https://store.steampowered.com/news/app/8500/view/690892322235222263&quot;&gt;The Move to Python 3 Begins!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://clan.akamai.steamstatic.com/images//3952729/0d80a9a92ff735bf308ef951f7a43dd82af80a45.jpg&quot; alt=&quot;eve-online-moves-to-python-3&quot;&gt;&lt;/p&gt;
&lt;p&gt;EVE Online has begun migrating its 2.4-million-line Stackless Python codebase from Python 2.7, unchanged since 2010, to Python 3 as part of the EVE Forever initiative. First Singularity-tested changes are now live, with success defined as invisibility to players. Motivations include major Python 3 performance gains, access to modern libraries, debuggers and profilers, and cleaner strings, integers and classes. The staged approach first uses Python-Future to make code parse under both versions — 95.9% already does, with only ~3,300 blocking lines — before tackling ~20,000 lines with changed behavior like division.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;As we wrap up this journey together, I want to take a moment to express my gratitude for your reading. If you’ve enjoyed this issue and would like to help sustain this blog, please consider &lt;a href=&quot;https://github.com/blueberry-py/blog/stargazers&quot;&gt;starring this blog on github&lt;/a&gt;, it would be great motivation for me to keep updating!&lt;/p&gt;
&lt;p&gt;Alright, that concludes the September Edition of “This Month for Pythonistas”. Thank you again for reading my post and I hope you enjoy it or find something useful. Happy coding and see you in October! 👋&lt;/p&gt;
</description><pubDate>Wed, 30 Sep 2026 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>news</category><category>podcast</category><category>AI</category><category>pycon</category><author>Zeyang Lin</author></item><item><title>[PyCon China 2026] It&apos;s Time to Learn (Some) Rust — Starting from a Faster pip install</title><link>https://blueberrypy.netlify.app/post/pycon-china-2026-lightning-talk/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/pycon-china-2026-lightning-talk/</guid><description>&lt;h1 id=&quot;its-time-to-learn-some-rust--starting-from-a-faster-pip-install&quot;&gt;It’s Time to Learn (Some) Rust — Starting from a Faster pip install&lt;/h1&gt;
&lt;p&gt;Hi everyone! This post is adapted from my lightning talk at PyCon China 2026, “It’s Time to Learn (Some) Rust — Starting from a Faster pip install”. What the subtitle means — I’ll get to that in a moment.&lt;/p&gt;
&lt;p&gt;Whether you’ve noticed it or not, Rust is already part of your daily life as a Python developer. uv, ruff, and pyrefly — Meta’s open-source type checker — this new generation of Python tooling is all written in Rust. And plenty of Python libraries are bringing Rust in as well: pydantic v2 rewrote its validation core in Rust and got 17x faster; polars’ entire engine is Rust; cryptography uses it to harden its core. So Rust stopped being “the language next door” a long time ago — it’s hiding inside the dependencies of every &lt;code&gt;pip install&lt;/code&gt; you run.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;rust_for_cpython&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;256&quot; height=&quot;256&quot; src=&quot;/_astro/rust_for_cpython.FbDnyHve_ZkJe53.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Even CPython’s own source code may soon include Rust. Look at the timeline: in November 2025, the pre-PEP discussion thread opened; in March 2026, the forked CPython project’s CI builds went green on all platforms; and at PyCon US 2026 in May, the working group unveiled zlib-py as the first planned pilot module — a drop-in alternative to the existing zlib module, with decompression running 3 to 6 times faster. If it lands, every &lt;code&gt;pip install&lt;/code&gt; you run from then on will decompress faster. That’s where the subtitle comes from.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_04&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1210&quot; height=&quot;905&quot; src=&quot;/_astro/page_04.Drzz-mkR_Po8Ye.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;The bad news: the PEP originally planned for July has slipped. The good news: the reason is nothing external — the design details of the internal Rust API simply deserve to be worked through slowly and carefully. It’s a slip, not a stall. Their target is Python 3.16, in 2027.&lt;/p&gt;
&lt;p&gt;So next, let’s see how simple getting started with Rust can be. It’s like the old joke about putting an elephant into a fridge — three steps in total.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_05&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2424&quot; height=&quot;956&quot; src=&quot;/_astro/page_05.BtTpUSeY_1BIDnQ.webp&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step one: install maturin with uv, then run &lt;code&gt;maturin init&lt;/code&gt; — and a Rust project is initialized, ready to be packaged straight into a Python wheel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&quot;page_06&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;1146&quot; src=&quot;/_astro/page_06.MevrPFly_RyWNG.webp&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step two: in &lt;code&gt;lib.rs&lt;/code&gt;, write a function that computes the n-th Fibonacci number. Only two macros in this code really matter: &lt;code&gt;#[pyfunction]&lt;/code&gt; exposes the Rust function to Python, and &lt;code&gt;#[pymodule]&lt;/code&gt; registers it as a Python module. The iterative logic in between is essentially the usual way you’d compute Fibonacci in Python — even with no Rust background, you can follow the gist.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&quot;page_07&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3260&quot; height=&quot;1136&quot; src=&quot;/_astro/page_07.B7AWKxvt_ZenX9R.webp&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step three: &lt;code&gt;maturin develop&lt;/code&gt;. That single command compiles the Rust package, builds a wheel, and installs it into your current Python virtual environment — building, packaging, and installation all in one go, an experience nearly identical to a pure-Python toolchain. Then it’s back to Python: &lt;code&gt;import fibonacci_rs&lt;/code&gt;, call &lt;code&gt;fibonacci(88)&lt;/code&gt;, and the 88th Fibonacci number comes right out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One sentence to sum it up: Python handles the orchestration; Rust does the computing.&lt;/p&gt;
&lt;p&gt;Now, some of you may feel that computing Fibonacci numbers is a bit too simple — barely a step above Hello World.&lt;/p&gt;
&lt;p&gt;So let’s look at a somewhat more involved example: the Julia set. In short: take every point in the complex plane, repeatedly apply z = z² + c (with c a fixed complex number), and see which points never fly off to infinity (modulus above a threshold).&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_08&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1000&quot; height=&quot;1000&quot; src=&quot;/_astro/page_08.Cpb8lXAk_Z28sMFd.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;In my concrete example, the canvas is 1000×1000 — one million points in total, each iterated at most 300 times. In the figure, the black areas are points that escaped quickly; the brighter the region, the more iterations it took to escape; and the white, snowflake-shaped region in the middle marks points that still hadn’t escaped after 300 iterations. This is a CPU-bound task — precisely the territory where Python is considered relatively weak.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_09&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;1148&quot; src=&quot;/_astro/page_09_1.DnnDrnxZ_Zutpgy.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;We start with the pure-Python version: an honest, plain double loop. A run of line_profiler makes the picture stark: this one function devours 96.1% of the program’s total time, while the two list operations above it — each executed a million times — account for just 1.4% and 1.5% respectively.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_09&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1276&quot; height=&quot;502&quot; src=&quot;/_astro/page_09_2.CspV7Zyu_Z1GnLAD.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_10&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;1519&quot; src=&quot;/_astro/page_10_1.DC8rYGFU_Z1R7xEu.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Still using maturin, we write a Rust function, &lt;code&gt;calculate_z_serial&lt;/code&gt;, that mirrors the pure-Python function roughly one-to-one in logic.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_10&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;799&quot; src=&quot;/_astro/page_10_2.BwIqRbyN_Z12a4MK.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once it’s written, the Python script needs exactly one added import line and one changed function name — that’s it. From the caller’s point of view, the function signature and behavior are completely unchanged.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_11&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1245&quot; height=&quot;477&quot; src=&quot;/_astro/page_11_1.BO-Yf-kE_ZCIyPq.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now we run line_profiler again: the function’s share of runtime drops from 96% straight down to 18% — the biggest time sinks are now Python’s for loops and list operations — and the script’s total runtime falls from 3.008 seconds to 0.144 seconds, a speedup of more than 20x. And that’s with a faithful serial port of the original; bring in Rayon for multithreaded parallelism, and the speedup tops 100x.&lt;/p&gt;
&lt;p&gt;If, after these two examples, you’d like to try building something in Rust, it’s worth first understanding the four mindset hurdles that lie between writing Python and writing Rust.&lt;/p&gt;
&lt;p&gt;First, from recommended explicitness to enforced explicitness: Python’s “explicit is better than implicit” is advice; Rust makes it law — mutating data requires declaring &lt;code&gt;mut&lt;/code&gt;, &lt;code&gt;match&lt;/code&gt; must be exhaustive, and if you don’t comply, it refuses to compile.&lt;/p&gt;
&lt;p&gt;Second, from referencing data to owning it: in Python, assignment is sticking a name tag on an object — share it freely, and the GC cleans up. In Rust, every value has exactly one owner, and whether it’s moved or borrowed is checked with total clarity at compile time.&lt;/p&gt;
&lt;p&gt;Third, from EAFP to LBYL — from “easier to ask forgiveness than permission” to “look before you leap”: Rust writes “can this fail?” into the types. With &lt;code&gt;Option&lt;/code&gt; and &lt;code&gt;Result&lt;/code&gt;, you can’t touch the value without checking it first.&lt;/p&gt;
&lt;p&gt;Fourth, from the GIL to real concurrency: data races become compile errors — if your program compiles, it is guaranteed free of data races.&lt;/p&gt;
&lt;p&gt;Here’s a reference roadmap for learning Rust, in four stages.&lt;/p&gt;
&lt;p&gt;Stage one, syntax bridging — with a Python foundation, you’ll get up to speed quickly.&lt;/p&gt;
&lt;p&gt;Stage two is the climb: ownership, borrowing, error handling, traits, closures — possibly the most painful stretch of the entire journey, but push through it and the change is qualitative.&lt;/p&gt;
&lt;p&gt;Stage three, concurrency. &lt;code&gt;std::thread&lt;/code&gt; has you writing real multithreaded code; shared mutable state gets the standard &lt;code&gt;Arc&lt;/code&gt;-plus-&lt;code&gt;Mutex&lt;/code&gt; combo; and whether data may cross thread boundaries is policed by the compiler through &lt;code&gt;Send&lt;/code&gt;/&lt;code&gt;Sync&lt;/code&gt;. Want to keep it easy? Rayon turns a loop into data-parallel execution with one line; for I/O-bound concurrency, there’s tokio, the async runtime.&lt;/p&gt;
&lt;p&gt;Last and most important: hands-on practice. Use maturin to rewrite a hot function from your own project — profile to locate it, test for parity, benchmark to compare — closing the loop.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_14&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1242&quot; height=&quot;860&quot; src=&quot;/_astro/page_14_1.B8a55GVO_Z22bU5d.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_14&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1073&quot; height=&quot;753&quot; src=&quot;/_astro/page_14_2.IRjiGYt9_2n7dEy.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;As we all know, writing code while you learn is one of the most effective ways to surface problems and consolidate knowledge. These are the three tools I found most helpful as a beginner: Rustlings — around ninety bite-sized exercises straight from the official project, a few minutes each, running locally; and Codewars and LeetCode, which both let you solve problems in Rust directly. Re-solving problems you previously did in Python — this time in Rust — makes the differences between the two languages far easier to internalize.&lt;/p&gt;
&lt;p&gt;So does this mean all your Python code should become Rust? Before you start, remember: profiling first — confirm the bottleneck before talking about a rewrite. Don’t go on a hunch.&lt;/p&gt;
&lt;p&gt;Good candidates for a rewrite: CPU-bound modules with clear boundaries that process untrusted input; I/O-bound code and glue code can often stay as they are.&lt;/p&gt;
&lt;p&gt;Before you dive in, also look at the alternatives: a better algorithm, a free-threaded build, an existing third-party library — or Cython, Numba, or GPU acceleration. Any of these may be the better deal.&lt;/p&gt;
&lt;p&gt;Of course, real-world decisions are more complicated — team skills and migration cost come into play, among other factors. And remember this line: Rust is not a “press for speed” button — speed has always been the reward for choosing the right problem.&lt;/p&gt;
&lt;p&gt;If you still feel Rust is too hard to learn, consider it from another angle: even if you never write production-grade Rust, the time is not wasted. Explicit types, ownership, explicit error handling, exhaustive matching — these habits of mind transfer back and make your Python more rigorous.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;page_17&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;720&quot; height=&quot;393&quot; src=&quot;/_astro/page_17.DbwOY4EL_1Ow9D4.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;OK, to wrap up. Rust is not Python’s rival — it’s Python’s partner: Python for orchestration, Rust for speed and safety. And learning Rust is more than an investment in personal skills: judging by the progress of Rust for CPython, it may be your ticket to contributing to CPython. The next Rust for CPython contributor might well be you, reading this article right now.&lt;/p&gt;
&lt;p&gt;Of course, this talk would not exist without the valuable material left behind by pioneers in the community — Microsoft’s Rust for Python Programmers course, plus several excellent talks and articles, all listed below. My thanks to all of them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft — &lt;a href=&quot;https://microsoft.github.io/RustTraining/python-book/&quot;&gt;&lt;em&gt;Rust for Python Programmers&lt;/em&gt;&lt;/a&gt; (open course)&lt;/li&gt;
&lt;li&gt;Daroc Alden — &lt;a href=&quot;https://lwn.net/Articles/1046933/&quot;&gt;“Eventual Rust in CPython”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bob Belderbos — &lt;a href=&quot;https://belderbos.dev/blog/rust-made-me-a-better-python-developer/&quot;&gt;“Learning Rust Made Me a Better Python Developer”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Daniel Szoke — &lt;a href=&quot;https://www.youtube.com/watch?v=lkSxUIdP6Ds&quot;&gt;“Why You, a Python Developer, Should Learn Rust”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Emma Smith — &lt;a href=&quot;https://www.youtube.com/watch?v=42kibVnUHYE&quot;&gt;“Rust for CPython: Making Python Safer and More Robust for Everyone”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Micha Gorelick &amp;amp; Ian Ozsvald — &lt;a href=&quot;https://www.oreilly.com/library/view/high-performance-python/9781492055013/&quot;&gt;&lt;em&gt;High Performance Python&lt;/em&gt;, 2nd Edition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s the whole talk. The demo code is on &lt;a href=&quot;https://github.com/linzeyang/pycon-china-2026&quot;&gt;GitHub&lt;/a&gt;, and if you’re interested, you’re welcome to find me on any of these platforms to keep the conversation going. Thanks for reading!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href=&quot;https://github.com/linzeyang&quot;&gt;@linzeyang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bluesky: &lt;a href=&quot;https://bsky.app/profile/linzeyang.bsky.social&quot;&gt;@linzeyang.bsky.social&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mastodon: &lt;a href=&quot;https://mastodon.online/@zeyanglin&quot;&gt;@zeyanglin@mastodon.online&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Sat, 05 Sep 2026 07:10:00 GMT</pubDate><category>python</category><category>rust</category><category>python</category><category>rust</category><category>pycon</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - July 2026</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-07/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-07/</guid><description>&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(date.today().year, date.today().month)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# 2026 7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2026-07&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;719&quot; src=&quot;/_astro/splash.2p5giHMn_28YPCX.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! This is the July 2026 issue of “This Month for Pythonistas”, bringing you curated Python news, tutorials, articles, podcasts, repositories and community highlights for this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across the following platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberry-py.github.io/blog/post/this-month-for-pythonistas-2026-07/&quot;&gt;Github Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-07/&quot;&gt;Netlify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.onrender.com/post/this-month-for-pythonistas-2026-07/&quot;&gt;Render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy-blog.vercel.app/post/this-month-for-pythonistas-2026-07/&quot;&gt;Vercel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ready? Let’s get started!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;events--social&quot;&gt;Events &amp;amp; Social&lt;/h2&gt;
&lt;h3 id=&quot;europython-2026&quot;&gt;EuroPython 2026&lt;/h3&gt;
&lt;p&gt;EuroPython 2026, held in Kraków, Poland from &lt;strong&gt;13–19 July 2026&lt;/strong&gt;, celebrated the conference’s &lt;strong&gt;25th anniversary&lt;/strong&gt; and brought together over &lt;strong&gt;1,500 Python developers, researchers, and enthusiasts&lt;/strong&gt;. The week featured tutorials, technical talks, community sessions, open-source sprints, and networking events. A highlight was its collaboration with &lt;strong&gt;EuroSciPy&lt;/strong&gt;, including joint sprints that connected the wider scientific Python community. Hosted at the &lt;strong&gt;ICE Kraków Congress Centre&lt;/strong&gt;, the event emphasized Python’s growing role in software development, AI, data science, education, and open-source collaboration across Europe and beyond.&lt;/p&gt;
&lt;h3 id=&quot;releases-now-reject-new-files-after-14-days&quot;&gt;&lt;a href=&quot;https://blog.pypi.org/posts/2026-07-22-releases-now-reject-new-files-after-14-days/&quot;&gt;Releases now reject new files after 14 days&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PyPI now &lt;em&gt;rejects&lt;/em&gt; new file uploads to releases older than 14 days, preventing older, long-stable releases from being poisoned if publishing tokens or workflows are compromised. This change, discussed since &lt;a href=&quot;https://peps.python.org/pep-0740/&quot;&gt;PEP 740&lt;/a&gt; in January 2024 and accelerated after the LiteLLM and Telnyx supply chain attacks, was implemented on July 8, 2026. Data showed only 56 of 15,000 top projects had published Python 3.14 wheels more than 14 days post-release, indicating minimal disruption. The restriction reduces cleanup work for PyPI admins and prevents releases from ending in an indeterminate compromised state, though defined semantics for closed releases are still pending future standardization via &lt;a href=&quot;https://peps.python.org/pep-0694/&quot;&gt;PEP 694&lt;/a&gt; and Upload 2.0.&lt;/p&gt;
&lt;h3 id=&quot;planned-updates-to-the-pypi-user-interface&quot;&gt;&lt;a href=&quot;https://blog.pypi.org/posts/2026-07-22-ui-updates/&quot;&gt;Planned Updates to the PyPI User Interface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PyPI is rolling out user interface updates over the next few months, introducing a new Security tab for provenance and attestation data, horizontal navigation tabs, a right-placed metadata sidebar, trust-level labeling, and clearer status indicators. Changes are being deployed in four phases on TestPyPI first, allowing community feedback. These visual-only updates require no action from maintainers and automatically map existing attestations to the new UI.&lt;/p&gt;
&lt;h3 id=&quot;introducing-claude-sonnet-5&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/claude-sonnet-5&quot;&gt;Introducing Claude Sonnet 5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F458ea645ef6b729f6847cba16932716e6b547f2f-2880x1620.png&amp;amp;w=3840&amp;amp;q=75&quot; alt=&quot;claude-sonnet-5&quot;&gt;&lt;/p&gt;
&lt;p&gt;Anthropic announced Claude Sonnet 5, their most agentic Sonnet model yet, capable of planning, using tools like browsers and terminals, and running autonomously at levels previously requiring more expensive models. Its performance approaches Opus 4.8 but at lower prices, with substantial improvements over Sonnet 4.6 in reasoning, tool use, coding, and knowledge work. Safety assessments show fewer undesirable behaviors than its predecessor.&lt;/p&gt;
&lt;h3 id=&quot;introducing-claude-opus-5&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/claude-opus-5&quot;&gt;Introducing Claude Opus 5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F54b7ab1d2c2521f83ae5d2da5f9d99321c370d24-2880x1620.png&amp;amp;w=3840&amp;amp;q=75&quot; alt=&quot;claude-opus-5&quot;&gt;&lt;/p&gt;
&lt;p&gt;Claude Opus 5 is now available as a thoughtful and proactive model that approaches the frontier intelligence of Claude Fable 5 at half the cost. It is the new state-of-the-art on coding and knowledge work benchmarks like Frontier-Bench and CursorBench, while remaining behind Mythos 5 on cybersecurity tasks. Opus 5 excels on software engineering, scientific research (especially organic chemistry and protein tasks), and visual outputs, while being the most aligned and safest model to date.&lt;/p&gt;
&lt;h3 id=&quot;redeploying-fable-5&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/redeploying-fable-5&quot;&gt;Redeploying Fable 5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;After US export controls suspended access to Claude Fable 5 and Mythos 5 on June 12, the restrictions were lifted on June 30. Fable 5 is now available globally starting July 1, while Mythos 5 access resumed for select US organizations. Anthropic strengthened safeguards with improved safety classifiers, proposed a shared industry framework for assessing jailbreak severity, and deepened collaboration with the US government on pre-release testing, information sharing, and joint research.&lt;/p&gt;
&lt;h3 id=&quot;gpt-56-frontier-intelligence-that-scales-with-your-ambition&quot;&gt;&lt;a href=&quot;https://openai.com/index/gpt-5-6/&quot;&gt;GPT-5.6: Frontier intelligence that scales with your ambition&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;OpenAI launched GPT-5.6 series including flagship &lt;em&gt;Solo&lt;/em&gt;, balanced &lt;em&gt;Terra&lt;/em&gt; and cost-effective &lt;em&gt;Luna&lt;/em&gt; across ChatGPT, Codex and its API with global gradual rollout. All models beat competitors like Fable 5 and Claude Opus 4.8 in coding, agent workflows, cyber defense, life science research and office document creation, delivering stronger performance at far lower costs and shorter latency.&lt;/p&gt;
&lt;p&gt;It supports Programmatic Tool Calling and Ultra multi-agent parallel processing for complex tasks, boasting advanced UI design judgment and precise template-following document generation. Equipped with OpenAI’s most robust layered safety safeguards, it restricts high-risk cyber/biology features to verified users via Trusted Access without blocking legitimate defensive research. Tiered token pricing applies, alongside optimized prompt caching and beta multi-agent API functions for developers. Internal tests show it greatly accelerates AI research with doubled researcher token usage vs GPT-5.5.&lt;/p&gt;
&lt;h3 id=&quot;kimi-k3-open-frontier-intelligence&quot;&gt;&lt;a href=&quot;https://www.kimi.com/blog/kimi-k3&quot;&gt;Kimi K3: Open Frontier Intelligence&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://kimi-file.moonshot.cn/prod-chat-kimi/kfs/4/2/2026-07-16/1d9ccb76dcmosb3rn6vk0?x-tos-process=image%2Fauto-orient%2C1%2Fstrip%2Fignore-error%2C1&quot; alt=&quot;kimi-k3&quot;&gt;&lt;/p&gt;
&lt;p&gt;Kimi K3 is a new 2.8-trillion-parameter open model from Moonshot featuring native vision capabilities and a 1-million-token context window. Built on Kimi Delta Attention and Attention Residuals using Mixture of Experts (16 of 896 experts active), it excels at long-horizon coding, knowledge work, and reasoning. It demonstrated frontier-level performance across benchmarks, notably building a GPU compiler, designing a chip, and creating interactive research reports. The full model weights were then released on July 27, 2026.&lt;/p&gt;
&lt;h3 id=&quot;introducing-grok-45&quot;&gt;&lt;a href=&quot;https://x.ai/news/grok-4-5&quot;&gt;Introducing Grok 4.5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Grok 4.5&lt;/strong&gt; is SpaceXAI’s smartest model, launched July 8, 2026, built for coding, agentic tasks, and knowledge work. Trained on tens of thousands of NVIDIA GB300 GPUs with curated datasets spanning coding, science, engineering, and math, it excels at engineering benchmarks. Served at 80 tokens per second with twice the token efficiency of leading models, it delivers intelligent results quickly and cost-effectively at $2/M input and $6/M output tokens. It’s available in Grok Build, Cursor, and via the SpaceXAI API console.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3150-beta-4-is-here&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/07/python-3150-beta-4/&quot;&gt;Python 3.15.0 beta 4 is here!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This release, 3.15.0b4, is the final planned beta release, containing around 298 bugfixes, build improvements and documentation changes since 3.15.0b3. The next pre-release of Python 3.15 will be 3.15.0rc1, scheduled for 2026-08-04.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;pytorch-213-release-blog&quot;&gt;&lt;a href=&quot;https://pytorch.org/blog/pytorch-2-13-release-blog/&quot;&gt;PyTorch 2.13 Release Blog&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PyTorch 2.13 brings major performance and scalability improvements: FlexAttention lands on Apple Silicon with up to 12× speedups and gains deterministic backward on CUDA; CuTeDSL provides a second high-performance code path for Inductor; &lt;code&gt;nn.LinearCrossEntropyLoss&lt;/code&gt; fuses linear and loss computation to cut peak GPU memory by up to 4×; a new torchcomms backend improves distributed training fault tolerance and debuggability; FSDP2 enables communication overlap for higher throughput; Python 3.15 wheel support is added; and broader platform gains include ROCm, Armv9-A, and Intel XPU updates.&lt;/p&gt;
&lt;h3 id=&quot;introducing-haystack-30-agent-hooks-skills-and-a-lighter-core&quot;&gt;&lt;a href=&quot;https://haystack.deepset.ai/blog/haystack-3-release&quot;&gt;Introducing Haystack 3.0: Agent Hooks, Skills and a Lighter Core&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Haystack 3.0 is a major release of the open-source AI orchestration framework, putting agents at the center. It introduces pre-configured agents (deep research, advanced RAG), hooks for controlling agent behavior, first-class skills with progressive disclosure, built-in introspection and observability, and a leaner core with fewer dependencies.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;h3 id=&quot;deeplearningais-ai-code-reviews&quot;&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/ai-code-review/&quot;&gt;AI Code Reviews&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll start with practical techniques for getting more out of AI review, like reviewing before you open a pull request, giving the reviewer task and repository context, and triaging findings by risk. Then you’ll build a context-aware review system of your own, beginning with a context engine that retrieves the most relevant code and extending it into an ensemble of specialized agents.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;realpythons-langgraph-tutorial-build-stateful-ai-agents-in-python&quot;&gt;RealPython’s &lt;a href=&quot;https://realpython.com/langgraph-python/&quot;&gt;LangGraph Tutorial: Build Stateful AI Agents in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore the full tutorial to gain hands-on experience with LangGraph, including setting up workflows and building a LangGraph agent that can autonomously parse emails, send emails, and interact with API services.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;realpythons-crewai-in-python-coordinating-teams-of-ai-agents&quot;&gt;RealPython’s &lt;a href=&quot;https://realpython.com/crewai-python/&quot;&gt;CrewAI in Python: Coordinating Teams of AI Agents&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;CrewAI is a Python framework that lets you build a crew of specialized AI agents, each focusing on one part of the job. For example, instead of cramming research, validation, and writing into a single prompt, you create a team. One agent researches, another validates, and a third writes. Each focuses on what it does best, working together to complete the task.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;h3 id=&quot;pep-752--implicit-namespaces-for-package-repositories&quot;&gt;&lt;a href=&quot;https://peps.python.org/pep-0752/&quot;&gt;PEP 752 – Implicit namespaces for package repositories&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PEP 752 is &lt;strong&gt;accepted&lt;/strong&gt;. It introduces implicit namespace reservations for Python package repositories, allowing organizations to reserve name prefixes (e.g., &lt;code&gt;google-cloud-&lt;/code&gt;, &lt;code&gt;aws-cdk-&lt;/code&gt;) to prevent name-squatting, typosquatting, and dependency confusion attacks. Following the NuGet approach, it works within the existing flat namespace — no new package syntax or installer changes are required, and pre-existing packages are unaffected. Uploads matching a reserved namespace fail with HTTP 409 unless the uploader holds an active grant. The JSON API is upgraded to version 1.5 to expose namespace metadata. The PEP is accepted and has community support from organizations including Apache Airflow, Microsoft, Datadog, pytest, and Project Jupyter.&lt;/p&gt;
&lt;h3 id=&quot;pep-814-add-frozendict-built-in-type&quot;&gt;&lt;a href=&quot;https://vstinner.github.io/pep-814-add-frozendict-builtin-type.html&quot;&gt;PEP 814: Add frozendict built-in type&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Victor Stinner recounts the long journey to adding &lt;code&gt;frozendict&lt;/code&gt; — an immutable, hashable dictionary type — as a built-in to Python 3.15. After his original &lt;a href=&quot;https://peps.python.org/pep-0416/&quot;&gt;PEP-416&lt;/a&gt; was rejected in 2012 and &lt;a href=&quot;https://peps.python.org/pep-0603/&quot;&gt;PEP-603&lt;/a&gt;’s &lt;code&gt;frozenmap&lt;/code&gt; stalled, Stinner and Donghee Na wrote PEP 814, which the Steering Council accepted in February 2026. Implemented in C and sharing most code with &lt;code&gt;dict&lt;/code&gt;, &lt;code&gt;frozendict&lt;/code&gt; preserves insertion order but comparison and hashing are order-independent. The article covers C API additions, stdlib integration (e.g., &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;copy&lt;/code&gt;, &lt;code&gt;pickle&lt;/code&gt;), garbage collector bug fixes, and migration guidance for both Python and C code.&lt;/p&gt;
&lt;h3 id=&quot;what-every-python-developer-should-know-about-the-cpython-abi&quot;&gt;&lt;a href=&quot;https://labs.quansight.org/blog/python-abi-abi3t&quot;&gt;What Every Python Developer Should Know About the CPython ABI&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The CPython &lt;strong&gt;Application Binary Interface&lt;/strong&gt; (ABI) underpins Python’s ability to call native C, C++, Rust, or Fortran code and vice versa. This post explains what an ABI is, how it differs from a C API (which is source-level), and details the five layers of the CPython C API—Internal, Private, Unstable, Version-Specific, and Limited. It covers ABI compatibility tags in wheel filenames (cp3XY for version-specific, abi3 for the stable ABI, cp3XYt for free-threaded, and abi3t for the new free-threaded stable ABI in Python 3.15+). The post also explains how the free-threaded build changes the PyObject struct layout, breaking backward compatibility, and how PEP 803 introduces abi3t to let a single wheel target both GIL-enabled and free-threaded interpreters going forward.&lt;/p&gt;
&lt;h3 id=&quot;when-to-use-classmethod-staticmethod-or-instance-method-in-python&quot;&gt;&lt;a href=&quot;https://belderbos.dev/blog/classmethod-vs-staticmethod-vs-instance-method-python/&quot;&gt;When to use classmethod, staticmethod, or instance method in Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article explains the differences between instance methods, classmethods, and staticmethods in Python. The key rule: if a method needs the instance (&lt;code&gt;self&lt;/code&gt;), it’s an instance method; if it needs the class (&lt;code&gt;cls&lt;/code&gt;) but not a specific instance, use &lt;code&gt;@classmethod&lt;/code&gt; (e.g., alternative constructors like &lt;code&gt;datetime.date.today()&lt;/code&gt;, registries); if it needs neither, use &lt;code&gt;@staticmethod&lt;/code&gt; for namespaced helper functions. The author warns that with AI-generated code, methods may look plausible but be structurally wrong, so developers should critically evaluate whether each method truly belongs where it is placed.&lt;/p&gt;
&lt;h3 id=&quot;selecting-random-values-in-python&quot;&gt;&lt;a href=&quot;https://www.pythonmorsels.com/random-numbers/&quot;&gt;Selecting &lt;code&gt;random&lt;/code&gt; values in Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article explains how to generate random values in Python using the &lt;strong&gt;&lt;code&gt;random&lt;/code&gt; module&lt;/strong&gt;, which provides pseudorandom numbers via the Mersenne Twister algorithm. It covers &lt;code&gt;randint&lt;/code&gt; and &lt;code&gt;randrange&lt;/code&gt; for integers, &lt;code&gt;random()&lt;/code&gt; for floats between 0 and 1, and &lt;code&gt;choice&lt;/code&gt;/&lt;code&gt;choices&lt;/code&gt; for picking items from sequences — the author’s most-used function. The deterministic nature allows reproducible results via &lt;code&gt;seed()&lt;/code&gt;, useful for testing but risky for security. For cryptographically-secure randomness, Python’s &lt;strong&gt;&lt;code&gt;secrets&lt;/code&gt; module&lt;/strong&gt; offers &lt;code&gt;choice&lt;/code&gt;, &lt;code&gt;randbelow&lt;/code&gt;, and &lt;code&gt;randbits&lt;/code&gt;, while the &lt;code&gt;SystemRandom&lt;/code&gt; class provides a full secure counterpart to &lt;code&gt;random&lt;/code&gt;’s API.&lt;/p&gt;
&lt;h3 id=&quot;stacks-and-queues-in-python&quot;&gt;&lt;a href=&quot;https://www.pythonmorsels.com/stacks-and-queues/&quot;&gt;Stacks and queues in Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Python lists are ideal for &lt;strong&gt;stacks&lt;/strong&gt; (last-in, first-out) using &lt;code&gt;append()&lt;/code&gt; and &lt;code&gt;pop()&lt;/code&gt;, as they are optimized for adding/removing items at the end. For &lt;strong&gt;queues&lt;/strong&gt; (first-in, first-out), use a &lt;code&gt;deque&lt;/code&gt; (double-ended queue) from the &lt;code&gt;collections&lt;/code&gt; module, which supports efficient &lt;code&gt;append()&lt;/code&gt;/&lt;code&gt;popleft()&lt;/code&gt; operations. While &lt;code&gt;deque&lt;/code&gt; can also work as a stack, lists are recommended for stack-like needs and &lt;code&gt;deque&lt;/code&gt; for queue-like needs in Python.&lt;/p&gt;
&lt;h3 id=&quot;protobuf-py-protobuf-for-python-without-compromises&quot;&gt;&lt;a href=&quot;https://buf.build/blog/protobuf-py&quot;&gt;protobuf-py: Protobuf for Python, without compromises&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Buf announced &lt;strong&gt;protobuf-py&lt;/strong&gt;, a new Protocol Buffers library for Python written from scratch. It passes the full Protobuf conformance suite (proto2, proto3, editions), supports extensions, custom options, dynamic messages, and well-known types. Unlike Google’s C-based package, it stores messages as plain Python objects with readable generated code and no runtime dependencies. An optional Rust accelerator boosts parsing/serialization for production workloads. It offers complete spec coverage with an idiomatic Python API, addressing the gap between Google’s complete but clunky package and the nicer but incomplete &lt;code&gt;betterproto&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;pip-262-only-deps-solves-16-years-of-app-deployment-hacks&quot;&gt;&lt;a href=&quot;https://jamesoclaire.com/2026/07/23/pip-26-2-only-deps-solves-16-years-of-app-deployment-hacks/&quot;&gt;Pip 26.2: –only-deps solves 16 years of app deployment hacks&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;pip 26.2 introduces the &lt;code&gt;--only-deps&lt;/code&gt; flag, solving a 16-year problem of installing dependencies for application-style Python projects without installing the package itself. The author traces the history of workarounds — from &lt;code&gt;pip freeze&lt;/code&gt;, manually cutting version pins, &lt;code&gt;pip install -e .&lt;/code&gt;, to third-party tools like &lt;code&gt;pip-chill&lt;/code&gt;, &lt;code&gt;pipreqs&lt;/code&gt;, &lt;code&gt;poetry&lt;/code&gt;, &lt;code&gt;hatch&lt;/code&gt;, and &lt;code&gt;uv&lt;/code&gt; — showing how community demand finally led to this native solution. Sebastian Höffner’s PR #13895 adds a global flag allowing &lt;code&gt;pip install --only-deps .&lt;/code&gt; to install only project dependencies from &lt;code&gt;pyproject.toml&lt;/code&gt;, eliminating years of fragile manual deployment hacks.&lt;/p&gt;
&lt;h3 id=&quot;how-to-publish-to-pypi-using-github-actions-securely&quot;&gt;&lt;a href=&quot;https://snarky.ca/how-to-publish-to-pypi-using-github-actions-securely/&quot;&gt;How to publish to PyPI using GitHub Actions securely&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article by Brett Cannon outlines three steps to securely publish Python packages to PyPI via GitHub Actions: (1) Use the &lt;strong&gt;zizmor&lt;/strong&gt; tool to scan workflows for insecure defaults — set no permissions by default, disable persisted credentials after checkout, and pin actions to commit hashes rather than tags; (2) adopt &lt;strong&gt;Trusted Publishing&lt;/strong&gt; to eliminate API token management and gain attestations; and (3) &lt;strong&gt;require manual approval&lt;/strong&gt; through GitHub Environments to prevent accidental or malicious releases. These measures mitigate recent GitHub Actions security incidents.&lt;/p&gt;
&lt;h3 id=&quot;uv-in-production-the-speed-is-real-the-integration-isnt-free&quot;&gt;&lt;a href=&quot;https://tsv.one/articles/uv-in-production-caveats&quot;&gt;uv in production: the speed is real, the integration isn’t free&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article discusses the author’s ~90-day production experience with &lt;strong&gt;uv&lt;/strong&gt;, Astral’s Python package manager. While uv delivers a genuine ~10x speed improvement over pip in CI, the article highlights five key caveats: (1) it refuses to install without an active venv, (2) auto-installing Python is blocked by corporate firewalls (fixable via a mirror), (3) parallel installs get serialized due to locking, (4) it defaults to first-index mode (defense against dependency confusion), and (5) bytecode compilation is off by default, slowing cold starts. The author concludes uv is worth adopting but warns that its deliberate strictness — unlike pip’s leniency — requires budgeting time for integration.&lt;/p&gt;
&lt;h3 id=&quot;sandboxing-an-ai-agent&quot;&gt;&lt;a href=&quot;https://sajalsharma.com/posts/sandboxing-an-ai-agent/&quot;&gt;Sandboxing an AI Agent&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This post explores sandboxing AI agents by giving them isolated, disposable environments instead of running code directly on a host machine. He compares two architectures: a tool-backend model where the agent loop stays local and the sandbox executes commands remotely, versus the agent-in-the-box model where the entire agent lives inside the sandbox. He examines different isolation strengths—shared-kernel containers, gVisor’s software kernel, and Firecracker microVMs — and concludes sandboxes are becoming a default layer of the agent stack for containment, parallelism, reproducibility, and cheap recovery.&lt;/p&gt;
&lt;h3 id=&quot;state-of-cli-coding-agents-mid-2026&quot;&gt;&lt;a href=&quot;https://blog.arcbjorn.com/state-of-cli-coding-agents-2026&quot;&gt;State of CLI Coding Agents, Mid-2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article surveys 35 CLI coding agents as of mid-2026, noting the terminal unexpectedly won over IDEs for serious AI coding work. Claude Code’s February 2025 research preview set the template — agentic loop, file/shell tools, memory, hooks, subagents — that everyone else cloned. The landscape spans lab agents (Claude Code, Codex CLI, Antigravity CLI, Grok Build), platform CLIs (Copilot CLI, Cursor CLI, Amp, Junie), and open-source harnesses (OpenCode, Goose, Aider, Cline, Pi/Omp). Open-weight models like GLM-5.2 and DeepSeek V4 narrowed the frontier gap dramatically, while free tiers retreated industry-wide.&lt;/p&gt;
&lt;h3 id=&quot;what-our-ai-guiding-principles-actually-mean&quot;&gt;&lt;a href=&quot;https://wagtail.org/blog/what-our-ai-guiding-principles-actually-mean/&quot;&gt;What our AI guiding principles actually mean&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Wagtail has refreshed its AI guiding principles, emphasizing that AI will remain optional in core with features living in separate packages. The five principles include: no AI dependency in core, a responsible approach focused on ethics and sustainability, model and provider agnosticism favoring open-weight smaller models, only adopting AI where it delivers real value, and maintaining human-in-the-loop control to preserve user autonomy. The article stresses that while the principles are set, the real challenge lies in their practical implementation as AI adoption continues to evolve.&lt;/p&gt;
&lt;h3 id=&quot;how-much-can-you-delegate-to-agents&quot;&gt;&lt;a href=&quot;https://newsletter.posthog.com/p/agent-autonomy&quot;&gt;How much can you delegate to agents?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article presents a framework for deciding agent autonomy levels based on two factors: how easy the task is to check and how cheap it is to undo. It defines four levels—Level 0 (agent as assistant for hard-to-check, costly-to-undo tasks), Level 1 (human-in-the-loop for hard-to-check, easy-to-undo tasks), Level 2 (agent delegation for easy-to-check, costly-to-undo tasks), and Level 3 (self-driving mode for easy-to-check, easy-to-undo tasks) — with real examples from PostHog’s engineering work and practical advice on progressively increasing delegation safely.&lt;/p&gt;
&lt;h3 id=&quot;the-short-leash-ai-coding-method-for-beating-fable&quot;&gt;&lt;a href=&quot;https://blog.okturtles.org/2026/07/short-leash-ai-method/&quot;&gt;The Short Leash AI Coding Method For Beating Fable&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Short Leash AI Coding Method&lt;/strong&gt; advocates for expert developers to use AI agents cautiously in security-critical software. Unlike “vibe coding” where AI works autonomously, this method keeps the developer actively engaged — reviewing every proposed diff, denying undesired changes, and committing after each subtask. For reviews, both AI and human input are essential: AI catches common mistakes like a linter, while humans handle high-level issues. The key principle is never letting the AI work unsupervised to maintain quality and codebase understanding.&lt;/p&gt;
&lt;h3 id=&quot;skill-engineering-and-the-case-against-one-shot-ai-design&quot;&gt;&lt;a href=&quot;https://www.latent.space/p/skill-engineering-design&quot;&gt;Skill engineering and the case against one-shot AI design&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Paul Bakaus, creator of the open-source design skills system &lt;em&gt;Impeccable&lt;/em&gt;, argues for “skill engineering” as a new discipline that gives AI agents a precise design vocabulary (e.g., “bolder,” “quieter”) instead of relying on one-shot AI design. He believes agents need domain knowledge and human steering, not full automation. His philosophy: AI quickly produces the first 80% of competent work, while humans own the final 20% where taste and context matter, rejecting the notion of “auto mode” entirely.&lt;/p&gt;
&lt;h2 id=&quot;podcasts&quot;&gt;Podcasts&lt;/h2&gt;
&lt;h3 id=&quot;-corepy&quot;&gt;🥝 core.py&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://open.spotify.com/episode/1d7fOuGcUiP59O7owtc2mc&quot;&gt;Episode 30: Live from EuroPython, an Interview with Guido van Rossum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-realpython-podcast&quot;&gt;🐍 RealPython Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/301/&quot;&gt;Episode 301: Running Python Locally in a Sandbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/302/&quot;&gt;Episode 302: Constructing and Judging Modern Agentic Workflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/303/&quot;&gt;Episode 303: Free-Threaded Python’s History &amp;amp; uv in Production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/304/&quot;&gt;Episode 304: Configuring a Versatile LLM Harness &amp;amp; Scraping the Web With Scrapy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/305/&quot;&gt;Episode 305: Should You Understand Your Entire Python Codebase?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-python-bytes-podcast&quot;&gt;🍕 Python Bytes Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/486/underscore-underscore-ghost-emoji&quot;&gt;#486 underscore-underscore-ghost-emoji&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/487/minimum-requirements&quot;&gt;#487 Minimum requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/488/tau-its-2pi-and-it-writes-code&quot;&gt;#488 tau - it’s 2pi and it writes code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/489/or-json&quot;&gt;#489 Or JSON?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/490/it-s-a-vibe-coding-party&quot;&gt;#490 It’s a vibe coding party&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-talk-python-to-me&quot;&gt;📣 Talk Python to me&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/554/trustworthy-ai-in-healthcare-and-longevity&quot;&gt;#554: Trustworthy AI in Healthcare and Longevity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/555/marimo-pair-a-canvas-for-agent-developers-collaboration&quot;&gt;#555: Marimo Pair - A Canvas for Agent + Developers Collaboration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/556/updates-on-djangos-async-story&quot;&gt;#556: Updates on Django’s Async Story&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-vs-code-insiders-podcast&quot;&gt;🚀 VS Code Insiders Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/23&quot;&gt;Episode 23: VS Code’s Agent Host Protocol Explained with Connor Peet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;h3 id=&quot;mozilla-aiotari&quot;&gt;&lt;a href=&quot;https://github.com/mozilla-ai/otari&quot;&gt;mozilla-ai/otari&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Open-source, OpenAI-compatible LLM gateway you run yourself. One endpoint for 40+ providers, with virtual keys, budgets, and usage tracking.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;As we wrap up this journey together, I want to take a moment to express my gratitude for your reading. If you’ve enjoyed this issue and would like to help sustain this blog, please consider &lt;a href=&quot;https://github.com/blueberry-py/blog/stargazers&quot;&gt;starring this blog on github&lt;/a&gt;, it would be great motivation for me to keep updating!&lt;/p&gt;
&lt;p&gt;Alright, that concludes the July Edition of “This Month for Pythonistas”. Thank you again for reading my post and I hope you enjoy it or find something useful. Happy coding and see you in August! 👋&lt;/p&gt;
</description><pubDate>Fri, 31 Jul 2026 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>news</category><category>podcast</category><category>AI</category><category>pycon</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - June 2026</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-06/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-06/</guid><description>&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(date.today().year, date.today().month)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# 2026 6&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2026-06&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1080&quot; height=&quot;1080&quot; src=&quot;/_astro/splash.2_F7aF_3_B028o.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! This is the June 2026 issue of “This Month for Pythonistas”, bringing you curated Python news, tutorials, articles, podcasts, repositories and community highlights worth noting in this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across the following platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberry-py.github.io/blog/post/this-month-for-pythonistas-2026-06/&quot;&gt;Github Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-06/&quot;&gt;Netlify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.onrender.com/post/this-month-for-pythonistas-2026-06/&quot;&gt;Render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy-blog.vercel.app/post/this-month-for-pythonistas-2026-06/&quot;&gt;Vercel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ready? Let’s get started!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;events--social&quot;&gt;Events &amp;amp; Social&lt;/h2&gt;
&lt;h3 id=&quot;an-announcement-from-the-steering-council-regarding-the-jit-project&quot;&gt;&lt;a href=&quot;https://discuss.python.org/t/an-announcement-from-the-steering-council-regarding-the-jit-project/107638&quot;&gt;An announcement from the Steering Council regarding the JIT project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;Python Steering Council&lt;/em&gt; announced that the experimental JIT compiler in CPython must undergo formal review through a Standards Track PEP within six months. While acknowledging the developers’ valuable work and real performance gains, the Council noted the JIT lacks proper formal approval — PEP 744 was only informational. Until an accepted PEP addresses maintenance plans, compatibility guarantees, success metrics, and architectural stability, no new JIT features can be added to main (only bug/security fixes permitted). If no PEP is accepted within six months, the JIT code must be removed from CPython’s main repository.&lt;/p&gt;
&lt;h3 id=&quot;europython-2026-schedule-is-revealed-&quot;&gt;EuroPython 2026 schedule is revealed 📣&lt;/h3&gt;
&lt;p&gt;The full schedule for EuroPython 2026, hosted in Kraków, Poland, has been released. Check it out on &lt;a href=&quot;https://ep2026.europython.eu/schedule/&quot;&gt;the official website&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;everything-security-at-pycon-us-2026&quot;&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2026/06/everything-security-at-pycon-us-2026.html&quot;&gt;Everything Security at PyCon US 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;PyCon US 2026&lt;/strong&gt; featured its first-ever dedicated security track, “Trailblazing Python Security”, with seven talks covering phishing, zero trust, supply chain attacks, SBOMs, and more. The Python Software Foundation (PSF) delivered a security update highlighting a surge in malware and watering-hole attacks targeting PyPI. An Open Space session brought together open-source maintainers to discuss CI/CD hardening, the overwhelming flood of LLM-generated vulnerability reports consuming most of their time, and the need for contributor quality signals. Additionally, Alpha-Omega–sponsored security roles presented updates on Python Security Response Team governance reforms and efforts to combat supply-chain attacks on the Python ecosystem.&lt;/p&gt;
&lt;h3 id=&quot;building-a-hill-climbing-machine-launching-seven-new-mai-models&quot;&gt;&lt;a href=&quot;https://microsoft.ai/news/building-a-hillclimbing-machine-launching-seven-new-mai-models/&quot;&gt;Building a hill-climbing machine: Launching seven new MAI models&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Microsoft AI (MAI) announced seven new in-house models during Microsoft Build 2026, spanning reasoning (MAI-Thinking-1), coding (MAI-Code-1-Flash), image generation (MAI-Image-2.5), transcription (MAI-Transcribe-1.5), and speech (MAI-Voice-2). All are trained from scratch on clean data without distillation from third parties. MAI also introduced &lt;strong&gt;Microsoft Frontier Tuning&lt;/strong&gt;, enabling organizations to adapt models to their own workflows using reinforcement learning. A partnership with Mayo Clinic was announced to co-develop a frontier healthcare AI model. MAI’s ultimate vision is “Humanist Superintelligence” — advanced AI designed to serve people, remain under human oversight, and never replace them.&lt;/p&gt;
&lt;h3 id=&quot;claude-fable-5-and-claude-mythos-5&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/claude-fable-5-mythos-5&quot;&gt;Claude Fable 5 and Claude Mythos 5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fb7055119423427c40a0e4d84054aed17682b50a2-2880x1620.png&amp;amp;w=3840&amp;amp;q=75&quot; alt=&quot;anthropic-claude-fable-5&quot;&gt;&lt;/p&gt;
&lt;p&gt;Anthropic has launched Claude Fable 5, a &lt;em&gt;Mythos&lt;/em&gt;-class AI model that is the most capable model they’ve ever made generally available, achieving state-of-the-art performance across software engineering, knowledge work, vision, and scientific research benchmarks. Due to its powerful capabilities, Fable 5 includes new safeguards that redirect sensitive queries on cybersecurity, biology, and chemistry to Claude Opus 4.8 instead. The company also released Claude Mythos 5, the same model with lifted safeguards for cyber defenders, deployed through Project Glasswing in collaboration with the US government.&lt;/p&gt;
&lt;h3 id=&quot;statement-on-the-us-government-directive-to-suspend-access-to-fable-5-and-mythos-5&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot;&gt;Statement on the US government directive to suspend access to Fable 5 and Mythos 5&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Shortly after Anthropic released Claude Fable 5 and Claude Mythos 5, the US government issued an export control directive citing national security concerns on June 12th, ordering Anthropic to suspend all access to its &lt;em&gt;Fable 5&lt;/em&gt; and &lt;em&gt;Mythos 5&lt;/em&gt; models for &lt;em&gt;all users&lt;/em&gt;, including foreign nationals. Anthropic is complying but disagrees with the decision, stating the government’s evidence involves a narrow jailbreak revealing minor vulnerabilities already discoverable by other models. Anthropic argues its safeguards are robust and that applying this standard industry-wide would halt all frontier model deployments. The company believes this is a misunderstanding and is working to restore access as soon as possible.&lt;/p&gt;
&lt;h3 id=&quot;minimax-m3-frontier-coding-1m-context-native-multimodality--all-in-one-model&quot;&gt;&lt;a href=&quot;https://www.minimax.io/blog/minimax-m3&quot;&gt;MiniMax M3: Frontier Coding, 1M Context, Native Multimodality — All in One Model&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://filecdn.minimax.chat/public/m3-msa-arch.png&quot; alt=&quot;minimax-sparse-attention&quot;&gt;&lt;/p&gt;
&lt;p&gt;MiniMax M3 is MiniMax’s latest frontier model combining three key capabilities: frontier-level coding/agentic performance, 1M-token context via MSA (MiniMax Sparse Attention), and native multimodality (image/video input and desktop operation). It surpasses GPT-5.5 and Gemini 3.1 Pro on SWE-Bench Pro, tops SVG-Bench and Claw-Eval, and excels at real-world tasks like independently reproducing research papers, optimizing CUDA kernels (achieving 9.4× speedup), and autonomously training models. Accompanying the release are MiniMax Code (an agent product), affordable Token Plans, and a tiered API. Model weights and a technical report have also been released.&lt;/p&gt;
&lt;h3 id=&quot;qwen37-plus-multimodal-agent-intelligence&quot;&gt;&lt;a href=&quot;https://qwen.ai/blog?id=qwen3.7-plus&quot;&gt;Qwen3.7-Plus: Multimodal Agent Intelligence&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.7/Figures/qwen3.7-plus-banner.png&quot; alt=&quot;qwen-3.7-plus&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Qwen3.7-Plus&lt;/strong&gt; is Alibaba’s latest multimodal agent model that unifies vision and language into a versatile agent foundation. It operates as a “multimodal interactive hybrid agent,” capable of perceiving real-world scenes, operating GUIs and CLIs, writing code from visual references, and completing end-to-end tasks. It excels in coding agent benchmarks (Terminal Bench 2.0, SWE-Verified), general-purpose agent tasks, STEM reasoning, and multimodal benchmarks including visual reasoning, search-augmented QA, video understanding, and autonomous driving perception.&lt;/p&gt;
&lt;h3 id=&quot;glm-52-built-for-long-horizon-tasks&quot;&gt;&lt;a href=&quot;https://z.ai/blog/glm-5.2&quot;&gt;GLM-5.2: Built for Long-Horizon Tasks&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;GLM-5.2 is Z.ai’s latest flagship model designed for long-horizon tasks, featuring a solid 1M-token context window. It introduces &lt;em&gt;IndexShare&lt;/em&gt; architecture, reducing per-token computation by 2.9×, and offers flexible effort levels to balance performance and latency. The model excels in coding benchmarks, ranking as the highest-performing open-source model across long-horizon evaluations like FrontierSWE and SWE-Marathon. GLM-5.2 uses advanced RL training with anti-hacking mechanisms and is released under an MIT license.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://devguide.python.org/_static/release-cycle.svg&quot; alt=&quot;python-releases-chart&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;python-3150-beta-3-is-here&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/06/python-3150-beta-3/&quot;&gt;Python 3.15.0 beta 3 is here!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is the third of four planned beta releases of Python 3.15. Beta 4 is scheduled for 2026-07-18.&lt;/p&gt;
&lt;p&gt;Beta 2 was also released earlier this month.&lt;/p&gt;
&lt;h3 id=&quot;python-3146-and-31314-are-now-available&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/06/python-3146-31314/&quot;&gt;Python 3.14.6 and 3.13.14 are now available!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Python 3.14.6 is the sixth maintenance release of 3.14, containing around 179 bugfixes, build improvements and documentation changes since 3.14.5. Python 3.13.14 is the fourteenth maintenance release of 3.13, containing around 240 bugfixes, build improvements and documentation changes since 3.13.13.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;pyodide-3140-release&quot;&gt;&lt;a href=&quot;https://blog.pyodide.org/posts/314-release/&quot;&gt;Pyodide 314.0 Release&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Pyodide 314.0 has been released, marking a major milestone for Python in the browser. The headline change is the acceptance of &lt;a href=&quot;https://peps.python.org/pep-0783/&quot;&gt;PEP 783&lt;/a&gt;, enabling package maintainers to publish Pyodide wheels directly to PyPI instead of relying on the Pyodide team to build and host 300+ packages. The project adopted a new Python-version-based versioning scheme (314 = Python 3.14). This release ships Python 3.14.2 and Emscripten 5.0.3, restores several standard library modules, converts Pyodide to a native ES module, adds experimental Node.js socket support, and introduces JavaScript interop improvements including proper &lt;code&gt;bigint&lt;/code&gt; roundtripping and enhanced array-like proxy support.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;h3 id=&quot;deeplearningais-fast--efficient-llm-inference-with-vllm-from-red-hat&quot;&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/fast-and-efficient-llm-inference-with-vllm&quot;&gt;Fast &amp;amp; Efficient LLM Inference with vLLM&lt;/a&gt; from Red Hat&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll run the full optimize-deploy-benchmark workflow on a real model: compressing an open-source Qwen model with LLM Compressor, serving it with vLLM, and benchmarking your deployment under realistic traffic using GuideLLM and lm-eval.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;deeplearningais-voice-for-ai-agents-and-applications-from-vocal-bridge&quot;&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/voice-for-ai-agents-and-applications&quot;&gt;Voice for AI Agents and Applications&lt;/a&gt; from Vocal Bridge&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Taught by Ashwyn Sharma, CEO and Co-Founder of Vocal Bridge (an AI Fund portfolio company), this course covers three practical integration patterns that meet you where you are: voice embedded in an application, voice layered onto an existing agent without touching its logic, and voice as a tool your LLM can call when it decides a conversation is the right modality.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;microsofts-rust-for-python-programmers&quot;&gt;Microsoft’s &lt;a href=&quot;https://microsoft.github.io/RustTraining/python-book/&quot;&gt;Rust for Python Programmers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A comprehensive guide to learning Rust for developers with Python experience. This guide covers everything from basic syntax to advanced patterns, focusing on the conceptual shifts required when moving from a dynamically-typed, garbage-collected language to a statically-typed systems language with compile-time memory safety.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you feel comfortable after learning this book and wish to move on, there’s another book from Microsoft covering async Rust: &lt;a href=&quot;https://microsoft.github.io/RustTraining/async-book/&quot;&gt;Async Rust: From Futures to Production&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;h3 id=&quot;free-threading-internals-reference-counting&quot;&gt;&lt;a href=&quot;https://vstinner.github.io/free-threading-reference-counting.html&quot;&gt;Free Threading internals: reference counting&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article by Victor Stinner explores Python’s free-threading reference counting challenges. Python uses reference counting (&lt;code&gt;Py_INCREF&lt;/code&gt;/&lt;code&gt;Py_DECREF&lt;/code&gt;) to track object lifetimes, requiring high efficiency. The “Gilectomy” project (2016-2018) initially used atomic operations but suffered severe performance issues — 18.9x slower on 7 cores due to lock contention. It later adopted buffered reference counting. The “nogil” project (2021-2026) solved this with &lt;em&gt;Biased Reference Counting&lt;/em&gt; (BRC), which recognizes that most objects are accessed by a single thread. BRC uses fast non-atomic operations for the owning thread and slower atomic operations for other threads, achieving better performance at the cost of increased implementation complexity.&lt;/p&gt;
&lt;h3 id=&quot;free-threading-internals-deferred-reference-counting&quot;&gt;&lt;a href=&quot;https://vstinner.github.io/free-threading-deferred-reference-counting.html&quot;&gt;Free Threading internals: deferred reference counting&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article continues to explore CPython’s Free Threading internals, focusing on techniques to reduce reference counting contention. &lt;strong&gt;Immortal objects&lt;/strong&gt; (&lt;a href=&quot;https://peps.python.org/pep-0683/&quot;&gt;PEP 683&lt;/a&gt;) skip &lt;code&gt;Py_INCREF&lt;/code&gt;/&lt;code&gt;Py_DECREF&lt;/code&gt; entirely, eliminating contention for commonly used singletons like small integers, strings, and built-in types. &lt;strong&gt;Deferred reference counting&lt;/strong&gt; avoids reference count adjustments altogether, relying on the tracing garbage collector for deallocation. &lt;strong&gt;Stack references&lt;/strong&gt; — tagged pointer-sized values introduced in Python 3.13 — allow the bytecode evaluation loop to skip most &lt;code&gt;INCREF&lt;/code&gt;/&lt;code&gt;DECREF&lt;/code&gt; calls. Together with Biased Reference Counting, these techniques resolve reference count contention, enabling Python threads to scale efficiently across CPU cores.&lt;/p&gt;
&lt;h3 id=&quot;free-threading-internals-pymutex&quot;&gt;&lt;a href=&quot;https://vstinner.github.io/free-threading-pymutex.html&quot;&gt;Free Threading internals: PyMutex&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is the third part in the series regarding Free Threading, in which Victor Stinner discusses &lt;code&gt;PyMutex&lt;/code&gt;, a lightweight 1-byte lock introduced in Python’s free-threading implementation (&lt;a href=&quot;https://peps.python.org/pep-0703/&quot;&gt;PEP 703&lt;/a&gt;), which replaces the Global Interpreter Lock with per-object locks. Designed for efficiency, PyMutex uses only 2 bits and is based on WebKit’s &lt;code&gt;WTF::Lock&lt;/code&gt;. It provides fast, inlineable lock/unlock operations using atomic compare-exchange for uncontended cases. Benchmarks show PyMutex is 1.4x to 4x faster than the previous &lt;code&gt;PyThread_type_lock&lt;/code&gt;. The implementation uses &lt;code&gt;_PyParkingLot&lt;/code&gt; APIs (futex-like) and supports various locking flags. In practice, the critical section API is preferred over direct PyMutex usage to avoid deadlocks.&lt;/p&gt;
&lt;h3 id=&quot;python-314-garbage-collection-rigamarole&quot;&gt;&lt;a href=&quot;https://theconsensus.dev/p/2026/06/06/python-3-14-garbage-collection-rigamarole.html&quot;&gt;Python 3.14 garbage collection rigamarole&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Python 3.14.0 replaced its traditional generational garbage collector with an incremental GC that reduced maximum pause times by scanning only part of the old generation per collection cycle. However, by doing less work each run, the incremental GC caused memory to accumulate in certain workloads — especially those generating cyclic garbage — leading to significantly higher peak memory usage and potential OOM kills. After users reported “memory pressure”, the Python team reverted the change in Python 3.14.5. Notably, the GC change was not implemented as a switchable alternative and bypassed the standard PEP process, leaving users who benefited from it with no option to use it.&lt;/p&gt;
&lt;h3 id=&quot;two-python-scoping-bugs-a-lesson-in-object-lifetimes&quot;&gt;&lt;a href=&quot;https://belderbos.dev/blog/two-scoping-bugs-object-lifetimes/&quot;&gt;Two Python Scoping Bugs: A Lesson in Object Lifetimes&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog post illustrates two Python scoping bugs caused by mismatched object lifetimes. The first is &lt;strong&gt;over-sharing&lt;/strong&gt;: a module-level SQLAlchemy engine shared across tests causes state leaks (e.g., auto-increment IDs carry over). The fix is creating a per-test engine using an in-memory SQLite database. The second is &lt;strong&gt;under-sharing&lt;/strong&gt;: a FastAPI dependency that instantiates a new &lt;code&gt;FakeDataSource&lt;/code&gt; per request gives each browser tab its own diverging simulator state instead of a shared reality. Fixes include &lt;code&gt;@lru_cache&lt;/code&gt; or &lt;code&gt;app.state&lt;/code&gt; for shared runtime state.&lt;/p&gt;
&lt;h3 id=&quot;down-the-iterator-rabbit-hole&quot;&gt;&lt;a href=&quot;https://www.thepythoncodingstack.com/p/down-the-iterator-rabbit-hole-python&quot;&gt;Down The Iterator Rabbit Hole&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article explores Python iterator chains and how consuming values from one iterator affects others in the chain. Iterators don’t store data — they create lightweight streams that fetch from the original source on demand. When you chain iterators (e.g., a list → first_iter → second_iter → third_iter), calling &lt;code&gt;next()&lt;/code&gt; on any iterator in the chain consumes values that propagate through all dependent iterators. The author demonstrates how this can cause unexpected behavior, since iterators are one-way streams. The key takeaway: when building iterator chains, only use the final iterator to avoid confusion. Independent iterators from the same source, however, remain unaffected by each other.&lt;/p&gt;
&lt;h3 id=&quot;choosing-a-python-task-queue-library-in-2026&quot;&gt;&lt;a href=&quot;https://aleksul.space/posts/choosing-python-task-queue-library/&quot;&gt;Choosing a Python task queue library in 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article compares five Python task queue libraries in 2026: Celery, Dramatiq, FastStream, Taskiq, and Repid. It evaluates them across broker support, async vs. sync capabilities, throughput benchmarks for both I/O-bound and CPU-bound workloads, and features like dependency injection, result backends, AsyncAPI integration, and retry handling. The author (Repid’s creator) finds that async-native libraries like Repid, FastStream, and Taskiq outperform sync-first Celery and Dramatiq in I/O-heavy scenarios, while differences shrink for CPU-bound tasks. Recommendations: Celery for the largest ecosystem, FastStream for stream-processing patterns, and Repid for high-throughput asyncio-native workloads.&lt;/p&gt;
&lt;h3 id=&quot;how-and-why-to-run-modified-python-code-using-the-ast-module&quot;&gt;&lt;a href=&quot;https://pydantic.dev/articles/eval-type-backport&quot;&gt;How and why to run modified Python code using the ast module&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This Pydantic blog demonstrates how to use Python’s &lt;code&gt;ast&lt;/code&gt; module to parse, transform, and execute modified Python code at runtime. Using the &lt;code&gt;eval-type-backport&lt;/code&gt; library as an example, it shows how to convert newer type syntax like &lt;code&gt;X | Y&lt;/code&gt; into &lt;code&gt;typing.Union[X, Y]&lt;/code&gt; for older Python versions by manipulating abstract syntax trees with &lt;code&gt;ast.NodeTransformer&lt;/code&gt;. The author shares how mastering AST metaprogramming helped him land jobs at Grist and Pydantic, and argues this skill is increasingly valuable in the AI era since it’s harder to automate and essential for inspecting and controlling code produced by AI agents.&lt;/p&gt;
&lt;h3 id=&quot;why-i-wrote-pep-832--virtual-environment-discovery&quot;&gt;&lt;a href=&quot;https://snarky.ca/why-i-wrote-pep-832-virtual-environment-discovery/&quot;&gt;Why I wrote PEP 832 – virtual environment discovery&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Brett Cannon proposes PEP 832 which addresses the challenge of virtual environment discovery for tools like VS Code. The problem: editors struggle to know which workflow tool (Poetry, uv, Hatch, etc.) a project uses and where environments are stored, making it difficult to run code and analyze dependencies. Proposed solutions include using .venv directories for local discovery, a .python-envs file listing environment paths, and a [workflow] table in pyproject.toml with a workflow server protocol (WSP) for tool communication. The goal is creating a tool-agnostic standard that simplifies environment setup across all editors, not just VS Code.&lt;/p&gt;
&lt;h3 id=&quot;vulnerability-and-malware-checks-in-uv&quot;&gt;&lt;a href=&quot;https://astral.sh/blog/uv-audit&quot;&gt;Vulnerability and malware checks in uv&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Astral announces two new security features for &lt;strong&gt;uv&lt;/strong&gt;: &lt;code&gt;uv audit&lt;/code&gt;, a native command that scans dependencies for known vulnerabilities and deprecated packages — serving as a 4x–10x faster alternative to &lt;code&gt;pip-audit&lt;/code&gt; — and a lightweight malware check integrated into sync operations (&lt;code&gt;uv add&lt;/code&gt;, &lt;code&gt;uv sync&lt;/code&gt;, etc.) that queries &lt;a href=&quot;https://osv.dev/&quot;&gt;OSV&lt;/a&gt; for known malicious packages, blocking installation before harmful code executes. Both features are currently in preview. The post explains the growing importance of supply chain security, distinguishes malware remediation from ordinary vulnerability patching, and outlines future plans including tighter tooling integration, improved finding precision, and support for additional vulnerability backends and packaging formats.&lt;/p&gt;
&lt;h3 id=&quot;give-your-agent-its-own-computer&quot;&gt;&lt;a href=&quot;https://www.langchain.com/blog/give-your-ai-agent-its-own-computer&quot;&gt;Give your agent its own computer&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;LangChain’s &lt;em&gt;LangSmith Sandboxes&lt;/em&gt; solve a critical problem: AI agents need real computers to execute code, but giving them access to your infrastructure is dangerous. Containers aren’t secure enough for untrusted, model-generated code. LangSmith Sandboxes provide hardware-virtualized microVMs—each agent gets its own isolated computer with filesystem, shell, package manager, and persistent state. Features include instant startup, snapshots for forking sessions, pre-warmed blueprints, and secure credential injection. This enables production-ready coding assistants, CI agents, data pipelines, and RL training environments that can scale from zero to thousands of instances.&lt;/p&gt;
&lt;h3 id=&quot;a-practical-guide-to-becoming-an-ai-native-engineer&quot;&gt;&lt;a href=&quot;https://blog.bytebytego.com/p/a-practical-guide-to-becoming-an&quot;&gt;A Practical Guide to Becoming an AI-Native Engineer&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This ByteByteGo article presents a practical guide for engineers transitioning to AI-native engineering. Rather than replacing engineers, AI shifts their role from code writers to orchestrators who command AI agents for 100x output. The guide outlines four core practices: context engineering (curating project-specific AI inputs), specification-driven development, critical verification (since ~45% of AI code contains security flaws), and problem decomposition. It recommends spending 40% of time on context-setting, 20% on generation, and 40% on verification. The article also details a three-phase individual transformation journey, team cultural foundations, an Agentic Development Life Cycle, and essential security guardrails against emerging AI-code threats.&lt;/p&gt;
&lt;h3 id=&quot;beyond-code-generation-rethinking-engineering-productivity-in-the-age-of-ai-agents&quot;&gt;&lt;a href=&quot;https://dropbox.tech/culture/beyond-code-generation-rethinking-engineering-productivity-in-the-age-of-ai-agents&quot;&gt;Beyond code generation: rethinking engineering productivity in the age of AI agents&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Dropbox’s blog post argues that AI coding tools, while boosting code generation, merely shift bottlenecks downstream — into code review, CI, validation, release coordination, and production operations. Their internal agent platform, Nova, now generates ~1 in 12 pull requests, handling tasks like migrations and bug investigation within guardrails. The key insight: AI doesn’t eliminate bottlenecks but relocates them. Dropbox rethinks productivity measurement through a four-stage model — Fuel, Adoption, Output, and Impact — emphasizing customer value over raw PR throughput. Engineers’ roles evolve toward defining intent and reviewing outputs. Ultimately, success depends not on having the best models but on building the best systems around them.&lt;/p&gt;
&lt;h3 id=&quot;dont-rely-on-instructions-use-agent-hooks-to-enforce-guardrails&quot;&gt;&lt;a href=&quot;https://zarar.dev/agent-hooks-deterministic-guardrails-for-ai-generated-code/&quot;&gt;Don’t rely on instructions, use Agent Hooks to enforce guardrails&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog post demonstrates “Agent Hooks” as deterministic guardrails for AI coding agents like Claude Code, arguing that text-based instructions (e.g., in CLAUDE.md) are unreliable since agents often ignore them. Unlike git hooks that run after code is written, agent hooks intercept the agent’s workflow in real time. The author demonstrates two practical hooks: a &lt;strong&gt;PreToolUse&lt;/strong&gt; hook that blocks raw &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; tags, forcing use of custom design components, and a &lt;strong&gt;Stop&lt;/strong&gt; hook that prevents the agent from declaring completion until a design-system ratchet test passes. Both provide guaranteed, deterministic enforcement that prompt-based instructions cannot.&lt;/p&gt;
&lt;h3 id=&quot;how-to-keep-your-developer-instincts-when-ai-writes-the-code&quot;&gt;&lt;a href=&quot;https://belderbos.dev/blog/dont-delegate-the-friction/&quot;&gt;How to Keep Your Developer Instincts When AI Writes the Code&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The author argues that while AI tools promise to eliminate friction in software development, this friction is essential for building engineering intuition and judgment. He categorizes friction into three types: worth deleting (boilerplate), worth keeping (debugging, design decisions), and worth seeking out (deliberate practice). To avoid losing critical thinking skills, developers should adopt deliberate practices like forming expectations before prompting, carefully reviewing AI diffs, and coding without agents weekly. This routine is especially crucial for junior developers to build foundational skills and maintain the craft of engineering in an AI-driven era.&lt;/p&gt;
&lt;h3 id=&quot;the-speed-of-prototyping-in-the-age-of-ai&quot;&gt;&lt;a href=&quot;https://darylcecile.net/notes/speed-of-prototyping-age-of-ai&quot;&gt;The Speed of Prototyping in the Age of AI&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The author reflects on how AI coding agents have transformed his prototyping workflow. Previously, his bottleneck was the time needed to scaffold projects; now, AI removes that friction, enabling him to ship far more functional prototypes—citing projects like the Sakoa programming language, the Kato notation format, and others. He estimates roughly 4x faster output, but the bigger shift is qualitative: he now thinks at a higher abstraction level, focusing on system boundaries and specifications rather than line-by-line implementation. This skill — clearly delegating work — transfers to managing people too. However, he deliberately carves out time for manual coding to stay sharp, and remains cautious about AI’s broader environmental, financial, and social implications.&lt;/p&gt;
&lt;h3 id=&quot;domain-expertise-has-always-been-the-real-moat&quot;&gt;&lt;a href=&quot;https://www.brethorsting.com/blog/2026/05/domain-expertise-has-always-been-the-real-moat/&quot;&gt;Domain Expertise Has Always Been the Real Moat&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article argues that domain expertise, not coding ability, has always been the true competitive moat in software development. Agentic AI has severed the link between understanding a domain and producing code, making code generation cheap while domain knowledge remains scarce. A domain expert with no coding background can now be remarkably effective with AI tools because they can verify whether outputs are correct. Conversely, a skilled generalist engineer lacking domain knowledge cannot distinguish plausible-but-wrong answers from right ones. The author advises experienced engineers to invest in deeply learning a real domain — whether regulatory, industrial, or scientific — as that verified domain model is the one thing AI cannot supply and is now the most valuable asset.&lt;/p&gt;
&lt;h3 id=&quot;software-is-not-a-single-player-game&quot;&gt;&lt;a href=&quot;https://www.davidpoll.com/2026/06/software-is-not-a-single-player-game/&quot;&gt;Software Is Not A Single-Player Game&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog post argues that software development is inherently a multiplayer game, not a solo endeavor. The author contends that code review — not design docs — is where the most consequential engineering judgments are made. As AI makes producing code dramatically cheaper, the primary artifact of collaboration is shifting from abstract documents to real, working changes. Teams can now reason about actual implementations rather than proxies, making review more central, not less. While some decisions still require upfront planning, that boundary is shrinking. The author traces this collaborative pattern back to Linux’s early patch-review culture and concludes that building lasting software has always depended on groups exercising shared judgment together over concrete code changes.&lt;/p&gt;
&lt;h3 id=&quot;ais-brave-new-world-of-technical-debt&quot;&gt;&lt;a href=&quot;https://www.infoworld.com/article/4178964/ais-brave-new-world-of-technical-debt.html&quot;&gt;AI’s brave new world of technical debt&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article argues that AI agents are creating a dangerous new form of technical debt in software development. Agents automate tasks by adding layers of delegation — MCP servers, prompts, and auto-managed dependencies — but each layer becomes a dependency and a security risk. Studies show AI agents select vulnerable package versions more often than humans and even hallucinate non-existent dependencies. While tools like Anthropic’s Claude Mythos can cheaply discover zero-day exploits in old code, the article urges teams to adopt disciplined practices: minimize their attack surface, version-control prompts, and treat all AI integrations as production dependencies requiring rigorous review and governance.&lt;/p&gt;
&lt;h3 id=&quot;vibe-coder-vs-software-engineer&quot;&gt;&lt;a href=&quot;https://yusufaytas.com/vibe-coder-vs-software-engineer&quot;&gt;Vibe Coder vs Software Engineer&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article distinguishes between “vibe coders” and “software engineers” in the age of AI-assisted development. A vibe coder focuses on rapid prototyping and measuring time to a working demo, while a software engineer prioritizes “time to safe merge” — encompassing code review, testing, ownership, rollback, and long-term maintainability. The author argues that AI-generated code must meet the same standards as hand-written code, and that engineers must fully own and understand what they submit, since AI cannot take accountability. Vibe coding suits discovery and ideation, but production delivery demands engineering discipline, bounded tasks, and human judgment built through apprenticeship and system knowledge.&lt;/p&gt;
&lt;h2 id=&quot;podcasts&quot;&gt;Podcasts&lt;/h2&gt;
&lt;h3 id=&quot;-realpython-podcast&quot;&gt;🐍 RealPython Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/298/&quot;&gt;Episode 298: Reducing the Size of Python Docker Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/299/&quot;&gt;Episode 299: EuroPython 2026: Celebrating 25 Years&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/300/&quot;&gt;Episode 300: Maintaining Your Python Developer Instincts While Using LLM Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-python-bytes-podcast&quot;&gt;🍕 Python Bytes Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/482/mr.-beasts-episode&quot;&gt;#482 Mr. Beast’s episode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/483/thanks-brian&quot;&gt;#483 Thanks Brian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/484/all-our-tools&quot;&gt;#484 All our tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/485/creating-memories&quot;&gt;#485 Creating memories&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-talk-python-to-me&quot;&gt;📣 Talk Python to me&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/551/stroll-down-startup-lane-2026&quot;&gt;#551: Stroll Down Startup Lane - 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/552/astral-joins-openai&quot;&gt;#552: Astral joins OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/553/all-of-our-tools&quot;&gt;#553: All of our tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;h3 id=&quot;lvcidpsycheauto-browser-mit&quot;&gt;&lt;a href=&quot;https://github.com/LvcidPsyche/auto-browser&quot;&gt;LvcidPsyche/auto-browser&lt;/a&gt; (MIT)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Auto Browser is an MCP-native browser control plane for authorized workflows. It gives MCP clients, LLM agents, and operators a shared Playwright browser with human takeover, reusable auth profiles, approvals, audit trails, and local-first deployment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;nvidiaskillspector-apache-20&quot;&gt;&lt;a href=&quot;https://github.com/NVIDIA/SkillSpector&quot;&gt;NVIDIA/SkillSpector&lt;/a&gt; (Apache-2.0)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Security scanner for AI agent skills. Detect vulnerabilities, malicious patterns, and security risks before installing agent skills.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;microsoftcoreutils-mit&quot;&gt;&lt;a href=&quot;https://github.com/microsoft/coreutils&quot;&gt;microsoft/coreutils&lt;/a&gt; (MIT)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Microsoft-maintained build of &lt;code&gt;uutils/coreutils&lt;/code&gt;, &lt;code&gt;findutils&lt;/code&gt;, and &lt;code&gt;grep&lt;/code&gt; packaged as a single multi-call binary for Windows. The goal is to make moving between Linux, macOS, WSL, containers, and Windows frictionless.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;sonys-state-of-play-2026-6-2&quot;&gt;Sony’s State of Play (2026-6-2)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.playstation.com/tachyon/2026/06/35782cc3ce6947f374ee128c62052a655a8cdb64-scaled.jpg?resize=1088%2C612&amp;amp;crop_strategy=smart&amp;amp;zoom=1&quot; alt=&quot;state-of-play-2026-6&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;God of War: Laufey, the title from Santa Monica focusing on Kratos’ wife, is coming to PS5 with release date unknown.&lt;/li&gt;
&lt;li&gt;Phantom Blade Zero, the fast-paced action RPG from S-Game, is delayed to October 29th, 2026 with full trailer and pre-order available soon in summer.&lt;/li&gt;
&lt;li&gt;Control Resonant, the sequel to Control (2019), is coming September 24th, 2026.&lt;/li&gt;
&lt;li&gt;Tomb Raider: Legacy of Atlantis, another “remake” of the first Tomb Raider game, is coming February 12th, 2027.&lt;/li&gt;
&lt;li&gt;Onimusha: Way of the Sword from Capcom launches this September, with a playable demo available right now.&lt;/li&gt;
&lt;li&gt;Ace Combat 8: Wings of Theve from Bandai Namco is coming this October.&lt;/li&gt;
&lt;li&gt;Until Dawn 2 is announced, “featuring a brand new cast, a whole new world to explore, and gut-wrenching decisions”.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;summer-game-fest&quot;&gt;Summer Game Fest&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.mos.cms.futurecdn.net/pAgh4TNRRiPZKoPYGrHptS-1200-80.jpg.webp&quot; alt=&quot;summer-game-fest-2026&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resident Evil Veronica, the remake of Resident Evil: Code: Veronica (2000) from Capcom, follows Claire Redfield searching for her brother Chris and is coming in 2027 to PS5, Xbox Series X|S, Nintendo Switch 2, and PC.&lt;/li&gt;
&lt;li&gt;Final Fantasy VII Revelation, the third and final chapter in the FF7 Remake trilogy from Square Enix, adds Vincent and Cid as playable party members with a new Job Class system, and launches Spring 2027 on PS5, Xbox Series X|S, PC, and Nintendo Switch 2 with day-one multiplatform release.&lt;/li&gt;
&lt;li&gt;Stellar Blade: Blood Rain, the sequel to Stellar Blade from Shift Up, introduces new protagonist Evie and continues the story beyond the first game, with Shift Up self-publishing this time and no platforms or release date confirmed yet.&lt;/li&gt;
&lt;li&gt;Guild Wars 3 from ArenaNet, the first new entry in the franchise since 2012, is set over a thousand years before the original Guild Wars in the land of Orr, featuring momentum-based movement and coming to PC and PS5 (the series’ first console release) with beta in Fall 2027.&lt;/li&gt;
&lt;li&gt;Trine 6: Together in Time from Frozenbyte, featuring two new playable characters Moira and Adrius alongside the classic trio, supports 1–4 player co-op and launches September 17, 2026 on PC, Nintendo Switch, Nintendo Switch 2, PS5, and Xbox Series X|S.&lt;/li&gt;
&lt;li&gt;Alien: Isolation 2 from Creative Assembly and SEGA, set on a remote storm-ravaged colony world at Kurosaki Station with both interior and exterior environments, is coming in 2027 to PS5, Xbox Series X|S, Nintendo Switch 2, and PC.&lt;/li&gt;
&lt;li&gt;Blood Message from 24 Entertainment and NetEase, the publisher’s first AAA single-player title, is a cinematic action-adventure set in 848 AD Tang Dynasty China where a nameless messenger and his son embark on a perilous 1,000-mile odyssey to Chang’an, coming to PC and consoles with no release date yet.&lt;/li&gt;
&lt;li&gt;Hitman Classic Trilogy Remastered from Saber Interactive and IO Interactive, collecting Hitman: Codename 47, Hitman 2: Silent Assassin, and Hitman: Contracts with upgraded visuals and a graphics toggle, is coming to PC, PS5, and Xbox Series X|S in 2027.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;As we wrap up this journey together, I want to take a moment to express my gratitude for your reading. If you’ve enjoyed this issue and would like to help sustain this blog, please consider &lt;a href=&quot;https://github.com/blueberry-py/blog/stargazers&quot;&gt;starring this blog on github&lt;/a&gt;, it would be great motivation for me to keep updating!&lt;/p&gt;
&lt;p&gt;Alright, that concludes the June Edition of “This Month for Pythonistas”. Thank you again for reading my post and I hope you enjoy it or find something useful. Happy coding and see you in July! 👋&lt;/p&gt;
</description><pubDate>Tue, 30 Jun 2026 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>news</category><category>podcast</category><category>AI</category><category>pycon</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - May 2026</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-05/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-05/</guid><description>&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; datetime &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(date.today().year, date.today().month)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# 2026 5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2026-05&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;/_astro/splash.BYo7n7xb_24zjQM.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! This is the May 2026 issue of “This Month for Pythonistas”, bringing you curated Python news, tutorials, articles, podcasts and community highlights.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across the following platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberry-py.github.io/blog/post/this-month-for-pythonistas-2026-05/&quot;&gt;Github Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2026-05/&quot;&gt;Netlify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy.onrender.com/post/this-month-for-pythonistas-2026-05/&quot;&gt;Render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blueberrypy-blog.vercel.app/post/this-month-for-pythonistas-2026-05/&quot;&gt;Vercel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ready? Let’s get started!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;events--social&quot;&gt;Events &amp;amp; Social&lt;/h2&gt;
&lt;h3 id=&quot;pycon-us-2026&quot;&gt;PyCon US 2026&lt;/h3&gt;
&lt;p&gt;PyCon US was held in Long Beach, California this May with 2000+ total attendees, 57% of which were first-time. It was a great success - thanks to PSF and the whole community - and I look forward to PyCon US 2027 already (still in Long Beach)! You can check out social media (X, Mastodon, BlueSky, etc.) for highlights.&lt;/p&gt;
&lt;p&gt;The recordings of the conference would be published to PyCon US Youtube channel later this year.&lt;/p&gt;
&lt;h3 id=&quot;introducing-claude-opus-48&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-8&quot;&gt;Introducing Claude Opus 4.8&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F0eaa0ed2dce9810169112e1c77de2585fcf1f5c2-2880x1620.jpg&amp;amp;w=3840&amp;amp;q=75&quot; alt=&quot;claude-opus-4.8&quot;&gt;&lt;/p&gt;
&lt;p&gt;Anthropic introduced &lt;strong&gt;Claude Opus 4.8&lt;/strong&gt;, an upgrade over Opus 4.7 with improved benchmark performance across coding, agentic skills, reasoning, and knowledge work, at the same price. Key improvements include greater honesty — Opus 4.8 is roughly four times less likely to let code flaws pass unremarked — and lower misaligned behavior rates. Launching alongside it are: &lt;strong&gt;dynamic workflows&lt;/strong&gt; in Claude Code (enabling massive parallel subagent tasks like codebase-scale migrations), &lt;strong&gt;effort control&lt;/strong&gt; on claude.ai (letting users adjust how deeply Claude thinks), and &lt;strong&gt;system entries inside the messages array&lt;/strong&gt; via the API. Opus 4.8 defaults to high effort, with “extra” and “max” options for harder tasks. Anthropic also teased upcoming cheaper Opus-class models and a more intelligent “Mythos”-class model pending stronger safety safeguards.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3150-beta-1-is-here&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/05/python-3150-beta-1/&quot;&gt;Python 3.15.0 beta 1 is here!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Python 3.15.0 beta 1 was released on May 7, 2026, marking the first beta and feature freeze. Developers encourage third-party projects to test the preview and report bugs, though it is not recommended for production. Major features include explicit lazy imports, new built-in types like &lt;code&gt;frozendict&lt;/code&gt; and &lt;code&gt;sentinel&lt;/code&gt;, a dedicated profiling package, default &lt;em&gt;UTF-8&lt;/em&gt; encoding, &lt;code&gt;TypedDict&lt;/code&gt; improvements, and an upgraded JIT compiler delivering 8–13% performance gains. Other changes include frame pointers by default, unpacking in comprehensions, and stable ABI for free-threaded builds.&lt;/p&gt;
&lt;p&gt;The tarball and binary distributions for beta 1 can be downloaded &lt;a href=&quot;https://www.python.org/downloads/release/python-3150b1/&quot;&gt;here&lt;/a&gt;. The next pre-release, 3.15.0b2, is scheduled for June 2, 2026.&lt;/p&gt;
&lt;h3 id=&quot;python-3145-is-out&quot;&gt;&lt;a href=&quot;https://blog.python.org/2026/05/python-3145-is-out/&quot;&gt;Python 3.14.5 is out!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is a very rare patch release due to a release candidate being released several days before the final release.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The incremental garbage collector shipped in Python 3.14.0 - 3.14.4 has been reverted back to the generational garbage collector from 3.13, due to a number of reports of significant memory pressure in production environments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;whats-new-in-pip-261---lockfiles-and-dependency-cooldowns&quot;&gt;&lt;a href=&quot;https://ichard26.github.io/blog/2026/04/whats-new-in-pip-26.1/&quot;&gt;What’s new in pip 26.1 - lockfiles and dependency cooldowns!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;pip 26.1, released April 2026, drops Python 3.9 support and introduces key features: experimental lockfile support via &lt;code&gt;-r pylock.toml&lt;/code&gt; (PEP 751), dependency cooldowns with &lt;code&gt;--uploaded-prior-to=P3D&lt;/code&gt;, and fixes to the 2020 resolver. Security updates patch archive handling vulnerabilities and upgrade &lt;code&gt;urllib3&lt;/code&gt; to 2.x. The legacy resolver moves closer to removal (planned 2027), and &lt;code&gt;PIP_CONSTRAINT&lt;/code&gt; for build dependencies is deprecated for pip 26.2. A future &lt;code&gt;pip sync&lt;/code&gt; command is planned to complete lockfile support.&lt;/p&gt;
&lt;h3 id=&quot;pyrefly-v10-is-here&quot;&gt;&lt;a href=&quot;https://pyrefly.org/blog/v1.0/&quot;&gt;Pyrefly v1.0 is here!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://pyrefly.org/assets/images/v1.0-53562449e846074eba274828c237e963.jpg&quot; alt=&quot;pyrefly-1.0-release&quot;&gt;&lt;/p&gt;
&lt;p&gt;Pyrefly, Meta’s open-source Python type checker and language server, has reached its stable v1.0 release, marking it as production-ready after over 60 minor releases since its alpha launch in mid-2025. Already used at scale by Instagram, PyTorch, NumPy, Pandas, and JAX, Pyrefly delivers significant performance improvements — up to 125x faster incremental editor updates and 34% faster full type checks on large codebases. It offers both CLI and IDE extension support for consistent results across environments, with built-in support for Pydantic and Django, and an upcoming integration with Microsoft’s Pylance via a new Type Server Protocol. The tool supports gradual adoption through configurable presets, migration from Mypy/Pyright, and incremental type annotation via &lt;code&gt;pyrefly infer&lt;/code&gt;. Looking ahead, Pyrefly is developing experimental tensor shape checking for ML frameworks and exploring integration into AI-assisted coding workflows.&lt;/p&gt;
&lt;h3 id=&quot;pytorch-212-release-blog&quot;&gt;&lt;a href=&quot;https://pytorch.org/blog/pytorch-2-12-release-blog/&quot;&gt;PyTorch 2.12 Release Blog&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PyTorch 2.12 has been released with 2,926 commits from 457 contributors. Key highlights include: batched &lt;code&gt;linalg.eigh&lt;/code&gt; on CUDA is up to 100x faster; a new device-agnostic &lt;code&gt;torch.accelerator.Graph&lt;/code&gt; API unifies graph capture across CUDA, XPU, and other backends; &lt;code&gt;torch.export.save&lt;/code&gt; now supports Microscaling (MX) quantization formats for deploying compressed models; fused Adagrad optimizer joins Adam, AdamW, and SGD; and &lt;code&gt;torch.cond&lt;/code&gt; control flow can now be captured within CUDA Graphs. ROCm users gain expandable memory segments, rocSHMEM symmetric memory collectives, and FlexAttention pipelining. TorchScript is now deprecated, with &lt;code&gt;torch.export&lt;/code&gt; as its replacement.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;h3 id=&quot;deeplearningais-build-interactive-agents-with-generative-ui-from-copilotkit&quot;&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/build-interactive-agents-with-generative-ui/&quot;&gt;Build Interactive Agents with Generative UI&lt;/a&gt; from CopilotKit&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll work across the full Generative UI Spectrum, from hand-crafted components you control precisely, to declarative layouts the agent assembles from building blocks, all the way to open-ended experiences powered by MCP Apps. You’ll finish by building a canvas application where the agent works alongside the user on shared data. By the end, you’ll have a production-ready fullstack agent built on CopilotKit and AG-UI, an open protocol with first-party integrations across LangGraph, Google, AWS, Microsoft, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;deeplearningais-ai-agents-for-image-and-video-generation-from-google&quot;&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/ai-agents-for-image-and-video-generation&quot;&gt;AI Agents for Image and Video Generation&lt;/a&gt; from Google&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll learn three complementary evaluation techniques, then combine them with image and video generation to build autonomous media agents. You’ll build an image agent that turns brand guidelines into UI mockups, and a video agent that plans multi-scene explainers, animates reference frames with synchronized audio, and checks consistency across scenes. In the final lesson, you’ll use Gemini CLI to build a generative media agent in natural language, packaging what you’ve learned into reusable agent skills.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;h3 id=&quot;pep-661--sentinel-values&quot;&gt;&lt;a href=&quot;https://peps.python.org/pep-0661/&quot;&gt;PEP 661 – Sentinel Values&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;PEP 661 is &lt;strong&gt;accepted&lt;/strong&gt;. It introduces a new built-in &lt;code&gt;sentinel()&lt;/code&gt; class for creating unique sentinel values in Python. Sentinel values are special placeholder objects used when a distinct sentinel is needed that’s different from None. The new builtin addresses issues with common sentinel idioms like &lt;code&gt;object()&lt;/code&gt; which have uninformative reprs, lack distinct types, and behave unexpectedly after copying or pickling. The &lt;code&gt;sentinel(name)&lt;/code&gt; call creates a sentinel with a readable repr, proper identity preservation, pickling support, and type-checking integration. Sentinels are truthy and should be checked with &lt;code&gt;is&lt;/code&gt; operator. The feature targets Python 3.15+ with both Python and C API implementations, providing a standardized way to define sentinels throughout the standard library and user code.&lt;/p&gt;
&lt;h3 id=&quot;python-315-features-that-didnt-make-the-headlines&quot;&gt;&lt;a href=&quot;https://blog.changs.co.uk/python-315-features-that-didnt-make-the-headlines.html&quot;&gt;Python 3.15: features that didn’t make the headlines&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog post covers lesser-known Python 3.15 features including: (1) &lt;strong&gt;asyncio TaskGroup cancellation&lt;/strong&gt; — a new &lt;code&gt;tg.cancel()&lt;/code&gt; method that simplifies graceful task group termination, replacing the awkward workaround of raising custom exceptions; (2) &lt;strong&gt;Context Manager Improvements&lt;/strong&gt; — &lt;code&gt;ContextDecorator&lt;/code&gt; now properly wraps the full lifecycle of async functions, generators, and async iterators, making context managers an ideal way to create decorators; and (3) &lt;strong&gt;Thread Safe Iterators&lt;/strong&gt; — new &lt;code&gt;threading.serialize_iterator&lt;/code&gt; and &lt;code&gt;threading.synchronized_iterator&lt;/code&gt; functions that enable safe shared iteration across threads, solving issues with skipped values or broken iterator state when using threading or free-threading.&lt;/p&gt;
&lt;h3 id=&quot;pycon-us-2026-typing-summit-recap&quot;&gt;&lt;a href=&quot;https://bernat.tech/posts/pycon-us-2026-typing-summit-recap/&quot;&gt;PyCon US 2026 Typing Summit Recap&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The PyCon US 2026 Typing Summit featured eight talks and a Typing Council Q&amp;amp;A. Key highlights: &lt;em&gt;Guido van Rossum&lt;/em&gt; argued PEP 484’s &lt;em&gt;no-new-syntax&lt;/em&gt; rule is already broken and urged prioritizing user pain over power features, citing the 2025 Typing Survey. &lt;em&gt;Jelle Zijlstra&lt;/em&gt; proposed intersection and negation types for the spec. &lt;em&gt;Michael Sullivan&lt;/em&gt; presented PEP 827 for type manipulation (conditional/mapped types). &lt;em&gt;Douglas Creager&lt;/em&gt; showed how ty’s constraint-set solver fixes a &lt;code&gt;partial(choose, None)&lt;/code&gt; example all current checkers get wrong. &lt;em&gt;Conner Nilsen&lt;/em&gt; found type-checker feedback helps AI agents on well-typed code but not lightly-typed codebases. &lt;em&gt;Jia Chen&lt;/em&gt; formalized Python typing in Lean 4, and &lt;em&gt;Avik Chaudhuri&lt;/em&gt; demoed tensor-shape types in Pyrefly. The council panel updated on checker landscape (Pyre and pytype winding down) and open spec issues.&lt;/p&gt;
&lt;h3 id=&quot;i-spent-2-years-building-the-async-python-task-queue-i-wished-existed&quot;&gt;&lt;a href=&quot;https://aleksul.space/posts/i-spent-2-years-building-repid/&quot;&gt;I spent 2 years building the async Python task queue I wished existed&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The author spent two years developing Repid v2, an async Python task queue that solves the lack of modern async background processing tools. The Python web ecosystem excels with frameworks like FastAPI, but task queues remained antiquated, requiring separate sync contexts and lacking automatic documentation. Repid v1 showed promise but had fundamental design flaws: it was too opinionated about broker capabilities and assumed features like delayed messaging were universal. Production issues with AMQP 0.9.1 prompted the author to write a custom AMQP 1.0 implementation. The v2 redesign embraces simplicity: user-defined message types, broker-agnostic AsyncAPI documentation, and support for multiple brokers including AMQP 1.0, SQS, Kafka, and Redis Streams. Despite modest adoption, the project represents the exact library the author wanted—a self-documenting, truly async message consumer that gets out of the developer’s way.&lt;/p&gt;
&lt;h3 id=&quot;learn-concurrency---a-deep-dive-into-multithreading-with-python&quot;&gt;&lt;a href=&quot;https://blog.geekuni.com/2026/04/python-concurrency.html&quot;&gt;Learn concurrency - a deep dive into multithreading with Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog post provides a comprehensive overview of concurrency in Python, covering key concepts like multithreading, multiprocessing, race conditions, and synchronization mechanisms such as locks. It explains the differences between sequential, concurrent, and parallel execution, with practical examples. The Global Interpreter Lock (GIL) is discussed as a major limitation preventing true CPU-bound multithreading in Python, though it doesn’t hinder I/O-bound tasks. The article highlights the drawbacks of GIL — such as inability to leverage modern multi-core hardware and the complexity of multiprocessing — and introduces the emerging “free-threaded” build (PEP 703) starting in Python 3.13, which allows developers to disable the GIL and achieve true parallel multithreading.&lt;/p&gt;
&lt;h3 id=&quot;behavior-oriented-concurrency-in-python&quot;&gt;&lt;a href=&quot;https://microsoft.github.io/bocpy/&quot;&gt;Behavior-Oriented Concurrency in Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://microsoft.github.io/bocpy/images/logo.svg&quot; alt=&quot;behavior-oriented concurrency&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;bocpy&lt;/code&gt; is a Python library implementing Behavior-Oriented Concurrency (BOC), a lock-less, deadlock-free paradigm for parallel programming. It uses “cowns” (concurrent-owned variables) to ensure temporal data ownership across sub-interpreters, eliminating traditional locks. Behaviors — decorated functions — declare required cowns and are automatically scheduled for parallel execution, simplifying concurrent code. The library includes a noticeboard for eventually-consistent state sharing and a &lt;code&gt;Matrix&lt;/code&gt; class for high-performance numerical operations. &lt;code&gt;bocpy&lt;/code&gt; achieves near-linear multi-core scaling via lock-free scheduling and zero-copy data transfer, offering an intuitive alternative to thread-based concurrency.&lt;/p&gt;
&lt;h3 id=&quot;the-simplest-mcp-example-possible-in-python&quot;&gt;&lt;a href=&quot;https://inventwithpython.com/blog/basic-mcp-python-example.html&quot;&gt;The Simplest MCP Example Possible in Python&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog post by &lt;em&gt;Al Sweigart&lt;/em&gt; demonstrates the simplest possible MCP (Model Context Protocol) example in Python, showing how to give a local LLM access to external tools. Using FastMCP and Ollama, the author creates an MCP server with two tools — &lt;code&gt;get_current_time&lt;/code&gt; and &lt;code&gt;get_current_date&lt;/code&gt; — that return the current time and date as formatted strings. A client script connects the Llama 3.2 model to these tools, allowing it to answer time-related questions. The post includes complete code for both the server and client, along with a sample conversation showing the model’s mixed results — correctly answering some questions but also exhibiting common LLM hallucinations, such as incorrectly converting 24-hour time and confidently stating the wrong day of the week.&lt;/p&gt;
&lt;h3 id=&quot;using-llms-to-find-python-c-extension-bugs&quot;&gt;&lt;a href=&quot;https://lwn.net/Articles/1067234/&quot;&gt;Using LLMs to find Python C-extension bugs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article describes how hobbyist Daniel Diniz used Claude Code to systematically discover 575+ bugs in 44 Python C-extensions covering nearly a million lines of code. His cext-review-toolkit employs 13 specialized agents targeting reference-counting, GIL handling, and exception state issues. The approach emphasizes maintainer control, providing high-quality reports with reproducers via secret GitHub gists and adapting based on feedback to minimize false positives. While the reaction has been positive, maintainers note concerns about bug severity and prioritization, suggesting improvements. The article presents this as a responsible example of LLM-assisted bug finding that avoids overwhelming maintainers.&lt;/p&gt;
&lt;h3 id=&quot;uv-is-fantastic-but-its-package-management-ux-is-a-mess&quot;&gt;&lt;a href=&quot;https://www.loopwerk.io/articles/2026/uv-ux-mess/&quot;&gt;uv is fantastic, but its package management UX is a mess&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Astral’s &lt;strong&gt;uv&lt;/strong&gt; is praised for its speed and ability to replace multiple Python tools with one binary, but the author argues its package management UX lags behind peers like &lt;code&gt;pnpm&lt;/code&gt; and &lt;code&gt;poetry&lt;/code&gt;. Key complaints include: no simple &lt;code&gt;uv outdated&lt;/code&gt; command (only &lt;code&gt;uv tree --outdated --depth 1&lt;/code&gt; which displays a cluttered 50-line tree), unsafe default version constraints without upper bounds unlike pnpm’s caret syntax, and awkward upgrade commands requiring repeated &lt;code&gt;--upgrade-package&lt;/code&gt; flags. The author welcomes the new &lt;code&gt;--bounds&lt;/code&gt; option but notes it’s opt-in and a preview feature. Post-HN reader clarifications noted that &lt;code&gt;uv pip list --outdated&lt;/code&gt; exists, &lt;code&gt;--bounds&lt;/code&gt; can be set globally in pyproject.toml, and the no-upper-bounds default makes sense for libraries (to avoid dependency resolution issues) but not for applications.&lt;/p&gt;
&lt;h3 id=&quot;stop-writing-edge-case-tests-let-hypothesis-find-them-instead&quot;&gt;&lt;a href=&quot;https://dev.to/peytongreen_dev/stop-writing-edge-case-tests-let-hypothesis-find-them-instead-5hl0&quot;&gt;Stop writing edge case tests. Let Hypothesis find them instead.&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The author shares how they wrote 47 edge case tests for a URL normalizer, but when they used &lt;code&gt;Hypothesis&lt;/code&gt;, it generated 10,000 test cases in 30 seconds and found a critical bug — an all-whitespace URL silently returned an empty string. Unlike conventional tests that check specific inputs, property-based tests define invariants that should hold for any input. Hypothesis generates diverse inputs, shrinks failures to minimal examples, and stores failing cases in a local database for regression testing. The author recommends adding one or two &lt;code&gt;@given&lt;/code&gt; tests per function to catch bugs you didn’t know to look for, and provides examples of useful properties like round-trip invariants, idempotency, and monotonicity.&lt;/p&gt;
&lt;h3 id=&quot;announcing-genkit-middleware-intercept-extend-and-harden-your-agentic-apps&quot;&gt;&lt;a href=&quot;https://developers.googleblog.com/announcing-genkit-middleware-intercept-extend-and-harden-your-agentic-apps/&quot;&gt;Announcing Genkit Middleware: Intercept, extend, and harden your agentic apps&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Genkit&lt;/code&gt;, Google’s open-source framework for building AI-powered agentic applications, has introduced a middleware system to enhance reliability, security, and observability. Available in TypeScript, Go, Dart and Python, middleware allows developers to intercept generation calls and tool execution loops to inject custom behaviors. The system offers pre-built solutions including Retry for handling transient errors with exponential backoff, Fallback for switching to alternative models during failures, Tool Approval for human-in-the-loop confirmation of sensitive actions, Skills for dynamically loading contextual knowledge, and Filesystem for scoped file access. Developers can also create custom middleware to enforce specific business rules, such as preventing models from mentioning competitor products, providing a composable way to harden production-ready AI applications.&lt;/p&gt;
&lt;h3 id=&quot;inside-the-microsoft-agent-framework-how-we-designed-a-layered-sdk&quot;&gt;&lt;a href=&quot;https://commandline.microsoft.com/agent-framework-layered-sdk-loops-workflows-harnesses/&quot;&gt;Inside the Microsoft Agent Framework: How we designed a layered SDK&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://commandline.microsoft.com/wp-content/uploads/2026/05/AgentHarness-1536x833.png&quot; alt=&quot;microsoft-agent-framework-harness&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Microsoft Agent Framework (MAF)&lt;/strong&gt; is Microsoft’s layered SDK for building production-ready AI agents, which is organized around three core concepts. &lt;strong&gt;Agent loops&lt;/strong&gt; are the fundamental execution cycle where an agent receives input, reasons, calls tools, and iterates until done. &lt;strong&gt;Workflows&lt;/strong&gt; provide structured orchestration for multi-step, multi-agent, or business-critical processes, supporting patterns like sequential flows, handoffs, and author/critic loops. &lt;strong&gt;Harnesses&lt;/strong&gt; supply reusable runtime capabilities — tools, context, memory, planning, permissions, and middleware — that surround the agent and make it practical for real-world use. The framework is provider-agnostic, working across models from Microsoft, OpenAI, Anthropic, and others, and is available for .NET and Python.&lt;/p&gt;
&lt;h3 id=&quot;the-anatomy-of-an-agent-harness&quot;&gt;&lt;a href=&quot;https://langchain.com/blog/the-anatomy-of-an-agent-harness&quot;&gt;The Anatomy of an Agent Harness&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This Langchain blog explains that an agent is composed of two parts: a model containing the intelligence and a harness that makes that intelligence useful. A harness includes all the code, configuration, and execution logic around the model. Key harness components include filesystems for durable storage and context management, bash/code execution for autonomous problem-solving, sandboxes for secure isolated execution, memory systems for continual learning, context compaction strategies to prevent context rot, and long-horizon execution features like planning and self-verification loops. The author argues that harness engineering will remain valuable even as models become more capable, as well-designed harnesses optimize model performance for specific tasks. The field continues evolving with active research into multi-agent orchestration, dynamic tool assembly, and self-improving systems.&lt;/p&gt;
&lt;h3 id=&quot;agent-skills&quot;&gt;&lt;a href=&quot;https://addyosmani.com/blog/agent-skills/&quot;&gt;Agent Skills&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This article explores how AI coding agents skip essential senior-engineer practices — specs, tests, reviews, scope discipline — because they optimize for speed, not reliability. The project packages “skills” as workflow-driven markdown files injected into agent context, encoding six lifecycle phases (define, plan, build, verify, review, ship) with concrete exit criteria. Five principles guide design: process over prose, anti-rationalization tables rebutting plausible shortcuts, non-negotiable verification, progressive disclosure to limit context, and strict scope discipline. Skills embed Google-scale practices (Hyrum’s Law, test pyramids, DAMP tests, small PRs, trunk-based development) that agents otherwise ignore. Used as installed slash commands or lightweight runbooks, they force the scaffolding senior engineers provide, turning optional polish into mandatory guardrails for safe, reviewable, ship-worthy code.&lt;/p&gt;
&lt;h3 id=&quot;how-to-work-and-compound-with-ai&quot;&gt;&lt;a href=&quot;https://eugeneyan.com//writing/working-with-ai/&quot;&gt;How to Work and Compound with AI&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article outlines practical principles for working effectively with AI so that collaboration compounds over time. It argues that every finished artifact — code, docs, analysis, decisions — should become reusable context, while corrections update configurations that reduce future errors. Key practices include organizing work into clear directory structures so models can retrieve relevant context, maintaining annotated indexes and per-project onboarding docs (like &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;INDEX.md&lt;/code&gt;) so each session starts with the right knowledge, and separating persistent memory (project state) from personal preferences and workflows. Taste and behavior should be encoded as configuration (global, repo, and project-level &lt;code&gt;CLAUDE.md&lt;/code&gt; files), split into lazy‑loaded guides and skills to avoid context bloat. Skills capture repeatable weekly tasks as markdown workflows, bootstrapped by doing a task once and refining it through session transcripts rather than direct edits. Verification is shifted left with deterministic checks, automated tests, and model‑run evals before human review, and long‑running tasks use a “pair programmer” session to detect execution and direction drift. To scale, delegate larger end‑to‑end tasks with clear success criteria and parallel sessions, and make work observable with status signals and remote‑control options. Finally, close the loop by sharing openly, mining transcripts for missing steps or corrections, and periodically refactoring configs to avoid contradictions—the same principles that apply to managing human teams.&lt;/p&gt;
&lt;h3 id=&quot;vibe-coding-and-agentic-engineering-are-getting-closer-than-id-like&quot;&gt;&lt;a href=&quot;https://simonwillison.net/2026/May/6/vibe-coding-and-agentic-engineering/&quot;&gt;Vibe coding and agentic engineering are getting closer than I’d like&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Simon Willison distinguishes “vibe coding” — accepting AI‑generated code without review — from “agentic engineering”, where professionals use AI tools to build high-quality systems while maintaining security and maintainability. In this post he observes that the two practices are increasingly overlapping: because AI agents are becoming highly reliable, he now routinely ships production code he hasn’t reviewed, feeling uncomfortable about accountability. He also notes that AI makes it trivially easy to produce polished repos with tests and docs, so real evidence of value now comes from whether software has been actively used. Although AI has shifted bottlenecks from coding to design and evaluation, he believes the core difficulty of software engineering remains, and he doubts a widespread threat to enterprise SaaS since companies generally prefer proven, professionally managed solutions over DIY vibecoded projects.&lt;/p&gt;
&lt;h3 id=&quot;how-i-use-llms-as-a-staff-engineer-in-2026&quot;&gt;&lt;a href=&quot;https://www.seangoedecke.com/how-i-use-llms-in-2026/&quot;&gt;How I use LLMs as a staff engineer in 2026&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In 2026, the author has significantly expanded his use of LLMs compared to 2025. The biggest shift is that AI agents are now reliable enough to produce entire pull requests in areas he’s familiar with, and he uses them constantly for bug investigation (correctly diagnosing ~80% of issues), codebase research, testing, and local setup tasks. He still writes his own PR descriptions and all public communications by hand, believing humans better convey core ideas and signal genuine review. He also avoids using LLMs for UI testing or writing blog posts, though he uses them for draft feedback. His core job — shipping projects, exercising judgment, and navigating politics — remains unchanged, but agents have expanded his capacity to take on small tasks. He warns that many people either under-utilize agents (not delegating enough) or over-utilize them (trusting them with unreviewed sweeping changes), and finding the right balance remains key.&lt;/p&gt;
&lt;h3 id=&quot;the-bottleneck-was-never-the-code&quot;&gt;&lt;a href=&quot;https://www.thetypicalset.com/blog/thoughts-on-coding-agents&quot;&gt;The bottleneck was never the code&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article argues that coding agents shift the bottleneck in software development from writing code to collaboration, decision-making, and context-sharing. While agents dramatically boost individual productivity, the real challenge for organizations is producing precise specifications and maintaining shared context — something humans acquire informally but agents require explicitly. The author emphasizes that focus (saying no to unnecessary features) and organizational coherence become more critical as code becomes cheaper to produce. Agents can help by reading exhaustively to extract implicit knowledge, but some tacit context remains unrecoverable. Ultimately, the companies that thrive will be those that treat coherence and context as maintainable artifacts, not just those with the best technical tools.&lt;/p&gt;
&lt;h3 id=&quot;agentic-coding-is-a-trap&quot;&gt;&lt;a href=&quot;https://larsfaye.com/articles/agentic-coding-is-a-trap&quot;&gt;Agentic Coding is a Trap&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The article argues that over-reliance on AI coding agents is a trap that erodes developers’ critical thinking and debugging skills while creating costly dependencies. It warns that “agentic coding” distances engineers from implementation, causing cognitive atrophy, vendor lock-in, unpredictable token costs, and fragile systems that must manage AI’s non-determinism. Junior and senior developers alike lose the friction essential for deep learning and ownership. Drawing parallels to past tech shifts, the author insists the risk is real and immediate. He advocates using LLMs as secondary aids for planning and research—not as autonomous orchestrators—while keeping hands-on coding central, ensuring competence, quality, and long-term value over short-term speed.&lt;/p&gt;
&lt;h2 id=&quot;podcasts&quot;&gt;Podcasts&lt;/h2&gt;
&lt;h3 id=&quot;-realpython-podcast&quot;&gt;🐍 RealPython Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/293/&quot;&gt;Episode 293: Agentic Data Science Pair Programming With marimo pair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/294/&quot;&gt;Episode 294: Declarative Charts in Python &amp;amp; Discerning Iterators vs Iterables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/295/&quot;&gt;Episode 295: Agentic Architecture: Why Files Aren’t Always Enough&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/296/&quot;&gt;Episode 296: Managing Polars Schema Issues &amp;amp; Profiling GitHub Users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/297/&quot;&gt;Episode 297: Improving Python Through PEPs and Protocols&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-python-bytes-podcast&quot;&gt;🍕 Python Bytes Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/478/iodine-tablets-and-potable-water&quot;&gt;#478 Iodine tablets and potable water&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/479/talking-about-types&quot;&gt;#479 Talking About Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/480/proud-parents&quot;&gt;#480 Proud Parents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/481/ways-to-die&quot;&gt;#481 Ways to die&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-talk-python-to-me&quot;&gt;📣 Talk Python to me&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/547/parallel-python-at-anyscale-with-ray&quot;&gt;#547: Parallel Python at Anyscale with Ray&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/548/event-sourcing-design-pattern&quot;&gt;#548: Event Sourcing Design Pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/549/great-docs&quot;&gt;#549: Great Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/550/ai-contributions-and-maintainer-load-in-open-source&quot;&gt;#550: AI Contributions and Maintainer Load in Open Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-vs-code-insiders-podcast&quot;&gt;🚀 VS Code Insiders Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/22&quot;&gt;Episode 22: Agent-First Development Workflows in VS Code with Brigit Murtaugh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;h3 id=&quot;pydantichttpx2-bsd-3-clause&quot;&gt;&lt;a href=&quot;https://github.com/pydantic/httpx2&quot;&gt;pydantic/httpx2&lt;/a&gt; (BSD-3-Clause)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With HTTPX itself seeing limited activity recently, Pydantic is picking up stewardship under the &lt;code&gt;HTTPX2&lt;/code&gt; name so that users have a reliably maintained path forward - including timely security updates for a library that sits in the critical path of so many production systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;minishlabsemble-mit&quot;&gt;&lt;a href=&quot;https://github.com/MinishLab/semble&quot;&gt;MinishLab/semble&lt;/a&gt; (MIT)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Semble is a code search library built for agents. It returns the exact code snippets they need instantly, using ~98% fewer tokens than grep+read. Indexing and searching a full codebase end-to-end takes under a second, with ~200x faster indexing and ~10x faster queries than a code-specialized transformer, at 99% of its retrieval quality.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;microsoftwebwright-mit&quot;&gt;&lt;a href=&quot;https://github.com/microsoft/Webwright&quot;&gt;microsoft/Webwright&lt;/a&gt; (MIT)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Webwright gives LLM a terminal where it can launch multiple browser sessions to inspect the page and complete a web task. It captures and inspects page screenshots/states only when needed. It enforces each web task to be completed end-to-end within a re-runnable Python script, i.e. your web agent browsing history is a single code file. No multi-agent system, no graph engine, no plugin layer, no hidden orchestration — just a terminal, a browser, and a model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;As we wrap up this journey together, I want to take a moment to express my gratitude for your reading. If you’ve enjoyed what you just read and would like to help sustain this blog, consider &lt;a href=&quot;https://github.com/blueberry-py/blog/stargazers&quot;&gt;starring this blog on github&lt;/a&gt;, it would be great motivation for me to keep updating the blogs!&lt;/p&gt;
&lt;p&gt;Alright, that concludes the May Edition of “This Month for Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful. Happy coding and see you in June! 👋&lt;/p&gt;
</description><pubDate>Sun, 31 May 2026 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>news</category><category>podcast</category><category>AI</category><category>pycon</category><author>Zeyang Lin</author></item></channel></rss>