搜尋
首頁後端開發Python教學如何鼓勵開發人員修復已棄用功能的 Python 警告

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
您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy陣列上可以執行哪些常見操作?在Numpy陣列上可以執行哪些常見操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的數據分析中如何使用陣列?Python的數據分析中如何使用陣列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表的內存足跡與python數組的內存足跡相比如何?列表的內存足跡與python數組的內存足跡相比如何?May 02, 2025 am 12:08 AM

列表sandnumpyArraysInpythonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,with withOverHeadeBheadaroundAroundaround64byty64-bitsysysysysysysysysyssyssyssyssysssyssys2)

部署可執行的Python腳本時,如何處理特定環境的配置?部署可執行的Python腳本時,如何處理特定環境的配置?May 02, 2025 am 12:07 AM

toensurepythonscriptsbehavecorrectlyacrycrosdevelvermations,分期和生產,USETHESTERTATE:1)Environment varriablesForsimplesettings,2)configurationfilesfilesForcomPlexSetups,3)dynamiCofforComplexSetups,dynamiqualloadingForaptaptibality.eachmethodoffersuniquebeneiquebeneqeniquebenefitsandrefitsandrequiresandrequiresandrequiresca

您如何切成python陣列?您如何切成python陣列?May 01, 2025 am 12:18 AM

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

在什麼情況下,列表的表現比數組表現更好?在什麼情況下,列表的表現比數組表現更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何將Python數組轉換為Python列表?如何將Python數組轉換為Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具