We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode #413 python-build-standalone finds a home

#413 python-build-standalone finds a home

2024/12/9
logo of podcast Python Bytes

Python Bytes

AI Deep Dive AI Insights AI Chapters Transcript
People
B
Brian
Python 开发者和播客主持人,专注于测试和软件开发教育。
M
Michael
帮助医生和高收入专业人士管理财务的金融教育者和播客主持人。
Topics
Michael: Jiter是一个快速迭代的JSON解析器,由Pydantic团队开发,用于Pydantic和OpenAI项目。它提供三种接口:JsonValue、Jiter和PythonParse,能够高效处理JSON数据,尤其是在处理LLM分阶段输出时表现出色。其速度甚至超过了默认的Rust JSON解析器。 Brian: python-build-standalone项目已转移到Astral维护,这将提高其稳定性,并对依赖它的项目(如uv)产生积极影响。Astral计划更新项目以适应最新的Python版本和CPython构建系统,并解决一些现有限制。该项目已被下载超过7000万次,在Python包管理中扮演着关键角色。 Brian: uv是一个功能强大的Python包管理器,提供快速安装Python、创建虚拟环境和管理包的功能。文章介绍了uv的常用命令,以及如何将其整合到现有工作流程中,包括使用锁文件和固定依赖项等最佳实践。uv的优势在于其速度和一体化特性,简化了Python开发流程。 Michael: moka-py是一个基于Rust的Moka高性能缓存库的Python绑定。它提供同步缓存、TTL、TTI和基于大小的驱逐等功能,并支持同步和异步操作。Moka-py可以作为LRU缓存函数装饰器的替代方案,提高Python代码的性能。其性能在M1 Mac上测试,每秒可执行数百万次缓存获取和设置操作。

Deep Dive

Key Insights

Why is Jiter important for Pydantic and OpenAI?

Jiter is a fast, iterable JSON parser that serves as the backend for Pydantic and is used by OpenAI, including in their Python library for ChatGPT. It enhances the speed and efficiency of JSON data parsing, which is crucial for applications like Pydantic that validate and transform JSON data into Python classes.

What is the significance of Python Build Standalone moving to Astral?

Python Build Standalone, a project providing prebuilt binaries for different architectures, has moved to Astral, ensuring better stability and stewardship. This transition is crucial for tools like UV, pipx, and hatch, which rely on it for Python installations. Astral aims to keep the project up-to-date with Python releases and improve its build and release processes.

How does Mocha-Py enhance Python's caching capabilities?

Mocha-Py is a Python binding for the high-performance Mocha caching library written in Rust. It offers features like thread-safe, in-memory caching, TTL and TTI support, size-based eviction, and concurrency optimizations. Mocha-Py allows Python developers to leverage Mocha's efficient caching mechanisms, including a decorator for function-based caching, enhancing performance in multi-threaded environments.

What are the key features and commands of UV, Python's package manager?

UV is a fast and ambitious package manager for Python that simplifies various tasks including Python installation, virtual environment creation, package management, and dependency pinning. Key commands include 'uv python install' for installing Python, 'uv venv' for creating virtual environments, 'uv pip install' for package installation, and 'uv sync' for managing project dependencies and lock files.

Why should developers consider supporting open-source projects financially?

Supporting open-source projects financially can significantly contribute to their sustainability and improvement. For instance, if every user of a widely-used project like Flask or Gunicorn contributed a small amount, it could transform the project's development and maintenance. This support can ensure that critical tools remain healthy and well-maintained, benefiting the entire developer community.

Chapters
Jiter, a fast iterable JSON parser created by the Pydantic team, is used by OpenAI and offers three interfaces: JsonValue, Jiter, and PythonParse. Its speed and ability to parse partial data make it a valuable tool for handling JSON data efficiently.
  • Jiter is a fast, iterable JSON parser.
  • It's used by Pydantic and OpenAI.
  • It offers three interfaces: JsonValue, Jiter, and PythonParse.

