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 (将#修改为@)