Предполагая, что вы не можете выбрать более разумные имена переменных, потому что они сгенерированы машиной, я бы не стал беспокоиться об этом и просто сказал pep8
(или pycodestyle
, или что-то еще, что flake8
фактически использует для проверки соответствия PEP-8), чтобы игнорировать строку :
qobjs &= Q(...) # noqa
(Обновление: вместо того, чтобы полностью игнорировать строку, # noqa: E501
позволит вам игнорировать длину строки, но при этом проверять наличие других проблем.)
Если вы все еще используете максимальную ширину строки по умолчанию, равную 79, рассмотрите возможность использования чего-то более длинного. PEP-8 действительно требует такой ширины только для кода в стандартной библиотеке, и в нем прямо указано, что команды могут договориться о большей ширине.
Ошибка, которую вы получаете, связана с тем, что новая строка после =
считается пробелом, как если бы вы набрали Q(late...gte= worse...filter)
. Вы можете использовать явное продолжение строки:
qobjs &= Q(
latest_visit__visitstatistics__worst_zscore__gte=\
worst_zscore_min_filter)
или используйте более короткие временные имена:
x = 'latest_visit__visitstatistics__worst_zscore__gte'
y = worst_zscore_min_filter
qobjs &= Q(**{x: y})
но я бы предпочел просто прекратить попытки успокоить flake8
в коде, который изначально не должен быть удобочитаемым для человека.
person
chepner
schedule
22.04.2018