Shownotes Transcript

您好,欢迎收听 Python Bytes,我们将直接为您带来 Python 新闻和头条新闻。这是 2024 年 12 月 9 日录制的第 413 集。我是 Brian Akin。我是 Michael Kennedy。本期节目由我们赞助。因此,请查看我们节目说明中的链接,也请查看 Talk Python Training 和 pythontest.com。那里有课程。当然,还要感谢 Patreon 的支持者们,以及

我们有链接。如果您想联系我们,您可以通过蓝天或 Mastodon 联系我们。链接在节目说明中。如果您正在收听节目,谢谢您。请与朋友分享。另外,如果您想在我们录制时参与讨论,您可以

您可以前往 pythonbytes.fm/live 查看我们下次录制的时间。但通常是太平洋时间上午 10 点星期一。有时也会有所调整。在节假日,谁知道我们会做什么,但到目前为止,我们仍然坚持这个时间。如果您想在您的邮箱收件箱中收到链接,请前往 pythonbytes.fm 注册我们的新闻通讯。我们会将节目说明中的所有链接直接发送到您的收件箱。所以。

Michael,让我们开始吧。让我们开始吧。我想谈谈一点 jitter。也许我今天早上喝了太多的咖啡,或者其他什么。我不知道。你怎么看?Jitter 是来自 Pydantic 团队的东西。这里的想法是,他们需要非常快速的 JSON 解析作为 Pydantic 的基础,对吧?基本上,Pydantic 是关于

我如何使用 Python 类交换、验证和转换 JSON 数据,对吧?转换成 Python 类和类型。是的。所以你希望它很快。Pydantic 的团队创建了这个名为 Jitter (G-I-T-E-R) 的东西,它是一个快速的可迭代 JSON 解析器。现在,如果 Pydantic 的用法没有引起您的注意,OpenAI 也在使用 Jitter,这非常有趣。问问 Chat Ship PT。所以……

他们感兴趣的原因是他们希望能够使用,我相信也是 Pydantic,但他们希望使用

来自 LLMs 的响应,任何使用过 LLMs 的人都知道,直到最近,他们都喜欢以一种渐进的方式吐出答案。对。因此,您可以随着数据的到来解析数据的部分,这很酷。这里有一些部分的例子。您可以去某个地方寻找,我认为可能是在文档网站上或者类似的地方,但是你知道,你可以给它一个,

一个部分形成的字符串,它会给出完美的答案,所以这是

这很整洁。这是它的一个特性。另一个是它比我认为默认的 Rust JSON 解析器更快。即使对于不可迭代的,只是直接解析它,这也是非常令人印象深刻的。好的。然后还有,这就是我们讨论它的原因,还有 Python 解析,它将 JSON 字符串解析为 Python 对象。所以你也可以运行它,这很酷。Jitter 示例。

是的。无论如何。是的。所以你可以使用它来解析不同的部分,基本上,如果你需要一个非常快速的 Python JSON 解析器,你可以使用 Python 解析,它会解析成一个结构。对吧?是的。太棒了。我认为人们可能会对可迭代的迭代 JSON 解析器和返回到这个解析器感兴趣。

迭代 JSON 解析器和一个非常快速的解析器。此外,它是由 Pydantic 的团队 Sam Colvin 和他的团队构建的。是的,非常好。好工作。哦,是的。我认为我对此有几种用途。这很酷。是的,酷。是的。我最近邀请了 Samuel Colvin 参加了……

与 David Seddon 一起讨论构建 Rust 扩展或将 Rust 与 Python 集成等问题,以及 Talk Python。他谈到了这是他们正在构建的东西之一,就像,“哦,好吧,这很有趣。”是的,绝对的。好吧,我要谈谈 Python 预构建版本。

这是一个大新闻,Brian。我很高兴你报道它。所以 Python Build Standalone 是我们在节目中讨论过的一个项目,但我们主要是在与 UV 相关的背景下讨论它。因为如果您使用 UV、UV sync 或 UV install Python 或 UV 虚拟环境或 UV VNV 然后在那里安装和使用 Python,如果它找不到您的系统上的 Python,您的系统上的 Python,它将从 PyTorch 中提取它

Python build standalone,这是一个单独的项目,不是 UV 的一部分。所以我们讨论过这个,但现在的大新闻是,Python build standalone 现在是 astral 的一部分,或者在 astral 的保护伞下,这是巨大的。所以是的,有一个,我们将链接到 Charlie Marsh(astral 的负责人)的一篇文章,文章标题是“Python build standalone 的新家”。还有一个,

它只是说我们将从 Gregory Zork(我不知道,很酷的姓氏)那里接管这个项目的管理。无论如何,这是构建和安装可移植 Python 发行版的基础项目。还有一个链接到 Gregory 的公告。以及围绕它的讨论,例如 Python build standalone 为 UV 提供支持,也为 RIE、pipx 和 hatch 等提供支持。

到目前为止,它已经有 7000 万次下载。哇。非常大的项目,并且对 Python 或 Python 包和使用 Python 的未来发展至关重要。所以 Astral 真的在尝试让你

以及这个 Python build standalone 项目,这是安装 Python 的新方法。对我来说,就是这样。我现在每天都在使用它。百分之百。对我来说也是一样。所以这是一篇关于这个的简短文章,但这很有趣。它首先谈到了这个项目是什么,并谈到了 Python 独立版、Python 发行版的未来。还谈到了

他们对这个项目的想法,看起来他们想让这个项目与 Python 版本保持最新,当然。然后是 CPython 构建系统中的上游更改,可能。然后删除一些……第三是删除该项目的一些现有限制。嗯,现有的限制。它提供了一些基于 MUSL 的 Python 构建版本。它们与 Python 扩展模块不兼容。我不知道这是什么意思,但是……

但是——我不知道 MUSL 是什么,所以我将继续讨论下一个问题。好的。然后改进项目的 Python 构建和发布流程。只是对这个项目进行了良好的管理,我对此感到非常高兴。除此之外,我很感兴趣地阅读了 Charlie Marsh 关于……的一条帖子,它说:“Python 构建下载的受欢迎程度激增,累计下载量超过 7000 万次。”

我还将这条来自蓝天的帖子的链接也添加到节目说明中,因为这很有趣,这是一个有趣的讨论。我在这里学到了一些以前不知道的事情。它说 Python,我不知道这一点,python.org 下载,来自 python.org 的下载,它实际上下载了一个安装程序,该安装程序会在您的机器上从源代码构建 Python。对于 Linux。对于 Linux。好的。它说对于 Linux,

好的。所以对于 Linux。是的,因为 Mac OS 和 Windows 的安装速度太快了。从源代码构建 Python 如果运行测试等,大约需要 10 分钟。好的。是的,因为我不认为我在……上这样做,是的。无论如何。你没有收到找不到 VC VAR's bat 的错误。哦,好的。

我可以说一段时间了。所以,是的,我想对于没有运行 Windows 或 Mac 的人来说,这是一个更大的问题,但这实际上就像所有服务器等等。所以,是的。好吧,我认为这里另一个不太明显的事情是,这个独立构建到底是什么?为什么我们不只是下载安装程序并运行它,或者只是……

获取安装程序的结果并将其放入你的机器中或类似的东西。所以我的理解是非独立版本依赖于系统中的其他基础组件,尤其是在 Linux 中,但在其他地方也是如此。如果您希望能够将其复制过去,则无法这样做。因此,他们正在讨论的事情之一,他们试图实现的四个要点之一……

Charlie 提出的方向是尝试将其中一些更改上游到 CPython 本身。我认为这可能是功能的第一点。是的,上游,不,第二点。将更改上游到 CPython 构建系统,因为他们必须修补 Python 才能使它实际构建

这就是为什么维护它很痛苦的原因。然后你为不同的平台获得多少组合变化,对吧?- 是的。- 因此,尝试说,看,我们已经做了这些事情来使其更简单地构建,依赖性更少。让我们也许将其作为 Python 的一部分。我不知道你怎么样,但我没有看到 UV Python、Python build standalone Python 与系统 Python 之间有任何问题。这不像,“哦,证书无法验证,或者这个东西不起作用,或者它没有

或者一些奇怪的事情,比如依赖项可能丢失。在我看来,它似乎很好。实际上,如果我正在运行服务器或其他什么,我会更担心分别安装它

分别安装并在我要安装它的每台机器上构建它,而不是拥有像,你知道,一个安装程序可以安装到任何地方,因为,你知道。是的。是的。无论如何。是的。我可以告诉你,Pythonbytes.fm 由基于 Python 3.13.1 的 Python 提供支持,该 Python 源自或通过此方法获得。是的。是的。无论如何。

嗯,这是一个大新闻,实际上可能对个人用户没有什么意义,除了我认为我们可以尝试,我们有点担心,你知道,这个项目,它严重依赖于一个人,一个开发人员来维护,我很高兴 astral 现在也帮助维护这个项目,是的,我同意,如果你阅读了 Greg 的公告……

他将 Python build standalone 的管理权转移到 astral,他谈到了 astral 的成员实际上已经成为该项目的主要贡献者,他们一直在外部工作以帮助保持这个项目继续运行,因为他们意识到这个功能的重要性,是的,而且我还知道,我还读到,我不知道是在这里还是在其他地方,但我基本上读到这个项目是,我的意思是 astral 已经工作了好几个月了……是的,这主要是一个……

只是一个官方公告而已。是的。Brian,最后一点想法,就在你那里。它说,这不是 Greg 的公告,正如我在 3 月份关于改变开源优先级的文章中写的那样,这是一个人们在由一个人运行的项目中可能遇到的一个有趣的挑战,对吧?是的。这个人有了孩子,想花更多时间陪伴孩子,感觉项目让他筋疲力尽,于是决定,

嗯,他还谈到,这些天他真的更关心 Rust 而不是 Python,这很好。你不会终生与一项技术结婚。去你内心想去的地方。但这对于由一个人运行的项目来说是一个挑战。我认为这篇文章也值得一读,只是为了让人们了解开源项目起飞时的情况,但这并不一定是一个好选择。

是的。是的,但感谢 Gregory 创建并维护它。他还以 PyOxidizer 项目而闻名,该项目几乎成功了,但并没有让我们获得 Python 应用程序的单个二进制文件。是的,很有趣。好的。是的,我真的很……他确保在移交之前这个项目掌握在可靠的人手中,这真的很酷。是的,绝对的。绝对的。

好的。好的。下一个。下一个。所以我谈到了,这里有一个主题。我谈到了喝太多咖啡后产生的 jitters。好吧,让我们谈谈 mocha。也许如果我们能加入一些热巧克力和糖,它会更好。不,可能不会。所以这个项目,这个项目是由 Delirio 创建的……

它被称为 Mocha Pie。Mocha,让我们从里到外地工作。所以 Mocha 是一个用于 Rust 的高性能并发缓存库。不是像 Redis 这样的并发缓存服务器。想想 SQLite,但用于缓存,对吧?SQLite 是用 C 编写的,而不是 Rust,但它是一种进程内处理方式,这很整洁。它本身的灵感来自 Java 的 Caffeine,对吧?这有点像乌龟一直到最后,就像……

像端口一直到最后。因此,它在字典之上提供了一个缓存实现。它们支持检索的完全并发性以及更新的高预期并发性。好的,线程安全,高度并发内存缓存实现,同步和异步可以受最大条目数、总

加权大小、大小感知逐出等限制,例如将大型内容逐出而不是小型内容。您可以通过最不常用、最近最少使用来控制缓存。就像我想逐出超过两分钟的内容,但如果您根据某些内容有空间,那就没问题。您可以为它们设置生存时间 (TTL)、空闲时间 (TTI)。对,空闲时间是一个非常酷的有趣选项。例如,上次访问是什么时候?因此,如果您有一些旧的内容,但在您的应用程序中经常使用,

然后有一些相对较新的内容,但使用频率不高,最好逐出新的内容而不是旧的内容,对吧?- 是的。- 好的,所以这只是纯粹的 Mocha。MochaPy 是这个的 Python 绑定,我们又来了,用于 Python 的 Rust 库。

他们可能正在为此获得风险投资资金,我告诉你。好的。不,只是开玩笑。有点。所以对于 MochaPi,它有一个同步缓存,它基本上支持线程安全的内存。它只是像包装一样,所以……

所以生存时间、空闲时间、并发性等等,你可以想象到的所有这些东西。所以有一些有趣的方法。您可以简单地说 cache.set 一些值,或者您可以说 cache.get 一些值。这是一种使用方法。另一种方法是,这实际上非常惊人。您可以将其用作 LRU 缓存函数装饰器替代方案。哦,哇。对吧?所以您可以做的一件很容易加快速度的事情,

编写少量代码的 Python 代码,您不必维护太多代码,您只需在其上放置一个装饰器 functools.lrucache,它就会查看所有传入参数的哈希值,并说,如果您传递给我相同的参数,您将获得相同的输出,对吧?它只是这样做,直接在 Python 内存中。但这将由这个高性能并发 Rust 内部库支持。它仍然是进程内的,对吧?所以你可以说……是的,请说,对不起。有了生存时间和空闲时间,你知道……

是的,尤其如此。这很酷。是的,这很酷。关于 Mocha 本身,Rust 版本支持异步行为,有很多讨论,对吧?我想,好吧。如果它具有所有这些异步功能,那么 Python 及其 async 和 await 的情况如何呢?所以我提交了一个问题,我不太喜欢这样做,但这就是你显然提出问题的方式,然后你关闭它。

所以我说道,很棒的项目。由于它说线程安全,高度并发内存实现,那么 Python 异步的情况如何呢?所以他们回答说,如果你在那里放置装饰器,这将有效。还记得我抱怨过 functools 和 innertools 不支持 async 有点奇怪吗?这个,这个类似于 functools 的东西,

也支持异步和同步函数,对吧?所以他们在中心有一个实现,它说,这是一个协程吗?这样做,否则这样做。因此,您可以像我们之前讨论的那样,在异步函数和同步函数上使用缓存装饰器,例如 LRU 缓存。所以没问题。然后我说,那么 cache get 和 set 呢?DeLiro 说,这样做可能没有意义。它需要 230 纳秒。所以你可以每秒进行 440 万次调用。

set 每秒可以进行 130 万次设置,缓存大小为 10000,在一个简单的 M1 Mac 上完全占用。所以你知道吗?可能不需要。但将来可能有一些方法可以扩展它。我不知道。但是是的,我会说可能不需要。可能不需要,因为你可能会添加更多开销来处理异步内容,对吧?是的。而且如果支持的方法是通过装饰器,我们将

或者你需要什么,你可以把你的代码放在一个函数中来做。是的。我的意思是,如果那是 Redis,你绝对需要一个异步版本,因为你正在与另一个服务器通信,并且网络中存在延迟。但是是的,如果你每秒可以执行 400 万次操作,那么可能……我怀疑你每秒无法执行 400 万次 await 操作,但它要低得多。所以 cache get 和 set 实际上只是……这些的好处可能只是为了……因为我们想要一个非常快速的缓存系统或类似的东西。是的。是的,完全正确。而且你……

有很多时候你会说,在这种情况下,我想从缓存中获取这个内容,然后保留一段时间。例如,如果我有一个登录的用户,我想保留他们的用户帐户及其所有详细信息,并且我使用他们的 ID 作为键,以及他们的实际用户对象作为要放入的对象,那就没问题。但你不会将其用作缓存装饰器,因为通常你可能会看到它来自数据库,类似的东西。然后,如果你传入相同的用户,它就像它相似,但它是一个不同的数据库对象。

