观看直播:
在YouTube上观看关于这个节目
由我们赞助。
- 查看Talk Python的课程
- 还有Brian的书!
特别嘉宾。Juan Pedro Araque Espinosa (Youtube Chanel: Commit that Line)
Michael #1: 社区状况(通过Jet Brains)
- 本报告介绍了JetBrains进行的第五次年度开发者生态系统调查的综合结果
- 不仅仅是Python,而是我们所有人
- 就总体使用情况而言,Python比Java更受欢迎,而作为主语言的Java比Python更受欢迎。
- 增长最快的5种语言是Python、TypeScript、Kotlin、SQL和Go。
- 大多数受访者(71%)为网络后端开发。
- 虽然陷入了 "你好,我是一名CSS开发人员,很高兴认识你 "的陷阱
- 女性比男性更可能参与数据分析、机器学习和UX/UI设计或研究。
- 与男性相比,女性参与基础设施开发和 DevOps、系统管理或部署的可能性较小。
Brian #2: Cornell - record & replay mock server
- Yael Mintz建议的(而且这是她的项目)
- 介绍博文
- "Cornell 通过其记录和重放功能,在快速和隔离的测试环境中执行端到端的测试,使其变得非常简单。
- 当您的应用程序与多个基于 Web 的服务集成时,在部署到生产之前,端到端的测试非常重要。嘲讽通常是一项乏味的任务。
- vcrpy是一个很棒的库,它可以为单元测试记录和复制 HTTP 交互。它的输出被保存到可重复使用的 "盒式 "文件中。
- 通过用Flask包装vcrpy,Cornell提供了一个轻量级的记录和重放服务器,可以在分布式系统测试中轻松使用,并模拟您测试所需的所有HTTP流量。"
Juanpe #3: Factory boy (with Pydantic by chance)
Factory\_boy允许创建工厂来生成可用作文本固定装置的对象- 过去在episode 193
- 一个工厂需要一个基础对象,并允许非常容易和自然地定义对象的每个字段的默认值。
- 一个人可以为同一个对象拥有许多工厂,可以用来定义同一个对象的不同类型的固定装置
- 它适用于ORM对象(Django, Mongo, SQLAlchemy...
- 如果你有一个使用Pydantic来定义你的对象的项目,factory boy也支持Pydantic,尽管它没有被记录下来,而且是通过一个副作用来实现的
- 在内部,factory boy会生成一个参数字典,在构建模型时被解包。这与pydantic完美配合,并且可以利用factory boy的全部功能,在空中生成pydantic对象
Michael #4: pyinstrument
- Python的调用栈分析器。告诉你为什么你的代码很慢!
- 不要写
python script.py,而是输入pyinstrument script.py - 您的脚本将正常运行,并且在结束时(或者当您按下
^C),Pyinstrument将输出一个彩色的摘要,显示大部分时间花在哪里。Pyinstrument现在可以检测到一个异步任务遇到一个等待,并跟踪这个等待下的异步上下文之外的时间。只需用Pyinstrument包围你的代码即可 - Flask和Django的漂亮中间件示例
Brian #5: Python 3.10现在处于候选发布阶段。RC1刚刚发布。
- RC2计划于2021-09-06发布
- 官方发布计划于2021-10-04发布
- 我们强烈鼓励第三方Python项目的维护者为他们的项目做好3.10的准备。10的兼容性
- 主要变化提醒:
- PEP 623 -- 废弃并准备删除PyUnicodeObject中的wstr成员。
- PEP 604 -- 允许将联合类型写成X | Y
- PEP 612 -- 参数说明变量
- PEP 626 -- 用于调试和其他工具的精确行号。
- PEP 618 -- 为zip添加可选的长度检查。
- bpo-12782:现在正式允许使用括号内的上下文管理器。
- PEP 632 -- 废弃distutils模块。
- PEP 613 -- 明确类型别名
- PEP 634--结构模式匹配:规范
- PEP 635--结构模式匹配:动机和原理
- PEP 636 -- 结构模式匹配:教程
- PEP 644 -- 需要OpenSSL 1.1.1或更新版本
- PEP 624 -- 删除Py\_UNICODE编码器的API
- PEP 597 -- 增加可选的 EncodingWarning
Juanpe #6: Time-machine
- Time-machine在全球范围内模拟日期和时间相关的调用,明显比其他知名的工具如freezgun快。
- 嘲弄是通过用我们想要的任何值替换c级调用来实现的,这意味着库不需要嘲弄个别的导入。
- 嘲弄datetime不能用patch.object来完成,需要在所有使用它的地方进行修补,这可能会使嘲弄所有东西成为一个乏味(和/或缓慢)的过程。
- 日期时间方法(now、today、utcnow...)可以通过设置一个冻结的时间或让时间在模拟调用后滴答作响来进行模拟。
- 它提供了一个简单的上下文管理器来使用它,以及使其使用非常简单的pytest夹具
from datetime import datetime import time\_machine @time\_machine.travel("2021-01-01 21:00") def test\_in\_the\_past(): assert datetime.now() == datetime(2021, 1, 1, 21, 0) --------------------------------- # time\_machine夹具也可用于pytest def test\_in\_the\_past(time\_machine) 。 time\_machine.move\_to(datetime(2021, 1, 1, 21, 0)) assert datetime.now() == datetime(2021, 1, 1, 21, 0) Extras
Michael
- 在官方Python软件库中发现了窃取信用卡的恶意软件和从PyPI下载3万次的软件洗劫了开发者的机器(通过Joe Riedly)
Brian
- TDD的味道--测试和代码第162集
- 正在编写第二版pytest书的毒素和CI章节,希望能在下周发布。
笑话