<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Cli on BlueberryPy</title><description>Recent content in Cli on BlueberryPy</description><link>https://blueberrypy.netlify.app/tags/cli/</link><language>en-us</language><item><title>[one-liner] Install OpenCode</title><link>https://blueberrypy.netlify.app/post/one-liner-opencode/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/one-liner-opencode/</guid><description>&lt;h2 id=&quot;one-liner-series-opencode&quot;&gt;One-Liner series: OpenCode&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://opencode.ai/docs#install&quot;&gt;source: OpenCode documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;install-on-linux-macos&quot;&gt;Install on Linux, macOS&lt;/h3&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; https://opencode.ai/install&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;install-on-windows&quot;&gt;Install on Windows&lt;/h3&gt;
&lt;h4 id=&quot;install-with-npm&quot;&gt;Install with npm&lt;/h4&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -g&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; opencode-ai&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;install-with-chocolatey&quot;&gt;Install with chocolatey&lt;/h4&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;choco&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; opencode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;verify-installation&quot;&gt;Verify installation&lt;/h3&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;opencode&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;update&quot;&gt;Update&lt;/h3&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;opencode&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; upgrade&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Mon, 29 Jun 2026 09:06:00 GMT</pubDate><category>cli</category><category>linux</category><category>opencode</category><category>ai</category><category>cli</category><category>windows</category><category>linux</category><category>ubuntu</category><category>macos</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - November 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-11/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-11/</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;# 2025 11&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-11&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;/_astro/splash.C7Un_SmT_GxBhd.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! I’m glad to see you back reading the ninth issue of my “This month for Pythonistas” series which curates the news, articles, tutorials, podcasts, and more Python stuff 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-2025-11/&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-2025-11/&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-2025-11/&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-2025-11/&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-cfp-is-open&quot;&gt;PyCon US 2026 CFP is Open&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;PyCon-US-2026&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1080&quot; height=&quot;1080&quot; src=&quot;/_astro/pyconus2026.yKrFO_F9_2e6UjS.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;The 2026 PyCon US &lt;a href=&quot;https://us.pycon.org/2026/speaking/guidelines/&quot;&gt;call for proposals&lt;/a&gt; (CFP) for Talks, Charlas, Tutorials and Posters is open until &lt;strong&gt;December 19th, 2025&lt;/strong&gt;. Don’t miss out on the largest Python conference in the world!&lt;/p&gt;
&lt;h3 id=&quot;pycon-ireland-2025&quot;&gt;PyCon Ireland 2025&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.python.ie/images/Dublin_Skyline_2025-screen-size.width-800.png&quot; alt=&quot;PyCon-Ireland-2025&quot;&gt;&lt;/p&gt;
&lt;p&gt;PyCon Ireland this year took place November 15-16 in UCD O’Reilly Hall, Dublin, featuring two talk tracks and two workshop tracks on both days.&lt;/p&gt;
&lt;h3 id=&quot;20th-anniversary-of-first-ever-django-release&quot;&gt;20th anniversary of first ever Django release&lt;/h3&gt;
&lt;p&gt;For the past twenty years, Django has shipped over 440 releases, making it among the most popular and successful Python web frameworks. You can read more about it &lt;a href=&quot;https://www.djangoproject.com/weblog/2025/nov/19/twenty-years-of-django-releases/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.15.0 alpha 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the second developer preview of the upcoming Python 3.15 release. It is available for download &lt;a href=&quot;https://www.python.org/downloads/release/python-3150a2/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Django 6.0 RC 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Django 6.0 release candidate 1 is &lt;a href=&quot;https://www.djangoproject.com/download/6.0rc1/tarball/&quot;&gt;now available&lt;/a&gt;. The provisional release notes can be found &lt;a href=&quot;https://docs.djangoproject.com/en/dev/releases/6.0/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Provided no major bugs are discovered that can’t be solved in the next two weeks, Django 6.0 will be released on or around &lt;em&gt;December 3&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pytest 9.0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;pytest 9.0 brings significant improvements including native TOML configuration support, a new strict mode for better testing practices, and the long-awaited subtests feature.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/jupyter-ai-coding-in-notebooks/&quot;&gt;Jupyter AI: AI Coding in Notebooks&lt;/a&gt; by Andrew Ng and Brian Granger&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll build a book research assistant using the Open Library API, and create a stock market data analysis workflow, all with the help of Jupyter AI. You’ll learn how to provide API documentation as context so the LLM generates accurate syntax for code that wasn’t part of its pretraining.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/semantic-caching-for-ai-agents/&quot;&gt;Semantic Caching for AI Agents&lt;/a&gt; from Redis&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll build a semantic cache that makes your AI agents faster and more cost-effective by recognizing when different questions mean the same thing. For example, when someone asks “How do I get a refund?” and another asks “I want my money back”， your cache will reuse the answer instead of making another API call, reducing the need for redundant model calls.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/design-develop-and-deploy-multi-agent-systems-with-crewai/&quot;&gt;Design, Develop, and Deploy Multi-Agent Systems with CrewAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: This course contains a small portion of content which requires a paid PRO subscription to access.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to build multi-agent systems that automate complex, end-to-end workflows. You’ll create intelligent agent teams that plan, reason, and collaborate using tools, memory, and guardrails, and learn how to scale them for production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/python-markitdown/&quot;&gt;Python MarkItDown: Convert Documents Into LLM-Ready Markdown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The MarkItDown library lets you quickly turn PDFs, Office files, images, HTML, audio, and URLs into LLM-ready Markdown. In this tutorial, you’ll compare MarkItDown with Pandoc, run it from the command line, use it in Python code, and integrate conversions into AI-powered workflows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cookbook.openai.com/examples/build_a_coding_agent_with_gpt-5.1&quot;&gt;Build a coding agent with GPT 5.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this guide, we’ll use the Agents SDK to build a coding agent that can scaffold a brand-new app from a prompt and refine it through user feedback.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.jetbrains.com/pycharm/2025/10/why-performance-matters-in-python-development/&quot;&gt;Why Performance Matters in Python Development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: This article contains promotional content regarding JetBrains products.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The blog from JetBrains emphasizes Python performance optimization as a strategic business imperative, not just technical concern. Despite Python’s interpreted nature and GIL limitations, most bottlenecks stem from code-level inefficiencies. Performance impacts user experience, scalability, infrastructure costs, and development velocity. Key optimization areas include algorithmic improvements, proper data structures, I/O batching, and appropriate parallelism (threading for I/O-bound, multiprocessing for CPU-bound tasks). The article dispels myths about Python being universally slow, emphasizing profiling-driven optimization over intuition.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mergify.com/blog/await-is-not-a-context-switch-understanding-python-s-coroutines-vs-tasks&quot;&gt;&lt;code&gt;await&lt;/code&gt; is Not a Context Switch: Understanding Python’s Coroutines vs Tasks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post clarifies a critical distinction in Python’s &lt;code&gt;asyncio&lt;/code&gt;: unlike JavaScript or C#, awaiting a coroutine does not automatically yield control to the event loop. In Python, &lt;code&gt;await&lt;/code&gt; synchronously executes a coroutine until a suspension occurs; true concurrency and interleaving mainly happen with explicitly created Tasks (&lt;code&gt;asyncio.create_task&lt;/code&gt;). This means critical sections without internal &lt;code&gt;await&lt;/code&gt; statements are atomic relative to the event loop. Understanding this prevents unnecessary locking, as race conditions only occur at specific suspension points, not at every &lt;code&gt;async&lt;/code&gt; function call.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pythonmorsels.com/__slots__/&quot;&gt;&lt;code&gt;__slots__&lt;/code&gt; for optimizing classes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python classes store instance attributes in a &lt;code&gt;__dict__&lt;/code&gt; dictionary by default, allowing dynamic addition but consuming memory. Defining &lt;code&gt;__slots__ = (&apos;attr1&apos;, &apos;attr2&apos;, ...)&lt;/code&gt; replaces &lt;code&gt;__dict__&lt;/code&gt; with a fixed, efficient array-like structure. Benefits: restricts attributes (no extras allowed), reduces memory usage (e.g., from 271KB to 176KB for 1M Point objects), and speeds up attribute lookups. Ideal for classes with many instances or frequent access.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://codecut.ai/regex-pregex-pyparsing-text-pattern-matching-guide/&quot;&gt;Choose the Right Text Pattern Tool: Regex, Pregex, or Pyparsing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article compares three Python text pattern matching tools: regex (regular expressions), pregex (human-readable regex alternative), and pyparsing (grammar-based parsing). It teaches when to use each tool for extracting emails, phone numbers, and parsing structured data. The guide helps developers choose the right approach for different text processing scenarios in Python.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.paulox.net//2025/11/14/how-to-use-uuidv7-in-python-django-and-postgresql/&quot;&gt;How to use UUIDv7 in Python, Django and PostgreSQL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This guide explains using UUIDv7 – time-ordered IDs for better index locality than UUIDv4 – in Python 3.14 (&lt;code&gt;uuid.uuid7()&lt;/code&gt;), Django 5.2 models, and PostgreSQL 18 (native &lt;code&gt;uuidv7()&lt;/code&gt; generation and &lt;code&gt;uuid_extract_timestamp()&lt;/code&gt; via GeneratedFields). Covers setup, migrations, client-side (SQLite) vs. DB-side generation, testing, and considerations for other databases like MySQL/Oracle. Recommends masking (UUIDv47) for public APIs to hide timestamps.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://jacobtomlinson.dev/posts/2025/python-package-managers-uv-vs-pixi/&quot;&gt;Python package managers: uv vs pixi?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This post compares Python package managers uv (fast Rust pip reimplementation for PyPI) and pixi (next-gen conda for PyPI + conda-forge). uv suits scripts, apps, libraries; pixi excels in AI/CUDA/science with compiled deps. Historical evolution: pip → conda binaries → mamba speed → declarative locking. Author’s recommendations: uv for most, pixi for GPU/research, conda+uv for interdependent libs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/gpt-5-1-for-developers/&quot;&gt;Introducing GPT-5.1 for developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI has released GPT-5.1 for the API platform, a model designed to balance intelligence and speed for agentic and coding tasks. It features adaptive reasoning, where the model dynamically adjusts thinking time based on task complexity—processing simple requests significantly faster while remaining persistent on difficult problems.&lt;/p&gt;
&lt;p&gt;Key updates include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;No Reasoning Mode: A setting for ultra-low latency tasks like tool calling and search, behaving like a standard non-reasoning model but with GPT-5.1’s intelligence base.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extended Prompt Caching: Supports up to 24-hour cache retention to lower costs and latency for long-context workflows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New Developer Tools: Introduces &lt;code&gt;apply_patch&lt;/code&gt; for reliable, structure-aware code editing and a &lt;code&gt;shell&lt;/code&gt; tool for executing local commands.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GPT-5.1 utilizes a more steerable coding personality and outperforms GPT-5 on benchmarks like SWE-bench Verified (76.3%). It is available immediately to developers on paid tiers, with pricing matching GPT-5. Specialized &lt;code&gt;codex&lt;/code&gt; versions were also released for agentic coding workflows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.google/products/gemini/gemini-3/&quot;&gt;A new era of intelligence with Gemini 3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://storage.googleapis.com/gweb-uniblog-publish-prod/images/gemini_3_webdev_arena_leaderboar.width-1000.format-webp.webp&quot; alt=&quot;gemini-3-pro-tops-webdev-arena&quot;&gt;&lt;/p&gt;
&lt;p&gt;Google has introduced Gemini 3, its most intelligent and capable AI model to date. Gemini 3 Pro delivers state-of-the-art performance in multimodal reasoning, coding, and long-horizon planning, outperforming previous models on major benchmarks like Humanity’s Last Exam.&lt;/p&gt;
&lt;p&gt;Key features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enhanced Reasoning: The model offers deeper nuance and reduced sycophancy. A new Deep Think mode, coming soon to Ultra subscribers, pushes reasoning capabilities even further for complex problem-solving.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Developer Tools: Google launched &lt;strong&gt;Antigravity&lt;/strong&gt;, a new agentic development platform where AI agents can autonomously plan, code, and validate software.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Practical Applications: Gemini 3 helps users learn by synthesizing diverse inputs (like video and text), build complex apps via “vibe coding,” and handle multi-step planning tasks for daily life.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gemini 3 is available immediately across Google products, including the Gemini app, AI Studio, Vertex AI, and within Google Search’s AI Mode. The release emphasizes robust safety testing and improved resistance to misuse.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.google.com/blog/topics/developers-practitioners/where-to-use-sub-agents-versus-agents-as-tools&quot;&gt;ADK architecture: When to use sub-agents versus agents as tools&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post compares &lt;em&gt;sub-agents&lt;/em&gt; vs. &lt;em&gt;agents as tools&lt;/em&gt; in multi-agent AI systems. Agents as tools are stateless, reusable for discrete tasks (e.g., NL2SQL, DB execution) with isolated context. Sub-agents are stateful, collaborative for complex workflows (e.g., data visualization, travel planning) sharing parent context. Decision matrix: Use tools for low-complexity/reusable tasks; sub-agents for high-complexity/stateful processes. Real-world cases include data analysis and trip planning.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://martinfowler.com/articles/llm-learning-loop.html&quot;&gt;The Learning Loop and LLMs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article argues that software development is fundamentally a learning process, not an assembly line. While LLMs excel at removing friction and generating code, they cannot replace the essential learning loop of observe-experiment-apply. True expertise comes from hands-on experience and understanding, not just AI-generated solutions. LLMs are best used as brainstorming partners, not autonomous builders, to avoid the “maintenance cliff” where systems become unmaintainable due to lack of deep understanding.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://octomind.dev/blog/why-agents-do-not-write-most-of-our-code-a-reality-check&quot;&gt;why agents DO NOT write most of our code - a reality check&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article provides a reality check on AI coding agents. Despite building AI agents themselves, Octomind finds that most of their code is still written by humans. Through practical experiments, the author reveals that AI agents struggle with maintaining codebase mental models, produce overly verbose code (1000+ line PRs), lack self-reflection about their limitations, and often miss critical issues like transaction handling. While AI is valuable for brainstorming, debugging, and small tasks, the dream of agents writing most production code remains far from reality.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://stefaniemolin.com/articles/open-source/becoming-a-core-developer/&quot;&gt;Becoming a Core Developer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Stefanie Molin became a numpydoc core developer by creating a pre-commit hook for docstring validation. Starting from fixing docstrings at a Scikit-Learn sprint, she developed &lt;code&gt;AstValidator&lt;/code&gt; using Python’s &lt;code&gt;ast&lt;/code&gt; module for static analysis, avoiding code execution. This led to numpydoc-validation (v1.6.0+), with CLI linting and config via &lt;code&gt;pyproject.toml&lt;/code&gt;. After PR merge and improvements, she joined as core dev in April 2024.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/what-caused-the-large-aws-outage&quot;&gt;What caused the large AWS outage?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A major AWS outage on October 20, 2025 was caused by a DynamoDB DNS failure in us-east-1. The 14-hour incident started when race conditions between DNS enactors emptied DynamoDB’s DNS records, making the database appear offline. This cascaded to EC2’s droplet management system, causing capacity shortages and network connectivity issues that took 12+ hours to fully resolve.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/18-november-2025-outage/&quot;&gt;Cloudflare outage on November 18, 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On November 18, 2025, Cloudflare experienced a significant outage starting at 11:20 UTC that disrupted traffic across its network, causing widespread HTTP 5xx errors for customer websites and impacting services like Workers KV, Access, and the Dashboard.&lt;/p&gt;
&lt;p&gt;The outage was not caused by a cyberattack but by an internal configuration error. A change to database permissions caused a query to generate duplicate entries in a “feature file” used by Cloudflare’s Bot Management system. This doubling in file size exceeded a hardcoded memory limit within the core proxy software, causing the system to crash (panic) globally.&lt;/p&gt;
&lt;p&gt;Cloudflare engineers initially suspected a DDoS attack but soon identified the corrupt file. They resolved the issue by halting the bad file’s propagation and manually reverting to a known good version. Core traffic began flowing normally by 14:30 UTC, and all systems were fully restored by 17:06 UTC. Cloudflare has apologized and is implementing new safeguards, such as stricter file validation and global kill switches, to prevent future occurrences.&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/273/&quot;&gt;Episode 273: Advice for Writing Maintainable Python Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/274/&quot;&gt;Episode 274: Preparing Data Science Projects for Production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/275/&quot;&gt;Episode 275: Building a FastAPI Application &amp;amp; Exploring Python Concurrency&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/456/youre-so-wrong&quot;&gt;#456 You’re so wrong&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/457/tapping-into-http&quot;&gt;#457 Tapping into HTTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/458/i-will-install-linux-on-your-computer&quot;&gt;#458 I will install Linux on your computer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/459/inverted-dependency-trees&quot;&gt;#459 Inverted dependency trees&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/526/building-data-science-with-foundation-llm-models&quot;&gt;#526: Building Data Science with Foundation LLM Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/527/mcp-servers-for-python-devs&quot;&gt;#527: MCP Servers for Python Devs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/528/python-apps-with-llm-building-blocks&quot;&gt;#528: Python apps with LLM building blocks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17969765-204-the-science-of-open-science-with-leah-wasser-founder-of-pyopensci&quot;&gt;#204: The science of open science - with Leah Wasser, founder of pyOpenSci&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/18047967-205-building-reactive-python-notebooks-with-marimo&quot;&gt;#205: Building reactive Python notebooks with Marimo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/18217165-the-power-of-one-clear-goal-kishan-patel-on-building-a-developer-mindset&quot;&gt;#206: The Power of One Clear Goal: Kishan Patel on building a Developer Mindset&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/12&quot;&gt;Episode 12: Behind the Scenes of VS Code’s Planning Agent with Bhavya U&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/13&quot;&gt;Episode 13: Beyond the Keynote: VS Code at GitHub Universe 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/14&quot;&gt;Episode 14: Designing for Everyone: Accessibility in VS Code with Megan Rogge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/15&quot;&gt;Episode 15: Taming AI Assisted Coding Models with Eleanor Berger&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hyperflask/hyperflask&quot;&gt;hyperflask&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;hyperflask is a Flask-based (very) opiniated full-stack web framework where all the tech choices have been made. It combines multiple Flask extensions and frontend libraries into a seamless experience.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/langchain-ai/deepagents&quot;&gt;langchain-ai/deepagents&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Primarily inspired by Claude Code, deepagents is an agent harness built on langchain and langgraph, which is equipped with a planning tool, a filesystem backend, and the ability to spawn subagents - making them well-equipped to handle complex agentic tasks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/MoonshotAI/kimi-cli&quot;&gt;MoonshotAI/kimi-cli&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kimi CLI is yet another command-line agent but built within Python ecosystem unlike other Claude Code-alike tools. Apart from agentic coding, it can also be switched to “shell mode” where you can run (some of) shell commands.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/MemMachine/MemMachine&quot;&gt;MemMachine&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MemMachine is a open-source, “universal” memory layer for AI agents which persists across multiple sessions, agents, and large language models. It provides Python SDK, RESTful API as well as MCP for easy integration with agents.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/OpenRouterTeam/python-sdk&quot;&gt;OpenRouterTeam/python-sdk&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is OpenRouter’s official Python SDK, a type-safe toolkit for building AI applications with access to 300+ language models through a unified API. You can find the docs &lt;a href=&quot;https://openrouter.ai/docs/sdks/python&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;golden-joystick-awards-2025&quot;&gt;Golden Joystick Awards 2025&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.mos.cms.futurecdn.net/pqnA52wxB3ZWa6sVPJvyJZ-1200-80.jpg.webp&quot; alt=&quot;golder-joystick-ultimate-game-of-the-year&quot;&gt;&lt;/p&gt;
&lt;p&gt;The Golden Joystick Awards revealed its winners for 2025 on November 20th! Congratulations to the winners, especially &lt;strong&gt;Clair Obscure Expedition 33&lt;/strong&gt; which was crowned the Ultimate Game of the Year (UGOTY) along with other six thophies, for their outstanding contributions to the video game industry!&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 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 November Edition of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful. Happy coding and see you in December!&lt;/p&gt;
</description><pubDate>Sun, 30 Nov 2025 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><category>agentic</category><category>llm</category><category>ai</category><author>Zeyang Lin</author></item><item><title>[one-liner] Install Kiro Cli</title><link>https://blueberrypy.netlify.app/post/one-liner-kiro-cli/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/one-liner-kiro-cli/</guid><description>&lt;h2 id=&quot;one-liner-series-kiro-cli&quot;&gt;One-Liner series: Kiro Cli&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://kiro.dev/docs/cli/installation/&quot;&gt;source: kiro.dev docs&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;install-on-linuxmacos&quot;&gt;Install on Linux/macOS&lt;/h3&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; https://cli.kiro.dev/install&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;important-note-on-amazon-q-cli&quot;&gt;Important note on Amazon Q CLI&lt;/h3&gt;
&lt;p&gt;If Amazon Q CLI was already installed, running the script above would result in:&lt;/p&gt;
&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;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Kiro CLI installer:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Detected existing Amazon Q CLI installation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Kiro CLI is the new version of Amazon Q CLI. Updating to latest version.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;⚠️ Q CLI at /usr/bin/q does not support auto-update. Please uninstall it and rerun this script to install Kiro CLI.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To uninstall Q CLI, run:&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; remove&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; amazon-q&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If succeeded, run the kiro-cli script again:&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; https://cli.kiro.dev/install&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should install Kiro CLI:&lt;/p&gt;
&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;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Kiro CLI installer:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Downloading package...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✓ Downloaded and extracted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✓ Package installed successfully&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;🎉 Installation complete! Happy coding!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Next steps:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Use the command &quot;kiro-cli&quot; to get started!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This script would install Kiro Cli into current user’s .local/ directory:&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;which&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; kiro-cli&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&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;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/home/******/.local/bin/kiro-cli&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;update&quot;&gt;Update&lt;/h3&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;kiro-cli&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Tue, 18 Nov 2025 08:20:00 GMT</pubDate><category>cli</category><category>linux</category><category>aws</category><category>amazon</category><category>kiro</category><category>cli</category><category>linux</category><category>ubuntu</category><category>macos</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - October 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-10/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-10/</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;# 2025 10&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-10&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;/_astro/splash.J0iciDAs_Z20gOYn.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! In this big month for Python community, I’m glad to see you back reading the eighth issue of my “This month for Pythonistas” series which curates the news, articles, tutorials, podcasts, and more Python stuff 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-2025-10/&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-2025-10/&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-2025-10/&quot;&gt;Render&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;openai-devday-2025&quot;&gt;OpenAI DevDay 2025&lt;/h3&gt;
&lt;p&gt;OpenAI DevDay 2025 was held on October 6, 2025 at Fort Mason in San Francisco. The keynote was delivered by CEO Sam Altman and featured special guest Jony Ive, the renowned Apple designer. The event focused on empowering developers to build groundbreaking applications faster than ever.&lt;/p&gt;
&lt;p&gt;Highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/introducing-apps-in-chatgpt/&quot;&gt;Apps in ChatGPT&lt;/a&gt; and &lt;a href=&quot;https://developers.openai.com/apps-sdk/&quot;&gt;Apps SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://platform.openai.com/docs/guides/agents/agent-builder&quot;&gt;AgentKit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sora 2 and Sora 2 Pro&lt;/li&gt;
&lt;li&gt;GPT-5 Pro API&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/codex-now-generally-available/&quot;&gt;Codex General-Available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GPT-Realtime-mini&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;github-universe-25&quot;&gt;Github Universe 25&lt;/h3&gt;
&lt;p&gt;At &lt;strong&gt;Github Universe 25&lt;/strong&gt;, which was held on October 28 - 29, 2025, GitHub announces &lt;strong&gt;Agent HQ&lt;/strong&gt; - a unified platform bringing coding agents from Anthropic, OpenAI, Google, Cognition, and xAI directly into GitHub workflows as part of Copilot subscriptions. Features include mission control for managing agents across devices, VS Code integration with plan mode and custom agents, enterprise governance tools, code quality checks, and metrics dashboards. It would be available starting with OpenAI Codex for Copilot Pro+ users in VS Code Insiders.&lt;/p&gt;
&lt;p&gt;A comprehensive recap can be found &lt;a href=&quot;https://github.com/events/universe/recap&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3140-final&quot;&gt;Python 3.14.0 final&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.python.org/downloads/release/python-3140/&quot;&gt;&lt;img src=&quot;https://hugovk.dev/python-3.14.png&quot; alt=&quot;python3.14&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Python 3.14 (Pi, 𝜋, or Pie) is finally here! This release brings officially supported free-threaded build and lots of new features. Besides, Python 3.13.9 is also released.&lt;/p&gt;
&lt;p&gt;Python 3.12.12, 3.11.14, 3.10.19 and 3.9.24 are the latest security-only releases.&lt;/p&gt;
&lt;p&gt;Python 3.9 is reaching End-Of-Life this October, so don’t forget to upgrade!&lt;/p&gt;
&lt;h3 id=&quot;python-3150-alpha-1&quot;&gt;Python 3.15.0 alpha 1&lt;/h3&gt;
&lt;p&gt;Python 3.15.0 alpha 1 is the first of seven planned alpha releases for the Python 3.15 series. Key highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Statistical Sampling Profiler (PEP 799): A new high-performance profiling tool with virtually zero overhead that can sample at up to 1,000,000 Hz&lt;/li&gt;
&lt;li&gt;UTF-8 as Default Encoding (PEP 686): Python now uses UTF-8 as the default encoding for I/O operations, improving cross-platform compatibility&lt;/li&gt;
&lt;li&gt;New C API (PEP 782): Introduction of PyBytesWriter for creating Python bytes objects&lt;/li&gt;
&lt;li&gt;Improved Error Messages: Enhanced developer experience with better error reporting&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;langchain-10--langgraph-10&quot;&gt;LangChain 1.0 &amp;amp; LangGraph 1.0&lt;/h3&gt;
&lt;p&gt;This version marks LangChain’s commitment to stability with no breaking changes until 2.0, while reducing complexity and focusing on core agent functionality.&lt;/p&gt;
&lt;h3 id=&quot;crewai-10&quot;&gt;CrewAI 1.0&lt;/h3&gt;
&lt;p&gt;CrewAI 1.0 represents the transition from beta/experimental to production-grade enterprise solution, with better stability, enterprise features, and a more mature ecosystem while maintaining the core multi-agent orchestration capabilities.&lt;/p&gt;
&lt;h3 id=&quot;pytorch-29&quot;&gt;PyTorch 2.9&lt;/h3&gt;
&lt;p&gt;The 2.9 release focuses on enhancing multi-GPU programming, expanding hardware compatibility, and improving the developer experience for C++ extensions while maintaining performance optimizations.&lt;/p&gt;
&lt;p&gt;Major New Features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Symmetric Memory: New feature enabling easier multi-GPU kernel programming&lt;/li&gt;
&lt;li&gt;Enhanced torch.compile: Ability to arbitrarily toggle error or resume on graph breaks&lt;/li&gt;
&lt;li&gt;Expanded Hardware Support: Added ROCm, XPU, and CUDA 13 wheel variants&lt;/li&gt;
&lt;li&gt;FlexAttention: Now enabled on Intel GPUs with flash decoding optimization on x86 CPUs&lt;/li&gt;
&lt;li&gt;Arm Platform: Improvements and optimizations for Arm architecture&lt;/li&gt;
&lt;li&gt;Linux aarch64: Binary wheel builds across all CUDA versions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;isort-70&quot;&gt;isort 7.0&lt;/h3&gt;
&lt;p&gt;isort 7 is a conservative major release focused on updating Python version support and maintaining compatibility with newer Python versions. The changes are relatively minor compared to the major architectural changes seen between versions 4.x → 5.x. The main impact for users will be the requirement for Python 3.10+ and improved debugging information for file processing.&lt;/p&gt;
&lt;h3 id=&quot;ubuntu-2510&quot;&gt;Ubuntu 25.10&lt;/h3&gt;
&lt;p&gt;Ubuntu 25.10 “Questing Quokka” is released! It “introduces GNOME 49 with media and power controls on the lock screen, HDR brightness settings, and enhanced accessibility features in line with the European Accessibility Act.”&lt;/p&gt;
&lt;p&gt;It “also debuts Rust-based implementations of sudo and coreutils for improved memory safety, and adopts the new RVA23 profile as the baseline for RISC-V, paving the way to Ubuntu 26.04 LTS.”&lt;/p&gt;
&lt;p&gt;Other spins like Xubuntu, Lubuntu, Kubuntu, edubuntu, and Ubuntu Studio are also released. Pick your favorite and start coding!&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/courses/agentic-ai/&quot;&gt;Agentic AI&lt;/a&gt; by Andrew Ng&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course taught by Andrew Ng, you’ll gain a fundamental understanding and practical knowledge to develop production-ready agentic applications, from design patterns to deployment and evaluation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/building-live-voice-agents-with-googles-adk/&quot;&gt;Building Live Voice Agents with Google’s ADK&lt;/a&gt; from Google&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll learn how to build and deploy AI agents with Google’s open source Agent Development Kit (ADK). ADK provides modular components such as models, tools, memory, and orchestration, that make it easier to create both simple and complex systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/governing-ai-agents/&quot;&gt;Governing AI Agents&lt;/a&gt; from databricks&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore what it means to govern an agent, how to apply governance policies to a real dataset in Databricks, and how to add observability to track and debug performance. Through this course, you’ll know how to build agents that handle data responsibly while maintaining visibility, and safety.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/python314-new-features/&quot;&gt;Python 3.14: Cool New Features for You to Try&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As usual, RealPython has a great article on the very latest Python version. This time it compiles a list of the new features in Python 3.14 (eg. t-strings, colorful REPL, deferred annotation evaluation) and demonstrates how to play with them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.miguelgrinberg.com/post/python-3-14-is-here-how-fast-is-it&quot;&gt;Python 3.14 Is Here. How Fast Is It?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python 3.14 is the fastest CPython release yet, showing significant improvements over previous versions. Benchmarks tested Fibonacci calculations and bubble sort algorithms across single-threaded and multi-threaded scenarios. Key findings show 3.14 running 27% faster than 3.13 for recursive functions. While the new JIT interpreter showed minimal gains, the free-threading variant delivered impressive 3x speed improvements for CPU-heavy multi-threaded workloads due to GIL removal. PyPy remained exceptionally fast, outperforming even Node.js in some tests, while Rust demonstrated the highest performance overall.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.baro.dev/p/the-future-of-python-web-services-looks-gil-free&quot;&gt;The future of Python web services looks GIL-free&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python 3.14’s free-threaded implementation (no GIL) shows promising results for web services. Benchmarks reveal ASGI apps maintain similar performance with 20% lower memory usage, while WSGI apps see 3-4x throughput improvements for CPU-bound tasks. Despite 5-10% performance penalty in pure Python Python code, the elimination of GIL contention enables true multi-core utilization, potentially revolutionizing Python web deployment by simplifying concurrency and reducing memory requirements.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pythonmorsels.com/t-strings-in-python/&quot;&gt;T-strings: Python’s Fifth String Formatting Technique?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python 3.14 introduces t-strings, a fifth string formatting technique that returns Template objects instead of strings. Unlike f-strings which immediately interpolate values, t-strings enable lazy string interpolation - useful for library authors who need to pre-process inputs (like escaping SQL/HTML) before final string creation. T-strings use &lt;code&gt;t&quot;...&quot;&lt;/code&gt; syntax and are primarily designed for tool/library maintainers, not typical Python developers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://codecut.ai/langchain-1-0-middleware-production-agents/&quot;&gt;Build Production-Ready LLM Agents with LangChain 1.0 Middleware&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This tutorial demonstrates how to build production-ready LLM agents using LangChain 1.0’s new middleware architecture. It covers five essential middleware components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Message Summarization: Manages context windows by condensing conversations&lt;/li&gt;
&lt;li&gt;PII Filtering: Protects sensitive data through automatic redaction&lt;/li&gt;
&lt;li&gt;Human-in-the-Loop: Adds approval workflows for sensitive actions&lt;/li&gt;
&lt;li&gt;Task Planning: Structures complex requests into manageable subtasks&lt;/li&gt;
&lt;li&gt;Intelligent Tool Selection: Pre-filters tools to reduce costs and improve accuracy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The middleware follows web server patterns, providing reusable, testable components that can be composed together. Each focuses on a single responsibility (monitor, modify, control, or enforce) and integrates seamlessly to build robust production agents with minimal infrastructure code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.paulox.net/2025/10/06/django-orm-comparison/&quot;&gt;Django: one ORM to rule all databases 💍&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article provides a comprehensive comparison of Django ORM features across PostgreSQL, SQLite, MariaDB, MySQL, and Oracle. It includes detailed feature matrices showing support levels (✅/⚠️/🚫) for various functionality including field types, constraints, query features, transactions, and GIS capabilities, using fictional data to illustrate what an automated feature comparison matrix could look like in Django’s official documentation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bui.app/why-reactive-programming-hasnt-taken-off-in-python-and-how-signals-can-change-that/&quot;&gt;Why Reactive Programming Hasn’t Taken Off in Python (And How Signals Can Change That)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reactive programming hasn’t gained traction in Python because existing tools like RxPY are designed for event streams and require complex subscription management. However, signal-based reactive programming offers Python developers automatic state synchronization like spreadsheet formulas, reducing bugs and improving maintainability. The &lt;code&gt;reaktiv&lt;/code&gt; library provides transparent, synchronous updates where derived values automatically stay in sync with base data without manual coordination.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://vectifyai.notion.site/agentic-retrieval&quot;&gt;From Claude Code to Agentic RAG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article advocates moving from traditional vector-based RAG systems to “agentic retrieval” - letting LLMs reason through documents directly. It introduces &lt;code&gt;PageIndex&lt;/code&gt;, a vectorless hierarchical indexing system that creates human-like table-of-contents trees. Instead of complex vector databases, it gives LLMs navigational tools to find and retrieve relevant content, mirroring how Claude Code uses simple tools like grep. PageIndex achieved 98.7% accuracy on FinanceBench while requiring minimal infrastructure.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://simonwillison.net/2025/Oct/7/vibe-engineering/&quot;&gt;Vibe engineering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simon Willison proposes “vibe engineering” as the opposite of “vibe coding” - a sophisticated, accountable approach where experienced engineers use AI tools like coding agents responsibly. This method rewards advanced software practices: comprehensive testing, planning, documentation, version control, and good management skills.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.arcbjorn.com/state-of-llms-2025&quot;&gt;State of LLMs in Late 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The 2025 LLM landscape is hyper-specialized, moving from single generalist models to a diverse ecosystem where each model has distinct strengths. The article analyzes GPT-5’s unified intelligence system with automatic model switching, Claude Sonnet 4.5’s coding dominance (77% SWE-bench), open-source Llama 4 variants with 10M token contexts, Grok 4’s mathematical supremacy, and efficient alternatives like Mistral. It provides practical guidance on choosing the right model based on specific use cases rather than “which is smartest,” reflecting the era of tailored AI tools for specific tasks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://kix.dev/two-things-llm-coding-agents-are-still-bad-at/&quot;&gt;Two things LLM coding agents are still bad at&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LLM coding agents struggle with two key areas. First, they don’t use copy-paste operations—instead of moving code directly, they delete from the source and write from memory into the destination, which feels unnatural compared to human programming habits. Second, they’re terrible at asking clarifying questions when uncertain; instead they make assumptions and brute-force solutions until hitting walls.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bytesauna.com/post/coding-vs-software-engineering&quot;&gt;AI can code, but it can’t build software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article argues that while AI can generate code, it cannot truly “build software” - the complex engineering required to create production-ready applications. Coding is solving isolated problems, but software engineering involves managing complexity, integration, and long-term maintainability. AI can demo features, but transforming prototypes into robust systems requires human expertise, explaining why non-technical founders still seek technical co-founders despite AI tools.&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/3zMQYlP7hF7fKi8wdlAxyn&quot;&gt;Episode 26.1: CPython Sprint Week in Cambridge UK, Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://open.spotify.com/episode/7rj1Sxqw8oOUvgkbbh59PN&quot;&gt;Episode 26.2: CPython Sprint Week in Cambridge UK, Part 2&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/268/&quot;&gt;Episode 268: Advice on Beginning to Learn Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/269/&quot;&gt;Episode 269: Python 3.14: Exploring the New Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/270/&quot;&gt;Episode 270: Evolving Teaching Python in the Classroom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/271/&quot;&gt;Episode 271: Benchmarking Python 3.14 &amp;amp; Enabling Asyncio to Scale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/272/&quot;&gt;Episode 272: Michael Kennedy: Managing Your Own Python Infrastructure&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/452/pi-py-day-or-is-it-py-pi-day&quot;&gt;#452 pi py-day (or is it py pi-day?)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/453/python&quot;&gt;#453 Python++&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/454/its-some-form-of-elvish&quot;&gt;#454 It’s some form of Elvish&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/455/gilded-python-and-beyond&quot;&gt;#455 Gilded Python and Beyond&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/522/data-sci-tips-and-tricks-from-codecut.ai&quot;&gt;#522: Data Sci Tips and Tricks from CodeCut.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/523/pyrefly-fast-ide-friendly-typing-for-python&quot;&gt;#523: Pyrefly: Fast, IDE-friendly typing for Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/524/38-things-python-developers-should-learn-in-2025&quot;&gt;#524: 38 things Python developers should learn in 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/525/nicegui-goes-3.0&quot;&gt;#525: NiceGUI Goes 3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17891539-203-automating-api-documentation-with-zylosystems&quot;&gt;#203: Automating API Documentation with Zylosystems&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/8&quot;&gt;Episode 8: Impact of AI on How We Learn to Code with Scott Tolinski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/9&quot;&gt;Episode 9: Building agent memory for VS Code with Harald Kirschner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/10&quot;&gt;Episode 10: Mastering Chat Modes in VS Code with Burke Holland&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/11&quot;&gt;Episode 11: Building &amp;amp; Scaling Open Source Communities with Steve Francia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/anthropics/claude-agent-sdk-python/&quot;&gt;claude-agent-sdk-python&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code SDK is renamed to Claude Agent SDK. It helps developers build powerful autonomous agents using Claude.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/agent-framework&quot;&gt;microsoft/agent-framework&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MAF is Microsoft’s comprehensive multi-language framework for building, orchestrating, and deploying AI agents with support for both .NET and Python implementations. It’s developed by the core AutoGen and Semantic Kernel teams at Microsoft, and is designed to be a new foundation for building AI applications going forward.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/agent-lightning&quot;&gt;microsoft/agent-lightning&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;“The absolute trainer to light up AI agents.”&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/VectifyAI/PageIndex&quot;&gt;PageIndex&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;PageIndex&lt;/code&gt; is a Vector-less, reasoning-based RAG system that simulates how human experts navigate and extract knowledge from long documents through tree search, enabling LLMs to think and reason their way to the most relevant document sections.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hunvreus/devpush&quot;&gt;/dev/push&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;/dev/push&lt;/code&gt; is a open-source Platform as a Service (PaaS) written in Python and HTML for developers to build and deploy their applications. It is self-hostable and can be considered as an alternative to Vercel, Netlify, etc.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mitmproxy/pdoc&quot;&gt;mitmproxy/pdoc&lt;/a&gt; (MIT-0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;pdoc&lt;/code&gt; is a Python library for generating API documentation from code and comments.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ludo-technologies/pyscn&quot;&gt;ludo-technologies/pyscn&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;pyscn&lt;/code&gt; is a Python code quality analyzer written in Go. It detects dead code, tracks module dependencies, and analyzes complexity, etc. to make your code base more maintainable.&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 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 October Edition of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful. Happy coding and see you in November!&lt;/p&gt;
</description><pubDate>Fri, 31 Oct 2025 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><category>agentic</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - September 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-09/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-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;# 2025 9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-09&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;/_astro/splash.BiMTt-n4_Z2duhej.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! I’m glad to see you back reading the seventh issue of my “This month for Pythonistas” series which curates the news, articles, tutorials, podcasts, and more Python stuff worth noting in this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-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-2025-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-2025-09/&quot;&gt;Render&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;ul&gt;
&lt;li&gt;
&lt;p&gt;DjangoCon US 2025 was held in Chicago, United States.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PyCon UK 2025 was held in Manchester, England.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PyCon China 2025 was held in Shanghai, China.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-314-rc3&quot;&gt;Python 3.14 RC3&lt;/h3&gt;
&lt;p&gt;This is the final release preview before 3.14 final, which is scheduled for Tuesday, 2025-10-07.&lt;/p&gt;
&lt;p&gt;Source tarball and binary releases are available &lt;a href=&quot;https://www.python.org/downloads/release/python-3140rc3/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/knowledge-graphs-for-ai-agent-api-discovery/&quot;&gt;Knowledge Graphs for AI Agent API Discovery&lt;/a&gt; from SAP&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll implement API discovery that starts with semantic retrieval to reduce the API selection space, then adds APIs connected by business-process edges. The result is a small, relevant subset of APIs that includes the information about the process sequence the agent should follow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/build-ai-apps-with-mcp-server-working-with-box-files/&quot;&gt;Build AI Apps with MCP Servers: Working with Box Files&lt;/a&gt; from Box&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Build an LLM-powered invoice app that processes local PDF invoices to extract fields such as client name, total amount, and purchased product, and generates per-client reports.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/building-and-evaluating-data-agents/&quot;&gt;Building and Evaluating Data Agents&lt;/a&gt; from snowflake&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll know how to build, trace, and evaluate a multi-agent workflow that plans tasks, pulls context from structured and unstructured data, performs web search, and summarizes or visualizes the final results.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=YtHdaXuOAks&quot;&gt;Guide to Agentic AI – Build a Python Coding Agent with Gemini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;This project-based tutorial provides a deep understanding of how powerful AI tools work by guiding you through the creation of an agentic loop powered by tool calling. You will implement the core abilities for your agent to interact with and modify a codebase, including reading files, writing to files, and executing code to get feedback.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tonybaloney.github.io/posts/why-isnt-python-async-more-popular.html&quot;&gt;Python has had async for 10 years – why isn’t it more popular?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python’s &lt;code&gt;async&lt;/code&gt; / &lt;code&gt;await&lt;/code&gt; (introduced 2015) remains niche due to limited I/O use cases (excludes disk ops, reliant on GIL), fragmented ecosystem (Flask/Django’s patchy async adoption, duplicated sync/async APIs), and testing complexity. &lt;code&gt;FastAPI&lt;/code&gt;’s rise indicates async success in web contexts, but 3.14’s free-threading/sub-interpreter features may reduce async reliance.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://adamj.eu/tech/2025/08/29/python-fix-syntaxwarning-finally/&quot;&gt;Python: fix &lt;code&gt;SyntaxWarning: &apos;return&apos; in a &apos;finally&apos; block&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python 3.14+ warns about &lt;code&gt;return&lt;/code&gt;/&lt;code&gt;break&lt;/code&gt;/&lt;code&gt;continue&lt;/code&gt; in &lt;code&gt;finally&lt;/code&gt; blocks (PEP 765) as they override preceding flow control. Always returns the &lt;code&gt;finally&lt;/code&gt; block’s value, causing silent bugs. Fix it by restructuring code to avoid these keywords in &lt;code&gt;finally&lt;/code&gt; blocks—move &lt;code&gt;return&lt;/code&gt;s to &lt;code&gt;except&lt;/code&gt; blocks or remove unnecessary exception handling.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://martinfowler.com/articles/build-own-coding-agent.html&quot;&gt;Building your own CLI Coding Agent with Pydantic-AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article details building a custom CLI coding agent using Pydantic-AI and Model Context Protocol. Unlike commercial tools, a custom agent can be tailored to specific project needs, understanding project context and conventions. The agent combines Claude with specialized MCP servers for testing, code execution, documentation access, internet search, and file operations. Through incremental capabilities—from simple test running to full codebase management—the agent evolves into an intelligent development partner that maintains context, provides structured reasoning, and can autonomously debug and implement solutions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nkantar.com/blog/2025/08/static-python-uv-caddy-docker/&quot;&gt;Static Sites with Python, uv, Caddy, and Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post explains the author’s deployment stack for Python-built static sites using &lt;code&gt;uv&lt;/code&gt;, &lt;code&gt;Caddy&lt;/code&gt;, and Docker. The author details a multi-stage Docker build approach: first stage uses &lt;code&gt;uv&lt;/code&gt; with Python 3.13 to build the site, second stage uses &lt;code&gt;Caddy&lt;/code&gt;’s Alpine image to serve static files. The setup includes custom &lt;code&gt;Caddy&lt;/code&gt; configurations for reverse proxying analytics and handling custom error pages, domains, and content types.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://judoscale.com/blog/where-to-host-python-app&quot;&gt;Where to Host a Python Web App&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article compares hosting options for Python web apps, recommending Heroku for non-Docker apps due to its excellent developer experience. Render offers a cheaper Heroku alternative, while Fly.io is usually the cheapest but requires more configuration. AWS ECS suits AWS-experienced users, and self-hosting is only viable with dedicated ops teams. Docker usage significantly impacts hosting choice. The author strongly recommends autoscaling regardless of platform choice, with Heroku being their top pick when prioritizing developer experience and reliability.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://betweentheprompts.com/three-act-play/&quot;&gt;AI-Assisted Development: A Three-Act Play&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article presents three distinct approaches to AI-assisted software development: “Vibe Coding” (AI builds apps through chat iterations), “Copilot” (AI assists with planned code sections requiring human review), and “HUD” (AI serves as an intelligent code-completion tool). Author explains these methods aren’t mutually exclusive but suited for different tasks—designers prefer vibe-coding for rapid prototypes while developers use HUD (Cursor’s Tab) for production code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://morningcoffee.io/parallel-ai-agents-are-a-game-changer.html&quot;&gt;Parallel AI Agents Are a Game Changer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Parallel AI agents represent a major shift in software development, allowing multiple AI agents (like GitHub Copilot) to work simultaneously on different tasks. Instead of coding one feature at a time, developers can assign 10-20 issues to agents working in parallel, then focus on reviewing and refining their output.Success requires good system documentation, fast CI/CD, monorepo architecture, and skills in problem decomposition and code review rather than line-by-line coding.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/engineering/writing-tools-for-agents&quot;&gt;Writing effective tools for agents — with agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The post explains how to create effective tools for AI agents using an evaluation-driven approach. Key insights include: building targeted tools for specific workflows rather than generic APIs, using clear namespacing to avoid confusion, returning meaningful context efficiently, and optimizing for token usage. The authors recommend prototyping quickly, creating comprehensive evaluations with real-world tasks, and collaborating with Claude itself to iteratively improve tool performance. Best practices involve designing tools that mirror human problem-solving while providing rich functionality under the hood.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk&quot;&gt;Building Agents with the Claude Agent SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Claude Code SDK is now Claude Agent SDK. It helps developers build powerful autonomous agents using Claude. The framework operates on a feedback loop: gather context → take action → verify work → repeat. Key features include agentic search, tools/actions, subagents, MCP integrations, code generation, and verification methods.&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/264/&quot;&gt;Episode 264: Large Language Models on the Edge of the Scaling Laws&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/265/&quot;&gt;Episode 265: Python App Hosting Choices &amp;amp; Documenting Python’s History&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/266/&quot;&gt;Episode 266: Dangers of Automatically Converting a REST API to MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/267/&quot;&gt;Episode 267: Managing Feature Flags &amp;amp; Comparing Python Visualization Libraries&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/447/going-down-a-rat-hole&quot;&gt;#447 Going down a rat hole&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/448/im-getting-the-bios-flavor&quot;&gt;#448 I’m Getting the BIOS Flavor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/449/suggestive-trove-classifiers&quot;&gt;#449 Suggestive Trove Classifiers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/450/at-cost-agentic-ide-tooling&quot;&gt;#450 At-Cost Agentic IDE Tooling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/451/databases-are-a-fad&quot;&gt;#451 Databases are a Fad&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/518/celebrating-djangos-20th-birthday-with-its-creators&quot;&gt;#518: Celebrating Django’s 20th Birthday With Its Creators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/519/data-science-cloud-lessons-at-scale&quot;&gt;#519: Data Science Cloud Lessons at Scale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/520/pyx-the-other-side-of-the-uv-coin-announcing-pyx&quot;&gt;#520: pyx - the other side of the uv coin (announcing pyx)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/521/red-teaming-llms-and-genai-with-pyrit&quot;&gt;#521: Red Teaming LLMs and GenAI with PyRIT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17830911-202-behind-the-scenes-at-pybites-with-bob-and-julian&quot;&gt;#202: Behind the scenes at Pybites with Bob and Julian&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/3&quot;&gt;Episode 3: Building a MCP to Build VS Code &amp;amp; The Impact of AI on Kent C. Dodds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/4&quot;&gt;Episode 4: Language Model Chat Provider (aka BYOK) API with Logan Ramos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/5&quot;&gt;Episode 5: Life of a VS Code SWE Intern with Christy Nguyen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/6&quot;&gt;Episode 6: The Future of Coding Agents in VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/7&quot;&gt;Episode 7: The Origins &amp;amp; Evolution of the GitHub MCP Registry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/langchain-ai/open-swe&quot;&gt;langchain-ai/open-swe&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenSWE is an open-source, cloud-based asynchronous coding agent built with LangGraph. It autonomously understand codebases, plans solutions, and executes code changes across repositories - creating issues and pull requests automatically. Features include human-in-the-loop feedback, parallel execution, and can be launched via web UI or GitHub issues with the “open-swe” label.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google-agentic-commerce/AP2&quot;&gt;google-agentic-commerce/AP2&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent Payments Protocol (AP2) is Google’s initiative for secure, interoperable AI-driven payments. This repository provides code samples and demos using ADK and Gemini, with Python/Android scenarios for shopping agents. Features setup instructions, quickstart guides, and authentication via Google API Key or Vertex AI.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/deepseek-ai/DeepSeek-V3.2-Exp&quot;&gt;deepseek-ai/DeepSeek-V3.2-Exp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As an intermediate step toward DeepSeek’s next-generation architecture, V3.2-Exp builds upon V3.1-Terminus by introducing DeepSeek Sparse Attention—a sparse attention mechanism designed to explore and validate optimizations for training and inference efficiency in long-context scenarios.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;p&gt;Tokyo Game Show 2025 took place from September 25-28, 2025, featuring numerous major game announcements and reveals across various platforms.&lt;/p&gt;
&lt;p&gt;Major Xbox Announcements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Forza Horizon 6: The highly anticipated racing game was officially revealed&lt;/li&gt;
&lt;li&gt;Gungrave G.O.R.E Blood Heat: A new entry in the action series&lt;/li&gt;
&lt;li&gt;007: First Light: A James Bond title&lt;/li&gt;
&lt;li&gt;Aniimo: A rhythm-based game&lt;/li&gt;
&lt;li&gt;Double Dragon: Revive: The classic franchise returns&lt;/li&gt;
&lt;li&gt;Hotel Barcelona: An adventure game&lt;/li&gt;
&lt;li&gt;Rhythm Doctor: A music/rhythm game&lt;/li&gt;
&lt;li&gt;Hitman: New content or entry in the franchise&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Capcom Presentations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pragmata: Updates revealed for this highly anticipated title&lt;/li&gt;
&lt;li&gt;Street Fighter 6: Continued support and new content&lt;/li&gt;
&lt;li&gt;Other Capcom franchises received updates or reveals&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 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 September Edition of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful. Happy coding and see you in October!&lt;/p&gt;
</description><pubDate>Tue, 30 Sep 2025 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - August 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-08/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-08/</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;# 2025 8&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-08&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;/_astro/splash.BiFq9r7y_27RJ48.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! I’m glad to see you back reading the sixth issue of my “This month for Pythonistas” series which curates the news, articles, tutorials, podcasts, and more Python stuff worth noting in this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-08/&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-2025-08/&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-2025-08/&quot;&gt;Render&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;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=GfH4QL4VqJ0&quot;&gt;Python: The Documentary | An origin story&lt;/a&gt; is available on Youtube now.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3137&quot;&gt;Python 3.13.7&lt;/h3&gt;
&lt;p&gt;Python 3.13.7 is an expedited release which aims to fix a significant issue with the 3.13.6 release:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;gh-137583&lt;/code&gt;: Regression in ssl module between 3.13.5 and 3.13.6: reading from a TLS-encrypted connection blocks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The official downloads are available &lt;a href=&quot;https://www.python.org/downloads/release/python-3137/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;python-314-rc2&quot;&gt;Python 3.14 RC2&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the penultimate release candidate of Python 3.14.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;RC2 was originally planned as the final Release Candidate, but a bug was discovered and a third RC is scheduled in September, before October’s 3.14 final release.&lt;/p&gt;
&lt;p&gt;The official downloads are available &lt;a href=&quot;https://www.python.org/downloads/release/python-3140rc2/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/claude-code-a-highly-agentic-coding-assistant/&quot;&gt;Claude Code: A Highly Agentic Coding Assistant&lt;/a&gt; from Anthropic&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll learn best practices for using Claude Code to improve your coding workflow. You’ll learn key tips on how to provide Claude Code with clear context, such as specifying the relevant files, clearly defining the features and functionality, and connecting Claude Code to MCP servers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/agentic-knowledge-graph-construction/&quot;&gt;Agentic Knowledge Graph Construction&lt;/a&gt; from neo4j&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll implement an agentic system using Google’s Agent Development Kit (ADK), to build a knowledge graph that helps you find the root cause of product issues. You’ll work with structured data consisting of product and supplier information, and unstructured data consisting of product reviews.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Coursera’s &lt;a href=&quot;https://www.coursera.org/learn/fast-prototyping-of-genai-apps-with-streamlit&quot;&gt;Fast Prototyping of GenAI Apps with Streamlit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Build and iterate GenAI apps in hours instead of days! Start with a simple chatbot, then add prompt engineering and RAG powered by Snowflake’s secure data and LLM services, then push your prototype to Snowflake or Streamlit Community Cloud for instant feedback and quick improvement.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/async-io-python/&quot;&gt;AsyncIO Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial, you’ll learn how Python asyncio works, how to define and run coroutines, and when to use asynchronous programming for better performance in applications that perform I/O-bound tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/python-mixin/&quot;&gt;What Are Mixin Classes in Python?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Mixins offer a powerful way to reuse code across multiple Python classes without forcing them into a rigid inheritance hierarchy. Instead of building deep and brittle class trees, you can use mixins to share common behaviors in a modular and flexible way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://thenewstack.io/how-python-grew-from-a-language-to-a-community/&quot;&gt;How Python Grew From a Language to a Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python’s growth from a programming language to a thriving community represents an inspiring story of collaboration and dedication. Starting in 1991, Python began as a pet project by Guido van Rossum, distributed through Usenet newsgroups. The pivotal moment came in 1994 with an in-person meeting of 20 developers in Maryland, where the Python community was born as something separate from the language itself.&lt;/p&gt;
&lt;p&gt;The journey from these humble beginnings to becoming the world’s #1 programming language involved several key phases. Early attempts to commercialize Python through a consortium model failed, but the passion and commitment of its community led to the creation of the nonprofit Python Software Foundation in 2001. This foundation, guided by open-source principles, employed Python’s core team to work full-time on the language.&lt;/p&gt;
&lt;p&gt;PyCon conferences became the “real engine for change”, generating revenue through sponsorships from tech giants like Google. This funding enabled the foundation to hire professional staff and support ongoing development and infrastructure projects. The foundation’s commitment to diversity and heterogeneous cultures positioned Python to capitalize on emerging trends like AI, ensuring its continued relevance and growth in the tech landscape.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.jetbrains.com/pycharm/2025/08/the-state-of-python-2025/&quot;&gt;The State of Python 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article summarizes key findings from the 2025 Python Developers Survey, highlighting major trends in the Python ecosystem. It notes that 86% of respondents use Python as their main language, emphasizing its central role. Importantly, 50% of developers have less than two years of professional coding experience, and 39% have less than two years with Python. This underscores Python’s popularity among beginners and the importance of supporting newcomers with detailed tutorials and resources. The insights are based on over 30,000 responses and aim to guide both individual developers and tool vendors.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://astral.sh/blog/introducing-pyx&quot;&gt;pyx: a Python-native package registry, now in Beta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Astral.sh’s ambition to build Python’s next-gen infrastructure (the Astral Platform) begins with &lt;code&gt;pyx&lt;/code&gt;, a “Python-native package registry” which could be seen as an optimized backend for tools like &lt;code&gt;uv&lt;/code&gt;. Some of its early partners are already using it while other have to submit their information to be on the waitlist.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hudsonrivertrading.com/hrtbeat/inside-hrts-python-fork/&quot;&gt;Inside HRT’s Python Fork: Leveraging PEP 690 for Faster Import&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HRT implemented “lazy imports” by forking CPython, using Meta’s &lt;code&gt;Cinder&lt;/code&gt; patches. This defers module loading until first use, solving import overhead in their Python monorepo. After migration challenges (2023-2024), all HRT Python now uses lazy imports by default, cutting CLI startup times and distributed compute overhead dramatically.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://savannah.dev/posts/how-your-code-runs-in-a-jit-build/&quot;&gt;How Your Code Runs in a JIT Build&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This post explains how JIT compilation works in Python, focusing on CPython’s Tier 2 and Tier 3 optimizations. It covers bytecode evolution, how code transforms from Tier 1 basic bytecode through Tier 2 micro-ops to Tier 3 machine code, the role of specializations for common patterns, and how JIT bridges Python’s flexibility with C-like performance through runtime optimization based on actual execution patterns.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://sailor.li/asyncio&quot;&gt;asyncio: a library with too many sharp corners&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article criticizes Python’s &lt;code&gt;asyncio&lt;/code&gt; library and suggests that it is “too many sharp corners”. It details four major problems: cancellation is broken (edge-triggered vs level-triggered), tasks can be garbage collected while pending due to weak references, I/O APIs are convoluted callback-based systems inherited from &lt;code&gt;Twisted&lt;/code&gt;, and &lt;code&gt;asyncio.Queue&lt;/code&gt; has poor backpressure handling. Additional issues include thread integration problems, signal handling limitations, and broken eager tasks. The author recommends using &lt;code&gt;Trio&lt;/code&gt; or &lt;code&gt;AnyIO&lt;/code&gt; libraries instead, which implement cancellation properly with level-triggered semantics and saner I/O abstractions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lucumr.pocoo.org/2025/7/26/virtual-threads/&quot;&gt;From Async/Await to Virtual Threads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this post Armin Ronacher explores the concept of virtual threads and structured concurrency as a way to simplify concurrent programming, especially in Python. It contrasts traditional async/await models with the idea of virtual threads managed in thread groups, where parallel tasks are spawned and automatically managed with cancellation and error propagation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lucumr.pocoo.org/2025/7/30/things-that-didnt-work/&quot;&gt;Agentic Coding Things That Didn’t Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is another post from Armin Ronacher in which Armin discusses various approaches and tools to improve workflow automation with LLMs but found ineffective. It is highlighted that clear, manual instruction often outperforms elaborate automations. They caution that over-reliance on automation leads to mental disengagement and reduced code quality, emphasizing the importance of active review and critical thinking.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://live-comet-marketing-site.pantheonsite.io/blog/ai-agent-design/&quot;&gt;AI Agent Design Patterns: How to Build Reliable AI Agent Architecture for Production&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article emphasizes that building reliable AI agents requires more than prompt engineering—it needs modular, role-based design, observability, and feedback loops. Modular design assigns specialized roles to agents, making systems scalable and easier to maintain. Observability involves monitoring and logging every step for improvement. Feedback loops enable agents to learn and self-optimize.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://userjot.com/blog/best-practices-building-agentic-ai-systems&quot;&gt;Best Practices for Building Agentic AI Systems: What Actually Works in Production&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article outlines proven best practices for building productive agentic AI systems based on real-world implementation at UserJot. Key insights include using a simple two-tier architecture (primary agent + specialized subagents), keeping subagents stateless for predictability, and employing task decomposition (vertical for sequential tasks, horizontal for parallel processing). The system emphasizes structured communication protocols, parallel execution for performance, and robust error handling with graceful degradation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://objectgraph.com/blog/building-mcp-pyexec-python-execution-server/&quot;&gt;Building MCP PyExec: Secure Python Execution Server with Docker &amp;amp; Authentication&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The blog details building MCP PyExec, a secure Python execution server using the Model Context Protocol (MCP). It covers three components: the PyExec server implementing MCP for streaming Python code execution; an OAuth 2.0 Identity Provider (IDP) for secure authentication supporting authorization code flow, JWT, and token validation; and a PyExec client for testing and interaction that manages OAuth tokens and streaming results.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/introducing-gpt-oss/&quot;&gt;Introducing gpt-oss&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI has released their first open-weight models since GPT-2 - &lt;code&gt;gpt-oss-120b&lt;/code&gt; and &lt;code&gt;gpt-oss-20b&lt;/code&gt; - under Apache 2.0 license.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://signoz.io/blog/why-observability-isnt-just-for-sres/&quot;&gt;Why Observability Isn’t Just for SREs (and How Devs Can Get Started)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post serves as a guide for developers to understand the importance of observability and provides a playbook for integrating it into their workflow. Observability helps developers maintain cleaner code, manage systems better, and reduce technical debt by considering more edge cases and improving debugging processes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.val.town/vibe-code&quot;&gt;Vibe code is legacy code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog highlights that vibe coding quickly generates tech debt as the produced code often becomes legacy code—difficult to understand or maintain. Vibe coding works well for prototypes and throwaway projects but is risky for large, maintainable systems, especially if done by non-programmers. Serious coding with AI requires caution, thorough understanding, and careful maintenance. The author emphasizes that while AI changes programming, deep technical knowledge and theory-building remain essential.&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://podcasters.spotify.com/pod/show/corepy/episodes/Episode-25-A-Python-That-Never-Was-e37bk50&quot;&gt;Episode 25: A Python That Never Was&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/259/&quot;&gt;Episode 259: Design Patterns That Don’t Translate to Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/260/&quot;&gt;Episode 260: Harnessing the Power of Python Polars&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/261/&quot;&gt;Episode 261: Selecting Inheritance or Composition in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/262/&quot;&gt;Episode 262: Travis Oliphant: SciPy, NumPy, and Fostering Scientific Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/263/&quot;&gt;Episode 263: Exploring Mixin Classes in Python&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/443/patching-multiprocessing&quot;&gt;#443 Patching Multiprocessing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/444/begone-python-of-yore&quot;&gt;#444 Begone Python of Yore!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/445/auto-activate-python-virtual-environments-for-any-project&quot;&gt;#445 Auto-activate Python virtual environments for any project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/446/state-of-python-2025&quot;&gt;#446 State of Python 2025&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/515/durable-python-execution-with-temporal&quot;&gt;#515: Durable Python Execution with Temporal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/516/accelerating-python-data-science-at-nvidia&quot;&gt;#516: Accelerating Python Data Science at NVIDIA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/517/agentic-al-programming-with-python&quot;&gt;#517: Agentic Al Programming with Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/518/celebrating-djangos-20th-birthday-with-its-creators&quot;&gt;#518: Celebrating Django’s 20th Birthday With Its Creators&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17587007-199-charlie-marsh-on-ty-uv-and-the-python-tooling-renaissance&quot;&gt;#199: Charlie Marsh on ty, uv, and the Python tooling renaissance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17658068-200-celebrating-200-episodes-of-our-pybites-journey&quot;&gt;#200: Celebrating 200 episodes of our Pybites journey&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/1&quot;&gt;Episode 1: Hello GPT-5 &amp;amp; GPT-5 mini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vscodepodcast.com/2&quot;&gt;Episode 2: Iteration Plan for August &amp;amp; Re-writing Terminal Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jd-opensource/oxygent&quot;&gt;jd-opensource/oxygent&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;OxyGent&lt;/code&gt; is an open-source Python framework from &lt;a href=&quot;www.jd.com&quot;&gt;JD&lt;/a&gt; retail department for building production-ready multi-agent AI systems. It provides modular components that snap together like LEGO bricks, enabling efficient development of collaborative AI agents. Features include intelligent real-time task decomposition, elastic distributed architecture, continuous learning capabilities, and standardized tools/LLM integration.&lt;/p&gt;
&lt;p&gt;You can find more at their &lt;a href=&quot;https://oxygent.jd.com/&quot;&gt;project website&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/langextract&quot;&gt;google/langextract&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; is a Python library by Google that uses LLMs to extract structured data from unstructured text. Key features include precise source grounding (mapping extractions to exact source locations), optimized handling of long documents via chunking and parallel processing, interactive HTML visualization, and support for cloud models like Gemini and local LLMs via Ollama.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/nottelabs/notte&quot;&gt;nottelabs/notte&lt;/a&gt; (Server Side Public License 1.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Notte&lt;/code&gt; is an open-source web automation framework for building reliable AI agents. It provides essential tools for creating and deploying agents that interact with the web, combining AI reasoning with traditional scripting for cost-efficiency. Key features include structured data extraction, vaults for credential management, stealth browser sessions with CAPTCHA solving, and hybrid workflows.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/globalaiplatform/langdiff&quot;&gt;langdiff&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mcp-use/mcp-use&quot;&gt;mcp-use&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a Python library that provides a simple way to connect any LLM to any MCP server and build custom MCP agents that have tool access, without using closed source or application clients.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/gpt-oss&quot;&gt;openai/gpt-oss&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the repository as part of OpenAI’s GPT-OSS, which provides a set of code implementations including a &lt;code&gt;gpt-oss&lt;/code&gt; Python library, &lt;code&gt;harmony&lt;/code&gt;, and more.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/KittenML/KittenTTS&quot;&gt;KittenTTS&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the accompanying Python library for KittenTTS, an open-source realistic text-to-speech model with just 15 million parameters which can run without a GPU.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;gamescom-2025&quot;&gt;GamesCom 2025&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hollow Knight Silk Song&lt;/em&gt; finally has revealed its launch date: Sept. 4, 2025.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Resident Evil Requiem&lt;/em&gt; debuts a cinematic trailer featuring Grace Ashcroft for the sequel to the critically acclaimed survival horror game franchise.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Black Myth: Zhong Kui&lt;/em&gt; introduces Zhong Kui, a legendary demon-slayer from Chinese folklore, as the central figure of the sequel to hit Black Myth: Wukong.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Warhammer 40K Dawn of War IV&lt;/em&gt; is officially announced.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lords of the Fallen II&lt;/em&gt; takes place a century after its predecessor, featuring faster and more punishing combat.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;LEGO Batman: Legacy of the Dark Knight&lt;/em&gt; covers the story of Batman, starting from a young Bruce Wayne.&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 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 August Edition of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful. Happy coding and see you in September!&lt;/p&gt;
</description><pubDate>Sun, 31 Aug 2025 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - July 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-07/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-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;# 2025 7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-07&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1536&quot; height=&quot;864&quot; src=&quot;/_astro/splash.CyreQy-k_Z1ci7nE.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back Pythonistas! I hope you enjoy your summer vacation if you actually have one. But in any case I’m glad to see you back reading the fifth issue of my “This month for Pythonistas” series which curates the news, articles, tutorials, podcasts, and more Python stuff worth noting in this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-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-2025-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-2025-07/&quot;&gt;Render&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;p&gt;EuroPython 2025 took place in Prague again this year. For those of you who did not attend, there’s no official recordings of the talks yet.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New Versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3140-release-candidate-1&quot;&gt;Python 3.14.0 release candidate 1&lt;/h3&gt;
&lt;p&gt;The first release candidate of Python 3.14 is ready! Source code as well as binary distributions can be found &lt;a href=&quot;https://www.python.org/downloads/release/python-3140rc1/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The second candidate (and the last planned release preview) is scheduled for Tuesday, 2025-08-26, while the official release of 3.14.0 is scheduled for Tuesday, 2025-10-07.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/post-training-of-llms/&quot;&gt;Post-training of LLMs&lt;/a&gt; from NexusFlow&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll learn three common post-training methods—Supervised Fine-Tuning (SFT), Direct Preference Optimization (DPO), and Online Reinforcement Learning (RL)—and how to use each one effectively.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/pydantic-for-llm-workflows/&quot;&gt;Pydantic for LLM Workflows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Use Pydantic to generate structured outputs from LLMs, ensuring the responses follow a specific format that your application can reliably process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fromscratchcode.com/blog/how-global-variables-work-in-python-bytecode/&quot;&gt;How global variables work in Python bytecode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The blog post explains how global variables work in Python bytecode using the Memphis interpreter built in Rust as an example. It highlights that while the VM doesn’t store the names of local variables, it performs dynamic name resolution for global variables, a key aspect of Python’s flexibility.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.thepythoncodingstack.com/p/python-disassembling-bytecode-dis-module&quot;&gt;Python Backstage • Disassembling Python Code Using the &lt;code&gt;dis&lt;/code&gt; Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article explains how to use Python’s &lt;code&gt;dis&lt;/code&gt; module to view the bytecode generated from a simple script. The bytecode is a low-level representation of the Python code, showing the sequence of operations the Python interpreter performs. For example, the &lt;code&gt;LOAD_CONST&lt;/code&gt; and &lt;code&gt;STORE_NAME&lt;/code&gt; instructions represent assigning a constant value to a variable, while the &lt;code&gt;CALL&lt;/code&gt; instruction indicates a function call.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonspeed.com/articles/different-ways-speed/&quot;&gt;330× faster: Four different ways to speed up your code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article discusses four ways to accelerate Python code: efficiency improvements by reducing unnecessary calculations, using compilation to optimize performance, leveraging parallelism with multiple CPU cores, and adopting development processes like benchmarking and testing. An example analyzing letter frequency in Jane Austen’s Northanger Abbey demonstrates how combining these methods yields significant speedups, ultimately achieving a 330× faster performance.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bui.app/the-missing-manual-for-signals-state-management-for-python-developers/&quot;&gt;The Missing Manual for Signals: State Management for Python Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article discusses state management using Signals in Python, highlighting their benefits in handling complex state dependencies and cascading updates. It contrasts Signals with traditional manual approaches, which can lead to bugs and maintenance challenges due to implicit dependencies.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fidget-spinner.github.io/posts/jit-reflections.html&quot;&gt;Reflections on 2 years of CPython’s JIT Compiler: The good, the bad, the ugly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post discusses the current state of CPython’s JIT (Just-In-Time) compiler. The author highlights that while the JIT is still experimental and not always faster than the interpreter, a growing community of contributors is working on improving it. Key areas for improvement include performance and coverage.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lwn.net/Articles/1025893/&quot;&gt;Getting extensions to work with free-threaded Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The addition of free-threaded Python allows for better thread scalability, particularly in Python extensions like NumPy. Nathan Goldbaum and Lysandros Nikolaou presented at PyCon US 2025 about the challenges and solutions for migrating the Python ecosystem to support the new free-threaded model, emphasizing the importance of maintaining compatibility with existing C/C++/Rust-based extensions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lucumr.pocoo.org/2025/7/3/tools/&quot;&gt;Tools: Code Is All You Need&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The author details a method for converting a blog from reStructuredText to Markdown, using an LLM to generate and validate scripts, emphasizing the importance of trust in the automated process. It concludes that while MCP may be useful for certain tasks, it currently faces limitations in composability and context management compared to direct code generation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.mozilla.ai/wasm-agents-ai-agents-running-in-your-browser/&quot;&gt;Wasm-agents: AI agents running in your browser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article introduces Wasm-agents, a blueprint for creating AI agents that can run directly in your browser. These agents are packaged as standalone HTML files, utilizing WebAssembly and Pyodide to execute Python scripts and libraries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cubic.dev/blog/learnings-from-building-ai-agents&quot;&gt;Learnings from building AI agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article discusses lessons learned from developing an AI code review agent at Cubic. Initially, the tool was too noisy, generating many false positives and irrelevant comments. Improvements included requiring the AI to explicitly justify its findings, simplifying the toolset to essential components, and employing specialized micro-agents for different tasks. These changes reduced false positives by 51%, improved developer trust, and streamlined the code review process.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.lesswrong.com/posts/uAEhvX6scvcZANWwg/a-guide-for-llm-assisted-web-research&quot;&gt;A Guide For LLM-Assisted Web Research&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article reviews various LLMs and web research tools for internet-based research tasks. Overall, standard ChatGPT with web search is recommended for its speed, manageability, and iterative capabilities, while more complex, slower tools are less practical for routine research tasks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.langchain.com/context-engineering-for-agents/&quot;&gt;Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article discusses “context engineering”, which involves providing the right information to agents (like LLMs) within their context window to help them perform tasks effectively. It covers four strategies: write, select, compress, and isolate.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cekrem.github.io/posts/programming-as-theory-building-naur/&quot;&gt;Programming as Theory Building: Why Senior Developers Are More Valuable Than Ever&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article discusses Peter Naur’s 1985 idea that programming is about building a shared theory of how a system works. Source code is just a representation, and critical knowledge is in developers’ minds. Today’s AI tools and novice developers risk losing this underlying theory, leading to incoherent code and technical debt. Senior developers are now more vital than ever because they preserve and evaluate the theoretical framework, ensuring system coherence and understanding the “why” behind code decisions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ordep.dev/posts/writing-code-was-never-the-bottleneck&quot;&gt;Writing Code Was Never The Bottleneck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article argues that while the creation of code may be sped up by tools like LLMs, the true bottlenecks in software engineering lie in code reviews, testing, debugging, coordination, and communication. These processes, which require deep understanding and collaboration, remain critical and cannot be bypassed.&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://podcasters.spotify.com/pod/show/corepy/episodes/The-Megahertz-e35ffoi&quot;&gt;The Megahertz&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/256/&quot;&gt;Episode 256: Solving Problems and Saving Time in Chemistry With Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/257/&quot;&gt;Episode 257: Comparing Real-World Python Performance Against Big O&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/258/&quot;&gt;Episode 258: Supporting the Python Package Index&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/438/motivation-time&quot;&gt;#438 Motivation time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/439/that-astral-episode&quot;&gt;#439 That Astral Episode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/440/cant-register-for-vibecon&quot;&gt;#440 Can’t Register for VibeCon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/441/its-michaels-all-the-way-down&quot;&gt;#441 It’s Michaels All the Way Down&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/442/cloud-bills-in-scientific-notation&quot;&gt;#442 Cloud bills in scientific notation&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/512/building-a-jit-compiler-for-cpython&quot;&gt;#512: Building a JIT Compiler for CPython&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/513/stories-from-python-history&quot;&gt;#513: Stories from Python History&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/514/python-language-summit-2025&quot;&gt;#514: Python Language Summit 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17416659-194-evolution-not-extinction-why-developers-still-matter-in-the-age-of-ai&quot;&gt;#194: Evolution, not extinction: why developers still matter in the age of AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17436411-195-patterns-paradigms-and-pythonic-thinking-with-rodrigo-girao-serrao&quot;&gt;#195: Patterns, paradigms, and pythonic thinking with Rodrigo Girão Serrão&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17514265-196-robin-quintero-on-complexipy&quot;&gt;#196: Robin Quintero on Complexipy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17538206-197-polars-with-jeroen-janssens-and-thijs-nieuwdorp&quot;&gt;#197: Polars with Jeroen Janssens and Thijs Nieuwdorp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17574426-198-tim-hopper-on-uv-and-smarter-python-development&quot;&gt;#198: Tim Hopper on UV and smarter Python development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/huggingface/screenenv&quot;&gt;huggingface/screenenv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;blog -&amp;gt; &lt;a href=&quot;https://huggingface.co/blog/screenenv&quot;&gt;ScreenEnv: Deploy your full stack Desktop Agent&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google-gemini/genai-processors&quot;&gt;google-gemini/genai-processors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;blog -&amp;gt; &lt;a href=&quot;https://developers.googleblog.com/en/genai-processors/&quot;&gt;Announcing GenAI Processors: Build powerful and flexible Gemini applications&lt;/a&gt;&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 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 fifth issue of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful, and see you in August!&lt;/p&gt;
</description><pubDate>Thu, 31 Jul 2025 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - June 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-06/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-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;# 2025 6&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-06&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1536&quot; height=&quot;864&quot; src=&quot;/_astro/splash.Dadds7nf_Z2jEvLW.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back! Summer is really here and I hope you all enjoy the heat or rain. I’m glad to see you back reading the fourth issue of my “This month for Pythonistas” series which curates the news, articles, tutorials and more Python stuff worth noting in this month.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-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-2025-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-2025-06/&quot;&gt;Render&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;p&gt;DjangoCon US 2025 is coming this September in Chicago, United States. The in-person tickets are officially on sale now. You can also choose to attend online with even Sprints options available.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3140-beta-3&quot;&gt;Python 3.14.0 beta 3&lt;/h3&gt;
&lt;p&gt;The third beta release of 3.14 is here! Source code as well as binary distributions can be found &lt;a href=&quot;https://www.python.org/downloads/release/python-3140b3/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;python-3135&quot;&gt;Python 3.13.5&lt;/h3&gt;
&lt;p&gt;Python 3.13.4 was an expected release early this month but was found to be having bugs. So another bugfix release 3.13.5 is out soon after.&lt;/p&gt;
&lt;h3 id=&quot;python-31211-31113-31018-and-3923&quot;&gt;Python 3.12.11, 3.11.13, 3.10.18 and 3.9.23&lt;/h3&gt;
&lt;p&gt;These are regular security releases with only offical tarball distributions. And remember that Python 3.9 is going to reach its end of life this October.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/dspy-build-optimize-agentic-apps/&quot;&gt;DSPy: Build and Optimize Agentic Apps&lt;/a&gt; from DataBricks&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;This course teaches you how to use DSPy to build and optimize LLM-powered applications. You’ll write programs using DSPy’s signature-based programming model, debug them with MLflow tracing, and automatically improve their accuracy with DSPy Optimizer. Along the way, you’ll see how DSPy helps you easily switch models, manage complexity, and build agents that are both powerful and easy to maintain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/orchestrating-workflows-for-genai-applications/&quot;&gt;Orchestrating Workflows for GenAI Applications&lt;/a&gt; from Astronomer&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll learn how to turn a Retrieval Augmented Generation (RAG) prototype into a robust, automated pipeline using Airflow 3.0, a leading open-source orchestration tool. You’ll build two workflows for a typical RAG application: one that ingests and embeds book description texts into a vector database, and another that queries that database to recommend books.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/building-with-llama-4/&quot;&gt;Building with Llama 4&lt;/a&gt; from Meta&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In hands-on lessons, you’ll build apps using Llama 4’s long-context and its new multi-modal capabilities including reasoning across multiple images and “image grounding” in which you can identify elements and reason within specific image regions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/acp-agent-communication-protocol/&quot;&gt;ACP: Agent Communication Protocol&lt;/a&gt; from BeeAI and Linux Foundation&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll learn how to wrap an agent inside an ACP server and set up an ACP client to connect to the server. You’ll build sequential and hierarchical workflows of agents hosted inside ACP servers, and learn how to manage this workflow on the client side through a process or another agent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/python-script-structure/&quot;&gt;How Can You Structure Your Python Script?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a comprehensive guide on structuring a standalone, shareable Python script, including specifying its dependencies in the script itself following PEP 723, handling CLI inputs, proprerly logging, and more.&lt;/p&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://peps.python.org/pep-0734/&quot;&gt;PEP 734 – Multiple Interpreters in the Stdlib&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PEP 734 is &lt;strong&gt;accepted&lt;/strong&gt;. It proposes to add a new module, &lt;code&gt;interpreters&lt;/code&gt;, to support inspecting, creating, and running code in multiple interpreters in the current process.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://peps.python.org/pep-0779/&quot;&gt;PEP 779 – Criteria for supported status for free-threaded Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PEP 779 is &lt;strong&gt;accepted&lt;/strong&gt;, which means that staring from Python 3.14 a “No-GIL” build is officially supported instead of being in “experimental” status like in Python 3.13.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fromscratchcode.com/blog/how-local-variables-work-in-python-bytecode/&quot;&gt;How local variables work in Python bytecode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Local variables are stored on the stack, specifically within the evaluation stack of a Frame in the CallStack. Despite this, most Python variables are actually references to objects stored on the heap. The post illustrates this concept through a simple function, demonstrating how the stack changes as the function executes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.googleblog.com/en/google-cloud-donates-a2a-to-linux-foundation/&quot;&gt;Google decided to donate Agent2Agent protocol/project to Linux Foundation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Linux Foundation has announced the creation of the Agent2Agent (A2A) project, which aims to develop an open standard protocol that enables AI agents from different vendors to communicate, collaborate, and share information securely. Google Cloud contributed the A2A protocol specifications, SDKs, and developer tools.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/engineering/built-multi-agent-research-system&quot;&gt;How we built our multi-agent research system&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This post by Anthropic gives a behind-the-scenes look at how they set up a system where multiple AI agents can work together on different tasks. Think of it like a digital teamwork lab, where AI agents can play different roles—like writers, editors, or problem-solvers—and collaborate to get things done.&lt;/p&gt;
&lt;p&gt;The team designed the system to be super flexible, so they could easily run different types of experiments. Some agents work together on writing tasks, while others negotiate or help delegate work among themselves. It’s all about seeing how AIs interact, cooperate, and sometimes even challenge each other.&lt;/p&gt;
&lt;p&gt;Building this wasn’t all smooth sailing—they had to deal with tricky prompts, keep experiments reproducible, and figure out how to measure how well the agents were doing. Along the way, they learned a lot: use clear building blocks, design thoughtful communication between agents, and always keep good logs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://benanderson.work/blog/agentic-search-for-dummies/&quot;&gt;Agentic Search for Dummies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post discusses building a search agent that uses full-text search with offline document augmentation to let AI models dynamically gather context from a large document corpus. The system uses a search index (Tantivy) and a set of tools to enable a language model to issue multiple queries, fuse results, and read selected documents iteratively until it produces a final answer. The post argues against relying on dense embeddings due to complexity and overhead, advocating for full-text search as a more predictable and effective method for agentic search.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mrshiny608.github.io/MrShiny608/optimisation/2025/04/22/OhNoYouDidnt.html&quot;&gt;O(no) You Didn’t 😱&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article discusses the difference between theoretical Big-O performance and real-world performance, emphasizing that actual speed depends on context and profiling. Using a “Two Sum” problem as an example, it compares the brute-force O(n^2) approach with an optimized O(n) hashmap method. The article explains how memory access times and hardware factors influence performance, illustrating that understanding practical bottlenecks is crucial beyond just Big-O notation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.alexmaccaw.com/how-to-vibe-code-as-a-senior-engineer/&quot;&gt;How to Vibe Code as a Senior Engineer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despite concerns about AI-generated code quality, recent advancements in AI models have made vibe coding a valuable tool for experienced engineers. However, human oversight remains crucial for guiding architecture and ensuring code quality. The author emphasizes the importance of using a robust scaffold, establishing clear rules, and providing perfect context for optimal AI performance.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.adarshd.dev/posts/pycon-us-ai-and-future-of-programming/&quot;&gt;Will AI Replace Junior Developers? I Asked Experts at Pycon US&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The blog discusses whether AI will replace junior developers, based on conversations at PyCon US. Most experts believe AI won’t fully replace programmers but will change how they work, especially in tasks like boilerplate coding. Key figures like &lt;strong&gt;Guido van Rossum&lt;/strong&gt; and &lt;strong&gt;Trey Hunner&lt;/strong&gt; see AI as a tool for improving productivity rather than a threat. Some, like &lt;strong&gt;Samuel Colvin&lt;/strong&gt;, think AI could replace certain roles to increase efficiency.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cognition.ai/blog/dont-build-multi-agents&quot;&gt;Don’t Build Multi-Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article argues against building multi-agent systems due to their fragility and context sharing challenges. It advocates for principles like sharing full context and implicit decision-making to build reliable AI agents. The author suggests simpler, single-threaded, linear agents or long-context compressed systems for better reliability.&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/1C0oe2vgW40CGBOFAhRlWY&quot;&gt;PyCon US 2025 Recap&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/252/&quot;&gt;Episode 252: Rodrigo Girão Serrão: Python Training, itertools, and Idioms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/253/&quot;&gt;Episode 253: Starting With Marimo Notebooks &amp;amp; Python App Config Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/254/&quot;&gt;Episode 254: Scaling Python Web Applications With Kubernetes and Karpenter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/255/&quot;&gt;Episode 255: Structuring Python Scripts &amp;amp; Exciting Non-LLM Software Trends&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/434/most-of-openai-s-tech-stack-runs-on-python&quot;&gt;#434 Most of OpenAI’s tech stack runs on Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/435/stop-with-.folders-in-my&quot;&gt;#435 Stop with .folders in my ~/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/436/slow-tests-go-last&quot;&gt;#436 Slow tests go last&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/437/python-language-summit-2025-highlights&quot;&gt;#437 Python Language Summit 2025 Highlights&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/507/agentic-ai-workflows-with-langgraph&quot;&gt;#507: Agentic AI Workflows with LangGraph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/508/program-your-own-computer-with-python&quot;&gt;#508: Program Your Own Computer with Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/509/gpu-programming-in-pure-python&quot;&gt;#509: GPU Programming in Pure Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/510/10-polars-tools-and-techniques-to-level-up-your-data-science&quot;&gt;#510: 10 Polars Tools and Techniques To Level Up Your Data Science&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/511/from-notebooks-to-production-data-science-systems&quot;&gt;#511: From Notebooks to Production Data Science Systems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17226545-192-coding-smarter-not-harder-5-key-ways-to-succeed-as-a-developer&quot;&gt;#192: Coding smarter not harder - 5 key ways to succeed as a developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17363363-193-why-coding-alone-sucks&quot;&gt;#193: Why coding alone sucks!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/strands-agents/sdk-python&quot;&gt;strands-agents/sdk-python&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Strands Agents is an open source SDK introduced by AWS that simplifies the development of AI agents using a model-driven approach. It enables developers to build and run AI agents in a few lines of code, scaling from simple to complex use cases. Unlike other frameworks requiring complex workflows, Strands leverages the capabilities of advanced models to plan, chain thoughts, call tools, and reflect. You can start exploring the SDK on their &lt;a href=&quot;https://strandsagents.com/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bytedance/deer-flow&quot;&gt;bytedance/deer-flow&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;deer-flow&lt;/code&gt; is a &lt;em&gt;Deep Research&lt;/em&gt; framework by byte-dance team. It aims to combine language models with specialized tools for tasks like web search, crawling, and Python code execution. You can either host your own or try their online demo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google-gemini/gemini-cli&quot;&gt;gemini-cli&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemini CLI is Google’s answer to Anthropic’s Claude Code and OpenAI’s Codex, but with generous free-tier usage on Gemini-2.5-pro/flash at the moment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/kingfisher&quot;&gt;mongodb/kingfisher&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Originally an internal tool from Mondodb, Kingfisher is an open-source command-line secrets scanner/validator written in Rust which has various built-in rules and runs “blazingly fast”. It provides pre-built binaries for Windows, MacOS and Linux, and you can also build it yourself from the source.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/edit&quot;&gt;microsoft/edit&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Written in Rust, &lt;code&gt;Edit&lt;/code&gt; is the promised open-source command line editor from Microsoft. It brings classic MS-DOS style UI to both Windows and Linux but also accommodates modern features.&lt;/p&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;call-of-ducy-black-ops-7-continues-the-stories-of-bo-2-and-bo-6&quot;&gt;Call of Ducy: Black Ops 7 continues the stories of BO 2 and BO 6&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://bnetcmsus-a.akamaihd.net/cms/blog_header/7m/7MFT7FOIH3I31749406406524.jpg&quot; alt=&quot;Call of Duty Black Ops 7 Reveal Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;Two Black Ops games in a row! During Xbox Games Showcase 2025, Activision reveals the seventh game in the COD sub-franchise where players will fight as David Mason in futuristic world of year 2035. It is going to launch on PC (Steam, Battle.net, XBOX PC), Xbox Series/One and PlayStation 5/4.&lt;/p&gt;
&lt;h3 id=&quot;007-first-light-is-gonna-tell-the-origin-story-of-james-bond-in-2026&quot;&gt;007 First Light is gonna tell the origin story of James Bond in 2026&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.playstation.com/tachyon/2025/06/5d78650a856871c7fe6dc1d82c0039416452498d.jpg?resize=1088%2C612&amp;amp;crop_strategy=smart&amp;amp;zoom=1&quot; alt=&quot;007 First Light Video Game&quot;&gt;&lt;/p&gt;
&lt;p&gt;IO Interactive, the developer behind &lt;em&gt;Hitman 47&lt;/em&gt; series, announces during &lt;em&gt;State of Play&lt;/em&gt; that their 007 title “007 First Light”, “a thrilling narrative action-adventure game” in third person, is going to be published in 2026. It is expected to be available on all major platforms: PC (Steam / Epic), Xbox Series, PlayStation 5, as well as Nintendo Switch 2.&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 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 fourth issue of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful, and see you in July!&lt;/p&gt;
</description><pubDate>Mon, 30 Jun 2025 13:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - May 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-05/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-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;# 2025 5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-05&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;720&quot; src=&quot;/_astro/splash.DsyejeID_Z1Maxf6.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back! I’m glad to see you back reading the third issue of my “This month for Pythonistas” series which curates the news, articles, tutorials and more Python stuff worth noting in this May. This May witnesses several conferences, Python 3.14 Beta 1 &amp;amp; 2, more tooling, and more &lt;em&gt;Agentic&lt;/em&gt; stuff.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-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-2025-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-2025-05/&quot;&gt;Render&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-2025&quot;&gt;PyCon US 2025&lt;/h3&gt;
&lt;p&gt;(Many of) the video recordings are available on PyCon US YouTube channel.&lt;/p&gt;
&lt;h3 id=&quot;microsoft-build-2025&quot;&gt;Microsoft Build 2025&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Github Copilot Chat Extension for VS Code is going open-source.&lt;/li&gt;
&lt;li&gt;Github Copilot coding agent is in public preview for Copilot Enterprise and Copilot Pro+ users.&lt;/li&gt;
&lt;li&gt;Github Models is integrated at repository level.&lt;/li&gt;
&lt;li&gt;Native MCP support is going to land in Windows 11.&lt;/li&gt;
&lt;li&gt;xAI’s Grok 3 and Grok 3 mini are available via Azure AI Foundry.&lt;/li&gt;
&lt;li&gt;Windows Subsystem for Linux (WSL) is fully open-sourse.&lt;/li&gt;
&lt;li&gt;A command line text editor called “Edit” is coming to Windows 11, and its source code would be available too.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;google-io-2025&quot;&gt;Google I/O 2025&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;New models - Veo 3, Imagen 4, and Flow - are announced.&lt;/li&gt;
&lt;li&gt;Gemma-3n is dedicated to mobile and edge device use cases.&lt;/li&gt;
&lt;li&gt;Project Mariner, Project Astra&lt;/li&gt;
&lt;li&gt;Jules, an asynchronous coding agent, is now in public preview.&lt;/li&gt;
&lt;li&gt;Gemini 2.5 Flash, the fastest version of Gemini, is coming this June.&lt;/li&gt;
&lt;li&gt;Gemini 2.5 is brought to Google Search, the “AI mode” is currently open to users in United States.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;announcing-the-pytorch-docathon-2025&quot;&gt;Announcing the PyTorch Docathon 2025&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://pytorch.org/blog/docathon-2025/&quot;&gt;This docathon&lt;/a&gt; is a hackathon-style event aimed at enhancing PyTorch documentation with the support of the community.&lt;/p&gt;
&lt;h3 id=&quot;python-documentary&quot;&gt;Python Documentary&lt;/h3&gt;
&lt;p&gt;A documentary about Python is coming. It will debut in July at EuroPython 2025 and will be available on YouTube as well.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;bluesky-python-documentary&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1204&quot; height=&quot;1056&quot; src=&quot;/_astro/bsky_post_py_docu.wpV5-4eM_ZkvvKD.webp&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3140-beta-1-and-beta-2&quot;&gt;Python 3.14.0 beta 1 and beta 2&lt;/h3&gt;
&lt;p&gt;The first and second of four planned beta releases of 3.14 are here! Source code as well as binary distributions can be found &lt;a href=&quot;https://www.python.org/downloads/release/python-3140b1/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://www.python.org/downloads/release/python-3140b2/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;wagtail-70-lts&quot;&gt;wagtail 7.0 LTS&lt;/h3&gt;
&lt;p&gt;This is a major update and the first ever LTS release of Wagtail, which aligns with Django 5.2 LTS.&lt;/p&gt;
&lt;p&gt;For more check their blog post &lt;a href=&quot;https://wagtail.org/blog/wagtail-70/&quot;&gt;Flying into a new era with Wagtail 7.0&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;redis-py-62&quot;&gt;redis-py 6.2&lt;/h3&gt;
&lt;p&gt;This major release happened while Redis 8 is GA and the source code goes back to true open-source. Support for &lt;code&gt;HGETDEL&lt;/code&gt;, &lt;code&gt;HGETEX&lt;/code&gt;, and &lt;code&gt;HSETEX&lt;/code&gt; commands are added. &lt;code&gt;VectorSet&lt;/code&gt; commands are added as experimental features.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/llms-as-operating-systems-agent-memory/&quot;&gt;LLMs as Operating Systems: Agent Memory&lt;/a&gt; from Letta&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to build agentic memory into your applications in this short course, LLMs as Operating Systems: Agent Memory, created in partnership with Letta, and taught by its founders Charles Packer and Sarah Wooders.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/building-ai-voice-agents-for-production/&quot;&gt;Building AI Voice Agents for Production&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll learn how to build voice agents that listen, reason, and respond naturally. You’ll follow the architecture used to create Andrew Avatar, a collaborative project between DeepLearning.AI and RealAvatar that responds to users in Andrew Ng’s voice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;DeepLearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/mcp-build-rich-context-ai-apps-with-anthropic/&quot;&gt;MCP: Build Rich-Context AI Apps with Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore how MCP standardizes access to tools and data for AI applications, its underlying architecture, and how it simplifies the integration of new tools and connections to external systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/reinforcement-fine-tuning-llms-grpo/&quot;&gt;Reinforcement Fine-Tuning LLMs with GRPO&lt;/a&gt; from Predibase&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you’ll take a technical deep dive into RFT with GRPO. You’ll learn how to build reward functions that you can use in the GRPO training process to guide an LLM toward better performance on multi-step reasoning tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;HuggingFace’s &lt;a href=&quot;https://huggingface.co/learn/mcp-course/unit0/introduction&quot;&gt;MCP Course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this course, you will:&lt;/p&gt;
&lt;p&gt;📖 Study Model Context Protocol in theory, design, and practice.&lt;/p&gt;
&lt;p&gt;🧑‍💻 Learn to use established MCP SDKs and frameworks.&lt;/p&gt;
&lt;p&gt;💾 Share your projects and explore applications created by the community.&lt;/p&gt;
&lt;p&gt;🏆 Participate in challenges where you will evaluate your MCP implementations against other students’.&lt;/p&gt;
&lt;p&gt;🎓 Earn a certificate of completion by completing assignments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/modern-web-automation-with-python-and-selenium/&quot;&gt;Modern Web Automation With Python and Selenium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This tutorial introduces modern web automation using Python and Selenium, focusing on practical techniques for navigating and interacting with web pages. It explains how to navigate web pages, locate elements within the DOM, and interact with them through clicks, keystrokes, and form submissions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/python-uv/&quot;&gt;Managing Python Projects With uv: An All-in-One Solution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; is designed to streamline workflows by providing an all-in-one solution that integrates installation, package management, and environment setup. The guide covers how to install uv using a standalone installer or through other package managers, and demonstrates its use cases in managing complex projects.&lt;/p&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://peps.python.org/pep-0773/&quot;&gt;PEP 773 – A Python Installation Manager for Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PEP 773 is &lt;strong&gt;accepted&lt;/strong&gt;. It proposes a new Python installation manager for Windows, called PyManager. The current installation methods for Python on Windows have several limitations and challenges, including mismatched user expectations and unreliability. PyManager aims to address these issues by providing a single, unified installation management tool that can handle multiple Python versions and provide a more streamlined user experience. It will be distributed through both the Windows Store and python.org as an MSIX package.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://peps.python.org/pep-0784/&quot;&gt;PEP 784 – Adding Zstandard to the standard library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PEP 784 is &lt;strong&gt;accepted&lt;/strong&gt;. It proposes adding a new module to the Python standard library for Zstandard compression, a widely adopted and highly efficient compression standard. It aims to provide a unified interface for compression modules, reduce user confusion, and enable future additions of new compression formats. The reference implementation is based on the pyzstd project and includes integration with &lt;code&gt;tarfile&lt;/code&gt;, &lt;code&gt;shutil&lt;/code&gt;, and &lt;code&gt;zipfile&lt;/code&gt; modules.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://snarky.ca/unravelling-t-strings/&quot;&gt;Unravelling t-strings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;T-strings expose the parser used for f-strings, allowing introspection of the parts inside the curly braces. Brett demonstrates how to replicate f-string behavior using Python code to parse and format the components (value, conversion, and format spec) of t-strings. This parsing helps understand how expressions inside f-strings are evaluated and formatted internally.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.llamaindex.ai/blog/python-tooling-at-scale-llamaindex-s-monorepo-overhaul&quot;&gt;Python Tooling at Scale: LlamaIndex’s Monorepo Overhaul&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Llama-index managed to contain 650+ community packages in their monorepo. They migrated away from &lt;code&gt;Poetry&lt;/code&gt; and &lt;code&gt;Pants&lt;/code&gt; to &lt;code&gt;uv&lt;/code&gt; and &lt;code&gt;LlamaDev&lt;/code&gt; for faster, simpler development.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.edward-li.com/tech/comparing-pyrefly-vs-ty/&quot;&gt;Pyrefly vs. ty: Comparing Python’s Two New Rust-Based Type Checkers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both &lt;code&gt;pyrefly&lt;/code&gt; and &lt;code&gt;ty&lt;/code&gt; are promising new type checkers that aim to improve the Python type checking experience. While they share some similarities, they have different design goals and philosophies. &lt;code&gt;ty&lt;/code&gt; takes a gradual approach to typing, while &lt;code&gt;pyrefly&lt;/code&gt; is more aggressive in type inference. As both tools are still in early alpha, it will be interesting to see how they evolve in the future.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.zachbellay.com/posts/djangocon-eu-2025/&quot;&gt;Takeaways from DjangoCon EU 2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article summarizes key takeaways from DjangoCon EU 2025 in Dublin, highlighting the community’s enthusiasm and valuable technical insights. Topics include database management techniques such as row locking with select_for_update, moving to BigInt primary keys, and partitioning large tables for performance. It also covers optimization strategies like reducing PostgreSQL index sizes significantly by using partial indexes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pytorch.org/blog/pytorch-the-open-language-of-ai/&quot;&gt;PyTorch: The Open Language of AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PyTorch has evolved from a framework focused on AI research to supporting production, deep AI compilation and has become foundational to thousands of projects and companies in the AI ecosystem. The PyTorch Foundation is expanding to be an umbrella organization and will now house some of the most popular and highly complementary projects making it easier for users to build AI at scale.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://labs.quansight.org/blog/free-threaded-one-year-recap&quot;&gt;The first year of free-threaded Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first year of free-threaded Python has seen significant progress in enabling Python to fully utilize multicore CPUs and GPUs by removing the Global Interpreter Lock (GIL). Major packages and tools like NumPy, SciPy, Cython, and setuptools have been updated to support the free-threaded build. While many packages still require auditing and fixes for thread safety, the ecosystem has improved considerably.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.indooroutdoor.io/asyncio-demystified-rebuilding-it-from-scratch-one-yield-at-a-time&quot;&gt;Asyncio Demystified: Rebuilding it From Scratch One Yield at a Time&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The article demystifies &lt;code&gt;asyncio&lt;/code&gt; by rebuilding it from scratch. It starts with a primer on generators and coroutines, explaining how they can pause and resume execution. The article builds a custom event loop, showcasing an echo server example. The goal is to understand how &lt;code&gt;asyncio&lt;/code&gt; works under the hood, removing the “magic” behind asynchronous programming in Python.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.nilenso.com/blog/2025/05/12/mcp-explained-without-hype-or-fluff/&quot;&gt;MCP explained without hype or fluff&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The author shares a concrete example of an MCP server built for accessing CKAN open data, enabling AI applications to explore and analyze government datasets. Despite MCP’s evolving nature and some overhead, its adoption is strong, providing a standardized way to decouple AI clients from platform-specific tools and workflows, valuable for integrations requiring flexibility and breadth.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.reversinglabs.com/blog/mcp-powerful-ai-coding-risk&quot;&gt;MCP is a powerful new AI coding technology: Understand the risks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While MCP offers powerful capabilities, it poses significant security risks because it is not secure by default. Experts warn that deploying MCP in production environments without robust safeguards is risky. However, ongoing efforts from industry and security researchers aim to enhance MCP’s security, making it a promising but still maturing technology.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://raz.sh/blog/2025-05-02_a_critical_look_at_mcp&quot;&gt;A Critical Look at MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The author argues that the protocol’s documentation is poorly written, confusing, and glosses over important aspects. The author also criticizes the use of Python and JavaScript for examples, and the complexity of the protocol’s multiple transport modes, including HTTP+SSE and “Streamable HTTP”. It is suggested that WebSockets would be a better choice for transport, and that the protocol’s flexibility introduces security concerns and complexity. The author also mentions alternative protocols, such as ACP and A2A.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/news/claude-4&quot;&gt;Claude Opus 4 and Claude Sonnet 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude 4 Opus leads in complex, sustained coding tasks, excelling in memory usage and long-term focus, while Claude 4 Sonnet offers balanced performance and efficiency for everyday use, particularly powering GitHub Copilot. Both models support extended thinking with tool use, improved memory for handling local files, and parallel tool execution.&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/5ZTwjntjAM3230I86ylKgi&quot;&gt;Episode 22: Beta Frenzy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;djangochat&quot;&gt;DjangoChat&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://djangochat.com/episodes/djangocon-europe-2025-recap&quot;&gt;DjangoCon Europe 2025 Recap&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/248/&quot;&gt;Episode 248: Experiments With Gen AI, Knowledge Graphs, Workflows, and Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/249/&quot;&gt;Episode 249: Going Beyond requirements.txt With pylock.toml and PEP 751&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/250/&quot;&gt;Episode 250: DjangoCon Europe 2025: Live Recording From Dublin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/251/&quot;&gt;Episode 251: Python Thread Safety &amp;amp; Managing Projects With uv&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/431/nerd-gas&quot;&gt;#431 Nerd Gas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/432/how-to-fix-your-computer&quot;&gt;#432 How To Fix Your Computer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/433/dev-in-the-arena&quot;&gt;#433 Dev in the Arena&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/504/developer-trends-in-2025&quot;&gt;#504: Developer Trends in 2025&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/505/t-strings-in-python-pep-750&quot;&gt;#505: t-strings in Python (PEP 750)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/506/ty-astrals-new-type-checker-formerly-red-knot&quot;&gt;#506: ty: Astral’s New Type Checker (Formerly Red-Knot)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17100578-189-the-year-of-oui-huy-nguyen-on-connection-community-and-showing-up&quot;&gt;#189: The Year of Oui: Huy Nguyen on Connection, Community and Showing Up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/16636722-190-the-power-shift-flexa-s-data-driven-energy-revolution&quot;&gt;#190: The power shift - Flexa’s data-driven energy revolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17202534-191-code-click-cloud-how-sebastian-ramirez-is-taking-fastapi-to-the-next-level&quot;&gt;#191: Code, click, cloud - how Sebastián Ramírez is taking FastAPI to the next level&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/facebook/pyrefly&quot;&gt;facebook/pyrefly&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of the tools I mentioned earlier. &lt;code&gt;pyrefly&lt;/code&gt; is Meta’s brand new type checker for Python at very ealy stage. Read more about it on &lt;a href=&quot;https://engineering.fb.com/2025/05/15/developer-tools/introducing-pyrefly-a-new-type-checker-and-ide-experience-for-python/&quot;&gt;Facebook Engineering&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/astral-sh/ty&quot;&gt;astral-sh/ty&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The other tool I mentioned earlier. Powered by Rust, &lt;code&gt;ty&lt;/code&gt; is Astral’s standalone static type checker for Python but developed as part of &lt;code&gt;ruff&lt;/code&gt;, previously known as “Red-Knot”. It comes with a command-line utility as well as a VS Code extension.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/magentic-ui&quot;&gt;microsoft/magentic-ui&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Magentic-UI is a &lt;strong&gt;research prototype&lt;/strong&gt; of a human-centered interface powered by a multi-agent system that can browse and perform actions on the web, generate and execute code, and generate and analyze files. Magentic-UI is built using AutoGen and provides a platform to study human-agent interaction and experiment with web agents.&lt;/p&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Gears of War: Reloaded Comes to Xbox Series, PlayStation 5 and Steam this August&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://xboxwire.thesourcemediaassets.com/sites/2/2025/05/GoW_Reloaded_Keyart_4K-97bf0e7a9de7dc68b771-scaled.jpg&quot; alt=&quot;gears-of-war-reloaded-announced&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is a Remastered version of the first ever game in its franchise, featuring 4K/60FPS in the Campaign with HDR, Dolby Atmos, cross-platform play, etc. Those who own the digital version of Gears of War: Ultimate Edition would receive a free upgrade to Gears of War: Reloaded.&lt;/p&gt;
&lt;p&gt;Read more on &lt;a href=&quot;https://news.xbox.com/en-us/2025/05/05/gears-of-war-reloaded-release-date/&quot;&gt;xbox.com&lt;/a&gt;.&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 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 third issue of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful, and see you in June!&lt;/p&gt;
</description><pubDate>Fri, 30 May 2025 12:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>podcast</category><category>news</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - April 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-04/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-04/</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;# 2025 4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-04&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;640&quot; height=&quot;360&quot; src=&quot;/_astro/splash.DZWhiLiw_ZIx3LH.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome back and I’m glad to see you back reading the second issue of my “This month for Pythonistas” series which curates the news, articles, tutorials and more Python stuff worth noting in this April.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-04/&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-2025-04/&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-2025-04/&quot;&gt;Render&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;djangocon-europe-2025&quot;&gt;DjangoCon Europe 2025&lt;/h3&gt;
&lt;p&gt;Dublin, Ireland is the host city of this year’s DjangoCon Europe, which is held from April 23rd to 27th, 2025.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://2025.djangocon.eu/&quot;&gt;djangocon europe website&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;europython-2025&quot;&gt;EuroPython 2025&lt;/h3&gt;
&lt;p&gt;EuroPython has announced three more Keynote Speakers: Sebastián Ramírez (Creator os FastAPI, Typer, SQLModel, etc.), &lt;a href=&quot;https://www.linkedin.com/in/drbrettcannon/&quot;&gt;Brett Cannon&lt;/a&gt; (Python Core Developer), and &lt;a href=&quot;https://www.linkedin.com/in/petr-baudis-906a213/&quot;&gt;Petr Baudiš&lt;/a&gt; (co-founder and CTO of Rossum).&lt;/p&gt;
&lt;p&gt;Besides, EuroPython will have a booth at PyCon US this year.&lt;/p&gt;
&lt;h3 id=&quot;microsoft-turns-50&quot;&gt;Microsoft turns 50&lt;/h3&gt;
&lt;p&gt;Like it or not, Microsoft had remarkable influence over the past decades and is still making a big impact right at the moment. In &lt;a href=&quot;https://unlocked.microsoft.com/50th/&quot;&gt;this page&lt;/a&gt; it celebrates its 50th anniversary by looking back at some iconic moments from the history, sharing some stories, and giving out digital goodies.&lt;/p&gt;
&lt;h3 id=&quot;discord-server-for-free-threaded-python&quot;&gt;Discord server for free-threaded Python&lt;/h3&gt;
&lt;p&gt;There is a dedicated place to discuss free-threaded python on &lt;a href=&quot;https://discord.gg/rqgHCDqdRr&quot;&gt;Discord&lt;/a&gt; now.&lt;/p&gt;
&lt;h3 id=&quot;gvr-bdfl--april-fools-&quot;&gt;GvR BDFL (🤡 April Fools 🤡)&lt;/h3&gt;
&lt;p&gt;BREAKING! Guido van Rossum, the legendary creator of Python, has officially &lt;a href=&quot;https://www.youtube.com/watch?v=wgxBHuUOmjA&quot;&gt;reinstated himself as Benevolent Dictator for Life (BDFL)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;GvR BDFL&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;800&quot; height=&quot;1003&quot; src=&quot;/_astro/gvr_bdfl.IUZh_qOY_ZeVhRG.webp&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New versions&lt;/h2&gt;
&lt;h3 id=&quot;python-3133--31210&quot;&gt;Python 3.13.3 &amp;amp; 3.12.10&lt;/h3&gt;
&lt;p&gt;It’s another month for Python version updates.&lt;/p&gt;
&lt;p&gt;Python 3.14 Alpha 7 is out, and the first beta release is expected soon.&lt;/p&gt;
&lt;p&gt;Python 3.13 and 3.12 receive bugfix updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.python.org/downloads/release/python-3133/&quot;&gt;Python 3.13.3 Downloads and Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.python.org/downloads/release/python-31210/&quot;&gt;Python 3.12.10 Downloads and Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following versions receive only security-related fixes and no binary distributions are provided: 3.11.12, 3.10.17 and 3.9.22.&lt;/p&gt;
&lt;h3 id=&quot;visual-studio-code-1990&quot;&gt;Visual Studio Code 1.99.0&lt;/h3&gt;
&lt;p&gt;VS Code joins Claude Desktop and other “AI IDEs”, having &lt;a href=&quot;https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode&quot;&gt;Agent Mode&lt;/a&gt; and &lt;a href=&quot;https://code.visualstudio.com/docs/copilot/chat/mcp-servers&quot;&gt;MCP servers support (Preview)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A new open-source and local MCP server is introduced, allowing integration with any LLM tool supporting MCP. Read the details in &lt;a href=&quot;https://github.blog/news-insights/product-news/github-copilot-agent-mode-activated/&quot;&gt;Vibe coding with GitHub Copilot: Agent mode and MCP support rolling out to all VS Code users&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Update: Agent Mode is now officially turned on for everyone.&lt;/p&gt;
&lt;h3 id=&quot;django-52-lts&quot;&gt;Django 5.2 LTS&lt;/h3&gt;
&lt;p&gt;This LTS version introduces new features (Automatic model imports in the shell, Composite primary keys, etc.) and deprecates some functionalities, and it will receive security updates for the next three years at least. Check its &lt;a href=&quot;https://docs.djangoproject.com/en/5.2/releases/5.2/&quot;&gt;release notes&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;pytorch-27&quot;&gt;PyTorch 2.7&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://pytorch.org/blog/pytorch-2-7/&quot;&gt;This release&lt;/a&gt; introduces support for NVIDIA’s new Blackwell GPU architecture and ships pre-built wheels for CUDA 12.8. &lt;code&gt;TorchAudio&lt;/code&gt; is updated to &lt;code&gt;2.7.0&lt;/code&gt; and &lt;code&gt;TorchVision&lt;/code&gt; is &lt;code&gt;0.22.0&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;ubuntu-2504-fedora-42-mx-236-and-manjaro-250&quot;&gt;Ubuntu 25.04, Fedora 42, MX 23.6 and Manjaro 25.0&lt;/h3&gt;
&lt;p&gt;It seems like a big month for Linux distros since several popular distro have major/minor updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.ubuntu.com/archives/ubuntu-announce/2025-April/000311.html&quot;&gt;Ubuntu 25.04 “Plucky Puffin”&lt;/a&gt; introduces Linux 6.14 kernel, GNOME 48, and offers 9 months of support.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fedoramagazine.org/announcing-fedora-linux-42/&quot;&gt;Fedora 42&lt;/a&gt; promotes KDE Plasma variation to “Full Edition”.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mxlinux.org/blog/mx-23-6-now-available/&quot;&gt;MX Linux&lt;/a&gt; is a regular refresh containing bugfixes, kernel updates, and application updates.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.manjaro.org/t/manjaro-25-0-zetar-released/177008&quot;&gt;Manjaro 25.0 “Zetar”&lt;/a&gt; brings various updates to different desktop environment editions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/vibe-coding-101-with-replit/&quot;&gt;Vibe Coding 101 with Replit&lt;/a&gt; from replit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Take your own discretion on “Vibe Coding” (there’s an article about it below), but here’s a hands-on tutorial on deeplearning.ai.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll use Replit’s cloud environment— with an integrated code editor, package manager, and deployment tools—to build and deploy two web applications with the help of an AI coding agent. Along the way, you’ll learn strategies for working effectively with agents and improve your development skills in the process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/getting-structured-llm-output/&quot;&gt;Getting Structured LLM Output&lt;/a&gt; from DotTxt&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ll gain a fundamental understanding of structured outputs and learn efficient ways to generate outputs in your defined schema or format.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/building-ai-browser-agents/&quot;&gt;Building AI Browser Agents&lt;/a&gt; from AGI Inc.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn the fundamentals of autonomous web agents, what they are, how they work, their limitations, and the decision-making strategies taken to optimize their performance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/building-code-agents-with-hugging-face-smolagents/&quot;&gt;Building Code Agents with Hugging Face smolagents&lt;/a&gt; from HuggingFace&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Understand the architecture and benefits of code agents that write code to perform tasks, compare them to traditional tool-calling agents, and learn when to use each approach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/python-duckdb/&quot;&gt;Introducing DuckDB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The tutorial will equip you with the practical knowledge necessary to get started with DuckDB, including its Online Analytical Processing (OLAP) features, which enable fast access to data through query optimization and buffering.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;freeCodeCamp.org’s &lt;a href=&quot;https://www.youtube.com/watch?v=5avSMc79V-w&quot;&gt;Code DeepSeek V3 From Scratch in Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a nearly-4-hours Youtube video tutorial brought by freeCodeCamp.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HuggingFace’s &lt;a href=&quot;https://huggingface.co/learn/agents-course&quot;&gt;Agents Course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A series of tutorials introducing various aspects of AI Agents.&lt;/p&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://davepeck.org/2025/04/11/pythons-new-t-strings/&quot;&gt;Python’s new t-strings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://peps.python.org/pep-0750/&quot;&gt;PEP 750 – Template Strings&lt;/a&gt; is &lt;strong&gt;accepted&lt;/strong&gt;. This PEP introduces &lt;em&gt;template strings&lt;/em&gt; which are a generalization of &lt;em&gt;f-strings&lt;/em&gt;. Putting a &lt;code&gt;t&lt;/code&gt; before a string &lt;em&gt;template&lt;/em&gt; would keep it from being evaluated as a normal string but make it an instance of a new type &lt;code&gt;Template&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In his blog, Dave introduces the motivation behind this PEP and shows how to play with it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://peps.python.org/pep-0751/&quot;&gt;PEP 751 – A file format to record Python dependencies for installation reproducibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PEP 751 is &lt;strong&gt;accepted&lt;/strong&gt;. This PEP proposes a standard for the format of a file recording the requirements/dependencies of a Python project (ie. a lock file but standardized, agreed across the whole community).&lt;/p&gt;
&lt;p&gt;Update:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pip&lt;/code&gt; 25.1+ adds experimental &lt;code&gt;pip lock&lt;/code&gt; command:&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;pip&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; lock&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;\r&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;equirements.txt&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --output&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pylock.toml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; 0.6.15+ adds support through &lt;code&gt;uv export&lt;/code&gt; command:&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --format&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pylock.toml&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --output-file&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pylock.toml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;pdm&lt;/code&gt; 2.24+ also supports exporting to &lt;code&gt;pylock.toml&lt;/code&gt;:&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;pdm&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --format&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pylock&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --output&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pylock.toml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://thisdavej.com/share-python-scripts-like-a-pro-uv-and-pep-723-for-easy-deployment/&quot;&gt;Share Python Scripts Like a Pro: uv and PEP 723 for Easy Deployment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Sharing single-file Python scripts with external dependencies is now easy thanks to &lt;code&gt;uv&lt;/code&gt; and PEP 723, which enable embedding dependency metadata directly within scripts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pybit.es/articles/developing-and-testing-python-packages-with-uv/&quot;&gt;Case Study: Developing and Testing Python Packages with uv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article highlights the simplicity of initializing a project with &lt;code&gt;uv&lt;/code&gt;, which sets up essential files like &lt;code&gt;pyproject.toml&lt;/code&gt;, &lt;code&gt;README.md&lt;/code&gt;, and folder structures. This allows developers to manage dependencies effortlessly and set up virtual environments. It emphasizes the convenience of editable installations, enabling instant updates to package code without needing reinstallation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ai.meta.com/blog/llama-4-multimodal-intelligence/&quot;&gt;The Llama 4 herd: The beginning of a new era of natively multimodal AI innovation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta has introduced Llama 4, its latest suite of multimodal AI models including “Llama 4 Scout” and “Llama 4 Maverick”, offering significant advancements in personalized AI experiences. Both models utilize a mixture-of-experts (MoE) architecture, allowing efficient use of parameters: Maverick has 17 billion active parameters with 128 experts, while Scout offers a remarkable context length of 10 million tokens. “Llama 4 Behemoth”, a larger model with 288 billion parameters, serves as a teacher for the others, enhancing their capabilities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.googleblog.com/en/agent-development-kit-easy-to-build-multi-agent-applications/&quot;&gt;Agent Development Kit: Making it easy to build multi-agent applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://storage.googleapis.com/gweb-cloudblog-publish/images/Multi-agent_systems_with_Vertex_.max-2500x2500.jpg&quot; alt=&quot;google-vertex-ai-multi-agent&quot;&gt;&lt;/p&gt;
&lt;p&gt;Google brings its own agent-building solution by announcing open-source framework &lt;strong&gt;Agent Development Kit (ADK)&lt;/strong&gt; at &lt;a href=&quot;https://cloud.withgoogle.com/next/25&quot;&gt;Google Cloud NEXT 2025&lt;/a&gt;, additionally it introduces &lt;a href=&quot;https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/&quot;&gt;Agent2Agent (A2A) protocol&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview&quot;&gt;Agent Engine&lt;/a&gt; as well as &lt;a href=&quot;https://console.cloud.google.com/vertex-ai/agents/agent-garden&quot;&gt;Agent Garden&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/gpt-4-1/&quot;&gt;Introducing GPT-4.1 in the API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GPT‑4.1, GPT‑4.1 mini, and GPT‑4.1 nano are available through OpenAI’s API service. These new models appear to focus mainly on coding and instruction following.&lt;/p&gt;
&lt;p&gt;Update: They are also available through Github Models.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/introducing-o3-and-o4-mini/&quot;&gt;Introducing OpenAI o3 and o4-mini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI then release o3 and o4-mini of the o-series models, claiming they are their “smartest” models to date.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://martinfowler.com/articles/exploring-gen-ai.html#memo-13&quot;&gt;The role of developer skills in agentic coding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article discusses the role of developer skills in agentic coding with AI assistants. The author categorizes AI missteps into three impact radius: time to commit, team flow, and long-term maintainability. The article emphasizes the need for developer oversight, caution against “good enough” solutions, and the importance of code quality practices and team communication.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://read.highgrowthengineer.com/p/mcps-simply-explained&quot;&gt;MCP (Model Context Protocol): Simply explained in 5 minutes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de5b04a-5e6c-47cf-a81e-e332dd3570df_2906x990.png&quot; alt=&quot;mcp-diagram&quot;&gt;&lt;/p&gt;
&lt;p&gt;Model Context Protocol is a way for LLMs to integrate with external tools. It is useful as it makes LLMs act more like developers. Behind the scenes, providers create MCP-compliant wrappers. Resources for MCP are also provided.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://hardcoresoftware.learningbyshipping.com/p/230-mcp-its-hot-but-will-it-win&quot;&gt;MCP - It’s Hot, But Will It Win?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the author’s point of view, while MCP is popular, its success is uncertain. Middleware like MCP often fails to live up to expectations. It may face issues such as monetization problems if widely adopted or exclusion by a key platform. Vendors may lose interest due to market realities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://elenacross7.medium.com/%EF%B8%8F-the-s-in-mcp-stands-for-security-91407b33ed6b&quot;&gt;The “S” in MCP stands for Security&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despite its benefits, such as standardized APIs and persistent sessions, MCP has significant security risks. These risks include potential side-channels into shells, secrets, or infrastructure when agents are connected to arbitrary servers without proper security measures. The author emphasizes the need for better security in MCP to prevent these vulnerabilities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.newsletter.swirlai.com/p/mcp-vs-a2a-friends-or-foes&quot;&gt;MCP vs. A2A: Friends or Foes?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MCP standardizes how applications integrate with large language models (LLMs), while A2A facilitates communication between agents across different systems. Although MCP currently excels in establishing context for LLMs, it lacks essential features like security and task management, which A2A addresses. As both protocols evolve, their roles may intertwine, but A2A appears poised for dominance in inter-agent communication, potentially overshadowing MCP’s relevance in the future.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/&quot;&gt;Git turns 20: A Q&amp;amp;A with Linus Torvalds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://github.blog/wp-content/uploads/2025/04/GitTurns20_BlogHeader_001-2.png?w=1600&quot; alt=&quot;git-turns-twenty&quot;&gt;&lt;/p&gt;
&lt;p&gt;To celebrate two decades of Git, the author sat down with Linus himself to revisit those early days, explore the key design decisions behind Git’s lasting success, and discuss how it forever changed software development. The full video interview is also included in the blog.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nmn.gl/blog/dangers-vibe-coding&quot;&gt;Karpathy’s ‘Vibe Coding’ Movement Considered Harmful&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The author argues that Karpathy’s “vibe coding” is harmful. It leads to hidden costs, exponential technical debt, and security risks. A better approach is to use AI with a clear vision, break down AI-generated code, provide context, test thoroughly, and review code to maintain understanding.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/blog/train-reranker&quot;&gt;Training and Finetuning Reranker Models with Sentence Transformers v4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this blogpost, the author shows how to use sentence-transformers to finetune a reranker model that beats all existing options on exactly your data. This method can also train extremely strong new reranker models from scratch.&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/6UTlYsa61miMc9vwCaAyWm&quot;&gt;Episode 21: A Garbage Episode&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/245/&quot;&gt;Episode 245: GUIs &amp;amp; TUIs: Choosing a User Interface for Your Python Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/246/&quot;&gt;Episode 246: Learning Intermediate Python With a Deep Dive Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/247/&quot;&gt;Episode 247: Exploring DuckDB &amp;amp; Comparing Python Expressions vs Statements&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/426/committing-to-formatted-markdown&quot;&gt;#426 Committing to Formatted Markdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/427/rise-of-the-python-lord&quot;&gt;#427 Rise of the Python Lord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/428/how-old-is-your-python&quot;&gt;#428 How old is your Python?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/429/nitpicking-python&quot;&gt;#429 Nitpicking Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/430/or-you-go-to-jail&quot;&gt;#430 Or you go to jail&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/499/beeware-and-the-state-of-python-on-mobile&quot;&gt;#499: BeeWare and the State of Python on Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/500/django-simple-deploy-and-other-devops-things&quot;&gt;#500: Django Simple Deploy and other DevOps Things&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/501/marimo-reactive-notebooks-for-python&quot;&gt;#501: Marimo - Reactive Notebooks for Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/502/django-ledger-accounting-with-python&quot;&gt;#502: Django Ledger: Accounting with Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/503/the-pyarrow-revolution&quot;&gt;#503: The PyArrow Revolution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/16903500-185-expanding-the-world-of-pybites-with-cohort-coaching-book-platforms-and-more&quot;&gt;#185: Expanding the world of Pybites with cohort coaching, book platforms and more!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/16944372-186-rethinking-the-art-of-coding&quot;&gt;#186: Rethinking the art of coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/16974259-187-beyond-the-resume-how-to-stand-out-in-the-competitive-world-of-tech&quot;&gt;#187: Beyond the resume - how to stand out in the competitive world of tech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/17013337-188-career-crossroads-navigating-the-path-to-job-fulfillment&quot;&gt;#188: Career crossroads - navigating the path to job fulfillment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;h3 id=&quot;googleadk-python-apache-20&quot;&gt;&lt;code&gt;google/adk-python&lt;/code&gt; (Apache-2.0)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google/adk-python&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;awslabsmcp-apache-20&quot;&gt;&lt;code&gt;awslabs/mcp&lt;/code&gt; (Apache-2.0)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/awslabs/mcp&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;github-mcp-server-mit&quot;&gt;&lt;code&gt;github-mcp-server&lt;/code&gt; (MIT)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/a2926942-1c3d-4f95-bb73-861d8003aecb&quot; alt=&quot;github-mcp-server&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/github/github-mcp-server&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;internvl3-78b&quot;&gt;&lt;code&gt;InternVL3-78B&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/OpenGVLab/InternVL3-78B&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;moonshotaikimi-vl-a3b-thinking&quot;&gt;&lt;code&gt;moonshotai/Kimi-VL-A3B-Thinking&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/moonshotai/Kimi-VL-A3B-Thinking&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;thudmglm-z1-32b-0414&quot;&gt;&lt;code&gt;THUDM/GLM-Z1-32B-0414&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/THUDM/GLM-Z1-32B-0414&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;qwen-3&quot;&gt;&lt;code&gt;Qwen 3&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-235B-A22B&quot;&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;nintendo-switch-2-has-a-launch-date&quot;&gt;Nintendo Switch 2 has a launch date&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets-prd.ignimgs.com/2025/01/16/screenshot-161-1737034377908.png&quot; alt=&quot;nintendo-switch-2&quot;&gt;&lt;/p&gt;
&lt;p&gt;Nintendo reveals in their “Direct” livestream event that Switch 2 is available on June 5th, 2025 worldwide with starting price ~$449.99 outside Japan (multi-language version) and a much lower price inside Japan (Japanese-only version). Read more about it on their &lt;a href=&quot;https://www.nintendo.com/us/gaming-systems/switch-2/&quot;&gt;official website&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;clair-obscur-expedition-33-sets-sail-on-april-24th&quot;&gt;Clair Obscur: Expedition 33 sets sail on April 24th&lt;/h3&gt;
&lt;p&gt;In this dark fantasy RPG inspired by JRPG and Soul-like games and made by a small French team “Sandfall Interactive”, players will explore the mysterious city of Lumière and engage in immersive turn-based battles with unique mechanics. After playing it for around 30 hours I must say I really enjoyed the visual style and the rewarding action part in the battles. Check their &lt;a href=&quot;https://www.expedition33.com/&quot;&gt;official website&lt;/a&gt; for more info.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Alright, that concludes the second issue of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful, and see you in May!&lt;/p&gt;
</description><pubDate>Wed, 30 Apr 2025 07:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>windows</category><category>news</category><author>Zeyang Lin</author></item><item><title>This Month for Pythonistas - March 2025</title><link>https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-03/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/this-month-for-pythonistas-2025-03/</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;# 2025 3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;issue-2025-03&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;640&quot; height=&quot;360&quot; src=&quot;/_astro/splash.CdmkBjaR_ZC4sN7.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Welcome and thank you for reading &lt;strong&gt;This Month for Pythonistas&lt;/strong&gt;, a monthly update dedicated to Python developers, professionals, and hobbyists.&lt;/p&gt;
&lt;p&gt;In this &lt;em&gt;inaugural&lt;/em&gt; issue, I would like to compile a list of news, articles, repositories, and tools worth noting in March 2025, as well as other fun stuff that may not necessarily be bound to Python community.&lt;/p&gt;
&lt;p&gt;Before we continue, please note that this blog is synced across several 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-2025-03/&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-2025-03/&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-2025-03/&quot;&gt;Render&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-2025-updates&quot;&gt;EuroPython 2025 Updates&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://ep2025.europython.eu/&quot;&gt;EuroPython 2025&lt;/a&gt; stays in Prague, Czech Republic (which makes Prague the host city three years in a row!), and the ticket sales start this month.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.europython.eu/content/images/2025/03/savannah-2.svg&quot; alt=&quot;europython-2025-keynote-speaker&quot;&gt;&lt;/p&gt;
&lt;p&gt;Python Core Developer &lt;a href=&quot;https://www.linkedin.com/in/savannahostrowski/&quot;&gt;Savannah Ostrowski&lt;/a&gt; is going to be one of the keynote speakers this year.&lt;/p&gt;
&lt;p&gt;Get to know more in their &lt;a href=&quot;https://blog.europython.eu/keynote-ticket-sales-announcement/&quot;&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;new-versions&quot;&gt;New versions&lt;/h2&gt;
&lt;h3 id=&quot;ipython-902&quot;&gt;&lt;code&gt;ipython&lt;/code&gt; 9.0.2&lt;/h3&gt;
&lt;p&gt;The first major version update in three years! Check it out on &lt;a href=&quot;https://pypi.org/project/ipython/9.0.2/&quot;&gt;pypi&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;dify-v113&quot;&gt;&lt;code&gt;dify&lt;/code&gt; v1.1.3&lt;/h3&gt;
&lt;p&gt;This major update (v1) brings a plugin system, a new Agent node in workflow, “Extenstion”, “Dify Marketplace”, and more!&lt;/p&gt;
&lt;p&gt;Check this particular release on &lt;a href=&quot;https://github.com/langgenius/dify/releases/tag/1.1.3&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/event-driven-agentic-document-workflows/&quot;&gt;Event-Driven Agentic Document Workflows&lt;/a&gt; from LlamaIndex&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Build an event-driven agentic workflow that parses forms, retrieves relevant information from a source document using RAG, and returns answers to the form’s fields as structured outputs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Deeplearning.ai’s &lt;a href=&quot;https://www.deeplearning.ai/short-courses/long-term-agentic-memory-with-langgraph/&quot;&gt;Long-Term Agentic Memory with LangGraph&lt;/a&gt; from LangChain&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Build a personal email agent with routing, writing, scheduling tools to automatically ignore, respond to, or notify about incoming emails.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/langgraph-python/&quot;&gt;LangGraph: Build Stateful AI Agents in Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is another tutorial regarding &lt;code&gt;LangGraph&lt;/code&gt;.&lt;/p&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;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/instance-class-and-static-methods-demystified/&quot;&gt;Python’s Instance, Class, and Static Methods Demystified&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Instance, class, and static methods each serve a distinct role in Python, and knowing when to use one over another is key to writing clean, maintainable code. Instance methods operate on individual objects using self, while class methods use cls to access class-level data. Static methods, on the other hand, provide organizational structure without relying on class or instance state.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;RealPython’s &lt;a href=&quot;https://realpython.com/python-code-quality/&quot;&gt;Python Code Quality: Best Practices and Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial, you’ll learn about code quality and the key factors that make Python code high-quality. You’ll explore effective strategies, powerful tools, and best practices to elevate your code to the next level.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;articles&quot;&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.nelhage.com/post/cpython-tail-call/&quot;&gt;Performance of the Python 3.14 tail-call interpreter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The CPython project’s new tail-call interpreter initially showed a 10 - 15% performance boost. However, the author found this was mainly due to an LLVM 19 regression. When benchmarked against better baselines, the gain dropped to 1 - 5%. The LLVM 19 regression affected the bytecode interpreter’s optimization. Also, the “computed goto” approach might be unnecessary for modern Clang.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/new-tools-for-building-agents/&quot;&gt;New tools for building agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI introduces their new approach on building agents systems: the new Responses API which would replace Assistants API, a new Python SDK as a agents framework, and more.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.google/technology/developers/gemma-3/&quot;&gt;Google’s Gemma 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://storage.googleapis.com/gweb-uniblog-publish-prod/images/Gemma3_KeywordBlog_RD3_V01b.width-2200.format-webp.webp&quot; alt=&quot;gemma-3&quot;&gt;&lt;/p&gt;
&lt;p&gt;Latest iteration of Google’s open-weight LLM includes four sizes from small to medium: 1B, 4B, 12B, and 27B. Here’s the &lt;a href=&quot;https://storage.googleapis.com/deepmind-media/gemma/Gemma3Report.pdf&quot;&gt;technical report&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mistral.ai/news/mistral-small-3-1&quot;&gt;Mistral Small 3.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mistral releases its newest “small” (24B) multi-modal, multilingual LLM, claiming it “outperforms comparable models like Gemma 3 and GPT-4o Mini, while delivering inference speeds of 150 tokens per second”.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cms.mistral.ai/assets/1977a3f1-eae3-4eed-b2c7-e1701c4692ed.png?width=1988&amp;amp;height=1050&quot; alt=&quot;mistral-small-3.1-performance&quot;&gt;&lt;/p&gt;
&lt;p&gt;Its “instruct” variation’s weight is obtainable from &lt;a href=&quot;https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503&quot;&gt;HuggingFace&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://a16z.com/a-deep-dive-into-mcp-and-the-future-of-ai-tooling/&quot;&gt;A Deep Dive Into MCP and the Future of AI Tooling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://d1lamhf6l6yk6d.cloudfront.net/uploads/2025/03/250319-MCP-x2000.png&quot; alt=&quot;model-context-protocol&quot;&gt;&lt;/p&gt;
&lt;p&gt;This article delves into the Model Context Protocol (MCP), an open protocol aiming to standardize AI model interactions with tools. Inspired by LSP, MCP supports autonomous AI workflows and human-in-the-loop operations. It has various use cases in dev-centric workflows and net-new experiences. However, the MCP ecosystem is in its early stage, facing challenges like authentication, authorization, and server discoverability. If these issues are resolved, MCP could reshape AI-tool interactions, leading to new pricing models, hosting modes, and a shift in tool development and consumption.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.microsoft.com/en-us/research/blog/introducing-kblam-bringing-plug-and-play-external-knowledge-to-llms/&quot;&gt;Introducing KBLaM: Bringing plug-and-play external knowledge to LLMs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://www.microsoft.com/en-us/research/wp-content/uploads/2025/03/KBLaM-BlogHeroFeature-1400x788-1-1.png&quot; alt=&quot;kblam-diagram&quot;&gt;&lt;/p&gt;
&lt;p&gt;KBLaM is a new approach to integrate structured knowledge bases into pre-trained LLMs. Traditional methods like fine-tuning and RAG have drawbacks, and in-context learning has computational issues. KBLaM converts knowledge bases into continuous key-value vector pairs and uses rectangular attention for efficient integration. It’s scalable, with linear cost and dynamic updates. KBLaM also enhances interpretability and reliability, reducing hallucinations. It paves the way for more reliable AI systems in critical fields.&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/3SSIu0lvHD1jT8m23VSBFB&quot;&gt;Episode 19: Async hacks, unicorns and velociraptors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://open.spotify.com/episode/4tB8m8DyUv6PDR1DvVJFKd&quot;&gt;Episode 20: Remote Code Execution By Design&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/241/&quot;&gt;Episode 241: Deciphering Python Jargon &amp;amp; Compiling Python 1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/242/&quot;&gt;Episode 242: Eric Matthes: Maybe Don’t Start With Unit Tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/243/&quot;&gt;Episode 243: Manage Projects With pyproject.toml &amp;amp; Explore Polars LazyFrames&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/podcasts/rpp/244/&quot;&gt;Episode 244: A Decade of Automating the Boring Stuff With Python&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/422/you-need-4-spaces&quot;&gt;#422 You need 4 spaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/423/traveling-the-python-universe&quot;&gt;#423 Traveling the Python Universe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/424/we-will-test-in-production&quot;&gt;#424 We Will Test in Production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pythonbytes.fm/episodes/show/425/if-you-were-a-klingon-programmer&quot;&gt;#425 If You Were a Klingon Programmer&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/496/scaf-complete-blueprint-for-new-python-kubernetes-projects&quot;&gt;#496: Scaf: Complete blueprint for new Python Kubernetes projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/497/outlier-detection-with-python&quot;&gt;#497: Outlier Detection with Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/498/algorithms-for-high-performance-terminal-apps&quot;&gt;#498: Algorithms for high performance terminal apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-pybites-podcast&quot;&gt;🍕 Pybites Podcast&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/16730593-183-ai-s-silent-takeover-are-we-losing-our-programming-skills&quot;&gt;#183: AI’s silent takeover - are we losing our programming skills?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pybitespodcast.com/1501156/episodes/16755254-184-the-pathway-to-success-how-an-open-mind-can-lead-to-your-dream-job&quot;&gt;#184: The pathway to success - how an open mind can lead to your dream job&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;
&lt;h3 id=&quot;warp-on-windows&quot;&gt;Warp on Windows&lt;/h3&gt;
&lt;p&gt;Warp is one of my favorite new toys in year 2024, and now it comes to Windows platform. Check their &lt;a href=&quot;https://www.warp.dev/blog/launching-warp-on-windows&quot;&gt;blog&lt;/a&gt;!&lt;/p&gt;
&lt;h3 id=&quot;cherry-studio-1110&quot;&gt;Cherry Studio 1.1.10&lt;/h3&gt;
&lt;p&gt;Cherry Studio catches quite a lot of eyes recently, and it just reaches 1.0 not too long ago. &lt;a href=&quot;https://cherry-ai.com/download&quot;&gt;official download&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;repositories&quot;&gt;Repositories&lt;/h2&gt;
&lt;h3 id=&quot;lmstudio-python-mit&quot;&gt;&lt;code&gt;lmstudio-python&lt;/code&gt; (MIT)&lt;/h3&gt;
&lt;p&gt;I personally have been using &lt;a href=&quot;https://lmstudio.ai/&quot;&gt;LM Studio&lt;/a&gt; for roughly one year, and this &lt;code&gt;lmstudio-python&lt;/code&gt; (alongside lmstudio-js for JavaScript) is their official SDK with which you can easily manage the models, conversations and more using pure Python code. They have documentations too: &lt;a href=&quot;https://lmstudio.ai/docs/python&quot;&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The source code is hosted on &lt;a href=&quot;https://github.com/lmstudio-ai/lmstudio-python&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;openai-agents-python-mit&quot;&gt;&lt;code&gt;openai-agents-python&lt;/code&gt; (MIT)&lt;/h3&gt;
&lt;p&gt;OpenAI’s latest contribution to open-source includes this framework for creating multi-agent workflows. This is also among the new toys from OpenAI which I mentioned earlier in this issue.&lt;/p&gt;
&lt;p&gt;The source code is on &lt;a href=&quot;https://github.com/openai/openai-agents-python&quot;&gt;github&lt;/a&gt;, and the &lt;a href=&quot;https://openai.github.io/openai-agents-python/&quot;&gt;documentation&lt;/a&gt; too.&lt;/p&gt;
&lt;p&gt;Update: The Agents SDK has support for MCP, which means you can now &lt;a href=&quot;https://openai.github.io/openai-agents-python/mcp/&quot;&gt;connect MCP servers to Agents&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;smolagents-apache-20&quot;&gt;&lt;code&gt;smolagents&lt;/code&gt; (Apache-2.0)&lt;/h3&gt;
&lt;p&gt;Another light-weight (“smol”) framework which helps you build AI agents, brought by the HuggingFace team.&lt;/p&gt;
&lt;p&gt;Here’s the &lt;a href=&quot;https://github.com/huggingface/smolagents&quot;&gt;repostitory&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;deepseek-v3-0324&quot;&gt;&lt;code&gt;DeepSeek-V3-0324&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The is an updated version of V3, released just this March. The weights can be found on &lt;a href=&quot;https://huggingface.co/deepseek-ai/DeepSeek-V3-0324&quot;&gt;HuggingFace&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;qwen25-omni-7b&quot;&gt;&lt;code&gt;Qwen2.5-Omni-7B&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Qwen team has released &lt;em&gt;their&lt;/em&gt; version of “omni” model on &lt;a href=&quot;https://huggingface.co/Qwen/Qwen2.5-Omni-7B&quot;&gt;HuggingFace&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;have-time-for-some-fun&quot;&gt;Have time for some fun?&lt;/h2&gt;
&lt;h3 id=&quot;command--conquer-games-go-open-source&quot;&gt;Command &amp;amp; Conquer games go open-source&lt;/h3&gt;
&lt;p&gt;Despite their infamous and disastrous management on this beloved franchise, EA chose to open-source some of the classic C&amp;amp;C games on github, potentially enriching the Modding community support.&lt;/p&gt;
&lt;p&gt;Here are the repositories (Mostly C++, plus some C, Assembly and others; under GNU GPL v3):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/electronicarts/CnC_Tiberian_Dawn&quot;&gt;Tiberian Dawn (1995)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/electronicarts/CnC_Red_Alert&quot;&gt;Red Alert (1996)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/electronicarts/CnC_Renegade&quot;&gt;Renegade (2002)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/electronicarts/CnC_Generals_Zero_Hour&quot;&gt;Generals (2003) and Generals: Zero Hour (2003)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;death-stranding-2-on-the-beach-finally-has-a-launch-date&quot;&gt;Death Stranding 2: On the Beach (finally) has a launch date&lt;/h3&gt;
&lt;p&gt;It would be on the shelves on June 26th (or 24th for Deluxe Edition owners), 2025 for Playstation only (… for a while at least), and the pre-order starts March 17th.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.playstation.com/tachyon/2025/03/39b76949d94b8c18a90f34664c1ff989b8afee67-scaled.jpg?fit=1024%2C576&amp;amp;zoom=1&quot; alt=&quot;death-stranding-2-digital-standard-edition&quot;&gt;&lt;/p&gt;
&lt;p&gt;The price starts from 69.99 USD, 79.99 EUR, 568 HKD or 8,980 JPY.&lt;/p&gt;
&lt;p&gt;More details can be found in this &lt;a href=&quot;https://blog.playstation.com/2025/03/09/death-stranding-2-on-the-beach-launches-june-26-collectors-edition-revealed/&quot;&gt;playstation blog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;starcraft-goes-to-tabletop&quot;&gt;StarCraft goes to tabletop&lt;/h3&gt;
&lt;p&gt;In their &lt;a href=&quot;https://archon-studio.com/blog/starcraft-tmg/starcraft-tabletop-miniatures-game-announcement&quot;&gt;blog&lt;/a&gt;, Archon Studio announced an official partnership with Blizzard Entertainment, launching a StarCraft tabletop miniatures game in 2026, followed by board games set in the StarCraft universe in 2027.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://archon-studio.com/files/scaled-thumbs/Blog/starcraft-tabletop-miniatures-game-announcement/SC%201x1%20announcement.png/1200_1200.webp&quot; alt=&quot;starcraft-miniatures&quot;&gt;&lt;/p&gt;
&lt;p&gt;More details, like miniature previews and gameplay mechanics, will be revealed later in 2025.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Alright, that concludes the very first issue of “This Month of Pythonistas”. Thank you again for reading my post. I hope you enjoy it or find something useful, and see you in April!&lt;/p&gt;
</description><pubDate>Mon, 31 Mar 2025 07:00:00 GMT</pubDate><category>python</category><category>python</category><category>cli</category><category>linux</category><category>windows</category><category>news</category><author>Zeyang Lin</author></item><item><title>UV is the latest attempt to rule All Python tools</title><link>https://blueberrypy.netlify.app/post/uv-is-latest-attempt-to-rule-them-all/</link><guid isPermaLink="true">https://blueberrypy.netlify.app/post/uv-is-latest-attempt-to-rule-them-all/</guid><description>&lt;p&gt;In short, &lt;a href=&quot;https://github.com/astral-sh/uv&quot;&gt;&lt;code&gt;uv&lt;/code&gt;&lt;/a&gt; is a command line tool written in &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;&lt;code&gt;Rust&lt;/code&gt;&lt;/a&gt; for &lt;code&gt;Python&lt;/code&gt; developers, which aims to be &lt;em&gt;“a comprehensive project and package manager that is extremely fast, reliable, and easy to use”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If you are still interested, I hope you can spend a couple of minutes so that I can give you a quick tour of it.&lt;/p&gt;
&lt;h2 id=&quot;quick-fact-sheet&quot;&gt;Quick fact sheet&lt;/h2&gt;
&lt;p&gt;language: Rust&lt;/p&gt;
&lt;p&gt;version: 0.1.13 (at the time of updating this post)&lt;/p&gt;
&lt;p&gt;repo: &lt;a href=&quot;https://github.com/astral-sh/uv&quot;&gt;github&lt;/a&gt; (6k stars)&lt;/p&gt;
&lt;p&gt;pypi: &lt;a href=&quot;https://pypi.org/project/uv/&quot;&gt;pypi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;docs: N/A&lt;/p&gt;
&lt;p&gt;supported python versions: 3.8 through 3.12 (inclusive)&lt;/p&gt;
&lt;p&gt;supported os: Windows, Linux, MacOS&lt;/p&gt;
&lt;h2 id=&quot;drop-in-replacement-for-pip-and-more&quot;&gt;Drop-in replacement for pip and more&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; is from the creator of &lt;a href=&quot;https://github.com/astral-sh/ruff&quot;&gt;&lt;code&gt;ruff&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/charliermarsh&quot;&gt;Charlie Marsh&lt;/a&gt; and &lt;a href=&quot;https://github.com/astral-sh/&quot;&gt;astralsh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ruff&lt;/code&gt;, the linting and formating tool written is Rust as well, has already gain fame and popularity during the past year or so, and I believe many of Python developers have been using it for quite a while.&lt;/p&gt;
&lt;p&gt;And &lt;code&gt;uv&lt;/code&gt; is no doubt their next step in improving the Python toolchain eco.&lt;/p&gt;
&lt;p&gt;Although you can easily install &lt;code&gt;uv&lt;/code&gt; using &lt;code&gt;pip&lt;/code&gt; or &lt;code&gt;pipx&lt;/code&gt; just like any other Python tool,
essentially it does not rely on your Python interpreter to be installed.&lt;/p&gt;
&lt;p&gt;It provides just the binary executable and you can get it easily by running the quick script following
the insructions in its git repo. And that’s it, no Python or Rust runtime required till this point.&lt;/p&gt;
&lt;p&gt;Creating a virtual environment is now as easy as &lt;code&gt;uv venv&lt;/code&gt;, though you now need at least one Python interpreter ready to make it work.&lt;/p&gt;
&lt;p&gt;The virtual env it creates is just a standard Python venv, except it does not include &lt;code&gt;pip&lt;/code&gt; by default (however if you need pip, you can let it be included by using an extra flag, or you could install it manually anytime after).&lt;/p&gt;
&lt;p&gt;Some of your daily commands can then be like (but faster):&lt;/p&gt;
&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;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pip&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; requirements.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pip&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; black==&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;24.2.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pip&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compile&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pyprojects.toml&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; requirements.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;fast-in-deed&quot;&gt;Fast in deed&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;speed-comparison-1&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1136&quot; height=&quot;301&quot; src=&quot;/_astro/image-01.ae05VlAD_SG90D.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;speed-comparison-2&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1163&quot; height=&quot;275&quot; src=&quot;/_astro/image-02.XSkMg7EH_Z2gbQo8.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Just like &lt;code&gt;ruff&lt;/code&gt; is known as being an extremely fast linter, &lt;code&gt;uv&lt;/code&gt;’s speed is also impressive.&lt;/p&gt;
&lt;p&gt;Here is a short &lt;code&gt;requirements.txt&lt;/code&gt; from one of my repos:&lt;/p&gt;
&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;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;fastapi==0.109.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pydantic[email]==2.6.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;python-multipart==0.0.9&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;uvicorn[standard]==0.27.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;coverage&amp;gt;=7.4.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;httpx&amp;gt;=0.26.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;memray&amp;gt;=1.11.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pytest&amp;gt;=8.0.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And I gave &lt;code&gt;uv&lt;/code&gt; a try using github actions. The result on &lt;code&gt;ubuntu-latest&lt;/code&gt; with Python 3.12 looks like this&lt;/p&gt;
&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;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;gt; Run uv pip install -r requirements.dev.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Resolved 40 packages in 185ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Downloaded 40 packages in 268ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Installed 40 packages in 24ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + annotated-types==0.6.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + anyio==4.3.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + certifi==2024.2.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + click==8.1.7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + coverage==7.4.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + dnspython==2.6.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + email-validator==2.1.0.post1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + fastapi==0.109.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + h11==0.14.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + httpcore==1.0.3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + httptools==0.6.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + httpx==0.26.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + idna==3.6&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + iniconfig==2.0.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + jinja2==3.1.3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + linkify-it-py==2.0.3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + markdown-it-py==3.0.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + markupsafe==2.1.5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + mdit-py-plugins==0.4.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + mdurl==0.1.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + memray==1.11.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + packaging==23.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + pluggy==1.4.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + pydantic==2.6.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + pydantic-core==2.16.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + pygments==2.17.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + pytest==8.0.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + python-dotenv==1.0.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + python-multipart==0.0.9&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + pyyaml==6.0.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + rich==13.7.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + sniffio==1.3.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + starlette==0.36.3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + textual==0.52.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + typing-extensions==4.9.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + uc-micro-py==1.0.3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + uvicorn==0.27.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + uvloop==0.19.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + watchfiles==0.21.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; + websockets==12.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, this process, including solving the dependencies, downloading them and installing them, took just &lt;strong&gt;less than half a second&lt;/strong&gt;!&lt;/p&gt;
&lt;h2 id=&quot;features-in-need&quot;&gt;Features in need&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;uv&lt;/code&gt;’s vision, according to the blog, is&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;a single binary that bootstraps your Python installation and gives you everything you need to be productive with Python, bundling not only pip, pip-tools, and virtualenv, but also pipx, tox, poetry, pyenv, ruff, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And appearantly at the current point, it is still quite far away from that.&lt;/p&gt;
&lt;p&gt;The only two major top-level sub-commands the cli currently supports are&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;venv&lt;/li&gt;
&lt;li&gt;pip&lt;/li&gt;
&lt;li&gt;cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It thus can only create a virtual environment, install dependencies into it and outputs a “lock” file, etc.&lt;/p&gt;
&lt;p&gt;I want it to list installed packages, or run commands using the interpreter inside the virtual env, just like what &lt;code&gt;poetry&lt;/code&gt; is capable of right now.&lt;/p&gt;
&lt;p&gt;Not to mention that it cannot run tests, switch virtual environments or lint source files.&lt;/p&gt;
&lt;p&gt;But it’s still in its early age, and the pace is like one patch version every couple of days, isn’t it?&lt;/p&gt;
&lt;h2 id=&quot;what-about-rye&quot;&gt;What about Rye&lt;/h2&gt;
&lt;p&gt;The ambitions of &lt;code&gt;uv&lt;/code&gt; share a lot with those from &lt;code&gt;Rye&lt;/code&gt;, a tool (which happens to be written in Rust as well) created by Armin Ronacher, the creator of &lt;code&gt;Flask&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What’s more, the team behind &lt;code&gt;uv&lt;/code&gt;, &lt;code&gt;astralsh&lt;/code&gt;, is actually taking over the dev work of &lt;code&gt;Rye&lt;/code&gt; according to their &lt;a href=&quot;https://astral.sh/blog/uv&quot;&gt;blog&lt;/a&gt;, and ultimately going to migrate &lt;code&gt;Rye&lt;/code&gt; to &lt;code&gt;uv&lt;/code&gt; in the future.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We saw this as a rare opportunity to team up, and to avoid fragmenting the Python ecosystem. As such, in collaboration with Armin, we’re excited to be taking over Rye. Our goal is to evolve uv into a production-ready “Cargo for Python”, and to provide a smooth migration path from Rye to uv when the time is right.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;some-thoughts&quot;&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;The name &lt;code&gt;uv&lt;/code&gt; seems not relevant to &lt;a href=&quot;https://github.com/libuv/libuv&quot;&gt;&lt;code&gt;libuv&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/MagicStack/uvloop&quot;&gt;&lt;code&gt;uvloop&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;https://github.com/encode/uvicorn&quot;&gt;&lt;code&gt;uvicorn&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe it’s short for “universal/ultimate/unified virtualenv manager”?&lt;/p&gt;
&lt;p&gt;The dedicated docs pages of &lt;code&gt;uv&lt;/code&gt; are not present at the time of writing, which is a pitty.&lt;/p&gt;
&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://astral.sh/blog/uv&quot;&gt;uv: Python packaging in Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/astral-sh/uv&quot;&gt;uv on Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 21 Feb 2024 07:23:13 GMT</pubDate><category>rust</category><category>python</category><category>rust</category><category>python</category><category>pip</category><category>cli</category><category>linux</category><category>windows</category><author>Zeyang Lin</author></item></channel></rss>