对象对吧,你会遇到真正奇怪的情况,它们是等效的,但它们不是等效的,你知道,然后你最终不使用缓存,无论如何,我认为这很酷……人们可以查看它,是的,而且它不是……我不相信它在这里非常流行,你知道,100 颗星,它有点像照亮它,但是如果你去 Mocha,你知道它有 1700 颗星,而这只是一个 Python UI,或者……

API 建立在其之上。是的,但它很新。我的意思是,它有几周大了,看起来像。它只是一个婴儿。有 100 颗星是可以的。这很好。是的,实际上很好。是的,这很好。看起来很酷。所以现在你知道。好的。我想回到 UV。我有点处于 UV 的状态。我显然想念阳光。但是有一篇来自 SAS Pegasus 博客的文章

关于 UV,对 Python 快速且雄心勃勃的新包管理器的深入指南。很多人已经写过关于 UV 的文章,这很好。但是我真的很,当我了解 UV Sync 并开始使用它以及使用 UV 的所有不同方法时,我真的很兴奋。它是一个非常强大的工具。所以它不是一件事情。它的设计是多方面的。所以我欣赏这样的文章,但我真的

我真的很喜欢这篇文章。所以它从……开始,用一个有趣的模因,其中包含许多不同的命令来安装 Python、更新它、安装……创建虚拟环境并同步您的需求。所有这些现在都可以使用 UV Sync 完成。你可以在一个地方完成所有这些,这很不错。

我不使用 uvsync。我使用 uvvenv --python313 或类似的东西。但是,你知道,一样。是的,我都在使用,这取决于我是否已经设置了项目。所以它谈到了什么是 uv,为什么要使用它,我们将

假设您已经知道,如果您收听这个播客,因为它非常快。但是关于不同工作流程的很多讨论都谈到了安装,将 UV 集成到您现有的工作流程中,进行安装。但我将跳到最后。

将 UV 集成到您的工作流程中。有一个很酷的备忘单。这篇文章基本上谈论了不同的部分,您可以使用 UV Python install 来安装 Python。您可以使用虚拟环境或 VENV 来创建虚拟环境。它非常快。然后使用 UV pip install 安装包,但也可以安装

您可以构建您的依赖项。就像我们以前使用 pip compile 一样。您可以使用 UV pip compile,但所有这些不同的命令都在一个地方。这篇文章中列出的这些命令实际上是我使用 UV 的方式。这就是为什么我欣赏它。然后讨论如何将其融入您的工作流程以及这意味着什么,

你知道,谈论,我的意思是,其中一些,很多人可能以前没有使用过锁定文件,但是使用 UV 的锁定文件或者它非常容易,你知道,为什么不呢?以及固定您的,固定您的依赖项,只是一些良好的工作流程。无论如何,这都是良好的 Python 项目实践。为什么不呢?

是的。是的,这很好。你还可以为该工具添加更多内容,例如那里的等效 C 表。是的。你知道,有你,有你用于安装 CLI 工具。你可以说 PIP X。是的。只需创建一个虚拟环境并解决问题,并将其添加到路径中以及所有这些事情,而不是 UV 工具安装程序。对。

UV run,对吧?这些东西也是。所以,是的。是的,它缺少这个,你知道,我会反馈给 Corey。所以,原因之一是,这篇文章引起了我的注意,是因为我正在从事一个使用 SAS Pegasus 的项目。所以我经常与 Corey 联系。哦,不错。

是的,但是像 UV,工具,相反,我不再使用 PipEx 了。UV tool install 非常酷。是的,非常酷。是的。我也开始将 Docker 用于某些事情。是的。我不知道。

它有点相似。但是,例如,Glances,这是一个基于 Python 的服务器 UI 可视化工具,您可以简单地说 Docker run Glances,而不是安装 Glances,并且您只需让机器保持更少的接触。是的,这篇文章中有趣的一点是观点。因为一开始,Corey 谈到了……

