1

我有以下 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']))]

第 3 行缩进 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_closure_bracket 更改为 False/True。如果我在第 2 行删除元组中的尾随逗号,那么它会按预期工作,但这违背了在元组中使用尾随逗号的建议。

知道如何改进此设置以删除此额外空间吗?

谢谢,格兰特

4

1 回答 1

0

我今天遇到了完全相同的问题并且能够解决它。配置文件中的第一个参数是这个额外空格的原因: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']))]

即使您的问题是很久以前的问题,我也只是想简要回答一下。也许其他人会遇到这个问题:)

最好的问候,菲利普

于 2021-06-17T15:19:40.270 回答