簡體   English   中英

為什么在這個python類中`default`是一個flake8錯誤?

[英]Why is `default` a flake8 error in this python class?

import typing
from dataclasses import dataclass


@dataclass
class Parameter:
    default: typing.Any = None

我在第7行收到了flake8錯誤:

    default: typing.Any = None

錯誤是:

    E704 multiple statements on one line (def)

這是flake8解析中的錯誤嗎?

因此,有好消息也有壞消息。

  • flake8只是其他工具(包括pycodestyle)的包裝
  • 好消息是,據我所知,此問題在pycodestyle 2.3.1中,並已在2.4.0中修復。
  • 壞消息是,當前版本的flake8 3.5.0聲稱與pycodestyle 2.4.0不兼容。 (請參閱flake8常見問題解答,以了解為什么它們甚至不嘗試與包裝工具兼容。)
  • 好消息是,如果您願意在GitLab或GitHub上安裝,則當前的flake8 master支持pycodestyle 2.4.x(以及pyflakes 2.0.x)。
  • 壞消息是尚未分配3.5.0后的里程碑,這意味着沒有人聲稱當前的樹梢已經過測試並且穩定並且可以發布,並且很可能他們實際上還沒有完成測試。 2.4.0,他們只是更改了版本,因為這是他們打算支持的版本。

如果我在干凈的3.7環境中安裝pycodestyle 2.3.1和flake8 3.5.0(和pyflakes 1.6.0),則可以重現此警告。

如果我強迫pip安裝pycodestyle 2.4.0,即使flake8抱怨它,警告也會消失。

如果我在GitLab上安裝了flake8,它會拖入pycodestyle 2.4.0(和pyflakes 2.0.0),並且警告再次消失。

這是不是太奇怪,因為2.4.0要求添加的Python 3.7的支持(盡管其進入的PyPI仍然只列出3.6),並修復與E704的多個漏洞,像這一個 ,但我無法找到具體的快速掃描的相關更改。


不幸的是,由於flake8尚未在2.4.0上進行測試,因此以這種方式修復問題(無論是強制安裝不兼容的版本還是在GitLab上安裝尖端版本)可能會破壞其他功能。

在這種情況下,唯一的真實選擇是:

  • 無論如何都要用手指交叉。
  • 手動運行pycodestyle而不是通過flake8。 (這意味着它的輸出不會與其他工具逐個文件合並,也不會理解flake8等添加的更強大的noqa標志。)
  • 等待flake8達到一個正式支持pycodestyle 2.4.0(或幫助他們完成)的里程碑。
  • 在pycodestyle存儲庫中找到所需的修復程序,並將其反向移植到2.3.1。
  • 禁用此警告(按行,按文件或全局)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM