<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Python潮流周刊: Python Trending Weekly]]></title><description><![CDATA[This weekly newsletter carefully curates over 250 Chinese and English information sources, selecting the most valuable articles, tutorials, open-source projects, software tools, podcasts, videos, and trending topics to share with you.]]></description><link>https://pythoncat.substack.com/s/python-trending-weekly</link><image><url>https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg</url><title>Python潮流周刊: Python Trending Weekly</title><link>https://pythoncat.substack.com/s/python-trending-weekly</link></image><generator>Substack</generator><lastBuildDate>Wed, 17 Jun 2026 00:11:17 GMT</lastBuildDate><atom:link href="https://pythoncat.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[豌豆花下猫]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[pythoncat@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[pythoncat@substack.com]]></itunes:email><itunes:name><![CDATA[豌豆花下猫]]></itunes:name></itunes:owner><itunes:author><![CDATA[豌豆花下猫]]></itunes:author><googleplay:owner><![CDATA[pythoncat@substack.com]]></googleplay:owner><googleplay:email><![CDATA[pythoncat@substack.com]]></googleplay:email><googleplay:author><![CDATA[豌豆花下猫]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Python Trending Weekly #114: Python performance myths and fairy tales]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-114-python</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-114-python</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 09 Aug 2025 01:42:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>link : https://www.patreon.com/posts/136063032</p><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; How JIT builds of CPython actually work</p><p>&#9313; Why I'm interested in Litestar</p><p>&#9314; You might not need a Python class</p><p>&#9315; Rust, Python, and TypeScript: the new trifecta</p><p>&#9316; Python performance myths and fairy tales</p><p>&#9317; Ways to have an atomic counter in Django</p><p>&#9318; Don't call dunder methods</p><p>&#9319; Render your Jupyter notebooks in OpenGist</p><p>&#9320; Updating Python</p><p>&#9321; Conda Ecosystem Explained</p><p>&#9322; What's the deal with setuptools &amp; setup.py</p><p>&#9323; Everything I know about good system design</p><p><strong><a href="https://weekly.pythoncat.top">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; zotero-arxiv-daily: Recommend new arxiv papers of your interest daily according to your Zotero library</p><p>&#9313; Office-PowerPoint-MCP-Server: A MCP (Model Context Protocol) server for PowerPoint manipulation using python-pptx</p><p>&#9314; pipecat: Open Source framework for voice and multimodal conversational AI</p><p>&#9315; sniffly: Claude Code Analytics Dashboard</p><p>&#9316; FastVideo: A unified inference and post-training framework for accelerated video generation</p><p>&#9317; judgeval: The open source post-building layer for agents</p><p>&#9318; viser: Web-based 3D visualization + Python</p><p>&#9319; stock: A powerful stock analysis tool</p><p>&#9320; langmem: Long-term memory for AI agents</p><p>&#9321; Auto-Gmail-Creator: Bulk Auto Gmail Creator</p><p>&#9322; nvda: Free and open source Screen Reader</p><p>&#9323; sshsync: a tool for synchronizing commands on remote servers</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 114 for free: https://www.patreon.com/posts/136063032</p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #113: Replacing Async/Await with Virtual Threads]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-113-replacing</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-113-replacing</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 02 Aug 2025 02:49:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>After subscribing, you can view the full text of Issue 113 for free: https://www.patreon.com/posts/python-trending-135524232</p><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; Checking Out CPython 3.14's remote debugging protocol</p><p>&#9313; Operating Inside the Interpreted: Offensive Python</p><p>&#9314; From Async/Await to Virtual Threads</p><p>&#9315; Following up on the Python JIT</p><p>&#9316; asyncio: a library with too many sharp corners</p><p>&#9317; Building Autonomous Systems: A Guide to Agentic AI Workflows</p><p>&#9318; The Big LLM Architecture Comparison</p><p>&#9319; Better alternative to shell scripts with Python, uv and pytest</p><p>&#9320; Incident Report: Phishing Attack</p><p>&#9321; Can you execute arbitrary Python code from only a comment?</p><p>&#9322; How the Application and Request Contexts Work in Python Flask</p><p>&#9323; Is AI Leaving the Python Community Behind?</p><p><strong><a href="https://weekly.pythoncat.top">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; mediacms: A modern, fully featured open source video and media CMS</p><p>&#9313; darkdump: Open Source Intelligence Interface for Deep Web Scraping</p><p>&#9314; ii-agent: a new open-source framework to build and deploy intelligent agents</p><p>&#9315; copyparty: Portable file server</p><p>&#9316; ai-cookbook: Examples and tutorials to help developers build AI systems</p><p>&#9317; agno: Full-stack framework for building Multi-Agent Systems</p><p>&#9318; abogen: Generate audiobooks from EPUBs, PDFs and text</p><p>&#9319; CCPlugins: Claude Code Productivity Plugins</p><p>&#9320; LangExtract: Structured Information Extraction Library</p><p>&#9321; PicTex: A powerful Python library to create beautifully styled text images</p><p>&#9322; html-to-markdown: HTML to markdown converter</p><p>&#9323; erys: Terminal Interface for Jupyter Notebooks</p><p><strong><a href="https://weekly.pythoncat.top">&#128034;Podcasts &amp; Videos</a></strong></p><p>&#9312; Episode #513 - Stories from Python History</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 113 for free: https://www.patreon.com/posts/python-trending-135524232</p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #112: Welcoming the New Generation of AI-Era Programmers]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-112-welcoming</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-112-welcoming</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 26 Jul 2025 13:36:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>full issue&#65306;https://www.patreon.com/posts/python-trending-135001605</p><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; Unpacking in Comprehensions</p><p>&#9313; Using reduce() for Multithreaded Aggregation</p><p>&#9314; PEP 799 &#8211; A dedicated profilers package for organizing Python profiling tools</p><p>&#9315; metap: A Meta-Programming Layer for Python</p><p>&#9316; Checking Out CPython 3.14's remote debugging protocol</p><p>&#9317; How to Avoid N+1 Queries in Django Python</p><p>&#9318; Announcing Toad - a universal UI for agentic coding in the terminal</p><p>&#9319; The Step-by-Step Guide to Python Packaging Tools 2025</p><p>&#9320; Welcoming The Next Generation of Programmers</p><p>&#9321; What "Parse, don't validate" means in Python?</p><p>&#9322; Python: fix BrokenPipeError when piping output to other commands</p><p>&#9323; My favorite use-case for AI is writing logs</p><p>&#9324; How to Think About Time in Programming</p><p><strong><a href="https://weekly.pythoncat.top">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; Qwen3-Coder: Qwen3-Coder is the code version of Qwen3, the large language model series developed by Qwen team, Alibaba Cloud.</p><p>&#9313; awesome-claude-code: A curated list of awesome commands, files, and workflows for Claude Code</p><p>&#9314; open_deep_research: Open Deep Research</p><p>&#9315; PhotoshopAPI: A modern and performant C++20 read/write parser of Photoshop Files</p><p>&#9316; LanceDB: Developer-friendly, embedded retrieval engine for multimodal AI</p><p>&#9317; MediaManager: A modern selfhosted media management system for your media library</p><p>&#9318; fstrings.wtf: Python F-String Quiz</p><p>&#9319; complexipy: An extremely fast Python library to calculate the cognitive complexity of Python files, written in Rust.</p><p>&#9320; ART: Agent Reinforcement Trainer</p><p>&#9321; NeuralAgent: The AI Agent That Lives On Your Desktop And Uses It Like You Do!</p><p>&#9322; SkyReels-V2: Infinite-length Film Generative model</p><p>&#9323; gitingest: Turn any Git repository into a prompt-friendly text ingest for LLMs</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 112 for free: https://www.patreon.com/posts/python-trending-135001605</p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #110: JIT Compiler Two-Year Retrospective, AI Agent Tools Explosion]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-110-jit-compiler</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-110-jit-compiler</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 12 Jul 2025 09:55:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>Full article <a href="https://www.patreon.com/posts/python-trending-133956776">https://www.patreon.com/posts/python-trending-133956776</a></p><div><hr></div><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; Reflections on 2 years of CPython's JIT Compiler: The good, the bad, the ugly</p><p>&#9313; Types are Transforming Python</p><p>&#9314; Solving Wordle with uv's dependency resolver</p><p>&#9315; Developing a Real-time Dashboard with FastAPI, MongoDB, and WebSockets</p><p>&#9316; Escaping Contravariance Hell</p><p>&#9317; LangFlow Tutorial: Building Production-Ready AI Applications With Visual Workflows</p><p>&#9318; Scaling recommendations service at OLX</p><p>&#9319; Getting extensions to work with free-threaded Python</p><p>&#9320; Augmented Coding: Beyond the Vibes</p><p>&#9321; Context Engineering for Agents</p><p>&#9322; PyTorch is dead. Long live JAX.</p><p>&#9323; operators, not users and programmers</p><p><strong><a href="https://weekly.pythoncat.top">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; trae-agent: LLM-based agent for general purpose software engineering tasks</p><p>&#9313; xai-sdk-python: The official Python SDK for the xAI API</p><p>&#9314; desto: web-interface and cli to manage python and shell scripts in tmux sessions</p><p>&#9315; devin.cursorrules: Magic to turn Cursor/Windsurf as 90% of Devin</p><p>&#9316; LingChat: GPT chat with emotional expressions</p><p>&#9317; rowboat: AI-powered multi-agent builder</p><p>&#9318; agent-factory: A tool for generating Python code for agentic workflows</p><p>&#9319; throttled-py: High-performance Python rate limiting library</p><p>&#9320; tubearchivist: Your self hosted YouTube media server</p><p>&#9321; mlx-audio: A text-to-speech (TTS), speech-to-text (STT) and speech-to-speech (STS) library built on Apple's MLX framework</p><p>&#9322; sloppy-xml-py: A Python library to parse malformed XML</p><p>&#9323; Python-Scripts: A curated list of python scripts for automating your tasks</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 110 for free: https://www.patreon.com/posts/python-trending-133956776</p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #108：Will AI Replace Junior Developers?]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-108will-ai</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-108will-ai</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 28 Jun 2025 13:45:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>This week we're sharing 12 articles, 12 open source projects, 2 podcasts &amp; videos</p><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; My First Open Source AI Generated Library</p><p>&#9313; Fun with uv and PEP 723</p><p>&#9314; Will AI Replace Junior Developers? I Asked Experts at Pycon US</p><p>&#9315; Fixing Python Properties</p><p>&#9316; Python can run Mojo now</p><p>&#9317; Django: Introducing inline-snapshot-django</p><p>&#9318; Cut Django Database Latency by 50-70ms With Native Connection Pooling</p><p>&#9319; The Waiting Time Paradox, or, Why Is My Bus Always Late?</p><p>&#9320; Kalman and Bayesian Filters in Python</p><p>&#9321; Switching from virtualenvwrapper to direnv, Starship, and uv</p><p>&#9322; How to think about agent frameworks</p><p>&#9323; Lessons From 9 More Years of Tricky Bugs</p><p><strong><a href="https://weekly.pythoncat.top">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; gemini-cli: An open-source AI agent that brings the power of Gemini directly into your terminal</p><p>&#9313; nxtscape: Nxtscape is an open-source agentic browser</p><p>&#9314; augmentoolkit: Create Custom LLMs</p><p>&#9315; BitNet: Official inference framework for 1-bit LLMs</p><p>&#9316; local-deep-research: AI-powered assistant for deep, iterative research</p><p>&#9317; pyfuze: Package Python projects into executables</p><p>&#9318; nbdev: Create delightful software with Jupyter Notebooks</p><p>&#9319; fastapi_mcp: Expose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!</p><p>&#9320; Awesome-ML-SYS-Tutorial: My learning notes/codes for ML SYS</p><p>&#9321; machine-learning-visualized: ML algorithms implemented and derived from first-principles in Jupyter Notebooks and NumPy</p><p>&#9322; code-graph-rag: Search Monorepos and get relevant answers</p><p>&#9323; FeedMe: AI-powered RSS reader, deployable to GitHub Pages or with Docker</p><p><strong><a href="https://weekly.pythoncat.top">&#128034;Podcasts &amp; Videos</a></strong></p><p>&#9312; Watch the DjangoCon Europe 2025 talks</p><p>&#9313; Add Features Without Touching Source Code!</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 108 for free: https://www.patreon.com/posts/python-trending-132603667</p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #107: GIL-Free Python Gets Official Approval]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-107-gil-free</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-107-gil-free</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 21 Jun 2025 09:47:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>This week we're sharing 12 articles, 12 open source projects, 2 podcasts &amp; videos, and 2 hot topics.</p><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top/">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; Design Patterns You Should Unlearn in Python-Part1</p><p>&#9313; The Python Language Summit 2025</p><p>&#9314; State of Free-Threaded Python</p><p>&#9315; An introduction to Python for R users</p><p>&#9316; How global variables work in Python bytecode</p><p>&#9317; Are Python Dictionaries Ordered Data Structures?</p><p>&#9318; Understanding and Coding the KV Cache in LLMs from Scratch</p><p>&#9319; &#20174; browser-use &#20986;&#21457;&#65292;&#21697; Agent &#23454;&#29616;</p><p>&#9320; PEP 795 &#8211; Deep Immutability in Python</p><p>&#9321; The Missing Manual for Signals: State Management for Python Developers</p><p>&#9322; Create your customized running plan: A step-by-step guide using Python, Elasticsearch, and Agno</p><p>&#9323; The fastest way to detect a vowel in a string</p><p><strong><a href="https://weekly.pythoncat.top/">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; MiniMax-M1: the world's first open-weight, large-scale hybrid-attention reasoning model</p><p>&#9313; A functional standard library for Python</p><p>&#9314; TurboDRF: The dead simple Django REST Framework API generator with role-based permissions</p><p>&#9315; WinUp: A ridiculously Pythonic and powerful framework for building beautiful desktop applications</p><p>&#9316; Framefox: Python web framework that makes development enjoyable</p><p>&#9317; miniDiffusion: A reimplementation of Stable Diffusion 3.5 in pure PyTorch</p><p>&#9318; pyleak: Detect leaked asyncio tasks, threads, and event loop blocking with stack trace in Python</p><p>&#9319; Shiny for Python</p><p>&#9320; AI design agent, local alternative for Lovart</p><p>&#9321; FlareSolverr: Proxy server to bypass Cloudflare protection</p><p>&#9322; ii-agent: a new open-source framework to build and deploy intelligent agents</p><p>&#9323; ChinaTextbook: Complete Collection of Chinese K-12 and University PDF Textbooks</p><p><strong><a href="https://weekly.pythoncat.top/">&#128034;Podcasts &amp; Videos</a></strong></p><p>&#9312; My PyCon Talk This Year: Discussing My First Completed PEP</p><p>&#9313; Program Your Own Computer in Python</p><p><strong><a href="https://weekly.pythoncat.top/">&#129346;Discussions &amp; Questions</a></strong></p><p>&#9312; PEP 779: Criteria for supported status for free-threaded Python</p><p>&#9313; Any convenient and user-friendly Python GUI frameworks?</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 107 for free: <a href="https://www.patreon.com/posts/python-weekly-131958235">https://www.patreon.com/posts/python-weekly-131958235</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #106: PEP 734 officially accepted, the era of multiple interpreters is coming]]></title><description><![CDATA[Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence!]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-106-pep-734</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-106-pep-734</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 14 Jun 2025 07:29:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Python Trending Weekly - your gateway to cutting-edge Python intelligence! Curated by Python Cat from 400+ premium sources worldwide, we deliver the most valuable articles, tutorials, open-source projects, tools, podcasts, videos, and trending discussions directly to your inbox. Our mission: Accelerate your Python mastery and unlock new career opportunities in the ever-evolving tech landscape.</p><p><strong>Stay ahead of the curve:</strong> <a href="https://www.patreon.com/pythonweekly">Subscribe now</a> for weekly insights that keep you at the forefront of Python innovation!</p><p>This week we're featuring 12 articles and 15 open source projects.</p><p>Here are the title summaries for this issue:</p><p><strong><a href="https://weekly.pythoncat.top">&#129412;Articles &amp; Tutorials</a></strong></p><p>&#9312; PEP 734: Multiple Interpreters in the Stdlib</p><p>&#9313; Why pandas feels clunky when coming from R</p><p>&#9314; Faster Python: Concurrency in async/await and threading</p><p>&#9315; A Deep Dive into CrewAI and Agentic Design</p><p>&#9316; MonsterUI: Bringing Beautiful UI to FastHTML</p><p>&#9317; Dewu's Community Data Generation Service Integrates with MCP</p><p>&#9318; Data Validation Libraries for Polars (2025 Edition)</p><p>&#9319; Exploring AI Integration with Adobe Photoshop, InDesign and Premiere Pro</p><p>&#9320; Beyond htmx: building modern Django apps with Alpine AJAX</p><p>&#9321; How I'm using Django, JavaScript modules and importmaps together</p><p>&#9322; Field Notes From Shipping Real Code With Claude</p><p>&#9323; Fixing FastAPI Throughput Without Going Fully Async</p><p><strong><a href="https://weekly.pythoncat.top">&#128063;&#65039;Projects &amp; Resources</a></strong></p><p>&#9312; Archon: AI Agent Builder</p><p>&#9313; excel-mcp-server: A Model Context Protocol server for Excel file manipulation</p><p>&#9314; crudadmin: Modern admin interface for FastAPI with built-in authentication, event tracking, and security features</p><p>&#9315; py-pglite: PGlite wrapper in Python for testing</p><p>&#9316; openai-agents-python: A lightweight, powerful framework for multi-agent workflows</p><p>&#9317; ai-manus: AI Manus is a general-purpose AI Agent system</p><p>&#9318; WebAgent: WebWalker [ACL2025] &amp; WebDancer [Preprint]</p><p>&#9319; poethepoet: A task runner that works well with poetry or uv</p><p>&#9320; ragbits: Building blocks for rapid development of GenAI applications</p><p>&#9321; WorldGen: Generate Any 3D Scene in Seconds</p><p>&#9322; docext: An on-premises, OCR-free unstructured data extraction, markdown conversion and benchmarking toolkit</p><p>&#9323; Orpheus-TTS: Towards Human-Sounding Speech</p><p>&#9324; VACE: All-in-One Video Creation and Editing</p><p>&#9325; langmem: LangMem helps agents learn and adapt from their interactions over time</p><p>&#9326; terminator: Automate desktop apps like a browser</p><p>Cut through the noise with our premium subscription at $4.99/month. Get hand-picked, cutting-edge Python content delivered weekly. Join 350+ professionals who trust us to filter the best from 400+ sources for technical vision expansion and career development. Subscribe at: <a href="https://www.patreon.com/pythonweekly">Patreon</a></p><p>After subscribing, you can view the full text of Issue 106 for free: https://www.patreon.com/posts/python-trending-131437980</p><p><a href="https://pythoncat.top/posts/2025-04-20-sweekly">Python Trending Weekly Season 3 Summary with E-book Download</a></p><p><a href="https://pythoncat.top/posts/2025-04-20-iweekly">Python Trending Weekly Season 2 Complete Collection (Issues 31-60)</a></p><p><a href="https://pythoncat.top/posts/2023-12-11-weekly">Python Trending Weekly Season 1 Highlights Collection (Issues 1-30)</a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #42 (2024-03-16)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-42-2024-03</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-42-2024-03</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 16 Mar 2024 08:28:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SwfA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-03-16-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://mp.weixin.qq.com/s/OU38bK4q-KNymXAtx8gZJA">Why Our Company Still Uses Python for Project Development?</a></p></li></ol><p>This article gave me a sense of "industry secrets you don't know." Small companies are still sticking with Python 2.7 + Django 1.8, and they are supporting hundreds of millions of dollars in transactions each year. The author also shared several projects, and my feeling is: Maybe you don't need to consider "which language is better" too much. Just choose the one you are familiar with and focus on business implementation.</p><ol start="2"><li><p><a href="https://mp.weixin.qq.com/s/9uIYtQEc-RuNhMY7Ck9IAA">Should Python Strings Use Single or Double Quotes?</a></p></li></ol><p>Python strings allow both single and double quotes, and even triple quotes. This flexibility is great, but it's also a source of conflict for standards pedants. This article shares an interesting story about it, recommended reading!</p><ol start="3"><li><p><a href="https://bjoernricks.github.io/posts/python/context-manager">Understanding Context Manager and Its Syntactic Sugar</a></p></li></ol><p>Why do we need context managers? What problems do they solve? The article also introduces the context manager protocol, the <code>with</code> syntax sugar, implementing context managers with <code>contextlib</code>, and four practical use cases.</p><ol start="4"><li><p><a href="https://mathspp.com/blog/python-deque-tutorial">Python deque tutorial</a></p></li></ol><p>A <code>deque</code> is a double-ended queue data structure in the <code>collections</code> module, similar to a <code>list</code> but optimized for fast addition and removal from either end. This tutorial covers its basic usage and some advanced use cases.</p><ol start="5"><li><p><a href="https://guicommits.com/python-generic-type-function-class/">Python Generic function and class types</a></p></li></ol><p>Python performs type checking at runtime and emphasizes the behavior of objects rather than their types, so it doesn't put much emphasis on "generics" that focus on type safety. However, Python does support generics, and this article introduces how to implement generic functions and generic classes using the <code>typing</code> module.</p><ol start="6"><li><p><a href="https://upsun.com/blog/python-gevent-best-practices/">Gevent in practice: Common pitfalls to keep in mind</a></p></li></ol><p>Gevent is a high-performance networking library built on top of greenlet, a lightweight coroutine implementation. This article introduces common pitfalls of Gevent and provides solutions.</p><ol start="7"><li><p><a href="https://lwn.net/SubscriberLink/964392/498a12fe44f51139/">Insecurity and Python pickles</a></p></li></ol><p><code>pickle</code> is Python's standard library for serialization, but it has a major security risk when deserializing! The article introduces how it works, the root of the security risk, and how the machine learning community collaborated to design a safer alternative format called <code>safetensors</code>.</p><ol start="8"><li><p><a href="https://github.com/j2qk3b/ebook-demo/blob/main/tutorial.md">Building An Open Source Decentralized E-Book Search Engine</a></p></li></ol><p>This tutorial uses JavaScript and Python to develop an e-book search engine that relies on Glitter (a decentralized database service built with Tendermint) and uses React to develop the page that displays the search results.</p><ol start="9"><li><p><a href="https://juejin.cn/post/7345423755948572726">What's the Difference Between Python import and Java import?</a></p></li></ol><p>Many programming languages have the <code>import</code> keyword, and their functions are similar, but what are the differences in their underlying mechanisms? This article analyzes the similarities and differences between import in Java and Python, which can deepen your understanding of this topic.</p><ol start="10"><li><p><a href="https://frostming.com/2024/pdm-lockfile/">PDM's Internal Implementation (1)</a></p></li></ol><p><code>pdm</code> is an excellent dependency management tool in Python, created by the Chinese developer @frostming. The author plans to write a series of articles about its internal implementation. This is the first article, which introduces what Lockfile is and how Lockfile is generated.</p><ol start="11"><li><p><a href="https://nedbatchelder.com/blog/202403/does_python_have_pointers.html">Does Python have pointers?</a></p></li></ol><p>Does Python have pointers? The answer depends on how you understand "pointers". The author gives a brief but insightful answer. Python does not have the classic pointer operations of the C language, but every variable in Python is a pointer, i.e., everything is an implicit pointer. (In addition: <a href="https://github.com/ZeroIntensity/pointers.py">A project</a> "brings the pointer hell to Python", which is as superfluous as the Python version with curly braces below.)</p><ol start="12"><li><p><a href="https://pythonspeed.com/articles/python-gil/">When Python can&#8217;t thread: a deep-dive into the GIL&#8217;s impact</a></p></li></ol><p>The GIL-less feature was finally <a href="https://github.com/python/cpython/pull/116338">merged into Python's main branch</a> this week! Here is a long article that provides an in-depth introduction to the GIL, helping to understand how the GIL works and predict where concurrency bottlenecks are located. The article uses many thread timing analysis graphs for easy understanding.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/flet-dev/flet">Flet enables developers to easily build realtime web, mobile and desktop apps in Python</a></p></li></ol><p>No front-end experience required, quickly build cross-platform, multi-user, real-time single-page applications (SPAs); no SDK needed, development can be done with an IDE or text editor, front-end uses Flutter UI, back-end currently supports Python, with plans to support Go and C#. (8.7K stars) (Contributed by @bear)</p><ol start="2"><li><p><a href="https://github.com/serious-scaffold/ss-python">ss-python: A Python project template covering the entire development lifecycle</a></p></li></ol><p>A Python project template with various integrations, configurations, and modules, featuring: project setup and template updates with <code>copier</code>, dependency and virtual environment management with <code>pdm</code>, containerization with dev container, mypy, ruff, and other commonly used tech stacks. (Contributed by @huxuan_org)</p><ol start="3"><li><p><a href="https://github.com/amol-/dukpy">dukpy: Simple JavaScript interpreter for Python</a></p></li></ol><p>A JS interpreter built on the <code>duktape</code> engine, used to execute JS code in Python. It has no other external dependencies, and has built-in common transpilers (TypeScript, JSX, LESS, CoffeeScript). It also supports passing parameters, running multiple scripts, global interpreters, loading modules using <code>require</code>, and installing packages from npmjs.org.</p><pre><code>  &gt;&gt;&gt; import dukpy
  &gt;&gt;&gt; dukpy.evaljs("var o = {'value': 5}; o['value'] += 3; o")
  {'value': 8}</code></pre><ol start="4"><li><p><a href="https://pykidos.github.io/">PyKidos: A Python Programming Practice Website</a></p></li></ol><p>An online Python programming website that makes it easy to teach kids how to code through games.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SwfA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SwfA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 424w, https://substackcdn.com/image/fetch/$s_!SwfA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 848w, https://substackcdn.com/image/fetch/$s_!SwfA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 1272w, https://substackcdn.com/image/fetch/$s_!SwfA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SwfA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/beb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SwfA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 424w, https://substackcdn.com/image/fetch/$s_!SwfA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 848w, https://substackcdn.com/image/fetch/$s_!SwfA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 1272w, https://substackcdn.com/image/fetch/$s_!SwfA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb8c87d-de29-4978-bf52-0b7f49c81d89_1827x894.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="5"><li><p><a href="https://github.com/hatchet-dev/hatchet">hatchet: A distributed, fault-tolerant task queue</a></p></li></ol><p>Replaces hard-to-manage traditional queues and pub/sub systems, supports fault recovery, and solves concurrency, fairness, and rate limiting issues. Features low latency and high throughput, supports strategies like FIFO, LIFO, round-robin, and priority queues, allows for customizable retry policies, and supports integrated error handling. (2.4K stars)</p><ol start="6"><li><p><a href="https://github.com/tiangolo/full-stack-fastapi-template">full-stack-fastapi-template: Full stack, modern web application template</a></p></li></ol><p>Supports JWT authentication, email-based password recovery, and uses Traefik as a reverse proxy/load balancer, with FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS, etc. (17.5K stars)</p><ol start="7"><li><p><a href="https://github.com/mathialo/bython">bython: Python with braces</a></p></li></ol><p>I think Python's use of whitespace for indentation is its most beautiful design feature! But some people prefer curly braces. This project adds curly braces to Python, with a basic example:</p><pre><code>  def print_message(num_of_times) {
   &nbsp;  for i in range(num_of_times) {
   &nbsp; &nbsp; &nbsp;  print("Bython is awesome!");
   &nbsp;  }
  }
  &#8203;
  if __name__ == "__main__" {
   &nbsp;  print_message(10);
  }</code></pre><ol start="8"><li><p><a href="https://github.com/twisted/treq">treq: Python requests-like API built on top of Twisted's HTTP client</a></p></li></ol><p>A simple, requests-like HTTP client built on top of Twisted.</p><ol start="9"><li><p><a href="https://github.com/Yuukiy/JavSP">JavSP: Video Metadata Scraper Aggregating Data from Multiple Sites</a></p></li></ol><p>Automatically fetches, aggregates, and categorizes video files based on specified rules, creating metadata files for use with software like Emby, Jellyfin, Kodi, etc. (1.6K stars)</p><ol start="10"><li><p><a href="https://github.com/omkarcloud/botasaurus">botasaurus: The All in One Framework to build Awesome Scrapers</a></p></li></ol><p>Access Cloudflare protected pages with simple HTTP requests, the only scraper framework with SSL support for authenticated proxies, integrate any Chrome extension with just one line of code, sitemap support, data cleaning support, caching support, provides Selenium shortcuts, and more.</p><ol start="11"><li><p><a href="https://github.com/r0x0r/pywebview">pywebview: Build GUI for your Python program with JavaScript, HTML, and CSS</a></p></li></ol><p>A lightweight cross-platform wrapper around the WebView component, displaying HTML content in a GUI window. Can be used with web frameworks or standalone to bridge Python with the DOM. The latest 5.0 release introduces Android support. (4.2K stars)</p><ol start="12"><li><p><a href="https://github.com/Mayuresh1611/Paper-Piano">Paper-Piano: Piano like no other, Piano on Paper</a></p></li></ol><p>Allows you to practice playing the piano directly on a sheet of paper! Currently supports up to two fingers, primarily intended for those who cannot afford a piano.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H1Is!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H1Is!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 424w, https://substackcdn.com/image/fetch/$s_!H1Is!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 848w, https://substackcdn.com/image/fetch/$s_!H1Is!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 1272w, https://substackcdn.com/image/fetch/$s_!H1Is!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H1Is!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png" width="881" height="644" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:644,&quot;width&quot;:881,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H1Is!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 424w, https://substackcdn.com/image/fetch/$s_!H1Is!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 848w, https://substackcdn.com/image/fetch/$s_!H1Is!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 1272w, https://substackcdn.com/image/fetch/$s_!H1Is!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4333bfb-c90b-46f9-bd06-b3aa4f4ccbcd_881x644.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #41 (2024-03-09)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-41-2024-03</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-41-2024-03</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 09 Mar 2024 12:46:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IH9S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-03-09-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://coderoasis.com/implementing-rsa-from-scratch-in-python/">Implementing RSA in Python from Scratch</a></p></li></ol><p>In a series of articles (4 in total), the author implements the RSA encryption algorithm in Python, covering the basic steps and mathematical principles of the algorithm, implementing it in Python and optimizing it step by step, implementing security attacks on it, and finally exploring future directions for RSA encryption.</p><ol start="2"><li><p><a href="https://norvig.com/python-iaq.html">Python IAQ: Infrequently Answered Questions</a></p></li></ol><p>A question is infrequently answered either because few people know the answer or because it involves an obscure or subtle point. This article lists many such questions and provides answers. Since it was written 20 years ago, some of the questions have been addressed in later versions of Python, while others remain as relevant as ever.</p><ol start="3"><li><p><a href="https://hynek.me/articles/why-i-like-nox/">Why I Like Nox</a></p></li></ol><p>Tox and Nox are two similar Python tools, one of their main purposes is to test your project against different Python versions. The author explains why he prefers to use Nox in some cases. (Note: I wrote a <a href="https://pythoncat.top/posts/2020-01-06-tox">tox tutorial</a> 4 years ago, and also translated the Nox documentation. Time flies...)</p><ol start="4"><li><p><a href="https://jamesg.blog/2024/01/16/trie/">My favorite data structure: The trie</a></p></li></ol><p>A trie (prefix tree or dictionary tree) is a tree-like data structure commonly used to store and retrieve information from a collection of strings. This article introduces the data structure and demonstrates basic operations using the <code>pygtrie</code> library.</p><ol start="5"><li><p><a href="https://datapythonista.me/blog/how-fast-can-we-process-a-csv-file">How fast can we process a CSV file</a></p></li></ol><p>What are the options for processing CSV files in Python? How do they compare in terms of execution speed, code readability, and hardware implications? The author benchmarks the performance of Pandas with different engines and compares implementations using Numpy/DuckDB/DataFusion/Polars.</p><ol start="6"><li><p><a href="https://medium.com/@sakhawy/multilingual-support-in-django-5706e1e144a8">Multilingual Support In Django</a></p></li></ol><p>How to add multilingual support to a Django project? How to detect the current language? How to translate message files, template files, and JS files? How is the translated content served to the frontend?</p><ol start="7"><li><p><a href="https://eng.lyft.com/python-upgrade-playbook-1479145d52f4">Python Upgrade Playbook. How Lyft upgrades Python at scale&#8212;1500+&#8230;</a></p></li></ol><p>Lyft upgraded 1500+ codebases across 150+ teams from Python 2 to Python 3.10, and summarized a version upgrade manual.</p><ol start="8"><li><p><a href="https://www.photondesigner.com/articles/tailwind-with-django">The simplest way to add Tailwind CSS to Django</a></p></li></ol><p>This tutorial provides step-by-step instructions, including a video, on how to integrate the popular Tailwind CSS framework into your Django project.</p><ol start="9"><li><p><a href="https://www.bitecode.dev/p/unexpected-python-traps-for-beginners">Unexpected Python Traps for Beginners</a></p></li></ol><p>This article lists several common Python "traps" that can easily trip up beginners. These include: sneaky string concatenation, functions returning None, invisible tuples, the dreaded <code>is</code>, and list multiplication.</p><ol start="10"><li><p><a href="https://calbryant.uk/blog/better-pc-cooling-with-python/#">Better PC Cooling with Python and Grafana</a></p></li></ol><p>An article about Python in the real world: the author uses Python to read CPU and water cooler temperatures, control fan and pump speeds, and monitor performance with Grafana, effectively improving PC cooling and reducing fan noise!</p><ol start="11"><li><p><a href="https://soulteary.com/2024/02/29/run-large-ai-models-on-android-phones-with-snapdragon-8-gen-3.html">Run Large AI Models on Android Phones with Snapdragon 8 Gen 3</a></p></li></ol><p>The article introduces a simple method to run large AI models on Android phones, allowing you to experience English language models (Llama2 7B, Mistral 7B, RedPajama 3B, Google Gemma 2B, Microsoft PHI 2B); Chinese language models (Mianbi MiniCPM, multimodal models); and Stable Diffusion.</p><ol start="12"><li><p><a href="https://www.piglei.com/articles/programming-is-still-hard-after-14-years/">14 Years in the Industry, and I Still Find Programming Difficult</a></p></li></ol><p>@piglei, the author of "Python Craftsman," shares his thoughts on programming. I read it last year and still find it insightful. The article compiles eight programming experiences, one of the core ideas being "writing good code," which echoes the original intention of the "Python Craftsman" series: writing elegant and efficient code like a craftsman creating a perfect handicraft.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/mikeckennedy/umami-python">umami-python: Umami Analytics Client for Python</a></p></li></ol><p>Many personal websites (including mine) have moved away from using Google Analytics for website traffic analysis in favor of the open-source umami. This project provides a client built on <code>httpx</code> and <code>pydantic</code> that allows you to authenticate, add custom data to umami, and view analytics data from umami.</p><ol start="2"><li><p><a href="https://github.com/dry-python/returns">returns: Make your functions return something meaningful, typed, and safe</a></p></li></ol><p>It brings functional programming to Python, providing primitives for writing declarative business logic, fully typed, supporting functions and coroutines, and is framework agnostic. (3.2k stars)</p><ol start="3"><li><p><a href="https://github.com/ivnvxd/pyquest">pyquest: Python everything Cheatsheet and a Journey to the land of Python programming</a></p></li></ol><p>This project collects a series of Python programming learning materials, covering all aspects of Python programming, for a systematic study of Python.</p><ol start="4"><li><p><a href="https://github.com/Chaoyingz/flect">flect: a Python framework for building full-stack web applications</a></p></li></ol><p>Build user interfaces quickly with interactive and beautiful UIs by building your UI with Pydantic models that correspond to your frontend React component props on the backend.</p><ol start="5"><li><p><a href="https://github.com/budtmo/docker-android">docker-android: Android in docker solution with noVNC supported and video recording</a></p></li></ol><p>A docker image for Android development and testing, with simulators for different devices, support for vnc to view inside the container, support for sharing logs via a web UI, ability to control from outside using adb, and support for various testing frameworks such as Appnium and Espresso. (7K stars)</p><ol start="6"><li><p><a href="https://github.com/anthropics/anthropic-sdk-python">anthropic-sdk-python</a></p></li></ol><p>Last week's Claude 3 was a hot topic, with performance benchmarks that comprehensively surpassed GPT-4! This project is an officially released Python SDK that supports asynchronous, streaming responses, streaming assistants, usage viewing, returns in Pydantic models, retries, and timeout handling.</p><ol start="7"><li><p><a href="https://github.com/TencentARC/PhotoMaker">PhotoMaker: PhotoMaker</a></p></li></ol><p>Quickly customize in seconds without additional LoRA training; ensure impressive ID fidelity, provide diversity, and generate high quality; can collaborate with other foundation models and LoRA modules as an adapter. (star 7.8K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IH9S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IH9S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 424w, https://substackcdn.com/image/fetch/$s_!IH9S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 848w, https://substackcdn.com/image/fetch/$s_!IH9S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 1272w, https://substackcdn.com/image/fetch/$s_!IH9S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IH9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png" width="1201" height="902" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:902,&quot;width&quot;:1201,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IH9S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 424w, https://substackcdn.com/image/fetch/$s_!IH9S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 848w, https://substackcdn.com/image/fetch/$s_!IH9S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 1272w, https://substackcdn.com/image/fetch/$s_!IH9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d039792-37cc-4b92-acbe-2fbe2b050853_1201x902.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="8"><li><p><a href="https://github.com/alexta69/metube">metube: Self-hosted YouTube downloader (web UI for youtube-dl / yt-dlp)</a></p></li></ol><p>A web GUI for youtube-dl (using a fork of yt-dlp) with playlist support. Download videos from YouTube and dozens of other sites. (3.1k stars)</p><ol start="9"><li><p><a href="https://github.com/tkem/cachetools">cachetools: Extensible memoizing collections and decorators</a></p></li></ol><p>Provides various in-memory collections and decorators, including a variant of the Python standard library's @lru_cache function decorator. (2K stars)</p><ol start="10"><li><p><a href="https://github.com/sivel/speedtest-cli">speedtest-cli: Command line interface for testing internet bandwidth using speedtest.net</a></p></li></ol><p>A network performance diagnostic tool that allows users to measure download and upload speeds and network latency to a specific server from a terminal or command-line environment. Cross-platform and easy to integrate into scripts for automated testing. (13.2K stars)</p><ol start="11"><li><p><a href="https://github.com/PKU-YuanGroup/Open-Sora-Plan">Open-Sora-Plan: This project aims to reproduce Sora (Open AI T2V model)</a></p></li></ol><p>Sora is a text-to-video model released by OpenAI, representing a significant leap forward in video generation technology. This project aims to reproduce Sora through the power of the open-source community, and has set up the infrastructure but has not yet trained the full model. (5.2K stars)</p><ol start="12"><li><p><a href="https://github.com/mini-sora/minisora">minisora: aims to explore the implementation path and future development direction of Sora</a></p></li></ol><p>Also aims to reproduce Sora, with a focus on being GPU-friendly and improving training and inference efficiency. Regularly holds roundtable discussions and paper reading sessions to delve deeper into the current state of video generation technology.</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly 40 (2024-03-02)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-40-2024-03</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-40-2024-03</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 02 Mar 2024 14:27:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wXET!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-03-02-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://pyfound.blogspot.com/2024/02/white-house-recommends-.html">The White House recommends the use of memory-safe languages such as Python</a></p></li></ol><p>A report released last year by agencies including CISA and NSA listed C#, Go, Java, <strong>Python</strong>, Rust, and Swift as memory-safe languages. This PSF article discusses Python's work on memory safety, including sandboxing the underlying code, migrating from C to Rust, and using compiler options to harden the C code builds.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k6YN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k6YN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 424w, https://substackcdn.com/image/fetch/$s_!k6YN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 848w, https://substackcdn.com/image/fetch/$s_!k6YN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 1272w, https://substackcdn.com/image/fetch/$s_!k6YN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k6YN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png" width="1456" height="220" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:220,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k6YN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 424w, https://substackcdn.com/image/fetch/$s_!k6YN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 848w, https://substackcdn.com/image/fetch/$s_!k6YN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 1272w, https://substackcdn.com/image/fetch/$s_!k6YN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f13b5a-2561-4101-b53f-179e2a37a37c_1550x234.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><ol start="2"><li><p><a href="https://blog.ian.stapletoncordas.co/2024/02/a-retrospective-on-requests">A Retrospective on Requests</a></p></li></ol><p>The author of the article is one of the core maintainers of Requests. He listed several places where the library did poorly and also pointed out many reasons why he wanted to improve it but didn't. The epilogue says: "the project feels dead". It's heartbreaking. This weekly <a href="https://pythoncat.top/posts/2023-11-11-weekly">issue 26</a> shared an apology from KR, the author of the library. However, there was little response in the community. Later, I saw that KR lost his job, and I felt even worse from the tweet that he was in a bad mental state. (Contributed by @frostming90)</p><ol start="3"><li><p><a href="https://micro.webology.dev/2024/02/29/pythons-uv-tool.html">Python's UV Tool Is Actually Pretty Good</a></p></li></ol><p>Last issue, we shared the <code>uv</code> library, which can replace <code>pip</code>. Have you used it? How do you feel about it? The author of the article gave positive feedback and shared some before-and-after comparisons of his configuration files.</p><ol start="4"><li><p><a href="https://www.slashtmp.io/posts/generators/">Python Generators Are Underutilized</a></p></li></ol><p>Python generators are useful for saving memory. This article uses clear examples to compare the memory usage of two different approaches, allowing us to appreciate the benefits of generators. Additionally, the article highlights some usage pitfalls to avoid.</p><ol start="5"><li><p><a href="https://jacobpadilla.com/articles/advanced-web-scraping-techniques">Advanced Web Scraping With Python: Extract Data From Any Site</a></p></li></ol><p>This article discusses some advanced techniques for scraping the web, including topics such as how to better handle cookies and custom request headers, what TLS fingerprinting is and how to avoid it, common HTTP request headers to be aware of, how to integrate exponential backoff retries when making HTTP requests, and more.</p><ol start="6"><li><p><a href="https://testdriven.io/blog/drf-vue-vs-django-htmx/">Django REST Framework and Vue versus Django and HTMX</a></p></li></ol><p>How are two combinations of web development frameworks used, and what are their advantages and disadvantages? This article implements the same functionality with these two combinations, analyzes the differences between the two technology stacks, and provides a comparison checklist to help us make better technology choices.</p><ol start="7"><li><p><a href="https://wesmckinney.com/blog/looking-back-15-years/">The Road to Composable Data Systems: Thoughts on the Last 15 Years and the Future</a></p></li></ol><p>This article is written by Wes McKinney, the author of the <code>pandas</code> library and the book <em>Python for Data Analysis</em>. He reviews what he has done and the changes he has made in the field of data science since 2008, and analyzes and thinks about the future trends of modularity, interoperability, and composability.</p><ol start="8"><li><p><a href="https://blog.pecar.me/django-sqlite-benchmark">Django SQLite Benchmark</a></p></li></ol><p>The author benchmarked SQLite with different major configurations and also compared the performance between SQLite and PostgreSQL. In short, enabling WAL mode, using IMMEDIATE transactions, <code>synchronous=NORMAL</code>, and memory-mapped I/O have little impact on the throughput.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wXET!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wXET!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 424w, https://substackcdn.com/image/fetch/$s_!wXET!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 848w, https://substackcdn.com/image/fetch/$s_!wXET!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 1272w, https://substackcdn.com/image/fetch/$s_!wXET!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wXET!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png" width="1456" height="882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wXET!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 424w, https://substackcdn.com/image/fetch/$s_!wXET!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 848w, https://substackcdn.com/image/fetch/$s_!wXET!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 1272w, https://substackcdn.com/image/fetch/$s_!wXET!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c040c25-d250-4b9f-a6fd-9fea97af39c6_1509x914.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="9"><li><p><a href="https://zhuanlan.zhihu.com/p/682997904">How Python 3.13's JIT Is Implemented</a></p></li></ol><p>The article introduces how Python's latest JIT is implemented, and the author tried to install the development version and then compared its performance with the version without JIT. Currently, the performance of the JIT version is slower than the normal version, and the official team still needs to continue to optimize it.</p><ol start="10"><li><p><a href="https://proxiesapi.com/articles/web-scraping-in-python-the-complete-guide">Web Scraping in Python - The Complete Guide</a></p></li></ol><p>A detailed tutorial on web scraping, introducing how to use libraries like BeautifulSoup, Scrapy, and Selenium to achieve web scraping, and how to overcome challenges like complex web pages, rate limiting, anti-scraping, and dynamic JavaScript.</p><ol start="11"><li><p><a href="https://danluu.com/simple-architectures/">In Defense of Simple Architectures</a></p></li></ol><p>Wave is a company with only 70 engineers but valued at $1.7 billion. Its product is just a standard CRUD application, built on a Python monolith architecture on top of Postgres. The article explains why they chose such an architecture, the rationality of such a choice, and the related challenges they overcame and the technical solutions they adopted in order to maintain it.</p><ol start="12"><li><p><a href="https://tontinton.com/posts/scheduling-internals/">Scheduling Internals</a></p></li></ol><p>A very in-depth and long article that delves into "concurrency", explaining how a single-threaded server can handle millions of tasks through asynchronous IO and event-driven programming. It discusses various approaches and tools for implementing concurrency, and the implementations in different programming languages. The article contains many animations to help readers understand.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/bruin-data/ingestr">ingestr: a CLI tool to copy data between any databases with a single command seamlessly</a></p></li></ol><p>This is a CLI tool to seamlessly copy data between any databases with a single command. It supports incremental loading: <code>append</code>, <code>merge</code>, and <code>delete+insert</code> modes. (1.3K stars)</p><ol start="2"><li><p><a href="https://github.com/epogrebnyak/justpath">justpath: Inspect and refine PATH environment variable on both Windows and Linux</a></p></li></ol><p>A command-line tool for managing the PATH environment variable on your operating system, with typical features including: filtering directories, identifying and cleaning up invalid configurations, dumping PATH to JSON, creating new environment variables, and counting the number of.</p><ol start="3"><li><p><a href="https://github.com/piercefreeman/mountaineer">mountaineer: Mountaineer is a batteries-included web framework for Python and React</a></p></li></ol><p>A full-stack web development framework featuring full-stack type checking, friendly service communication and data binding, server-side rendering, enhanced validation with static analysis for the web, and more.</p><ol start="4"><li><p><a href="https://github.com/wangyuxinwhy/generate">generate: One API to Access World-Class Generative Models</a></p></li></ol><p>Use a unified API to access large models, featuring: unified API, multi-modal support, support for 10+ large model platforms, asynchronous &amp; streaming and concurrency, self-contained, lightweight, high-quality code. (Submitted by @wangyuxinwhy)</p><ol start="5"><li><p><a href="https://github.com/ashvardanian/StringZilla">StringZilla: Up to 10x faster strings for C, C++, Python, Rust, and Swift</a></p></li></ol><p>"The world wastes at least $100 million per year on inefficient string operations." This project replaces the native string type in programming languages to improve performance. It speeds up exact and fuzzy string matching, edit distance calculations, sorting, lazy evaluation of ranges to avoid memory allocations, and even a random string generator. (1.4k stars)</p><ol start="6"><li><p><a href="https://github.com/g1879/DrissionPage">DrissionPage: Web automation tool that can control browsers and send and receive data packets</a></p></li></ol><p>It uses a completely self-developed kernel and has the following advantages over Selenium: no webdriver features, cross-iframe element search, treats iframes as ordinary elements, can operate multiple tabs at the same time, can directly read browser cache to save pictures, can take screenshots of the entire web page, etc. (star 4.1K)</p><ol start="7"><li><p>Daft: Distributed DataFrame for Python designed for the cloud, powered by Rust <a href="https://github.com/Eventual-Inc/Daft">https://github.com/Eventual-Inc/Daft</a></p></li></ol><p>A distributed query engine for large-scale data processing built with Rust, featuring a familiar interactive API, focus on query optimization, integrated data catalog, rich polymorphic type system, and built for the cloud. (1.4k stars)</p><ol start="8"><li><p><a href="https://github.com/google/magika">magika: Detect file content types with deep learning</a></p></li></ol><p>Google's latest open-source project uses AI to detect file types with 99% accuracy. Available as a Python command-line tool and API, it supports over 100 file types with an inference time of around 5 milliseconds per file. (7k stars)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Fby!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Fby!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 424w, https://substackcdn.com/image/fetch/$s_!5Fby!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 848w, https://substackcdn.com/image/fetch/$s_!5Fby!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 1272w, https://substackcdn.com/image/fetch/$s_!5Fby!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Fby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png" width="1456" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5Fby!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 424w, https://substackcdn.com/image/fetch/$s_!5Fby!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 848w, https://substackcdn.com/image/fetch/$s_!5Fby!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 1272w, https://substackcdn.com/image/fetch/$s_!5Fby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21594500-8678-42bd-94c2-6f14143b9a81_1600x989.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="9"><li><p>frappe: Low code web framework for real world applications, in Python and Javascript (<a href="https://github.com/frappe/frappe">https://github.com/frappe/frappe</a>)</p></li></ol><p>A full-stack web framework with batteries included, low code, server-side with Python and MariaDB, featuring: metadata first, admin interface, roles and permissions out of the box, plugins support, task scheduler, email management, multi-tenancy, and more. (6.3k stars)</p><ol start="10"><li><p><a href="https://github.com/hiroi-sora/Umi-OCR">Umi-OCR: Open source, free offline OCR software, supports screenshot/batch import of images</a></p></li></ol><p>Unzip and use, run offline, no network required; comes with a high-efficiency offline OCR engine, built-in multilingual recognition library; supports multiple invocation methods such as command line, HTTP interface; screenshot OCR / batch OCR / PDF recognition / QR code. (19.4k stars)</p><ol start="11"><li><p><a href="https://github.com/xonsh/xonsh">xonsh: Python-powered, cross-platform, Unix-gazing shell</a></p></li></ol><p>This project is a superset of Python 3.6+ with shell primitives. It can be used as a shell and Python separately, or you can write shell in Python and Python in shell. (7.8k stars)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GSb6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GSb6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 424w, https://substackcdn.com/image/fetch/$s_!GSb6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 848w, https://substackcdn.com/image/fetch/$s_!GSb6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 1272w, https://substackcdn.com/image/fetch/$s_!GSb6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GSb6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png" width="1280" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GSb6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 424w, https://substackcdn.com/image/fetch/$s_!GSb6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 848w, https://substackcdn.com/image/fetch/$s_!GSb6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 1272w, https://substackcdn.com/image/fetch/$s_!GSb6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17ed3cf8-cd9b-4c39-b87d-700afae11f60_1280x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #39 (2024-02-24)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-39-2024-02</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-39-2024-02</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 24 Feb 2024 12:52:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-02-24-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://astral.sh/blog/uv">uv: Python packaging in Rust</a></p></li></ol><p><code>Ruff</code> team developed a powerful tool in Rust: <code>uv</code>, a package resolver and installer for Python! It's designed as a drop-in replacement for <code>pip</code> and <code>pip-tools</code>, and it's 8-10x faster than them when not using a cache. It can also be used as a virtual environment manager via <code>uv venv</code>, which is 80x faster than <code>python -m venv</code> and 7x faster than <code>virtualenv</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vYOj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vYOj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 424w, https://substackcdn.com/image/fetch/$s_!vYOj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 848w, https://substackcdn.com/image/fetch/$s_!vYOj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 1272w, https://substackcdn.com/image/fetch/$s_!vYOj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vYOj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png" width="1456" height="291" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:291,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vYOj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 424w, https://substackcdn.com/image/fetch/$s_!vYOj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 848w, https://substackcdn.com/image/fetch/$s_!vYOj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 1272w, https://substackcdn.com/image/fetch/$s_!vYOj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae4d298a-fa3b-441f-a9ce-2a319bd313ff_1704x341.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><ol start="2"><li><p><a href="https://lucumr.pocoo.org/2024/2/4/rye-a-vision/">Rye: A Vision Continued</a></p></li></ol><p>Rye is a Python packaging and project management tool released by the author of Flask in April last year. In the article, the author summarized its implemented functions (downloading Python, managing virtual environments, building and releasing packages, linting and formatting, dependency management, etc.), and introduced his design ideas. (Appendix 1: The author's 16-minute tutorial video <a href="https://www.youtube.com/watch?v=q99TYA7LnuA">Rye: a Hassle-Free Python Experience</a>) (Appendix 2: The uv team that shared last time has taken over Rye, and it will be integrated into one in the future. <a href="https://lucumr.pocoo.org/2024/2/15/rye-grows-with-uv/">Rye Grows With UV</a>)</p><ol start="3"><li><p><a href="https://baincapitalventures.com/insight/why-more-python-developers-are-using-rust-for-building-libraries/">The Python Rust-aissance</a></p></li></ol><p>Rust is progressively replacing C as the high-performance backend for Python. The article introduces the advantages of Rust over C and presents some well-known Python libraries developed with Rust.</p><ol start="4"><li><p><a href="https://www.alexmolas.com/2024/02/05/a-search-engine-in-80-lines.html">A search engine in 80 lines of Python</a></p></li></ol><p>This article is a bit clickbaity, but the content it introduces is very comprehensive: asynchronous crawlers based on RSS, inverted indexes, search rankings, and web pages based on FastAPI. You can learn how search engines work and learn the project development process from data acquisition, data parsing, open interfaces, to web page presentation.</p><ol start="5"><li><p><a href="https://blog.mattstuchlik.com/2024/02/08/counting-cpu-instructions-in-python.html">Counting CPU Instructions in Python</a></p></li></ol><p>Do you know how many CPU instructions it takes to execute <code>print("Hello")</code> in Python? The answer is 17,000. Importing <code>seaborn</code> takes about 2 billion. The author developed the <a href="https://github.com/s7nfo/Cirron">Cirron</a> library to count CPU instructions, branch misses, and time spent in code.</p><ol start="6"><li><p><a href="https://www.kawabangga.com/posts/5757">Python Reusable Decorator Code</a></p></li></ol><p>You have multiple decorators to add to different functions, and the same decorator may have different parameters. How do you reuse these decorators? The problem may be difficult to understand at first glance, but the article contains intuitive examples and solutions that can deepen your understanding of decorators and help you master advanced applications.</p><ol start="7"><li><p><a href="https://jacobpadilla.com/articles/handling-asyncio-tasks">Handling Tasks in Asyncio Like a Pro</a></p></li></ol><p>What is a Task object in Asyncio? How do Asyncio coroutines work? How do you await a task, and how do you await multiple or a group of tasks? This article explains how Asyncio works and the functions you can use to work with tasks.</p><ol start="8"><li><p><a href="https://martinheinz.dev/blog/108">Everything You Can Do with Python's textwrap Module</a></p></li></ol><p>This article introduces several major functions of the <code>textwrap</code> library, such as <code>shorten()</code> for truncating string length, <code>wrap()</code> for wrapping a string to a fixed width, and <code>dedent()</code> for handling string indentation.</p><ol start="9"><li><p><a href="https://www.nicholashairs.com/posts/major-changes-between-python-versions/">Summary of Major Changes Between Python Versions</a></p></li></ol><p>When were some of Python's new features introduced? The author has conveniently compiled a record of some important changes to the syntax and standard library, as well as indicating when each version will reach its end of life (for example, Python 3.8 will reach EOL in October of this year). (Note: This <a href="https://endoflife.date/python">website</a> provides EOL dates for Python and many other projects.)</p><ol start="10"><li><p><a href="https://leontrolski.github.io/postgres-as-queue.html">Postgres as a Queue</a></p></li></ol><p>If you use a database directly as a queue, will performance be significantly affected? The author's tests show that the impact is minimal. How exactly can you implement Postgres as a queue? How do you handle locks and transactions, task retries, and task timeouts?</p><ol start="11"><li><p><a href="https://learndjango.com/tutorials/20-django-packages-i-use-every-project">20 Django Packages That I Use in Every Project</a></p></li></ol><p>The Django framework is suitable for building complex web projects, and the author introduces 20 commonly used packages that provide richer functionality beyond Django's core features.</p><ol start="12"><li><p><a href="https://dev.to/anbagu/real-case-of-python-metaclass-application-2pj8">Real Case of Python Metaclass Application</a></p></li></ol><p>What is a metaclass in Python? Why should you learn about metaclasses? This advanced feature is not commonly used, but it's worth learning and understanding. The article explains how metaclasses work and demonstrates their powerful uses with real-world examples.</p><ol start="13"><li><p><a href="https://blog.coiled.io/blog/1trc.html">One Trillion Row Challenge</a></p></li></ol><p>A programming challenge: given 100,000 files, each with 10 million rows, calculate the minimum, average, and maximum temperatures for each weather station. The data is stored on S3 and has a total size of 2.5 TB. The author provides their own implementation (which runs in 8.5 minutes), as well as a cost-optimized solution.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/astral-sh/uv">uv: An extremely fast Python package installer and resolver, written in Rust</a></p></li></ol><p>uv is an extremely fast Python package installer and resolver written in Rust. It is a product of the Ruff team and can directly replace commonly used commands such as <code>pip</code>, <code>pip-tools</code>, and <code>virtualenv</code>. (6.6K stars)</p><ol start="2"><li><p><a href="https://github.com/coleifer/sqlite-web">sqlite-web: Web-based SQLite database browser written in Python</a></p></li></ol><p>A web-based SQLite database browser built with Flask, which allows you to visually manage your databases, tables, records, and indexes, and import and export data in JSON and CSV formats. (2.6k stars)</p><ol start="3"><li><p><a href="https://github.com/danihodovic/celery-exporter">celery-exporter: A Prometheus exporter for Celery metrics</a></p></li></ol><p>Real-time monitoring metrics for Celery task state, worker threads, active tasks, etc. It follows Prometheus exporter best practices and provides Grafana dashboards and Prometheus alerts using Celery-mixin.</p><ol start="4"><li><p><a href="https://github.com/asottile/pyupgrade">pyupgrade: A tool (and pre-commit hook) to automatically upgrade syntax for newer versions of the language</a></p></li></ol><p>A powerful tool and pre-commit hook to automatically remove redundant constructs, rewrite legacy code with modern syntax, refactor code to a more idiomatic style, and more. The project documentation provides many examples, which are worth checking out. (3.2k stars)</p><pre><code>  # Two examples rewritten as dict comprehensions
  -dict((a, b) for a, b in y)
  +{a: b for a, b in y}
  -dict([(a, b) for a, b in y])
  +{a: b for a, b in y}</code></pre><ol start="5"><li><p><a href="https://github.com/ollama/ollama-python">ollama-python: Ollama Python library</a></p></li></ol><p>Supports Python 3.8+, easy and fast integration with large language models such as Llama 2, Code Llama, mistral, gemma, etc. It allows for custom clients and also enables the creation of asynchronous clients.</p><ol start="6"><li><p><a href="https://github.com/dvcoolarun/web2pdf">web2pdf: CLI to convert Webpages to PDFs</a></p></li></ol><p>A command-line tool to convert webpages to beautifully formatted PDFs. It supports batch conversion, custom styling, appending CSS, complex layouts, page numbers, table of contents, and pagination, among other features.</p><ol start="7"><li><p><a href="https://github.com/cfahlgren1/natural-sql">natural-sql: A series of top performing Text to SQL LLMs</a></p></li></ol><p>NaturalSQL-7B is a highly accurate text-to-SQL large language model that outperforms GPT-3.5-turbo and claude-2 on the SQL-Eval benchmark, as well as sqlcoder-7b with the same data size.</p><ol start="8"><li><p><a href="https://github.com/AbanteAI/rawdog">rawdog: Generate and auto-execute Python scripts in the cli</a></p></li></ol><p>Rawdog (Recursive Augmentation with Deterministic Output Generation) is a novel alternative to RAG (Retrieval Augmented Generation) that can run scripts itself and take the output as context, then call itself again. The example in the demo video is mind-blowing. (star 1.6K)</p><ol start="9"><li><p><a href="https://github.com/microsoft/UFO">UFO: A UI-Focused Agent for Windows OS Interaction</a></p></li></ol><p>Microsoft's new AI agent framework seamlessly operates across multiple applications to complete complex user tasks. It leverages GPT-Vision's multimodal capabilities to understand application UIs and interacts using Windows UI Automation controls. (1.9k stars)</p><ol start="10"><li><p><a href="https://github.com/Textualize/toolong">toolong: A terminal application to view, tail, merge, and search log files (plus JSONL)</a></p></li></ol><p>Quickly view log files in a command-line terminal with features like live tailing, syntax highlighting, fast searching, automatic timestamp detection for merging logs, JSONL support, and automatic opening of .bz and .bz2 files. (2k stars)</p><ol start="11"><li><p><a href="https://github.com/OwlAIProject/Owl">A personal wearable AI that runs locally</a></p></li></ol><p>Bring AI to your wearable device to listen and observe your life. It supports hardware like ESP platforms, Sony Spresense, or Apple Watch, local and online models, multimodal capture, speaker verification, and more.</p><ol start="12"><li><p><a href="https://github.com/hyperdiv/hyperdiv">hyperdiv: Build reactive web UIs in Python</a></p></li></ol><p>A framework for rapidly developing reactive UI applications in Python, featuring built-in components, a concise declarative syntax, and minimal tooling boilerplate. It supports Shoelace components, Markdown support, Chart.js integration, browser cache read/write, form validation, and more.</p><ol start="13"><li><p><a href="https://github.com/danielmiessler/fabric">fabric: an open-source framework for augmenting humans using AI</a></p></li></ol><p>This project aims to make AI accessible to everyone for solving everyday problems. Its approach is to break down problems into independent components and use structured, clear prompts to have AI complete tasks. (5.6k stars)</p><h2><strong>&#128034;Podcasts &amp; Videos</strong></h2><ol><li><p><a href="https://engineering.fb.com/2024/02/12/developer-tools/meta-loves-python/">Meta loves Python</a></p></li></ol><p>A podcast episode from Meta, discussing the contributions of their developer teams to recent versions of Python, including new hooks that allow for custom JITs (like Cinder), immortal objects, improvements to the type system, faster comprehensions, and more. Meta really is a big contributor to the Python community! (See also: <a href="https://pythoncat.top/posts/2022-11-21-sponsors">Google, Microsoft, Meta? Who's the biggest sponsor of Python?</a>)</p><ol start="2"><li><p><a href="https://talkpython.fm/episodes/show/449/building-uis-in-python-with-fastui">Episode #449 Building UIs in Python with FastUI</a></p></li></ol><p>FastUI is a web frontend framework that lets you build responsive web applications using React without writing any JavaScript or dealing with npm. The creator of the framework joins the show to talk about it.</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #38 (2024-02-03)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-38-2024-02</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-38-2024-02</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 03 Feb 2024 04:23:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0NIH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-02-03-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://dev.to/koladev/building-a-fullstack-application-with-django-django-rest-nextjs-3e26">Building a FullStack Application with Django, Django REST &amp; Next.js</a></p></li></ol><p>Django and Next.js are very powerful web frameworks for backend and frontend development. This tutorial builds a restaurant menu management project using Django 4.2 and Next.js 13.</p><ol start="2"><li><p><a href="https://dev.to/andrewbaisden/a-day-in-the-life-of-a-developer-building-a-dashboard-app-with-sql-nodejs-django-and-nextjs-5en7">A day in the life of a developer - Building a dashboard app with SQL, Node.js, Django and Next.js</a></p></li></ol><p>This tutorial for a full-stack project is more comprehensive than the previous one. In addition to implementing CRUD operations, it also covers dashboards, form filtering, Tailwind CSS, working with different databases, and building the backend with Node.js and Django, respectively.</p><ol start="3"><li><p><a href="https://pythonspeed.com/articles/numba-profiling/">Profiling your Numba code</a></p></li></ol><p>Numba is a popular solution to speed up Python code. The author open-sourced a library called <a href="https://github.com/pythonspeed/profila">Profila</a> that is specifically designed to analyze the performance of Numba code itself. The article introduces how to use it and also discusses three limitations of performance analysis.</p><ol start="4"><li><p><a href="https://dev.arie.bovenberg.net/blog/python-datetime-pitfalls/">Ten Python datetime pitfalls, and what libraries are (not) doing about it</a></p></li></ol><p>The author analyzes 10 pitfalls of the <code>datetime</code> module and introduces the situation of mainstream third-party libraries (such as <code>arrow</code>, <code>pendulum</code>, <code>DateType</code>, <code>heliclockter</code>), and finds that most of them have the same problems. What is a better date and time library? The author open-sourced a library that attempts to solve the problems in the article.</p><ol start="5"><li><p><a href="https://www.listendata.com/2024/01/4-ways-to-correct-grammar-with-python.html">4 Ways to Correct Grammar with Python</a></p></li></ol><p>Here, "grammar" refers to writing grammar, not programming grammar. The article introduces four libraries, <code>language-tool-python</code>, <code>Gramformer</code>, <code>Ginger</code>, and <code>pyaspeller</code>, for checking and automatically correcting grammatical errors.</p><ol start="6"><li><p><a href="https://www.syntaxerror.tech/syntax-error-11-debugging-python/">Syntax Error #11: Debugging Python</a></p></li></ol><p>This is the transcript of a talk the author gave at PyCon Sweden 2023, sharing his debugging mindset, tools, and techniques, including tools like <code>snoop</code>, <code>pdb/ipdb</code>, <code>PuDB</code>, <code>web-pdb</code>, <code>birdseye</code>, <code>Kolo</code>, and more.</p><ol start="7"><li><p><a href="https://developer.nvidia.com/blog/debugging-mixed-python-and-c-language-stack/">Debugging a Mixed Python and C Language Stack</a></p></li></ol><p>Debugging is hard, and debugging across multiple languages is even harder. This article introduces how to debug a mixed language issue, using GDB to debug Python+C, locating and fixing a deadlock issue, and sharing some debugging experiences.</p><ol start="8"><li><p><a href="https://www.bitecode.dev/p/analyzing-sorting-a-million-32-bit">Analyzing "Sorting a million 32-bit integers in 2MB of RAM using Python"</a></p></li></ol><p>This article is an analysis and interpretation of Guido's 2008 article <a href="http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html">Sorting a million 32-bit integers in 2MB of RAM using Python</a>. The solution uses the less common modules <code>struct</code>, <code>array</code>, and <code>heapq</code>, as well as techniques such as context managers and generators.</p><ol start="9"><li><p><a href="https://tomassetti.me/implement-parsers-with-pylasu/">Implement Parsers with Pylasu</a></p></li></ol><p>This tutorial shows how to define an AST with Pylasu, generate a parser using ANTLR, implement a transformation from the ANTLR parse tree to the Pylasu AST, and finally build a toy programming language parser with a CLI.</p><ol start="10"><li><p><a href="https://qsantos.fr/2024/01/04/dynamic-programming-is-not-black-magic/">Dynamic Programming is not Black Magic</a></p></li></ol><p>What is dynamic programming? What are its features and advantages compared to other approaches? This article starts with a common programming problem and gradually introduces caching, optimizing the cache, and dynamic programming, unveiling the mystery of dynamic programming.</p><ol start="11"><li><p><a href="https://typing.readthedocs.io/en/latest/source/typing_anti_pitch.html">Reasons to avoid static type checking</a></p></li></ol><p>Python supports type hints, but it's not mandatory. In fact, there are many cases where it's not recommended to use type hints. This document from the typing module lists some reasons why you might want to avoid using type hints.</p><ol start="12"><li><p><a href="https://christophergs.com/blog/running-open-source-llms-in-python">Running Open Source LLMs In Python - A Practical Guide</a></p></li></ol><p>How to run large language models on your personal laptop? This tutorial provides a complete walkthrough of running llama.cpp on different operating systems, including selecting and downloading the model, setting prompts, formatting LLM outputs using GBNF grammars, streaming responses, multimodal models, and more.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/InkboxSoftware/excelCPU">excelCPU: 16-bit CPU for Excel, and related files</a></p></li></ol><p>This popular project has nearly 3K stars in just one week! The <code>CPU.xlsx</code> file provides a 16-bit CPU, 16 general-purpose registers, 128KB of RAM, and a 128x128 display area. It is compiled using Python. (3K stars)</p><ol start="2"><li><p><a href="https://github.com/ariebovenberg/whenever">whenever: Foolproof datetimes for maintainable Python code</a></p></li></ol><p>This datetime library addresses some of the problems that the standard library and other third-party libraries don't solve very well, as mentioned earlier.</p><ol start="3"><li><p><a href="https://github.com/deepsSeek-ai/deepsSeek-coder/">deepSeek-Coder: Let the Code Write Itself</a></p></li></ol><p>It consists of a series of code language models, each of which is a 2T token-trained model with multiple model sizes, advanced code-completion ability, and excellent performance in various benchmarks. (4.3k stars)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0NIH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0NIH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 424w, https://substackcdn.com/image/fetch/$s_!0NIH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 848w, https://substackcdn.com/image/fetch/$s_!0NIH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 1272w, https://substackcdn.com/image/fetch/$s_!0NIH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0NIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png" width="1456" height="1615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1615,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0NIH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 424w, https://substackcdn.com/image/fetch/$s_!0NIH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 848w, https://substackcdn.com/image/fetch/$s_!0NIH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 1272w, https://substackcdn.com/image/fetch/$s_!0NIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88d26a78-4ed3-48a7-97ac-e1530348ed68_1758x1950.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="4"><li><p><a href="https://github.com/igorbenav/fastcrud">fastcrud: FastCRUD is a Python package for FastAPI, offering robust async CRUD operations and flexible endpoint creation utilities</a></p></li></ol><p>Features: Fully async, SQLAlchemy 2.0, Powerful CRUD, Dynamic construction of complex queries, Advanced SQL joins, Offset or cursor-based pagination, Modular and extensible, Autogenerated API.</p><ol start="5"><li><p><a href="https://github.com/leptonai/leptonai">leptonai: A Pythonic framework to simplify AI service building</a></p></li></ol><p>This framework enables you to effortlessly build AI services with Python code. Its key features include: well-designed abstractions, model startup with just a few lines of code, built-in examples for common models (e.g., Llama, SDXL, Whisper), automatic batch processing, background tasks, and more. (1.9k stars)</p><ol start="6"><li><p><a href="https://github.com/assafelovic/gpt-newspaper">GPT Newspaper: Create Personalized Newspapers with GPT</a></p></li></ol><p>Let AI curate, write, design, and edit content based on your personal taste and interests, powered by 6 specialized agents that search the web for the latest content and aggregate well-known news sources.</p><ol start="7"><li><p><a href="https://github.com/caronc/apprise">apprise: Push Notifications that work with just about every platform!</a></p></li></ol><p>A lightweight notification library written in pure Python that allows you to send notifications via a plethora of services like Telegram, Discord, Slack, Amazon SNS, Gotify, and many more, supporting various notification formats such as SMS, email, and desktop notifications. (9.7K stars)</p><ol start="8"><li><p><a href="https://github.com/procrastinate-org/procrastinate">procrastinate: PostgreSQL-based Task Queue for Python</a></p></li></ol><p>A distributed task processing library based on PostgreSQL, providing Django integration and easy to use with ASGI frameworks. It supports features like async, periodic tasks, retries, arbitrary task locks, etc.</p><ol start="9"><li><p><a href="https://github.com/tohojo/flent">flent: The FLExible Network Tester</a></p></li></ol><p>It can run multiple instances of netperf/iperf/ping simultaneously and aggregate the results, presenting the data through an interactive GUI and an extensible plotting facility. It supports local and remote hosts and can collect statistics about CPU usage, WiFi, qdisc, and TCP sockets, among other things.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yndS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yndS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 424w, https://substackcdn.com/image/fetch/$s_!yndS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 848w, https://substackcdn.com/image/fetch/$s_!yndS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 1272w, https://substackcdn.com/image/fetch/$s_!yndS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yndS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png" width="1367" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1367,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yndS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 424w, https://substackcdn.com/image/fetch/$s_!yndS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 848w, https://substackcdn.com/image/fetch/$s_!yndS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 1272w, https://substackcdn.com/image/fetch/$s_!yndS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86be47e7-43a4-42cb-86bc-f59fe3ca9726_1367x974.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="10"><li><p><a href="https://github.com/urllib3/urllib3/releases/tag/2.2.0">urllib3: New Version Supports Making HTTP Requests in the Browser</a></p></li></ol><p>urllib3 has released version 2.2.0, which brings support for use in the Pyodide runtime! The latter is a Python interpreter that runs in the browser and is the technical foundation for frameworks like PyScript and Jupyterlite. This has major implications for Python frontend development, and the future looks bright.</p><ol start="11"><li><p><a href="https://github.com/dkogan/gnuplotlib">gnuplotlib: gnuplot for numpy</a></p></li></ol><p>Gnuplot is a powerful, open-source plotting tool for generating various types of 2D and 3D plots. This project integrates it with Numpy, leveraging its data handling and plotting capabilities.</p><ol start="12"><li><p><a href="https://github.com/wxywb/history_rag">history_rag: Build a Chinese History Q&amp;A App with RAG</a></p></li></ol><p>RAG (Retrieval-Augmented Generation) + vector database to build a Chinese history knowledge Q&amp;A application, supporting both "Milvus Scheme" (on-premises) and "Zilliz Cloud Pipelines Scheme" (on cloud), providing a web UI interface based on gradio. The default model is GPT4, and other LLMs can be easily switched.</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #37 (2024-01-27)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-37-2024-01</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-37-2024-01</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 27 Jan 2024 08:12:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t01W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-01-27-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://www.bitecode.dev/p/xmas-decorations-part-3">Xmas decorations, part 3</a></p></li></ol><p>This is the third article in the author's series on decorators, extracting three generic use cases from real-world usage in a variety of open source libraries: intercepting calls, acting as function registries, and enriching function behavior.</p><ol start="2"><li><p><a href="https://death.andgravity.com/lru-cache">This is not interview advice: a priority-expiry LRU cache without heaps or trees in Python</a></p></li></ol><p>If this were a big company interview question, how would you implement the algorithm in the title without using heaps or binary search trees? The article teaches a lot by proposing a minimally viable solution, refining the code step by step, and comparing the time complexities of different approaches.</p><ol start="3"><li><p><a href="https://madebyme.today/blog/python-dict-vs-curly-brackets/">Performance Analysis of Python's </a><code>dict()</code> and <code>{}</code></p></li></ol><p>What are the differences between the two ways of creating a dictionary in Python: <code>dict()</code> and <code>{}</code>? This article provides an in-depth analysis by looking at their bytecode and the CPython interpreter source code. In terms of performance, the conclusion is that <code>{}</code> is faster than <code>dict()</code>. (Note: Python Why series has written about <a href="https://pythoncat.top/posts/2020-10-14-list">Python Puzzle: Which is faster, </a><code>[]</code> or <code>list()</code>? Why? How much faster?)</p><ol start="4"><li><p><a href="https://www.taipy.io/posts/augmenting-the-markdown-language-for-great-python-graphical-interfaces">Augmenting the Markdown language for great Python Graphical Interfaces</a></p></li></ol><p>The Taipy team has developed an enhanced Markdown API that generates graphical user interface elements in your content by adding tags.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t01W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t01W!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 424w, https://substackcdn.com/image/fetch/$s_!t01W!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 848w, https://substackcdn.com/image/fetch/$s_!t01W!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 1272w, https://substackcdn.com/image/fetch/$s_!t01W!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t01W!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif" width="1024" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t01W!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 424w, https://substackcdn.com/image/fetch/$s_!t01W!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 848w, https://substackcdn.com/image/fetch/$s_!t01W!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 1272w, https://substackcdn.com/image/fetch/$s_!t01W!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f3d685a-2545-4a2c-94ad-bf5be49b4438_1024x400.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="5"><li><p><a href="https://medium.com/techtofreedom/7-python-memory-optimization-tricks-to-enhance-your-codes-efficiency-5ef65bf415e7">7 Python Memory Optimization Tricks To Enhance Your Code&#8217;s Efficiency</a></p></li></ol><p>This article introduces seven techniques for optimizing memory in Python: using <code>__slots__</code> in class definitions, using generators, using <code>mmap</code> for handling large files, reducing the use of global variables, taking advantage of short-circuit evaluation of logical operators, choosing appropriate data types, and using string interning.</p><ol start="6"><li><p><a href="https://rushter.com/blog/python-garbage-collector/">Garbage collection in Python: things you need to know</a></p></li></ol><p>How does Python garbage collection work? Why does CPython use reference counting? What problems can a generational garbage collector solve? How can you view and debug reference cycles?</p><ol start="7"><li><p><a href="https://testdriven.io/blog/postgres-vs-dynamodb/">Postgres vs. DynamoDB: Which Database to Choose?</a></p></li></ol><p>How are <strong>Postgres</strong> and <strong>DynamoDB</strong> used and how should you choose between them? The article compares their ORM, queries, performance, backups, migrations, and provides recommendations for choosing a solution based on different scenarios.</p><ol start="8"><li><p><a href="https://blog.streamlit.io/crafting-a-dashboard-app-in-python-using-streamlit/">Building a dashboard in Python using Streamlit</a></p></li></ol><p>A detailed official blog tutorial that uses Pandas for data cleaning, Altair/Plotly for data visualization, and Streamlit for the front end.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j-PN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j-PN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 424w, https://substackcdn.com/image/fetch/$s_!j-PN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 848w, https://substackcdn.com/image/fetch/$s_!j-PN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 1272w, https://substackcdn.com/image/fetch/$s_!j-PN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j-PN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png" width="1456" height="689" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:689,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j-PN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 424w, https://substackcdn.com/image/fetch/$s_!j-PN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 848w, https://substackcdn.com/image/fetch/$s_!j-PN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 1272w, https://substackcdn.com/image/fetch/$s_!j-PN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf7346b-8b17-4dae-b798-cc4b3e1133c0_2000x946.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="9"><li><p><a href="https://bernsteinbear.com/blog/scrapscript/">scrapscript.py</a></p></li></ol><p>Scrapscript is a tiny, pure, functional, content-addressable, web-first programming language. The author introduces its design principles, features, implemented and in-progress features, and the process of implementing it with Python.</p><ol start="10"><li><p><a href="https://blog.trailofbits.com/2024/01/25/we-build-x-509-chains-so-you-dont-have-to/">We build X.509 chains so you don&#8217;t have to</a></p></li></ol><p>X.509 is a PKI standard that defines the format of digital certificates and standardizes certificate attributes. Version 42.0.0 of <strong>Cryptography</strong> provides X.509 related APIs. The article introduces its significance and the problems it solves.</p><ol start="11"><li><p><a href="https://buttondown.email/hillelwayne/archive/i-am-disappointed-by-dynamic-typing/">I am disappointed by dynamic typing</a></p></li></ol><p>The author's disappointment is not about the drawbacks of dynamic typing compared to static typing, but that Python does not take full advantage of the strengths of dynamic typing. Dynamic is not the opposite of static; dynamic means types can change at runtime. The author hopes to enhance the power of dynamic analysis, hoping that "test amplification" of dynamic typing is easier, rather than turning to type annotations or static typing.</p><ol start="12"><li><p><a href="https://lukeplant.me.uk/blog/posts/pythons-disappointing-superpowers/">Python&#8217;s &#8220;Disappointing&#8221; Superpowers</a></p></li></ol><p>This article is a response to the previous sharing, illustrating the superpowers of Python's dynamic typing through the magical techniques (monkey patching and dynamic metaprogramming) used by libraries such as Werkzeug, Pony, Django, fluent-compile, and Pytest. Python can do more than you might think.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/cheshire-cat-ai/core">core: Production ready AI assistant framework</a></p></li></ol><p>A framework for building custom AIs based on any large language model, deployed with Docker. API first, extensible with plugins, with an admin panel, and remembers conversations and documents. (star 1.6K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3zG6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3zG6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 424w, https://substackcdn.com/image/fetch/$s_!3zG6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 848w, https://substackcdn.com/image/fetch/$s_!3zG6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 1272w, https://substackcdn.com/image/fetch/$s_!3zG6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3zG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png" width="1213" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1213,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3zG6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 424w, https://substackcdn.com/image/fetch/$s_!3zG6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 848w, https://substackcdn.com/image/fetch/$s_!3zG6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 1272w, https://substackcdn.com/image/fetch/$s_!3zG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24c834c-5a34-4ce7-8ac1-669ba0e5a0b1_1213x679.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="2"><li><p><a href="https://github.com/JoshuaKasa/van-gonography">van-gonography: Hide files of any type inside an image of your choice using steganography</a></p></li></ol><p>This tool allows you to hide files of any type inside an image of your choice, without affecting the visual quality of the image. It supports image decoding, image comparison, CLI, UI, cross-platform, encryption, and compression.</p><ol start="3"><li><p><a href="https://github.com/mpmath/mpmath">mpmath: Python library for arbitrary-precision floating-point arithmetic</a></p></li></ol><p>Supports real and complex floating-point arithmetic with arbitrary precision, and provides a large collection of functions specifically designed for mathematical use.</p><ol start="4"><li><p><a href="https://github.com/roshanlam/sqlite-worker">sqlite-worker: Effortlessly manage SQLite in multi-threaded Python applications</a></p></li></ol><p>Provides a thread-safe interface for SQLite database operations, with queue-based statement execution.</p><ol start="5"><li><p><a href="https://github.com/emmett-framework/granian">granian: A Rust HTTP server for Python applications</a></p></li></ol><p>A single HTTP implementation in Rust, avoiding the common dependency combination of Gunicorn + uvicorn + http-tools. Supports ASGI/3, RSGI, and WSGI interface applications, and HTTP/1 and HTTP/2 protocols. (1.5k stars)</p><ol start="6"><li><p><a href="https://github.com/volfpeter/fasthx">fasthx: FastAPI and HTMX, the right way</a></p></li></ol><p>FastAPI + HTMX combination, featuring decorator syntax, support for any template engine and server-side rendering library, built-in Jinja2, support for both HTMX requests and regular requests, support for synchronous and asynchronous routes, and more...</p><ol start="7"><li><p><a href="https://github.com/stas00/ml-engineering">ml-engineering: Machine Learning Engineering Open Book</a></p></li></ol><p>A technical manual for LLM/VLM training engineers and practitioners to help train large language models and multimodal models successfully. (6.9k stars)</p><ol start="8"><li><p><a href="https://github.com/sgl-project/sglang">sglang: SGLang is a structured generation language designed for large language models</a></p></li></ol><p>By co-designing a frontend language and a runtime system, it makes interactive LLMs faster and more controllable. It supports multiple chained generative calls, advanced prompting techniques, control flow, multi-modality, parallelism, and external interactions, with a high-performance runtime powered by RadixAttention.</p><ol start="9"><li><p><a href="https://github.com/father-bot/chatgpt_telegram_bot">chatgpt_telegram_bot</a></p></li></ol><p>Deploy ChatGPT as your own Telegram bot, supporting GPT-4, GPT-4 Turbo, and DALLE 2, supporting group chats, built-in 15 special dialogue modes, supporting viewing OpenAI API expenses, etc. (star 4.5K)</p><ol start="10"><li><p><a href="https://github.com/InternLM/HuixiangDou">HuixiangDou: Overcoming Group Chat Scenarios with LLM-based Technical Assistance</a></p></li></ol><p>Its Chinese name is "HuixiangDou", which proposes a set of algorithms pipeline for answering technical questions, with low deployment cost, supporting complex scenarios such as group chats, supporting WeChat groups, lark groups, Feishu groups, DingTalk robots and other IMs.</p><ol start="11"><li><p><a href="https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID">ComfyUI-InstantID: Unofficial implementation of InstantID for ComfyUI</a></p></li></ol><p>Using models such as ID Base model, InsightFace model, ID ControlNet model, Ipadapter_instantid, etc., the official provides 8 styles.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cLZt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cLZt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 424w, https://substackcdn.com/image/fetch/$s_!cLZt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 848w, https://substackcdn.com/image/fetch/$s_!cLZt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 1272w, https://substackcdn.com/image/fetch/$s_!cLZt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cLZt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png" width="1219" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1219,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cLZt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 424w, https://substackcdn.com/image/fetch/$s_!cLZt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 848w, https://substackcdn.com/image/fetch/$s_!cLZt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 1272w, https://substackcdn.com/image/fetch/$s_!cLZt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86dc6db1-3b05-4bc6-afbc-ea727111eb7a_1219x810.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="12"><li><p><a href="https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO">ComfyUI-PhotoMaker-ZHO: Unofficial implementation of PhotoMaker for ComfyUI</a></p></li></ol><p>Supports lora, supports multiple batches, supports general styler, the official provides 10 styles.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kIbi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kIbi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 424w, https://substackcdn.com/image/fetch/$s_!kIbi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 848w, https://substackcdn.com/image/fetch/$s_!kIbi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 1272w, https://substackcdn.com/image/fetch/$s_!kIbi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kIbi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png" width="1214" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:1214,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kIbi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 424w, https://substackcdn.com/image/fetch/$s_!kIbi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 848w, https://substackcdn.com/image/fetch/$s_!kIbi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 1272w, https://substackcdn.com/image/fetch/$s_!kIbi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fc6d36c-77f6-4d5a-b793-ec0186c222c0_1214x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #36 (2024-01-20)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-36-2024-01</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-36-2024-01</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 20 Jan 2024 09:44:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!33a4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-01-20-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://chriswarrick.com/blog/2024/01/15/python-packaging-one-year-later/">Python Packaging, One Year Later: A Look Back at 2023 in Python Packaging</a></p></li></ol><p>A year ago, the author complained about the miserable state of Python packaging. A year later, has anything improved? Or has it gotten worse? The article discusses the mainstream packaging tools in the community, the PEP standards and their implementation. Although there are many new things, it still seems bleak.</p><ol start="2"><li><p><a href="https://techtalksweekly.substack.com/p/all-pycon-2023-talks-sorted-by-views">All PyCon 2023 (US and AU) talks sorted by the view count</a></p></li></ol><p>This article organizes 243 videos from last year's PyCon US and Python AU, sorted by the number of views on YouTube. None of them have many views, and the gap between the first and second place is huge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33a4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33a4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 424w, https://substackcdn.com/image/fetch/$s_!33a4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 848w, https://substackcdn.com/image/fetch/$s_!33a4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 1272w, https://substackcdn.com/image/fetch/$s_!33a4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33a4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png" width="1102" height="419" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:419,&quot;width&quot;:1102,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!33a4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 424w, https://substackcdn.com/image/fetch/$s_!33a4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 848w, https://substackcdn.com/image/fetch/$s_!33a4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 1272w, https://substackcdn.com/image/fetch/$s_!33a4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fd42e87-d9a4-4a7e-b872-020ca572f6bf_1102x419.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="3"><li><p><a href="https://thiagowfx.github.io/2024/01/synchronized-in-python/">Synchronized in Python</a></p></li></ol><p>In Java, the <code>synchronized</code> keyword can be used to ensure that a variable is thread-safe. Is there anything in Python that can achieve the same effect? This article introduces the implementation&#26041;&#26696; of the <code>threading</code> module's Lock + context manager + decorator.</p><ol start="4"><li><p><a href="https://bernsteinbear.com/blog/typed-c-extensions/">Type information for faster Python C extensions</a></p></li></ol><p>PyPy is a Python interpreter with a compatibility layer for its C API that has some performance problems. The author is working on ways to make PyPy's C API faster, and this post describes the work that they have done.</p><ol start="5"><li><p><a href="https://medium.com/@ms.carmen.alvarez/comparing-coroutines-by-example-in-kotlin-and-python-7e60746eae18">Comparing coroutines, by example, in Kotlin and Python</a></p></li></ol><p>The author has been exposed to coroutines while developing with Python and Kotlin, so she wrote several articles to compare their usage, analyze their details and working principles, covering file reading and writing, HTTP requests, sequences and generators, which can deepen your understanding of coroutines.</p><ol start="6"><li><p><a href="https://dev.arie.bovenberg.net/blog/pydantic-timestamps/">The curious case of Pydantic and the 1970s timestamps</a></p></li></ol><p>Pydantic tries to guess whether Unix timestamps are in seconds or milliseconds, but this causes problems with timestamps from before 1970! As we know, timestamps in the computer world start from 1970-1-1 (the Unix epoch), which means that early timestamps have fewer digits, and if we interpret them as seconds, we'll be off by decades!</p><ol start="7"><li><p><a href="https://antonz.org/in-browser-code-playgrounds/">In-browser code playgrounds</a></p></li></ol><p>How to execute code snippets in real time on a browser? The author open-sourced a tool based on WASI that allows you to execute Python, PHP, Ruby, Lua, Javascript, and SQLite code snippets on a browser.</p><ol start="8"><li><p><a href="https://blog.pecar.me/django-sqlite-dblock">Django, SQLite, and the Database is Locked Error</a></p></li></ol><p>In a multi-threaded environment, using SQLite may cause the "database is locked" error. The article analyzes two main reasons (SQLite waiting for the lock to time out, writing after reading in a transaction), introduces the corresponding solutions, and specifically mentions the solution provided by Django itself.</p><ol start="9"><li><p><a href="https://www.cnblogs.com/traditional/p/17959796">Polars Tutorial</a></p></li></ol><p>Polars is a high-performance Python data processing library built on Rust + Arrow. This tutorial provides a comprehensive introduction to Polars. (See also: <a href="https://pbpython.com/polars-intro.html">Polars Tutorial</a>)</p><ol start="10"><li><p><a href="https://ricardoanderegg.com/posts/python-build-html-components-lxml/">Building HTML components from Python functions</a></p></li></ol><p>How to implement React-like components in Python? The author attempts to generate HTML with pure Python functions and render it using the <code>lxml</code> library. The article presents some basic experiments to demonstrate the feasibility.</p><ol start="11"><li><p><a href="https://explainextended.com/2023/12/31/happy-new-year-15/">Happy New Year: GPT in 500 lines of SQL</a></p></li></ol><p>Can we implement a large language model in SQL? ChatGPT says it's beyond SQL's capability. However, the author disagrees! The article details the necessary knowledge to build GPT and eventually implements it in 500 lines of SQL! (See also: the author's annual tradition of doing something incredible with SQL since 2010, such as <a href="https://explainextended.com/2022/12/31/happy-new-year-14/">solving a Rubik's Cube with SQL</a>, <a href="https://explainextended.com/2021/12/31/happy-new-year-13/">implementing a quantum computer simulator in SQL</a>, ...)</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/jawah/niquests">niquests: Requests but with HTTP/3, HTTP/2, Multiplexed Connections, System CAs, Certificate Revocation, DNS over HTTPS / TLS / QUIC or UDP, Async, DNSSEC, and (much) pain removed!</a></p></li></ol><p>Niquests: A drop-in replacement for Requests, with HTTP/3, HTTP/2, Multiplexed Connections, System CAs, Certificate Revocation, DNS over HTTPS / TLS / QUIC or UDP, Async, DNSSEC, and (much) pain removed!</p><ol start="2"><li><p><a href="https://github.com/ariebovenberg/slotscheck/">slotscheck: Ensure your </a><code>__slots__</code> are working properly</p></li></ol><p>Python's <code>__slot__</code> variables can reduce instance memory and prevent adding dynamic attributes. But to work properly, all base classes must implement it. This library can check if it's broken, overlapping, redundant, and provides a pre-commit hook.</p><ol start="3"><li><p><a href="https://github.com/holoviz/panel">panel: The powerful data exploration &amp; web app framework for Python</a></p></li></ol><p>Supports drag-and-drop widgets, plots, tables, and other explorable Python objects to compose custom analysis tools and dashboards, with support for a wide range of visualization tools, including <strong>ipywidgets</strong>. (star 3.7K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0xny!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0xny!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 424w, https://substackcdn.com/image/fetch/$s_!0xny!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 848w, https://substackcdn.com/image/fetch/$s_!0xny!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 1272w, https://substackcdn.com/image/fetch/$s_!0xny!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0xny!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif" width="1278" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1278,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0xny!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 424w, https://substackcdn.com/image/fetch/$s_!0xny!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 848w, https://substackcdn.com/image/fetch/$s_!0xny!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 1272w, https://substackcdn.com/image/fetch/$s_!0xny!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5503250-f520-45c1-b144-4d0b38c5bddd_1278x984.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="4"><li><p><a href="https://github.com/netease-youdao/QAnything">QAnything: Question and Answer based on Anything</a></p></li></ol><p>A local knowledge base question and answer system that supports any format of files or databases and can be installed and used offline. One-click installation and deployment, supports cross-lingual Q&amp;A, and supports selecting multiple knowledge bases for Q&amp;A. (star 1.9K)</p><ol start="5"><li><p><a href="https://github.com/see2023/Bert-VITS2-ext">Bert-VITS2-ext: Animation testing based on Bert-VITS2</a></p></li></ol><p>TTS synchronously generates facial expression data, voice to expression, and generates body animation.</p><ol start="6"><li><p><a href="https://github.com/drunkdream/weread-exporter">weread-exporter: Export books from WeChat Reading to formats like epub, pdf, mobi</a></p></li></ol><p>By hooking the Canvas function in the Web page, it obtains information such as text and styles, converts it to Markdown format, and finally converts it to Epub, PDF, and Mobi formats.</p><ol start="7"><li><p><a href="https://github.com/hogan-tech/leetcode-solution">leetcode-solution: Explore diverse LeetCode solutions in Python, C++, JavaScript, SQL, and TypeScript</a></p></li></ol><p>This project collects 400+ LeetCode problems and solutions in different languages.</p><ol start="8"><li><p><a href="https://github.com/HaujetZhao/CapsWriter-Offline">CapsWriter-Offline: CapsWriter Offline, a handy PC-based speech input tool</a></p></li></ol><p>A PC-based speech input and subtitle transcription tool that is completely offline, has unlimited duration, low latency, high accuracy, supports mixed Chinese and English input, automatic Arabic numerals, and automatic adjustment of Chinese and English spacing. It supports hotkey functions, diary functions, transcription functions, etc.</p><ol start="9"><li><p><a href="https://github.com/VikParuchuri/surya">surya: Accurate line-level text detection and recognition (OCR) in any language</a></p></li></ol><p>A multilingual document OCR toolkit that supports accurate line-level text detection. The downside is that it doesn't work for images and handwritten text. (3.6k stars)</p><ol start="10"><li><p><a href="https://github.com/RVC-Boss/GPT-SoVITS">GPT-SoVITS: 1 min voice data can also be used to train a good TTS model!</a></p></li></ol><p>A powerful short-context voice conversion and text-to-speech WebUI, featuring zero-shot TTS, few-shot TTS, cross-lingual support, and a WebUI tool. (2.7k stars)</p><ol start="11"><li><p><a href="https://github.com/NVIDIA/trt-llm-rag-windows">trt-llm-rag-windows: A developer reference project for creating Retrieval Augmented Generation (RAG) chatbots on Windows using TensorRT-LLM</a></p></li></ol><p>A RAG demo project on Windows, based on the LLaMa 2 13B model, TensorRT-LLM, and the FAISS vector search library.</p><ol start="12"><li><p><a href="https://github.com/EmbraceAGI/LangGPT">LangGPT: Empowering everyone to become a prompt expert! Structured Prompt&#65292;Language of GPT</a></p></li></ol><p>Write high-quality ChatGPT prompts in a structured, templated way, overcoming the lack of systematicity and flexibility in regular prompt creation. (2.8k stars)</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #35 (2024-01-13)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-35-2024-01</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-35-2024-01</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sat, 13 Jan 2024 11:24:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Be32!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-01-13-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p><strong>Substack Channel</strong> : <a href="https://pythoncat.substack.com/s/python-trending-weekly">Click to subscribe</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://tonybaloney.github.io/posts/python-gets-a-jit.html">Python 3.13 gets a JIT</a></p></li></ol><p>What is JIT (Just in Time)? How does it work? What are the benefits of Python + JIT? Copy-and-patch JIT is a design proposed in 2021, which is a high-speed algorithm specially designed for dynamic language runtime. Python 3.13 is expected to implement it! The first sharing of the last issue of the weekly was about it, and we will continue in this issue~</p><ol start="2"><li><p><a href="https://pythonspeed.com/articles/numpy-2/">NumPy 2 is coming: preventing breakage, updating your code</a></p></li></ol><p>NumPy 2 is a major release scheduled for March/April 2024. It is a backwards incompatible release, so it is important to prepare in advance to ensure that our applications do not break. This article discusses the incompatible changes in the new version, how to make sure that you install the new version at the right time, and how to upgrade your code painlessly.</p><ol start="3"><li><p><a href="https://cerfacs.fr/coop/fortran-vs-python">The counter-intuitive rise of Python in scientific computing</a></p></li></ol><p>The article raises a question: in the field of scientific computing that focuses on performance, Fortran used to be very popular, why is Python, which is slower, increasingly used now? The reason may be that people overestimate the importance of execution speed, and the agility and maintainability of programming are more important, and the performance of alternative solutions is not bad. (See also: <a href="https://fortran-lang.discourse.group/t/the-counter-intuitive-rise-of-python-in-scientific-computing/469">Fortran community discussion</a>.)</p><ol start="4"><li><p><a href="https://samukweku.github.io/data-wrangling-blog/notebooks/Fast-and-Efficient-Inequality-Joins-in-Pandas.html#summary">Fast and Efficient Inequality Joins in Pandas</a></p></li></ol><p>Pandas supports equi-joins using the <strong>merge</strong> and <strong>join</strong> functions, but what about inequality joins? This article presents two alternatives to the usual Cartesian product: using the <code>pyjanitor</code> library's <code>conditional_join</code> function, which is both memory-efficient and performant; and using DuckDB's SQL to query a DataFrame, which is extremely performant.</p><ol start="5"><li><p><a href="https://www.influxdata.com/blog/pandas-profiling-tutorial/">Pandas Profiling: A Detailed Explanation</a></p></li></ol><p><code>Pandas profiling</code> is a popular library (renamed to <code>ydata-profiling</code>) that generates a profiling report of a dataset in just one line of code. This tutorial covers how it works, how to import and generate a report, how to analyze and handle sensitive data, how to profile big data, its alternatives, and its drawbacks.</p><ol start="6"><li><p><a href="https://jacobpadilla.com/articles/Functools-Deep-Dive">A Deep Dive Into Python's functools.wraps Decorator</a></p></li></ol><p>Python decorators are one of my favorite features. When we define our own decorators, we need to consider the loss of metadata, and <code>functools.wraps</code> is the key. The article introduces its usage, how to use it, and how to pass custom arguments.</p><ol start="7"><li><p><a href="https://www.da.vidbuchanan.co.uk/blog/python-swar.html">SIMD in Pure Python</a></p></li></ol><p>The author shares how to implement <strong>Game of Life</strong> in pure Python (with <code>pysdl2</code> for graphics), running at 4K resolution at 180fps, which is ~3800x faster than the naive implementation.</p><ol start="8"><li><p><a href="https://escape.tech/blog/best-practices-protect-flask-applications/">Best practices to protect your Flask applications</a></p></li></ol><p>What are the best practices to secure your Flask project and protect it from security vulnerabilities? Based on the <strong>OWASP Top 10</strong> most common vulnerabilities, this article introduces methods for loading JSON with <code>yaml.safe_load</code>, parsing XML with <code>defusedxml</code>, securing forms with <code>flask_wtf</code>, handling file paths with <code>secure_filename</code>, preventing XSS and CSRF, and nine recommendations for building secure APIs, among other things. It covers libraries such as <strong>Flask-SSLify, Flask-RESTful, Flask-HTTPAuth, Flask-JWT-Extended, and Flask-Limiter</strong>.</p><ol start="9"><li><p><a href="https://rednafi.com/python/server_sent_events/">Pushing real-time updates to clients with Server-Sent Events (SSEs)</a></p></li></ol><p>Server-Sent Events (SSEs) is a way for a web server to send real-time information to a web page without the page having to repeatedly poll the server. This article provides a complete example of how to implement it in Python, and also points out its two limitations at the end.</p><ol start="10"><li><p><a href="https://tolkunov.dev/posts/ai-powered-todo-app/">Building AI-powered TODO app</a></p></li></ol><p>What would a TODO app look like in the era of AI? The author implemented a TODO project with Django + simple HTML + Whisper + mixtral-8x7b-instruct + SQLite, which is worth learning and referencing!</p><ol start="11"><li><p><a href="https://peps.python.org/pep-0736/">PEP 736 &#8211; Shorthand syntax for keyword arguments at invocation</a></p></li></ol><p>This PEP proposes to introduce a syntactic sugar <code>f(x=)</code> as a shorthand for <code>f(x=x)</code> when the name of the keyword argument and the value are the same. It is similar to <code>f'{x=}'</code> in f-string, and similar shorthands can be found in Ruby, JavaScript, and Rust. Statistically, this pattern accounts for 10-20% of keyword argument usage.</p><ol start="12"><li><p><a href="https://pythonguides.com/remove-background-from-image-in-python/">How To Remove Background From Image In Python</a></p></li></ol><p>This tutorial introduces how to remove the background of an image using <code>Tkinter</code> and <code>rembg</code>, and the effect is quite good.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Be32!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Be32!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 424w, https://substackcdn.com/image/fetch/$s_!Be32!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 848w, https://substackcdn.com/image/fetch/$s_!Be32!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 1272w, https://substackcdn.com/image/fetch/$s_!Be32!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Be32!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png" width="1456" height="733" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:733,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Be32!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 424w, https://substackcdn.com/image/fetch/$s_!Be32!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 848w, https://substackcdn.com/image/fetch/$s_!Be32!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 1272w, https://substackcdn.com/image/fetch/$s_!Be32!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa0a241-d6c8-4844-ab77-6f33c1b1e64e_1558x784.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/ydataai/ydata-profiling">ydata-profiling: 1 Line of code data quality profiling &amp; exploratory data analysis for Pandas and Spark DataFrames</a></p></li></ol><p>Similar to Pandas' <code>df.describe()</code> function, ydata-profiling is very easy to use, providing extended analysis of a DataFrame with just one line of code, supporting output of the analysis report in formats such as html and json. (star 11.7K)</p><ol start="2"><li><p><a href="https://github.com/desgeeko/pdfsyntax">pdfsyntax: A Python library to inspect and modify the internal structure of a PDF file</a></p></li></ol><p>This is a lightweight library implemented in pure Python to inspect and modify the internal structure of a PDF file, supporting both CLI and API usage.</p><ol start="3"><li><p><a href="https://github.com/tconbeer/harlequin">harlequin: The SQL IDE for Your Terminal</a></p></li></ol><p>Visualize your SQL in your terminal. (1.6k stars)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p92i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p92i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 424w, https://substackcdn.com/image/fetch/$s_!p92i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 848w, https://substackcdn.com/image/fetch/$s_!p92i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 1272w, https://substackcdn.com/image/fetch/$s_!p92i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p92i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg" width="1456" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p92i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 424w, https://substackcdn.com/image/fetch/$s_!p92i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 848w, https://substackcdn.com/image/fetch/$s_!p92i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 1272w, https://substackcdn.com/image/fetch/$s_!p92i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa086b47c-3c10-4ef8-8236-1f39b5c6e437_1482x928.svg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Call all LLM APIs using a unified OpenAI format. Works with Bedrock, Azure, OpenAI, Cohere, Anthropic, Ollama, Sagemaker, HuggingFace, Replicate, and 100+ other LLMs. (4.4k stars)</p><ol start="5"><li><p>Unstructured: Open source libraries and APIs to build custom preprocessing pipelines for labeling, training, or production machine learning pipelines <a href="https://github.com/Unstructured-IO/unstructured">https://github.com/Unstructured-IO/unstructured</a></p></li></ol><p>Preprocess unstructured data such as documents (PDF, HTML, WORD, etc.) and images, providing methods for partitioning, cleaning, staging, extracting, chunking, and embedding. (4.2k stars)</p><ol start="6"><li><p><a href="https://github.com/zhayujie/chatgpt-on-wechat">chatgpt-on-wechat: A chatbot built on large models, supporting WeChat, WeChat Work, public accounts, and Feishu</a></p></li></ol><p>You can choose GPT3.5/GPT4.0/Claude/Wenxin Yanyi/Xunfei Xinghuo/Tongyi Qianwen/Gemini/LinkAI, which can process text, voice, and images, access the operating system and the Internet, and support customization based on your own knowledge base Enterprise intelligent customer service. (star 19.9K)</p><ol start="7"><li><p><a href="https://github.com/m-bain/whisperX">whisperX: Automatic Speech Recognition with Word-level Timestamps (&amp; Diarization)</a></p></li></ol><p>An augmentation of the speech recognition model Whisper, with more accurate timestamps, multi-speaker diarization, and reduced hallucination via improved voice activity detection, all while being faster and having a smaller memory footprint. (7.4k stars)</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nlr5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nlr5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 424w, https://substackcdn.com/image/fetch/$s_!nlr5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 848w, https://substackcdn.com/image/fetch/$s_!nlr5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 1272w, https://substackcdn.com/image/fetch/$s_!nlr5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nlr5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png" width="1448" height="298" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nlr5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 424w, https://substackcdn.com/image/fetch/$s_!nlr5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 848w, https://substackcdn.com/image/fetch/$s_!nlr5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 1272w, https://substackcdn.com/image/fetch/$s_!nlr5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1039ce82-114d-46d8-b79a-f1afea08e172_1448x298.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="8"><li><p><a href="https://inventwithpython.com/pythongently/">Python Programming Exercises, Gently Explained</a></p></li></ol><p>A programming practice website that provides 42 small Python project exercises with solution analysis and reference answers.</p><ol start="9"><li><p><a href="https://github.com/mealie-recipes/mealie">mealie: a self hosted recipe manager and meal planner</a></p></li></ol><p>A recipe management project with a REST API backend and a reactive frontend built with Vue. Works on desktop, tablet, and mobile. Easily add recipes using a URL, user and group management. (4.3k stars)</p><ol start="10"><li><p><a href="https://github.com/guardrails-ai/guardrails">guardrails: Adding guardrails to large language models</a></p></li></ol><p>What if large language models don't respond as expected? This library allows you to specify the output structure and type, verify and correct the output of large models, and improve the quality of the content. (2.7k stars)</p><ol start="11"><li><p><a href="https://github.com/Chainlit/chainlit">chainlit: Build Python LLM apps in minutes</a></p></li></ol><p>Rapidly build web applications like ChatGPT, integrated with Langchain, Autogen, OpenAI Assistant, Llama, and Haystack. Customize the frontend to implement the full range of features, including monitoring and observability, authentication mechanisms, multi-tenancy, and seamless integration with various tools. (4.3k stars)</p><ol start="12"><li><p><a href="https://github.com/functime-org/functime">functime: Time-series machine learning at scale. Built with Polars for embarrassingly parallel feature extraction and forecasts on panel data</a></p></li></ol><p>Production-ready global forecasting and time-series feature extraction on large datasets. Supports time-series preprocessing, cross-validation splitters, and forecast metrics (MASE, SMAPE, etc.).</p><h2><strong>&#129346;Discussion &amp; Questions</strong></h2><ol><li><p><a href="https://www.v2ex.com/t/1007645">Why does Python have the concept of a .venv virtual environment?</a></p></li></ol><p>Why does Python need to use a virtual environment? Why does Python use this package management mechanism? What problems does package management software need to solve?</p><ol start="2"><li><p><a href="https://www.v2ex.com/t/1003544">How to call a Python project with third-party dependencies in Java?</a></p></li></ol><p>When the API cannot be called, how can a Java project call a Python project? What are the problems with the JNI-CPython-Python solution? How to package it as EXE and so?</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #34 (2024-01-06)]]></title><description><![CDATA[Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-34-2024-01</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-34-2024-01</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sun, 07 Jan 2024 08:25:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lcHy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques, with the majority links in English and a small portion in Chinese.</p><p>The <a href="https://pythoncat.top/posts/2024-01-06-weekly">original version</a> of the weekly was written in Chinese. What you are reading here is mostly translated by LLMs.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pythoncat.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://pythoncat.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://www.manjusaka.blog/posts/2024/01/03/a-simple-introduction-about-python-jit/">A Simple Introduction About Python JIT</a></p></li></ol><p>Python 3.13 will introduce a copy-and-patch JIT compiler, which makes the most of the LLVM ecosystem. The compiler uses clang, the compiler parameter is set to -o3 to get the best performance, and the binary tools are llvm-objdump and llvm-readelf. The scheme can be described as both new and good.</p><ol start="2"><li><p><a href="https://hakibenita.com/fast-excel-python">Fastest Way to Read Excel in Python</a></p></li></ol><p>How to read Excel files with Python? This article compares the performance of <strong>Pandas, Tablib, Openpyxl, LibreOffice, DuckDB and Calamine</strong> in terms of speed, type and correctness.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lcHy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lcHy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 424w, https://substackcdn.com/image/fetch/$s_!lcHy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 848w, https://substackcdn.com/image/fetch/$s_!lcHy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 1272w, https://substackcdn.com/image/fetch/$s_!lcHy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lcHy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png" width="1175" height="405" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:405,&quot;width&quot;:1175,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lcHy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 424w, https://substackcdn.com/image/fetch/$s_!lcHy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 848w, https://substackcdn.com/image/fetch/$s_!lcHy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 1272w, https://substackcdn.com/image/fetch/$s_!lcHy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e1b72-b71c-4adc-834c-45d918902719_1175x405.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="3"><li><p><a href="https://realpython.com/flask-project/">Build a Scalable Flask Web Project From Scratch</a></p></li></ol><p>Flask is a powerful and flexible web framework. This beginner-friendly tutorial covers how to set up a Flask project, develop a starter project, add multiple pages using blueprints, use Jinja templates, store static files, and more.</p><ol start="4"><li><p><a href="https://ashvardanian.com/posts/python-c-assembly-comparison/">Python, C, Assembly - 2'500x Faster Cosine Similarity</a></p></li></ol><p>Cosine similarity is a widely used metric in machine learning and information retrieval. This article introduces some low-level optimizations, taking the cosine similarity as an example, starting with a pure Python version, NumPy slows it down, SciPy speeds it up by 2-5x, C brings a 200x speedup, SIMD intrinsics a 400x speedup, AVX-512 with BMI2 a 747x speedup, AVX-512FP16 a 1260x speedup, and AVX-512VNNI a 2521x speedup.</p><ol start="5"><li><p><a href="https://tolkunov.dev/posts/ai-or-not/">AI or Not &#8212; detect AI-generated photos using AI</a></p></li></ol><p>The latest AI models like <strong>Stable Diffusion XL</strong> and <strong>Midjourney v6</strong> can generate extremely realistic images, making it harder for the human eye to distinguish between real and fake. The author trained a classifier that can detect AI-generated images with 99% accuracy.</p><ol start="6"><li><p><a href="https://mathspp.com/blog/max-is-broken">max is broken</a></p></li></ol><p>The author keenly found that the functions <strong>sum, all, any, and math.prod</strong> all have proper default values when the input is an empty list, but the <strong>max</strong> and <strong>min</strong> functions will throw an error! The author thinks it should be equal to negative infinity, what do you think?</p><ol start="7"><li><p><a href="https://juejin.cn/post/7318952376593006633">App Automation Testing with Appium: Common Appium APIs and Operations</a></p></li></ol><p>Appium is a commonly used Android UI automation testing tool, and this article is part of a series of tutorials on Appium automation testing.</p><ol start="8"><li><p><a href="https://www.photondesigner.com/articles/instant-messenger">The simplest way to build an instant messaging app with Django</a></p></li></ol><p>How to add real-time events to your Django app asynchronously? Without Redis, using Django's new async features. This article demonstrates the development of a minimalistic web-based instant messaging application.</p><ol start="9"><li><p><a href="https://fullspeedpython.com/articles/understanding-numeric-data-types/">Understanding Numeric Data Types in Python</a></p></li></ol><p>What are the commonly used numeric data types in Python? What are their characteristics and how are they implemented in CPython? The article introduces integer, floating-point, and complex types, as well as the math, decimal, and fractions modules. (Appendix: <a href="https://github.com/chinesehuazhou/peps-cn/blob/master/StandardsTrack/3141--%E6%95%B0%E5%AD%97%E7%9A%84%E7%B1%BB%E5%9E%8B%E5%B1%82%E7%BA%A7.md">PEP-3141--Numeric Tower</a>)</p><ol start="10"><li><p><a href="https://superfastpython.com/asyncio-log-blocking/">Asyncio Logging Without Blocking</a></p></li></ol><p>How to implement non-blocking logging in asyncio programs? The article introduces how to use a shared Queue and QueueHandler to log, and use QueueListener to store the logs.</p><ol start="11"><li><p><a href="https://read.engineerscodex.com/p/how-instagram-scaled-to-14-million">How Instagram scaled to 14 million users with only 3 engineers</a></p></li></ol><p>Instagram went from 0 to 14 million users in 2010-2011, with only 3 engineers! What tech stack did they use and what successful experiences can we learn from? The article introduces the relevant technologies and implementation schemes used.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hynY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hynY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 424w, https://substackcdn.com/image/fetch/$s_!hynY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 848w, https://substackcdn.com/image/fetch/$s_!hynY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 1272w, https://substackcdn.com/image/fetch/$s_!hynY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hynY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png" width="1456" height="688" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:688,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hynY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 424w, https://substackcdn.com/image/fetch/$s_!hynY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 848w, https://substackcdn.com/image/fetch/$s_!hynY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 1272w, https://substackcdn.com/image/fetch/$s_!hynY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed132bdc-08ef-4989-8a33-042bbf6ad7d3_1984x937.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="12"><li><p><a href="https://github.com/bazelbuild/starlark/blob/master/design.md">Language Design of Starlark by Google</a></p></li></ol><p>Google designed Starlark to replace Python as a build description language, and the syntax is very similar. This document explains some of its design principles and many differences from the Python language, such as its Boolean values are not integers, strings are not iterable, there is no "is" operator, for/if statements are not allowed outside of functions, and so on.</p><ol start="13"><li><p><a href="https://www.dedp.online/part-1/1-introduction/history-and-state-of-data-engineering.html">The History and State of Data Engineering</a></p></li></ol><p>The article is from the free online e-book Data Engineering Design Patterns, which is being serialized. Data engineering has gone through stages such as SQL, dimensional modeling, business intelligence and big data, MapReduce and Hadoop, and the cloud revolution.</p><p>&#127873; Python Trending Weekly &#127873; organizes its content into seasons, with every 30 issues forming a season. The highlights from the first season have been compiled for your convenience. You can access them online <a href="https://pythoncat.top/posts/2023-12-11-weekly">here</a> (Chinese).</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><ol><li><p><a href="https://github.com/samuelcolvin/watchfiles">watchfiles: Simple, modern and fast file watching and code reload in python</a></p></li></ol><p>A simple, modern and fast file watching and code reload library for Python. It uses the <code>Notify</code> library from Rust to handle file system notifications under the hood, and supports both synchronous and asynchronous event handling. (1.4k stars)</p><pre><code>  from watchfiles import watch
  &#8203;
  for changes in watch("./path/to/dir"):
   &nbsp;  print(changes)</code></pre><ol start="2"><li><p><a href="https://github.com/hylang/hy">hy: A dialect of Lisp that's embedded in Python</a></p></li></ol><p>Hy is an alternative syntax for Python that provides a variety of additional features, generalizations, and syntactic simplifications over Python. Compared to other Lisps, it offers direct access to Python's built-in and third-party libraries. (star 4.7K)</p><ol start="3"><li><p><a href="https://github.com/ofek/pyapp">pyapp: Runtime installer for Python applications</a></p></li></ol><p>A tool developed in Rust that builds self-contained Python applications with a runtime installer, creating a single binary for each platform.</p><ol start="4"><li><p><a href="https://github.com/aio-libs/yarl">yarl: Yet another URL library</a></p></li></ol><p>Provides a URL class that makes it easy to parse and modify URLs, supporting access to each part of the URL via attributes. (1K stars)</p><ol start="5"><li><p><a href="https://github.com/marshmallow-code/apispec">apispec: A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)</a></p></li></ol><p>Apispec: A pluggable API specification generator. It currently supports the OpenAPI Specification (formerly known as the Swagger specification). It is framework agnostic and has built-in support for marshmallow. (1.1K stars)</p><ol start="6"><li><p><a href="https://github.com/marshmallow-code/marshmallow">marshmallow: A lightweight library for converting complex objects to and from simple Python datatypes</a></p></li></ol><p>A simple object serialization library that is ORM/ODM/framework agnostic and can be used for validating input data, serializing and deserializing, and comes with a rich set of field types and supports multiple data formats. (star 6.8K)</p><ol start="7"><li><p><a href="https://github.com/thevahidal/jake">jake: Effortlessly create and deploy your own one-link website on GitHub</a></p></li></ol><p>A one-link website is suitable for use as a personal homepage. This website template uses GitHub Pages for deployment, allowing you to easily and effortlessly build a beautiful personal homepage.</p><ol start="8"><li><p><a href="https://github.com/jiisanda/docflow">docflow: DocFlow is a powerful Document Management API designed to streamline document handling, including seamless uploading, downloading, organization, versioning, sharing, and more</a></p></li></ol><p>Simplify the handling of document types, supports authentication and authorization, list permission control, document CRUD, document preview, version control, etc.</p><ol start="9"><li><p><a href="https://github.com/Frrrrrrrrank/auto_job__find__chatgpt__rpa">auto_job__find__chatgpt__rpa: This is a tool used to automatically generate a cover letter using chatgpt based on your resume and job description and send messages to bosses in China</a></p></li></ol><p>A Chinese-made tool that automatically generates cover letters using ChatGPT based on your resume and job description, and sends messages to hiring managers in China. Good luck in your job search during this winter hiring season!</p><ol start="10"><li><p><a href="https://github.com/davep/oshit">oshit: Get your hit of HackerNews in the terminal</a></p></li></ol><p>A simplified Hacker News reader for the terminal, without features like login, voting, or posting, but with support for viewing user and comment information.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7yeX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7yeX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 424w, https://substackcdn.com/image/fetch/$s_!7yeX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 848w, https://substackcdn.com/image/fetch/$s_!7yeX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 1272w, https://substackcdn.com/image/fetch/$s_!7yeX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7yeX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png" width="1098" height="501" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:501,&quot;width&quot;:1098,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7yeX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 424w, https://substackcdn.com/image/fetch/$s_!7yeX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 848w, https://substackcdn.com/image/fetch/$s_!7yeX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 1272w, https://substackcdn.com/image/fetch/$s_!7yeX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5026e5b6-b6da-4556-b487-898167c04f53_1098x501.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="11"><li><p><a href="https://github.com/dvmazur/mixtral-offloading">mixtral-offloading: Run Mixtral-8x7B models in Colab or consumer desktops</a></p></li></ol><p>Enables efficient inference of Mixtral-8x7B models, requiring approximately 16 GB of VRAM and 11 GB of RAM. (1.4k stars)</p><ol start="12"><li><p><a href="https://github.com/PabloLec/RecoverPy">RecoverPy: Interactively find and recover deleted or overwritten files from your terminal</a></p></li></ol><p>A file &amp; data recovery tool for Linux that supports text search and interactive operation, allowing you to recover deleted or overwritten files. (1.1k stars)</p><ol start="13"><li><p><a href="https://github.com/Meituan-AutoML/MobileVLM">MobileVLM: MobileVLM: A Fast, Strong and Open Vision Language Assistant for Mobile Devices</a></p></li></ol><p>A multimodal vision-language model (MMVLM) that runs on mobile devices, with 1.4B and 2.7B parameter sizes, achieving impressive performance of 21.5 tokens per second and 65.3 tokens per second on Qualcomm Snapdragon 888 CPU and NVIDIA Jeston Orin GPU, respectively.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iTi5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iTi5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 424w, https://substackcdn.com/image/fetch/$s_!iTi5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 848w, https://substackcdn.com/image/fetch/$s_!iTi5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 1272w, https://substackcdn.com/image/fetch/$s_!iTi5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iTi5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png" width="595" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b53402d6-8510-4e89-8696-ed64517580ad_595x312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:595,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iTi5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 424w, https://substackcdn.com/image/fetch/$s_!iTi5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 848w, https://substackcdn.com/image/fetch/$s_!iTi5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 1272w, https://substackcdn.com/image/fetch/$s_!iTi5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53402d6-8510-4e89-8696-ed64517580ad_595x312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#128034;Podcasts &amp; Videos</strong></h2><ol><li><p><a href="https://www.xiaoyuzhoufm.com/episode/65945c8c1e736aa25c935885?s=eyJ1IjoiNjEzYjhjYjRlMGY1ZTcyM2JiNWNlN7RmIn0%253D">Snake Charmer Says Ep 44. Chatting with Tualatrix About Tech Stack for Indie Development</a></p></li></ol><p>How do independent developers make technology selections? Why does Tualading use Python as the backend language for his projects? (Appendix: Another podcast two years ago <a href="https://www.xiaoyuzhoufm.com/episode/618c9897fad86a854205b2a0?s=eyJ1IjoiNjEzYjhjYjRlMGY1ZTcyM2JiNWNlN2RmIn0%253D">ByteTalk 3. Chatting with Tualading About the Things of Independent Developers</a>)</p><ol start="2"><li><p><a href="https://www.youtube.com/watch?v=MoqtsYLGCC4">An Introduction to Coding In Rust for Pythonistas</a></p></li></ol><p>This video compares and contrasts Rust programming from the perspective of Python developers, highlighting key differences in features such as Python classes and Rust structs.</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><ul><li><p><a href="https://pythoncat.top">Blog</a>: Explore my independent blog where you can find a collection of original/translated technical articles over the years, along with some reflections since 2009.</p></li><li><p><a href="https://pythoncat.substack.com/s/python-trending-weekly">Newsletter</a>: Subscribe to my channel on Substack for a curated newsletter delivered straight to your inbox, keeping you updated on current affairs.</p></li><li><p><a href="https://github.com/chinesehuazhou/python-weekly">Github</a>: Access the Markdown source files of this weekly digest on Github and feel free to use them for anything you have in mind!</p></li><li><p><a href="https://t.me/pythontrendingweekly">Telegram</a>: Beyond notifications for the weekly digest, I consider it an "extra edition," providing additional, more diverse information.</p></li><li><p><a href="https://twitter.com/chinesehuazhou">Twitter</a>: Follow me on Twitter where my feed is filled with numerous accounts of developers and organizations in the Python community.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #15 (2023-08-12)]]></title><description><![CDATA[&#129412;Articles & Tutorials]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-15-2023-08</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-15-2023-08</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sun, 13 Aug 2023 14:15:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2SzC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffb045d4-5665-47cf-9859-456685079f1a_479x479.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><p><a href="https://blog.balthazar-rouberol.com/how-to-profile-a-fastapi-asynchronous-request">How to profile a FastAPI asynchronous request ?</a></p><p><a href="https://noplacelikelocalhost.medium.com/leveraging-background-tasks-in-fastapi-enhancing-performance-and-responsiveness-6e4ad64c7d16">Leveraging Background Tasks in FastAPI: Enhancing Performance and Responsiveness</a></p><p><a href="https://compucademy.net/creating-histograms-with-python/">Creating Histograms with Python</a></p><p><a href="https://mypy-lang.blogspot.com/2023/08/mypy-15-released.html">The Mypy Blog: Mypy 1.5 Released</a></p><p><a href="https://jvns.ca/blog/2023/08/03/behind--hello-world/">Behind "Hello World" on Linux</a></p><p><a href="https://kenschutte.com/postscript-vs-python">Learning PostScript by comparing it to Python</a></p><p><a href="https://www.nathom.dev/blog/casual_performance_optimization_python/">Not-so-casual Performance Optimization in Python</a></p><p><a href="https://www.pythonmorsels.com/creating-a-context-manager/">Creating a context manager in Python</a></p><p><a href="https://www.bitecode.dev/p/python-cocktail-mix-a-context-manager">Python cocktail: mix a context manager and an iterator in equal parts</a></p><p><a href="https://kenschutte.com/python-swap-ints">swap_8_and_9: How a simple import can modify the Python interpreter</a></p><p><a href="https://josvisser.substack.com/p/why-python-is-terrible">Why Python is terrible...</a></p><p><a href="https://pybit.es/articles/python-errors-should-not-pass-silently/">Avoiding Silent Failures In Python: Best Practices For Error Handling</a></p><p><a href="https://www.pythongasm.com/build-gpt-powered-chatbots-around-enterprise-data-with-python">Build GPT-powered Chatbots around Enterprise data with Python</a></p><p><a href="https://stackabuse.com/the-power-of-indexing-boosting-data-wrangling-efficiency-with-pandas/">The Power of Indexing: Boosting Data Wrangling Efficiency with Pandas</a></p><p><a href="https://www.tinybird.co/blog-posts/killing-the-processpoolexecutor">Killing the ProcessPoolExecutor</a></p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><p><a href="https://github.com/joerick/pyinstrument">pyinstrument: Call stack profiler for Python. Shows you why your code is slow!</a></p><p><a href="https://github.com/gaogaotiantian/viztracer">viztracer: a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution</a></p><p><a href="https://github.com/jd/tenacity">tenacity: Retrying library for Python</a></p><p><a href="https://github.com/litestar-org/litestar">litestar: Light, Flexible and Extensible ASGI API framework</a></p><p><a href="https://github.com/junshutang/Make-It-3D">Make-It-3D: High-Fidelity 3D Creation from A Single Image with Diffusion Prior</a></p><p><a href="https://github.com/ErwannMillon/Color-diffusion">Color-diffusion: A diffusion model to colorize black and white images</a></p><p><a href="https://github.com/kuafuai/DevOpsGPT">DevOpsGPT: Multi agent system for AI-driven software development</a></p><p><a href="https://github.com/Instagram/LibCST">LibCST: A concrete syntax tree parser and serializer library for Python</a></p><p><a href="https://github.com/HypothesisWorks/hypothesis">hypothesis: a powerful, flexible and easy to use library for property-based testing</a></p><h2><strong>Podcasts</strong></h2><p><a href="https://pythonpeople.fm/">Python People Podcast</a></p><p><a href="https://talkpython.fm/episodes/show/426/whats-new-in-pyscript-august-2023">Episode #426 What's New in PyScript [Talk Python To Me Podcast]</a></p><p><a href="https://stackoverflow.blog/2023/08/08/understanding-sre-ep-597/">Understanding SRE (Ep. 597) - Stack Overflow Blog</a></p><p><a href="https://stackoverflow.blog/2023/07/25/how-the-python-team-is-adapting-the-language-for-an-ai-future-ep-593/">How the Python team is adapting the language for an AI future (Ep. 593) - Stack Overflow Blog</a></p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pythoncat.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Python&#28526;&#27969;&#21608;&#21002;! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #13 (2023–07–29)]]></title><description><![CDATA[Welcome to the 13th issue of Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-13-20230729</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-13-20230729</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Sun, 30 Jul 2023 10:24:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_OeZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 13th issue of Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques. The <a href="https://pythoncat.top/posts/2023-07-29-weekly">original version</a> of the weekly publication was written in Chinese, and what you are reading here is the English version translated by ChatGPT.</p><p>Most of the content shared here is in English, with a small portion in Chinese, which is indicated in the title. It took a lot of courage for me to publish this weekly publication, originally intended for Chinese readers, to the English-speaking world. Your feedback is welcome, and I appreciate your <a href="https://pythoncat.substack.com/s/python-trending-weekly">subscription</a> and support!</p><p><strong>Telegram Channel</strong> : <a href="https://t.me/pythontrendingweekly">https://t.me/pythontrendingweekly</a></p><h2><strong>&#129412;Articles &amp; Tutorials</strong></h2><p>1&#12289;<a href="https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf">Announcing Jupyter Notebook 7</a></p><p>Major update of Jupyter Notebook, highlights include real-time collaboration, interactive debugging, directory, themes and dark mode, internationalization, improved accessibility, compact view on mobile devices.</p><p>2&#12289;<a href="https://juejin.cn/post/7258881840823615544">Exploring Weak References and Basic Type Support in Python</a> (Chinese)</p><p>Python's basic types Int, List, Dict, Tuple, Str do not support weak references, while Object, Type, Set and other types do support weak references, why is this the case? The article gives its own analysis.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pythoncat.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Python&#28526;&#27969;&#21608;&#21002;! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>3&#12289;<a href="http://so1n.me/2023/07/23/distributed_lock_lntroduction_and_lmplementation/">Introduction and Python Implementation of Distributed Locks</a> (Chinese)</p><p>When should distributed locks be used? How to implement distributed locks with py-redis, what is the process of locking and unlocking? What are the points to note about the lock timeout, how to implement WatchDog to automatically renew the lock?</p><p>4&#12289;<a href="https://scofield.hashnode.dev/unlocking-the-power-of-pyscript-a-guide-to-running-python-code-in-your-html">Unleashing the Power of PyScript: Running Python Code in HTML</a></p><p>An introductory tutorial on PyScript, introducing installation, basic knowledge, usage with Flask and advanced features.</p><p>5&#12289;<a href="https://superfastpython.com/faster-file-io-with-concurrency/">Faster File I/O Through Concurrency</a></p><p>What is file I/O, why is it much slower than main memory I/O? What factors does the speed of file I/O depend on? What methods are there to improve file I/O performance?</p><p>6&#12289;<a href="https://dev.to/atkumar/how-to-write-impeccably-clean-code-that-will-save-your-sanity-4np9">How to Write Impeccably Clean Python Code?</a></p><p>The article introduces some best programming practices, covering code structure, pre-commit, type hints, docstrings, lint, Pydantic, spell check, testing and other aspects.</p><p>7&#12289;<a href="https://betterstack.com/community/guides/logging/best-python-logging-libraries/">Python Logging: Comparing the 6 Most Popular Libraries</a></p><p>The article provides a detailed comparison of the currently most popular 6 logging frameworks: <strong>logging, loguru, structlog, Eliot, logbook and picologging</strong>. The most recommended are undoubtedly the first two, the others are for interest.</p><p>8&#12289;<a href="https://adamj.eu/tech/2023/07/23/python-profile-section-cprofile/">Using cProfile to Analyze Module-Level Code</a></p><p>How to use <strong>cProfile</strong> to perform performance analysis on Python code? The article briefly introduces its usage, and gives two advanced usage methods: context manager and decorator.</p><p>9&#12289;<a href="https://www.codium.ai/blog/mastering-functional-programming-in-python/">Mastering Functional Programming in Python</a></p><p>The article introduces the advantages of functional programming, Python's support for functional programming, best practices and errors to avoid when writing Python programs.</p><p>10&#12289;<a href="https://realpython.com/python312-f-strings/">Python 3.12 Preview: More Intuitive and Consistent f-string</a></p><p>What limitations does f-string have before Python 3.12? What changes will the upcoming 3.12 version bring? New feature preview: embedded expressions can reuse quotes, f-string allows the use of backslashes, comments can be written in multi-line expressions, arbitrary levels of f-string nesting, optimized f-string error prompts...</p><p>11&#12289;<a href="https://dev.to/akarshan/asynchronous-python-magic-how-to-create-awaitable-constructors-with-asyncmixin-18j5">Creating Awaitable Constructors with AsyncMixin</a></p><p>Introduces how to use a mixin named <code>AsyncMixin</code> to create asynchronous constructors in Python.</p><p>12&#12289;<a href="https://snyk.io/blog/insecure-direct-object-references-python/">Finding and Fixing Insecure Direct Object References in Python</a></p><p>Insecure Direct Object References (IDOR) is a security vulnerability, the article introduces the harm of this vulnerability, how to identify and fix IDOR vulnerabilities.</p><p>13&#12289;<a href="https://medium.com/@DorIndivo/overcoming-performance-bottlenecks-with-async-python-a-deep-dive-into-cpu-bound-code-b604a400255a">Overcoming Performance Bottlenecks with Asynchronous Python: A Deep Dive into CPU-Intensive Code</a></p><p>The author introduces how to identify and optimize CPU-intensive code in feature storage to improve the performance of the core model. What is event loop delay, how to monitor the time consumed by asynchronous code?</p><p>14&#12289;<a href="https://peps.python.org/pep-0720/">PEP-720 Cross-Compiling Python Packages</a></p><p>Cross-compiling refers to compiling programs for another architecture on one computer. This PEP attempts to reveal the challenges of cross-compiling and improve upon them.</p><p>15&#12289;<a href="https://pep-previews--3210.org.readthedocs.build/pep-0722/">PEP-722 Dependency Specification for Single-File Scripts</a></p><p>There are many solutions for recording and managing third-party libraries in projects. But how to manage third-party library dependencies for single files? This PEP proposes a very simple specification format.</p><p>&#127873;<strong>Python Trend Weekly</strong>&#127873; has been published for free for 13 issues, visit the link below to view all content: <a href="https://pythoncat.top/tags/weekly">https://pythoncat.top/tags/weekly</a></p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><p>1&#12289;<a href="https://github.com/srbhr/Resume-Matcher">Resume-Matcher: Compare resumes with job descriptions, ranked by scoring</a></p><p>An AI-based resume matcher that scores resumes based on the keywords in the job description. It uses Qdrant (an efficient vector similarity search tool) to measure the match between the resume and the job description.</p><p>2&#12289;<a href="https://github.com/PyHAT-stack/awesome-python-htmx">awesome-python-htmx: Selected content for web development using htmx in Python</a></p><p>PyHAT aims to promote htmx+ASGI+TailwindCSS in Python, this project lists some introductory resources, tutorials, design theories, peripheral ecosystems, etc.</p><p>3&#12289;<a href="https://github.com/THUDM/CodeGeeX2">CodeGeeX2: A more powerful multi-language code generation model</a> (Chinese)</p><p>Based on the ChatGLM2-6B pedestal language model, it achieves a Pass@1 pass rate of 35.9% in Python, surpassing the larger StarCoder-15B. CodeGeeX plugin supports VS Code, IntelliJ IDEA, PyCharm, GoLand, WebStorm, Android Studio and other IDEs. (star 1K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_OeZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_OeZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 424w, https://substackcdn.com/image/fetch/$s_!_OeZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 848w, https://substackcdn.com/image/fetch/$s_!_OeZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!_OeZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_OeZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png" width="1456" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_OeZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 424w, https://substackcdn.com/image/fetch/$s_!_OeZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 848w, https://substackcdn.com/image/fetch/$s_!_OeZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!_OeZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b273eb-be50-45d7-a870-edf7549d0016_1920x1202.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>4&#12289;<a href="https://github.com/LinkSoul-AI/Chinese-Llama-2-7b">Chinese-Llama-2-7b: The first downloadable and runnable Chinese LLaMA2 model</a> (Chinese)</p><p>Open source and commercially available <strong>Chinese version of the Llama2 model and Chinese-English SFT dataset</strong>, compatible with all optimizations for the original <em>llama-2-chat</em> model. (star 1K)</p><p>5&#12289;<a href="https://github.com/soulteary/docker-llama2-chat">docker-llama2-chat: LLaMA2 (official / Chinese version / INT4 / llama2.cpp)</a> (Chinese)</p><p>A Chinese open source project, three steps to get started with LLaMA2, the author has written a series of tutorial blogs.</p><p>6&#12289;<a href="https://github.com/Avaiga/taipy">taipy: Transforming data and AI algorithms into complete web applications</a></p><p>A full-stack project that quickly builds web applications from data and AI.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eFa9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eFa9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 424w, https://substackcdn.com/image/fetch/$s_!eFa9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 848w, https://substackcdn.com/image/fetch/$s_!eFa9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 1272w, https://substackcdn.com/image/fetch/$s_!eFa9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eFa9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png" width="1147" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:1147,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eFa9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 424w, https://substackcdn.com/image/fetch/$s_!eFa9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 848w, https://substackcdn.com/image/fetch/$s_!eFa9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 1272w, https://substackcdn.com/image/fetch/$s_!eFa9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45850f56-bc61-4346-8bf8-78dbda8d5976_1147x424.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>7&#12289;<a href="https://github.com/lmacken/pyrasite">pyrasite: Injecting code into a running Python process</a></p><p>Allows injecting custom code into a running Python process to achieve dynamic debugging, modifying variable values, cracking encryption, analyzing runtime behavior, etc. Supports various injection methods, including injecting into the Python interpreter, injecting into specific functions, injecting into specific threads, etc. (star 2.7K)</p><p>8&#12289;<a href="https://github.com/ionelmc/python-manhole">python-manhole: Debugging running Python programs</a></p><p>Provides interactive debugging and monitoring functions in running Python processes, using Python's "ptrace" mechanism, by injecting code into the target process, it can be connected via SSH or telnet protocols for remote interaction. Compatible with gevent and eventlet, with some restrictions.</p><p>9&#12289;<a href="https://github.com/RamiKrispin/vscode-python">vscode-python: Setting up a Python development environment with VScode and Docker</a></p><p>A very comprehensive tutorial project, guiding how to run Python on Docker, set up development environment and container extensions, testing and deployment, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X-oC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X-oC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 424w, https://substackcdn.com/image/fetch/$s_!X-oC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 848w, https://substackcdn.com/image/fetch/$s_!X-oC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!X-oC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X-oC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png" width="1456" height="976" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:976,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X-oC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 424w, https://substackcdn.com/image/fetch/$s_!X-oC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 848w, https://substackcdn.com/image/fetch/$s_!X-oC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!X-oC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5929f975-a1c6-4e5f-a7a1-7b03443d8886_2074x1390.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>10&#12289;<a href="https://github.com/SergeyPirogov/webdriver_manager">webdriver_manager: Webdriver manager for Python</a></p><p>When using frameworks like <strong>Selenium</strong> and <strong>Playwright</strong>, you need to manage various browser drivers. This project simplifies the management and usage of browser drivers.</p><p>11&#12289;<a href="https://github.com/JetBrains/lets-plot">lets-plot: Open source plotting library for statistical data</a></p><p>An open-source plotting library by <strong>JetBrains</strong>, it can create beautiful, interactive statistical charts and data visualizations. It provides a <strong>ggplot2</strong>-like plotting API for Python and Kotlin developers. (star 1.1K)</p><p>12&#12289;<a href="https://github.com/pdfarranger/pdfarranger">pdfarranger: Merge or split PDF documents in a graphical interface, support rotation, cropping and rearrangement</a></p><p>A small python-gtk program that edits PDF documents in an intuitive way. Its backend is based on <a href="https://github.com/pikepdf/pikepdf">pikepdf</a>, which is a library for reading and writing PDF files. (star 2.3K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LzAb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LzAb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!LzAb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!LzAb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!LzAb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LzAb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LzAb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!LzAb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!LzAb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!LzAb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe428db5f-8090-44b6-b302-34fcfa71a2f0_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#129346;Discussion &amp; Question</strong></h2><p>1&#12289;<a href="https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474?s=35">Steering Council Notice about PEP-703 (Making the Global Interpreter Lock Optional in CPython)</a></p><p>In the 11th issue of the newsletter, we shared "If PEP-703 is adopted, Meta will invest manpower to support", now there is progress, the steering committee plans to accept PEP-703! This post lists several basic principles and a three-stage development plan. Backward compatibility is the top priority, this will not be Python 4.</p><h2><strong>&#128049;Sponsor &amp; Support</strong></h2><p>If you find the weekly valuable, feel free to <a href="https://img.pythoncat.top/wechat_code.png">appreciate</a> or <a href="https://www.buymeacoffee.com/pythoncat">buy me coffee</a> to support!</p><p>If you like the weekly, please share it with others who need it, so that more people can benefit from it&#65374;</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><p><a href="https://img.pythoncat.top/python_cat.jpg">WeChat</a>| <a href="https://pythoncat.top">Blog</a>| <a href="https://pythoncat.substack.com">Email</a> | <a href="https://github.com/chinesehuazhou/python-weekly">Github</a> | <a href="https://t.me/pythontrendingweekly">Telegram</a> | <a href="https://twitter.com/chinesehuazhou">Twitter</a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pythoncat.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://pythoncat.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Python Trending Weekly #12]]></title><description><![CDATA[Welcome to the 12th issue of Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques.]]></description><link>https://pythoncat.substack.com/p/python-trending-weekly-12</link><guid isPermaLink="false">https://pythoncat.substack.com/p/python-trending-weekly-12</guid><dc:creator><![CDATA[豌豆花下猫]]></dc:creator><pubDate>Mon, 24 Jul 2023 15:21:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rCf4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 12th issue of Python Trending Weekly, a weekly newsletter about Python, AI and general programming techniques. The <a href="https://pythoncat.top/posts/2023-07-22-weekly">original version</a> of the weekly publication was written in Chinese, and what you are reading here is the English version translated by ChatGPT.</p><p>Most of the content shared here is in English, with a small portion in Chinese, which is indicated in the title. It took a lot of courage for me to publish this weekly publication, originally intended for Chinese readers, to the English-speaking world. Your feedback is welcome, and I appreciate your <a href="https://pythoncat.substack.com/s/python-trending-weekly">subscription</a> and support!</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pythoncat.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://pythoncat.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>&#129412; Articles &amp; Tutorials</strong></h2><ol><li><p><a href="https://martinheinz.dev/blog/101">Debugging Crashes and Deadlocks in Python using PyStack</a></p></li></ol><p>Introduces a powerful tool called <strong>PyStack</strong> that can solve difficult debugging problems such as deadlocks, program hangs, segmentation faults, and debugging Python and C/C++ mixed applications. It supports two debugging methods: attaching to a running process or analyzing core dump files of a crashed process.</p><ol start="2"><li><p><a href="https://bitestreams.com/blog/fastapi_template/">FastAPI Project Template</a></p></li></ol><p>A comprehensive FastAPI project template with CI/CD, Docker, PostgreSQL, Makefile, unit/integration testing, linting, and type checking.</p><ol start="3"><li><p><a href="https://davidvujic.blogspot.com/2023/07/python-fastapi-microservices-with-polylith.html">Python FastAPI Microservices with Polylith</a></p></li></ol><p><strong>Polylith</strong> is a software architecture framework that decomposes a system into testable and reusable independent units. The author combines FastAPI with the Polylith architecture to develop a project template.</p><ol start="4"><li><p><a href="https://juejin.cn/post/7257321872425058359">Python Logging Module: Practical Applications and Best Practices</a> (Chinese)</p></li></ol><p>Provides a detailed analysis of the <strong>logging</strong> module, covering basic introduction, practical applications, and best practices. It explains how to efficiently use it for logging and how to avoid common pitfalls.</p><ol start="5"><li><p><a href="https://codesolid.com/benchmarking-python-and-rust-async-web-server-performance/">Benchmarking Python and Rust Async Web Server Performance</a></p></li></ol><p>The article uses JMeter to separately test the Rust Axum framework and the Python Blacksheep framework. Can you guess the outcome of the tests?</p><ol start="6"><li><p><a href="http://vra.github.io/2023/07/14/dinov2-retrieval/">dinov2_retrieval: An Image Retrieval Application Based on DINOv2</a> (Chinese)</p></li></ol><p>Meta has released the <strong>DINOv2</strong> visual pre-training model, which accurately understands the semantic information in images. This article develops a Python tool using it to retrieve the most similar images in a test dataset.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rCf4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rCf4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 424w, https://substackcdn.com/image/fetch/$s_!rCf4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 848w, https://substackcdn.com/image/fetch/$s_!rCf4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 1272w, https://substackcdn.com/image/fetch/$s_!rCf4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rCf4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png" width="1264" height="497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:497,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rCf4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 424w, https://substackcdn.com/image/fetch/$s_!rCf4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 848w, https://substackcdn.com/image/fetch/$s_!rCf4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 1272w, https://substackcdn.com/image/fetch/$s_!rCf4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe259b6c6-9bf4-4179-9823-5f87ba1e000d_1264x497.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="7"><li><p><a href="https://til.simonwillison.net/python/stdlib-cli-tools">CLI Tools Hidden in the Python Standard Library</a></p></li></ol><p>What useful small tools are there in the Python standard library that can be invoked directly with <code>python -m xxx</code>? This article uses <strong>ripgrep</strong> to find dozens of modules and focuses on introducing <code>http.server</code>, <code>base64</code>, <code>asyncio</code>, <code>tokenize</code>, <code>ast</code>, <code>json.tool</code>, <code>random</code>, and other tools.</p><ol start="8"><li><p><a href="https://www.abdulmumin.com/how-to-use-tailwindcss-in-any-python-project">How to Use TailwindCSS in a Python Project?</a></p></li></ol><p>Tailwind is a CSS framework that has been popular in frontend development in recent years. How can it be applied to Python web projects? The article mainly introduces the <code>tailwindpie</code> library and demonstrates how to use it in a Flask project to achieve automatic installation and configuration of TailwindCSS.</p><ol start="9"><li><p><a href="https://dev.to/karishmashukla/a-practical-guide-to-metaprogramming-in-python-691">Practical Guide to Metaprogramming in Python</a></p></li></ol><p>Introduces several mechanisms of metaprogramming in Python: decorators, metaclasses, function and class decorators, dynamic code generation, as well as keywords and built-in functions commonly used in metaprogramming.</p><ol start="10"><li><p><a href="https://blog.stealthrocket.tech/how-cpython-prints-stack-traces/">How Does CPython Print Stack Traces?</a></p></li></ol><p>A hardcore long article that explains how CPython represents the call stack of a program and how it resolves bytecode addresses to source code line numbers. The article analyzes the internal mechanisms of CPython and provides useful information for CPython performance analysis and debugging.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_jQ4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_jQ4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 424w, https://substackcdn.com/image/fetch/$s_!_jQ4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 848w, https://substackcdn.com/image/fetch/$s_!_jQ4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 1272w, https://substackcdn.com/image/fetch/$s_!_jQ4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_jQ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png" width="1000" height="615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:615,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_jQ4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 424w, https://substackcdn.com/image/fetch/$s_!_jQ4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 848w, https://substackcdn.com/image/fetch/$s_!_jQ4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 1272w, https://substackcdn.com/image/fetch/$s_!_jQ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a53eb6b-e1fa-4ea0-97e2-31c889e4eb6c_1000x615.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="11"><li><p><a href="https://switowski.com/blog/pathlib/">Pathlib for Path Operations</a></p></li></ol><p>Pathlib is a library for directory-related operations in Python, and it should be the most user-friendly one. The article provides a detailed introduction to its common usage, compares it with other commonly used tools, and performs performance analysis for some scenarios.</p><ol start="12"><li><p><a href="https://newsletter.techworld-with-milan.com/p/stack-overflow-architecture">Software Architectures of Stack Overflow, Shopify, and Levels.fyi</a></p></li></ol><p>The article discusses the software architectures of three major websites.</p><ol start="13"><li><p><a href="https://dev.to/alexomeyer/10-must-know-patterns-for-writing-clean-code-with-python-56bf">10 Tips for Writing Clean Python Code</a></p></li></ol><p>The readability and maintainability of code cannot be emphasized enough! This article introduces some basic principles that reflect the programming literacy of programmers.</p><ol start="14"><li><p><a href="https://engineering.fb.com/2023/06/27/developer-tools/meta-developer-tools-open-source/">Meta Developer Tools: A Programming System Supporting Large-Scale Collaboration</a></p></li></ol><p>What developer tools do thousands of Meta developers use to support large-scale collaboration? The article introduces several open-source tools (<a href="https://engineering.fb.com/2022/11/15/open-source/sapling-source-control-scalable/">Sapling</a> version control, <a href="https://engineering.fb.com/2023/04/06/open-source/buck2-open-source-large-scale-build-system/">Buck2</a> build system, <a href="https://fbinfer.com/">Infer</a>/<a href="https://engineering.fb.com/2017/10/19/android/open-sourcing-racerd-fast-static-race-detection-at-scale/">RacerD</a>/<a href="https://jestjs.io/">Jest</a> testing and static analysis), and Meta's official blog also has an article introducing the developer workflow <a href="https://developers.facebook.com/blog/post/2022/11/15/meta-developers-workflow-exploring-tools-used-to-code/">Meta Developer Workflow: Exploring Tools Used to Code</a>.</p><h2><strong>&#128063;&#65039;Projects &amp; Resources</strong></h2><p>1&#12289;<a href="https://www.reddit.com/r/Python/comments/111y9o2/python_projects_with_best_practices_on_github/">Which Python projects on GitHub are worth recommending for learning?</a></p><p>Which projects on Github have applied best practices and have a strong and good architecture? This is a post on Reddit, you can go and see what everyone recommends.</p><p>2&#12289;<a href="https://github.com/gto76/python-cheatsheet">python-cheatsheet: Python Quick Reference Guide</a></p><p>A very comprehensive Python manual, in addition to the Github repository, there are also online websites and PDF versions. (star 33K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G8dl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G8dl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 424w, https://substackcdn.com/image/fetch/$s_!G8dl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 848w, https://substackcdn.com/image/fetch/$s_!G8dl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 1272w, https://substackcdn.com/image/fetch/$s_!G8dl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G8dl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png" width="1107" height="331" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:331,&quot;width&quot;:1107,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G8dl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 424w, https://substackcdn.com/image/fetch/$s_!G8dl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 848w, https://substackcdn.com/image/fetch/$s_!G8dl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 1272w, https://substackcdn.com/image/fetch/$s_!G8dl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed7ec989-b392-4fca-85a1-c28494900c5c_1107x331.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>3&#12289;<a href="https://github.com/pengzhile/pandora">pandora: Pandora, a ChatGPT that lets you breathe smoothly</a> (Chinese)</p><p>A project open-sourced by Chinese developers, it implements the main operations of the web version of ChatGPT, which can solve many pain points of accessing ChatGPT in China. (star 18.6K)</p><p>4&#12289;<a href="https://github.com/web2py/py4web">py4web: Database-driven Web development framework</a></p><p>This framework can quickly develop database-driven Web applications. It is based on the popular full-stack framework <a href="https://github.com/web2py/web2py">web2py</a>, but it is 10-20 times faster than the latter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xx_p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xx_p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 424w, https://substackcdn.com/image/fetch/$s_!xx_p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 848w, https://substackcdn.com/image/fetch/$s_!xx_p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 1272w, https://substackcdn.com/image/fetch/$s_!xx_p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xx_p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png" width="800" height="558" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:558,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xx_p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 424w, https://substackcdn.com/image/fetch/$s_!xx_p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 848w, https://substackcdn.com/image/fetch/$s_!xx_p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 1272w, https://substackcdn.com/image/fetch/$s_!xx_p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25f1f59f-b051-4574-ba83-4ba607b4b5d2_800x558.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>5&#12289;<a href="https://www.oschina.net/p/fastapi-vue-admin">FastAPI-Vue-Admin: Agile development framework based on FastAPI+Vue</a> (Chinese)</p><p>An agile development framework carefully crafted based on FastAPI, Vue2.x, ElementUI, MySQL, etc., implementing a pluggable component-based development method. A Chinese work (paid), with comprehensive Chinese support.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!USvo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!USvo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 424w, https://substackcdn.com/image/fetch/$s_!USvo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 848w, https://substackcdn.com/image/fetch/$s_!USvo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 1272w, https://substackcdn.com/image/fetch/$s_!USvo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!USvo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png" width="1182" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!USvo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 424w, https://substackcdn.com/image/fetch/$s_!USvo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 848w, https://substackcdn.com/image/fetch/$s_!USvo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 1272w, https://substackcdn.com/image/fetch/$s_!USvo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac76a8a5-f35b-4ff7-920c-764b8d92faa1_1182x614.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>6&#12289;<a href="https://github.com/sunner/ChatALL">ChatALL: Chat with ChatGPT, Bing Chat, Bard, Alpaca, Claude, Xunfei Starfire, Wenxin Yiyi, etc. at the same time</a> (Chinese)</p><p>The project, known in Chinese as "Qi Dao", allows for simultaneous chat with multiple AIs to obtain the best answer. (star 8.2K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!isrC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!isrC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 424w, https://substackcdn.com/image/fetch/$s_!isrC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 848w, https://substackcdn.com/image/fetch/$s_!isrC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 1272w, https://substackcdn.com/image/fetch/$s_!isrC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!isrC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!isrC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 424w, https://substackcdn.com/image/fetch/$s_!isrC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 848w, https://substackcdn.com/image/fetch/$s_!isrC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 1272w, https://substackcdn.com/image/fetch/$s_!isrC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af2fec7-8319-4107-9c93-93112cec0ee5_3024x1890.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>7&#12289;<a href="https://github.com/jina-ai/vectordb">vectordb: A Python vector database</a></p><p>A vector database developed in pure Python, supporting CURD and powerful extensibility (sharding and replication). It uses <a href="https://github.com/docarray/docarray">DocArray</a> as the engine to drive vector search logic, and uses <a href="https://github.com/jina-ai/jina">Jina</a> to ensure efficient and scalable indexing services.</p><p>8&#12289;<a href="https://github.com/grantjenks/python-sortedcontainers">python-sortedcontainers: Ordered container types (ordered lists, ordered dictionaries, and ordered sets)</a></p><p>An ordered container library implemented in pure Python, providing ordered versions of lists, sets, and dictionaries, with API compatibility, and often faster than C implementations. The user guide provides several performance comparison reports, and the data is impressive. (star 3K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fm9f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fm9f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 424w, https://substackcdn.com/image/fetch/$s_!Fm9f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 848w, https://substackcdn.com/image/fetch/$s_!Fm9f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 1272w, https://substackcdn.com/image/fetch/$s_!Fm9f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fm9f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png" width="854" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:854,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fm9f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 424w, https://substackcdn.com/image/fetch/$s_!Fm9f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 848w, https://substackcdn.com/image/fetch/$s_!Fm9f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 1272w, https://substackcdn.com/image/fetch/$s_!Fm9f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c8008c2-f9a1-4bc5-b22e-291f65f5bade_854x684.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>9&#12289;<a href="https://github.com/pallets/quart">quart: An asynchronous Python Web framework</a></p><p>This is an asynchronous version of the Flask framework, supporting the quick transformation of Flask projects into asynchronous support. (star 2K)</p><p>10&#12289;<a href="https://github.com/RayVentura/ShortGPT">ShortGPT: An AI framework for automatically generating short video content</a></p><p>A powerful automated content generation framework that simplifies video creation, material acquisition, subtitle generation, voiceover synthesis, and editing tasks. (star 1.4K)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DgVg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DgVg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 424w, https://substackcdn.com/image/fetch/$s_!DgVg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 848w, https://substackcdn.com/image/fetch/$s_!DgVg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 1272w, https://substackcdn.com/image/fetch/$s_!DgVg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DgVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png" width="961" height="626" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29057c49-79f3-441d-8891-1bb07387d82f_961x626.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:961,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DgVg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 424w, https://substackcdn.com/image/fetch/$s_!DgVg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 848w, https://substackcdn.com/image/fetch/$s_!DgVg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 1272w, https://substackcdn.com/image/fetch/$s_!DgVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29057c49-79f3-441d-8891-1bb07387d82f_961x626.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#128034;Podcasts &amp; Videos</strong></h2><p>1&#12289;<a href="https://pythonhunter.org/episodes/ep41">Snake Catcher Says Ep 41: Chat with Penguin about CPython optimization and the work of the compiler group in big companies</a> (Chinese)</p><p>The guest of this podcast has appeared in the 7th issue of our weekly, he added <a href="https://github.com/python/cpython/issues/101632">return constant instruction to CPython</a>, the program talked about his work on CPython and the situation of doing compiler development in Tencent.</p><p>2&#12289;<a href="https://www.pythonshow.com/p/07-the-robyn-python-web-framework#details">The Python Show 07 - Interview with the author of Robyn Web framework</a></p><p><strong>Robyn</strong> is a lightweight, high-performance Python Web framework developed in Rust. This podcast discussed topics related to Robyn.</p><p>3&#12289;<a href="https://www.youtube.com/playlist?list=PLt4L3V8wVnF4GJb8dekLGTNx44FNIFwdv">80 videos of the 2023 Python Web Conference</a></p><p>The Python Web Conference (Python Web Conf) held its 5th edition this year, and related video materials were released last week, covering topics such as artificial intelligence/machine learning, big data, CI/CD, Serverless, security, containers, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VRGb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VRGb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 424w, https://substackcdn.com/image/fetch/$s_!VRGb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 848w, https://substackcdn.com/image/fetch/$s_!VRGb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 1272w, https://substackcdn.com/image/fetch/$s_!VRGb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VRGb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2312b3df-c447-4809-8638-4d7afee21406_1589x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VRGb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 424w, https://substackcdn.com/image/fetch/$s_!VRGb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 848w, https://substackcdn.com/image/fetch/$s_!VRGb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 1272w, https://substackcdn.com/image/fetch/$s_!VRGb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2312b3df-c447-4809-8638-4d7afee21406_1589x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>4&#12289;<a href="https://thecreatorsai.com/p/what-to-watch-about-ai-6-youtube">About AI content: 6 YouTube channels recommended</a></p><p>Want to understand AI? Want to watch videos related to ChatGPT? Want to discover the latest trendy AI tools? Here are 6 YouTube channels recommended.</p><p>5&#12289;<a href="https://www.xiaoyuzhoufm.com/episode/64b4f4c5d0844ea812ce31e9">Drop Your Weapon 013&#65372;I don't want to work either, I just want to find a shore</a> (Chinese)</p><p>This is my favorite podcast I heard this week! This episode discussed topics related to employment and life choices. (If you are a college entrance examination graduate, you can listen to the 11th special issue of the college entrance examination <a href="https://www.xiaoyuzhoufm.com/episode/647c8bb653a5e5ea14dbffad">9 years after becoming the top scholar, I am still having nightmares about the college entrance examination</a>)</p><h2><strong>&#128049;Sponsor &amp; Support</strong></h2><p>If you find the weekly valuable, feel free to <a href="https://img.pythoncat.top/wechat_code.png">appreciate</a> or <a href="https://www.buymeacoffee.com/pythoncat">buy me coffee</a> to support!</p><p>If you like the weekly, please share it with others who need it, so that more people can benefit from it&#65374;</p><h2><strong>&#128060;Subscribe Welcome</strong></h2><p><a href="https://img.pythoncat.top/python_cat.jpg">WeChat</a>| <a href="https://pythoncat.top">Blog</a>| <a href="https://pythoncat.substack.com">Email</a> | <a href="https://github.com/chinesehuazhou/python-weekly">Github</a> | <a href="https://t.me/pythontrendingweekly">Telegram</a> | <a href="https://twitter.com/chinesehuazhou">Twitter</a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pythoncat.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://pythoncat.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>