In 上个月的新闻综述中,我们报道了 Google 和 Bloomberg Engineering 如何成为前两家 PSF 远见赞助商。 4月底,PSF还宣布微软将其支持提高到了 Visionary 级别。
微软正在向 Python 提供财政支持包装工作组:
作为我们对 PSF 的 15 万美元财务赞助的一部分,我们将把资金集中用于打包工作组,以帮助支付进一步改进 PyPI 和打包生态系统的开发成本。由于最近披露的安全漏洞,可信供应链对我们和 Python 社区来说都是一个关键问题,我们很高兴能够为长期改进做出贡献。 (来源)
除了其 Visionary 赞助商地位之外,微软还有五位 Python 核心开发人员为 Python 做出兼职贡献:Brett Cannon、Steve Dower、Guido van Rossum、Eric Snow 和 Barry Warsaw。
有关 Microsoft 对 Python 和 PSF 支持的更多信息,请查看其官方公告.
看看史蒂夫·道尔的帐户了解多年来 Microsoft 对 Python 的立场如何变化的内幕消息。您还可以在以下网站上聆听 Brett Cannon 分享他在 Microsoft 使用 Python 的经验真正的 Python 播客.
Pallets发布所有核心项目的新主要版本
Pallets 团队及其众多开源贡献者两年的辛勤工作最终为其所有六个核心项目发布了新的主要版本:
- 烧瓶2.0
- 制造2.0
- 金贾3.0
- 点击8.0
- 危险2.0
- 标记安全2.0
所有六个项目都放弃了对 Python 2 和 Python 3.5 的支持,使 Python 3.6 成为受支持的最低版本。以前不推荐使用的代码已被删除,并且添加了一些新的不推荐使用的代码。
影响所有六个项目的一些主要变化包括:
- 将默认分支重命名为
main
- 添加全面的类型注释,使得类型检查用户代码更有用并提供更好的集成IDE
- 使用类似的工具预提交, 黑色的, 和弗莱克8在所有代码库和新的拉取请求中强制执行一致的风格
除了上面列出的全面变化之外,各个项目还有一些有吸引力的新功能。
Flask 变得原生asyncio
支持
根据2020 年 Python 开发者调查,Flask 是最流行的 Python Web 框架。 Flask 2.0 的原生asyncio
支持肯定会让该框架的粉丝们感到高兴。
您可以将从路由到错误处理程序到请求前和请求后函数的所有内容都放入协程中,这意味着您可以使用async def
和await
:
@app.route("/get-data")
async def get_data():
data = await async_db_query(...)
return jsonify(data)
在此示例中,代码片段取自Flask 文档,一个名为的异步视图get_data()
被定义为。它进行异步数据库查询,然后以 JSON 格式返回数据。
烧瓶的asyncio
支持并非没有警告。 Flask 仍然是Web 服务器网关接口 (WSGI)应用程序,并且受到与任何其他 WSGI 框架相同的限制。 Flask 的文档描述了这些限制:
异步函数需要事件循环才能运行。 Flask 作为一个 WSGI 应用程序,使用一个工作线程来处理一个请求/响应周期。当请求进入异步视图时,Flask 将在线程中启动事件循环,在那里运行视图函数,然后返回结果。
每个请求仍然占用一个工作线程,即使对于异步视图也是如此。好处是您可以在视图中运行异步代码,例如进行多个并发数据库查询、对外部 API 的 HTTP 请求等。但是,您的应用程序一次可以处理的请求数量将保持不变。 (来源)
如果您不熟悉异步编程,请查看Python 中的异步 IO:完整演练。您还可以了解 Flask 新功能的详细信息asyncio
来自文章的支持Flask 2.0 中的异步,其中曾出现在PyCoder 周刊通讯。
除了原生的asyncio
支持,Flask 2.0还添加了一些新的路由装饰器,用于常见的HTTP 方法。例如,在 Flask 1.x 中,您声明一个支持POST
方法使用@app.route()
视图装饰器:
@app.route("/submit-form", methods=["POST"])
def submit_form():
return handle_form_data(request.form)
在 Flask 2.0 中,您可以使用以下命令缩短此代码@app.post()
视图装饰器:
@app.post("/submit-form")
def submit_form():
return handle_form_data(request.form)
这是一个很小的变化,但可读性显着提高!
你可以在官方找到Flask 2.0的所有变化变更日志.
Jinja 改进了异步环境
asyncio
Jinja 2.x 中的支持需要补丁系统以及一些注意事项开发人员需要牢记。原因之一是 Jinja 2.x 支持 Python 2.7 和 Python 3.5。
现在所有 Pallets 项目仅支持 Python 3.6+,补丁系统去掉了提供更自然的asyncio
使用 Jinja 3.0 的项目经验。
你可以在官方中找到 Jinja 3.0 的所有变化变更日志.
Click 获得经过彻底修改的 Shell Tab 完成系统
建设伟大命令行界面(CLI)对于应用程序来说可能是一件苦差事。这点击项目通过其友好的 API 帮助减轻了这一负担。
One of the features shell users expect from a CLI is tab completion, which suggests command names, option names, and choice values when a user types a few characters and presses Tab.
Click 始终支持 shell 选项卡补全,但实现很混乱,正如 Pallets 维护者所说大卫·洛德2020 年 3 月 GitHub 问题上指出:
我一直在尝试审查 [一个拉取请求],它添加了基于类型的完成,它让我意识到完成是多么混乱,无论是在 Click 中还是 shell 如何实现和记录其系统。
[W]我们必须重新实现 shell 应该做的事情,例如转义特殊字符、添加空格(目录除外)、排序等。如果用户想要提供自己的补全,他们必须记住也要做这一切。
我们没有理由只返回完成结果。我们已经支持返回描述,想必我们可以扩展更多。如果 Click 可以向完成脚本指示它应该使用 Bash 或 ZSH 提供的其他功能,那不是很酷吗? (来源)
到 2020 年 10 月,Click 的 shell 选项卡补全系统已进行彻底检修,内置了对重击, Zsh, 和鱼。该系统是可扩展的。您可以添加对其他 shell 的支持,并且可以在多个级别上自定义完成建议。
新的完成系统现已在 Click 8.0 中提供,对于希望在用户最喜欢的 shell 中为用户提供友好的 CLI 体验的项目来说是一个巨大的胜利。
您可以在官方上找到 Click 8.0 over 的完整更改列表变更日志.
PyCon US 2021 连接世界各地的 Python 达人
对于美国的 Python 爱好者来说,暮春总是一个激动人心的时刻。美国 PyCon是 Python 最大的年度大会,传统上在四月或五月举行。
今年的 PyCon US 与以往的会议略有不同。原定于宾夕法尼亚州匹兹堡举行PyCon 美国 2021由于 COVID-19 大流行,活动改为仅在线举行。
感觉就像真实会议的虚拟会议
PyCon 美国 2020也是虚拟的,但最后一刻过渡到在线会议让组织者几乎没有时间准备真正的 PyCon 体验。今年,PSF 有充足的时间进行规划,并按照过去 PyCon 美国会议的精神举办了一场令人难以置信的引人入胜的活动。
尽管演讲是预先录制的,但视频是按计划播放的,而不是按需提供。每次演讲都有一个与之关联的聊天室,演讲者可以与参与者互动并回答问题。
会议还设有一个虚拟展览厅,将 Pythonistas 与 Python 世界中的各个组织联系起来,包括微软、谷歌、彭博社、和更多.
不过,PyCon 2021 最吸引人的部分是精心设计的开放空间和休息区。开放空间是类似聚会的小型活动,使与会者能够围绕共同兴趣相互会面和互动。这里为 Python 作者、业余无线电操作员、社区组织者等提供了开放空间。
会议的休息区包括虚拟桌子,允许有限数量的人参加视频会议。任何人都可以抓住一把可用的椅子并参与对话,即使对话已经开始。休息室给 PyCon 带来了真正独特的氛围,具有您在面对面会议中所期望的所有自发性,有效地实现了虚拟会议走廊轨道,这是 PyCon US 的标志之一。
PyCon US 移至线上,让全球更多 Python 爱好者可以参加这次会议。 Python 爱好者不再受旅行和住宿费用的负担,只需支付入场费即可在舒适的家中参加 PyCon。
如果您错过了 PyCon US 2021,您很快就可以在YouTube。在撰写本文时,这些视频仍在后期制作中,但应该会在未来几周内发布。
PyCon US 的目标之一是将 Python 核心开发人员和 Python 用户聚集在一起,讨论该语言的当前状态和未来愿景。每年,Python语言峰会将 Python 实现的维护者聚集在一起,例如CPython, 吡啶, 和Jython,共享信息并解决问题。
今年的语言峰会有几场激动人心的演讲。迪诺·维兰德讨论过Instagram 对 CPython 的改进在其内部以绩效为导向的项目中煤渣, 包括对异步 I/O 的多项增强.
Python创造者吉多·范罗苏姆提出了使 CPython 更快的计划。范罗森的目标是Python 3.11 的 CPython 速度翻倍。性能的提高主要有利于运行 CPU 密集型纯 Python 代码或使用 Python 内置工具和网站的用户。
今年 Python 语言峰会的另一个令人兴奋的特点是 PSF 给出了真正的Python’自己的乔安娜·贾布隆斯基有机会在一系列博客文章中报道峰会的演讲和讨论。您可以在以下位置找到她有关语言峰会的所有文章PSF博客.