他通常不是那种会使用像 pipenv 或 pyenv 这样的多工具时尚来安装,来更好地进行虚拟环境和大型项目的人。我喜欢 Hatch,但我并不是那种将 Hatch 用于我的整个工作流程的人。我只是将其用作打包器。

所以,嗯,我和你一样,我并不真的需要一个多合一的工具,但这一个改变了我的想法,我真的很喜欢这个多合一的工具。所以,是的,我仍然没有完全接受项目管理方面,但我喜欢将 UV 用于这些方面。是的。是的。无论如何。嗯,

接下来是什么?我们这里有一个快速的后续内容,我刚刚完成。我做了一些搜索。所以在 PipX 上,所以其中一件事情是,你知道,你说你可以使用 PipX,或者 PipX 上有一个未解决的问题,它说以某种方式集成 UV,对吧?因为 PipX 实际上只是围绕创建虚拟环境、pip install package、pip install -U package 的一个包装器,对吧?所以如果他们只是将内部更改为说 UV pip install,那么 pip

pipx 将突然变得非常棒,这个建议不幸的是已经超过半年了,但它确实有 21 个赞成票,所以你知道什么,是的,谁知道呢,它就在那里,是的,好的,是的,好的,嗯,但这不是我接下来要介绍的内容

来吧,电脑,重生。好了。我认为我们的项目就这些了,对吧?我们进入额外内容了。是的,让我们现在进入额外内容吧。是的,让我们额外添加一些内容。额外。所以我注册了 PyCon。哦,酷。是的,注册是在两天前发布的。我不知道。每当我发布一些信息到蓝天和 Mastodon 上说,我注册了,你呢?无论何时,公告发布时就是这样。所以,我认为是一天半前或类似的时间。所以,有早鸟价和所有详细信息。呃,

如果您想查看它,个人通常需要 450 美元,但如果您在 1 月之前注册,您可以节省 50 美元,这很酷。有很多东西。它包含所有详细的时间表,这总是很有趣的。例如,如果我想确保我参加 Pied Ladies 拍卖,我需要什么时候做?

主要活动是什么时候,招聘会是什么时候等等。所以最重要的是,主要会议时间是 2025 年 5 月 16 日至 5 月 18 日。就是这样。与当前时代相符的口罩政策。万岁。可选且鼓励,但不是必需的。怎么样?好的。我这里还有几个快速的内容。我建议,你知道吗?我偶然发现了一些事情,只是在想,为什么我不支持更多的开源项目?看看我的……

我的依赖项和我正在处理的东西。比如有多少,你知道,如果每个使用 Flask 的人都每月捐 1 美元,每个人都在重要方面使用它,而不是像,哦,我用 Flask 做了一个教程,但不是,我有一个对我来说很重要的项目,我使用 Flask。如果每个人都捐 1 美元,它就会改变——

那个项目。如果每个使用 G Unicorn 的人都捐 1 美元,那就会改变它,对吧?所以我决定,你知道吗,我要去一些项目中找到我使用最多的项目。是的,我找到了四个有赞助的项目。我还想支持 UV 和 Pydantic,但由于某种原因,他们更喜欢公司赞助,或者我尝试过个人赞助,但没有成功。然后像 Beanie 这样的其他一些项目目前没有赞助,但是,你知道,对……

数据库层的东西非常重要。但想想看,你知道,向其中一些项目捐几美元。如果你是一名软件开发人员,这对你来说没有任何区别。总的来说,这将对生态系统的健康产生重大影响。是的。这样想很有趣。就像,你知道,每月少喝几杯咖啡,你就可以帮忙。你可能可以资助三四个项目。是的。是的。是的。

无论如何,我想鼓励人们这样做,但你知道,显然不能,但我认为这没什么大不了的。呃,过来。电脑。由于某种原因非常慢。不知道为什么。好了。呃,这是笑话。所以我先跳过笑话。我们稍后再回来。有两件事我原本没打算讲,但我还是会很快地提一下。呃,是的,这是我的 PyCon 注册信息。还写了一篇简短的,呃,人们说,哦,我的上帝,Hetzner。我们搬到了 Hetzner,他们改变了巨大的事情,他们改变了他们的带宽和价格。这就像一个不,

