目前,我正在使用 Django 3.1.4 开发 Python 3.8 项目,我希望以以下方式强制执行代码样式:
将可迭代对象拆分为多行,将括号与其内容保持在不同的行中。例如:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.getenv("DATABASE_NAME", "my_db"),
...
"PORT": os.getenv("DATABASE_PORT", "5432"),
}
}
...
CHOICES = (
(LOCATION, "Location"),
(INTEREST, "Interest"),
(CULTURE, "Culture"),
)
将函数签名参数拆分为多行,其中它们不适合同一行,每行一个参数,以提高可读性。例子:
def test_user_can_filter_all_communities(
self,
filter_field: str,
filter_value: JSONSerializable,
include_results: list,
):
# my code here
...
目前对我来说最重要的是后者。
我曾尝试使用autopep8
、和pylint
,但尽管尝试了不同的配置,但我目前无法使用自动代码格式化程序来实现这一点。yapf
black
当我使用black
时,参数如下所示:
def test_user_can_filter_all_communities(
self, filter_field: str, filter_value: JSONSerializable, include_results: list
):
这让我发疯,因为我喜欢“枚举”我的函数/方法立即采用多少参数。
当我使用yapf
它时会发生什么:
def test_user_can_filter_all_communities(self,
filter_field: str,
filter_value: JSONSerializable,
include_results: list):
不幸的是,它仍然不理想,因为我对变量名很冗长,所以从上面的参数继续缩进在很多时候是不可能的,同时还要强制行长度限制。
我习惯于以这种方式编写代码,这种风格让我更有效率,此外还能帮助我发现代码异味和潜在的错误。但是目前我正在自己开发一个中型代码库,并且通过手动格式化来强制执行这种样式占用了我太多的时间。
是否有任何自动代码格式化程序可以帮助我实现这一目标?或者有人知道如何通过上述方法之一实现这一目标吗?
(我确实记得 3 年前在一个项目中工作,我们使用pylint
or强制执行这种代码样式black
,所以它应该是可行的,但我不知道如何。)
先感谢您。