如何格式化flake8的Django设置文件

问题描述 投票:5回答:3

我有点痴迷用flake8格式化我的python代码。但是,我找不到在Django的设置文件中解决E501(行太长x> 79个字符)的好方法。

首先它是这样的(4xE501):

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

然后我想出了这个:

AUTH_PASSWORD_VALIDATORS = [{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    }, {
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    }, {
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    }, {
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

但仍然'NAME':django.contrib.auth.password_validation.UserAttributeSimilarityValidator',太长。有没有办法格式化这个或者我应该忽略这个?

python django pep8 flake8
3个回答
2
投票

如果你痴迷于没有得到这个警告而不是你的代码的实际外观,那么你可以通过在断点处添加一个\字符来打破一行python代码(不破坏它的连续性):

例子:

# 1
from some_module import some_method, some_other_method, \
                        a_third_method

# 2
s = "A really very long string, which exist to mesh with your pep8" \
    " warning free obsession. Well, not anymore!!!"    

注意:当你要拆分的行在\内时,{}, [] or ()字符会引发错误,所以你可以这样做:

AUTH_PASSWORD_VALIDATORS = [{
    'NAME': 'django.contrib.auth.password_validation.'
            'UserAttributeSimilarityValidator'
    }, ...

考虑到......这不是那么难看


如果你不想要警告并且你喜欢你的代码,那么你可以添加:

# nopep8 

在你想要免除pep8分析的每一行的末尾。


2
投票

看着Coding style | Django docs发现了这个:

PEP 8的一个例外是我们对线路长度的规定。如果代码看起来非常丑陋或难以阅读,请不要将代码行限制为79个字符。我们允许最多119个字符,因为这是GitHub代码审查的宽度。

即使Django的人也避免它(他们也喜欢使用flake8进行PEP8检查)。所以,如果你制作一个.flake8setup.cfg文件并输入以下内容会更好:

[flake8]
max-line-length = 119

1
投票

作为替代方案(以下重写通过PEP8):

[{"NAME": f"django.contrib.auth.password_validation.{name}"}
 for name in [
    "UserAttributeSimilarityValidator",
    "MinimumLengthValidator",
    "CommonPasswordValidator",
    "NumericPasswordValidator"]]

在python 2中,您可以使用{}".format(name)而不是f""

© www.soinside.com 2019 - 2024. All rights reserved.