微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python格式化程序Black抛出flake8错误多行SQL字符串

如何解决Python格式化程序Black抛出flake8错误多行SQL字符串

我正在尝试将Black格式化程序用于Python代码,作为预提交工作流程的一部分。我也将Flake8用作linter。当涉及多行sql字符串时,Flake8和Black之间似乎存在格式差异。

考虑一个名为 dbtools.py 的简单文件

import sqlite3

conn= sqlite3.connect("test.db")
cursor= conn.cursor()

def getResults(targetNumber):
    cursor.execute(
        """
        with participants_join as (select chat_id,participant from participants where participant != %(targetNumber)s),message_count as (select chat_id,sms_body from messages),contact_names as (select rowid,phone_number,name,alias,source,notes from aliases),>  >distinct_chats as (select distinct chat_id from participants)

        select p.chat_id,pa.participant,count(mc.sms_body) as count,c.name as name,c.alias as alias,c.source as source,c.notes as notes,c.rowid as aliasID from distinct_chats p
        left join participants_join pa on pa.chat_id = p.chat_id
        left join message_count mc on mc.chat_id = p.chat_id
        left join contact_names c on c.phone_number = pa.participant
        group by p.chat_id
    """,{"targetNumber": targetNumber},)

Black无法替换distinct_chats开头的行中的制表符,但确实将制表符替换为其他位置的空格。显然,这会使Flake8引发有关混合制表符和空格以及在代码中包含制表符的错误E101W191。有人可以解释这种行为吗?为什么Black允许制表符和空格混合使用并且不抛出错误或警告?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。