Дополнительный отступ в кортеже

У меня есть следующая строка кода Python (2.7).

audit_row_groups = [(key, list(group), ) for key, group in itertools.groupby(audit_rows, lambda row: (row['date'], row['table_name'], row['user_id']))]

Когда yapf форматирует его, я получаю следующее:

audit_row_groups = [
    (key, list(group),
     ) for key, group in itertools.groupby(
         audit_rows, lambda row: (row['date'], row['table_name'], row['user_id']))]

Третья строка имеет отступ 5 пробелов вместо 4. Последняя строка имеет отступ 9 пробелов вместо 8. Затем моя проверка pylint жалуется, что на 3 строке слишком много пробелов.

Я использую yapf 0.30.0 в следующем стиле:

[style]
align_closing_bracket_with_visual_indent=True
allow_multiline_dictionary_keys=True
allow_multiline_lambdas=True
allow_split_before_default_or_named_assigns=False
allow_split_before_dict_value=True
arithmetic_precedence_indication=False
blank_lines_around_top_level_definition=1
blank_line_before_class_docstring=False
blank_line_before_module_docstring=False
blank_line_before_nested_class_or_def=False
coalesce_brackets=False
column_limit=100
continuation_align_style=SPACE
continuation_indent_width=4
dedent_closing_brackets=False
disable_ending_comma_heuristic=True
each_dict_entry_on_separate_line=False
force_multiline_dict=False
i18n_comment=
i18n_function_call=
indent_blank_lines=False
indent_closing_brackets=False
indent_dictionary_value=False
indent_width=4
join_multiple_lines=True
no_spaces_around_selected_binary_operators=
spaces_around_default_or_named_assign=False
spaces_around_dict_delimiters=False
spaces_around_list_delimiters=False
spaces_around_power_operator=False
spaces_around_subscript_colon=False
spaces_around_tuple_delimiters=False
spaces_before_comment=1
space_between_ending_comma_and_closing_bracket=False
space_inside_brackets=False
split_all_comma_separated_values=False
split_all_top_level_comma_separated_values=False
split_arguments_when_comma_terminated=False
split_before_arithmetic_operator=False
split_before_bitwise_operator=False
split_before_closing_bracket=False
split_before_dict_set_generator=False
split_before_dot=False
split_before_expression_after_opening_paren=False
split_before_first_argument=False
split_before_logical_operator=True
split_before_named_assigns=False
split_complex_comprehension=True
split_penalty_after_opening_bracket=300
split_penalty_after_unary_operator=10000
split_penalty_arithmetic_operator=300
split_penalty_before_if_expr=0
split_penalty_bitwise_operator=300
split_penalty_comprehension=80
split_penalty_excess_character=7000
split_penalty_for_added_line_split=9000
split_penalty_import_names=0
split_penalty_logical_operator=300
use_tabs=False

Я уже пытался изменить space_between_ending_comma_and_closing_bracket на False/True. Если я удалю конечную запятую в кортеже в строке 2, тогда он будет работать, как ожидалось, но это противоречит рекомендации использовать конечную запятую в кортеже.

Есть идеи, как я могу улучшить эту настройку, чтобы удалить это лишнее пространство?

Спасибо, Грант

1 ответ

Сегодня я столкнулся с той же проблемой и смог ее решить. Самый первый аргумент в вашем файле конфигурации является причиной этого лишнего пробела: D

Тебе нужно:

      [style]
align_closing_bracket_with_visual_indent=False

Тогда вы получите ожидаемый результат:

      audit_row_groups = [
    (key, list(group),
    ) for key, group in itertools.groupby(
        audit_rows, lambda row: (row['date'], row['table_name'], row['user_id']))]

Даже если ваш вопрос был так давно, я просто хотел кратко на него ответить. Может еще кто столкнется с этой проблемой :)

С уважением, Филипп

Другие вопросы по тегам