不,什么都没有的交易,每月多 5 美元。无论如何,我已经写好了,所以人们可以在 Mastodon 上查看。然后,是的,这就是我所有项目的全部内容。然后,当你准备好时,我得到了笑话。所以让我们来做你的。我对这些没有太多评论。我只是想指出一些额外的事情。Pydantic AI 已经发布,Pydantic AI 是一个 Python 代理框架,旨在

“使用生成式 AI 构建生产级应用程序是否不那么痛苦?”除了我没有预料到这一点之外,我对此没有任何评论,但这很有趣。-是的,非常有趣。我看到来自从事机器学习的人的消息或推文或其他什么,说:“你只需要 Pydantic。”我的意思是,很多事情都像,“我这里有一个 JSON 对象,然后我将用其他 JSON 调用其他东西”,只是建议,“嘿,你可能可以使用 Pydantic 来建立这些连接。”我敢打赌 Pydantic 团队也注意到了这一点。-好的。

对也许是社会的一些评论?无论如何,我会留下我认为有趣的其他几篇文章。Blue Sky 宣布,我想这是旧的,这是 8 月份的,但在 Blue Sky 上增加了反毒性功能。我实际上很欣赏其中的一些。我已经遇到过,我曾经遇到过一个喷子。所以有些事情你可以,如果人们……

你可以分离引用的帖子,如果有人引用你,而你不想让他们引用你,你可以与之分离,嗯,有趣,我曾经……隐藏回复,我曾经有一个喷子,你不能删除回复,但我曾经有人对我说的话发表了愚蠢的回复,这显然只是一个机器人或喷子,所以你可以隐藏它,嗯,随着

你知道,随着 Blue Sky 的发展,我们也会遇到喷子。嗯,如果他们还没有影响到你,他们将来可能会影响到你。所以,我很感激有一些功能可以保护自己。所以,就是这样。然后,嗯,这个,我真的不知道该怎么看待它,但 Wired,我认为是一家相当主流的杂志,呃,发布了 Wired 关于保护自己免受政府监控的指南。哇。我,

我只是,这让我很震惊,嗯,我想我们需要这个。我希望我们不需要,但是哇。嗯,就是这样。

是的,你可能也可以对某些州政府这么说。每个州的情况都不同。是的,取决于你的性别等等,在某些地方,情况很微妙。是的。无论如何,这有点令人沮丧,所以也许我们需要一些有趣的东西。我们会的。我不想花所有时间深入这个兔子洞。相反,让我们无限地深入兔子洞。是的。所以看看这个,Brian。一个名叫 Bits 的人非常……

非常个人化,在 Blue Sky 上发布了评论似乎表明这可能是一本教科书,这是印刷的,一本印刷的教科书

LaTeX,好吗?好的。在后面的索引中,第 252 页,有一个关于无限循环的条目。它说,见第 252 页。我太喜欢它了。它太简单了。我喜欢它。是的,它真的很好,就像里面一个小彩蛋,不是吗?是的。是的。

我没有为无限循环看到它。我看到有人为递归做了同样的事情。是的,如果你查看评论,你会发现 Carrington 和 Ritchie 有相同的,我想这可能是 C 语言或其他什么,递归索引下的相同内容。它非常好。人们喜欢它。是的,这很有趣。有人说,对于那些不想费心的人,谷歌搜索递归。你是说递归吗?不。

是的。我有点为那些真正需要知道这意味着什么的人感到难过。祝你好运。是的,祝你好运,嗯?所以,是的,一切都很好。这里一切都很好。我们知道递归和无限循环是什么,但我们将打破循环并离开这里,对吧?是的。是的。让我们打破循环,下次再见。非常感谢。再见。再见各位。