首页 >后端开发 >Python教程 >如何鼓励开发人员修复已弃用功能的 Python 警告

如何鼓励开发人员修复已弃用功能的 Python 警告

DDD
DDD原创
2025-01-01 00:04:16656浏览

How to encourage developers to fix Python warnings for deprecated features

我们的代码是如此相互依赖!向项目添加依赖项就是代码的完成方式。

每次有人打喷嚏时,都会将新的依赖项添加到项目的某个位置。

我们站在版权辩论的这一边真是太好了,默认情况下是在其他人的工作之上构建东西,而不是向每个人开枪,谁敢看我的代码的方向。但是...谁会一直升级所有这些依赖项?

在完美的世界中,我们是一个社区,我们都将库升级到最新版本,对吧?

错了!开发人员需要被温柔地推动去做正确的事情。是的,轻柔地,这样他们就不会注意到自己被推了???。

第 1 步:首先我们需要听取弃用警告

我们使用的是 pytest,所以这一步对我们来说很简单。

从版本 3.1 开始,pytest 现在会在测试执行期间自动捕获警告并在会话结束时显示它们:

- Pytest:如何捕获警告

像这样:

============================= warnings summary =============================
test_bla_bla_bla.py::test_test
  .../some_file.py:65: PydanticDeprecatedSince20: `pydantic.config.Extra` 
    is deprecated, use literal values instead (e.g. `extra='allow'`). 
    Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide 
    at https://errors.pydantic.dev/2.9/migration/
      extra=Extra.allow,

  .../marshmallow/fields.py:1186: RemovedInMarshammlow4Warning: The 'default' argument
    to fields is deprecated. Use 'dump_default' instead.
      super().__init__(**kwargs)

======================= 1 passed, 2 warnings in 0.12s =======================

第 2 步:选择您想要删除的警告

我看到了棉花糖警告,查看了代码,发现这是一个简单的修复。

所以,我选择RemovedInMarshammlow4Warning。

步骤 3:使弃用警告无法通过测试

同样,我们使用的是 pytest,所以这一步对我们来说也很简单。

只需将其添加到配置文件中:

[tool.pytest.ini_options]
...
filterwarnings = [
    "error::marshmallow.warnings.RemovedInMarshmallow4Warning"
]

- Pytest:控制警告

现在触发此弃用警告的每个测试都将失败。

第 4 步:修复代码

不幸的是,你必须为这里的团队带一份。你必须去修复所有触发此警告的地方。

我知道..这不公平。

这是很多工作,这是乏味的工作,你甚至无法向你的老板吹嘘它,因为它太技术性,并且从他们的角度来看通常被认为是无关紧要的。

这所做的一切都是为了帮助下一个人(不是你),他将升级棉花糖,并且代码中的任何内容都不会被破坏。所以,他们也不会感谢你,因为他们甚至不会注意到你已经做了任何事情。

所以,...我想说的是:有时你需要做正确的事,但没有人会因此而感谢你。

但我会知道的。你会知道的。 ?

第 5 步:向后靠并聆听 Slack 对话和 GitHub 评论

最终,应该会有一个消息让人困惑:他们写的代码和上次一样,但这一次测试失败了,这是怎么回事?

你可以说:“哦,很难说,但我确实看到这是一个已弃用的功能,这一定是原因”。 ?

外部链接

  • Pytest:如何捕获警告
  • Python:警告过滤器

以上是如何鼓励开发人员修复已弃用功能的 Python 警告的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn