mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-05 19:46:54 +00:00
fix
This commit is contained in:
parent
8145a3432e
commit
194dfbf98a
2 changed files with 42 additions and 16 deletions
|
|
@ -20,7 +20,9 @@ def _get_pretty_format(
|
||||||
top_keys: Sequence[str] = (),
|
top_keys: Sequence[str] = (),
|
||||||
unique_values: Sequence[str] = (),
|
unique_values: Sequence[str] = (),
|
||||||
) -> str:
|
) -> str:
|
||||||
def transform_top_keys(pairs: Sequence[Tuple[str, Any]]) -> Sequence[Tuple[str, Any]]:
|
def transform_top_keys(
|
||||||
|
pairs: Sequence[Tuple[str, Any]],
|
||||||
|
) -> Sequence[Tuple[str, Any]]:
|
||||||
transformed_pairs = []
|
transformed_pairs = []
|
||||||
before = [pair for pair in pairs if pair[0] in top_keys]
|
before = [pair for pair in pairs if pair[0] in top_keys]
|
||||||
before = sorted(before, key=lambda x: top_keys.index(x[0]))
|
before = sorted(before, key=lambda x: top_keys.index(x[0]))
|
||||||
|
|
@ -31,32 +33,46 @@ def _get_pretty_format(
|
||||||
transformed_pairs.extend(after)
|
transformed_pairs.extend(after)
|
||||||
return transformed_pairs
|
return transformed_pairs
|
||||||
|
|
||||||
def transform_sort_values(pairs: Sequence[Tuple[str, Any]]) -> Sequence[Tuple[str, Any]]:
|
def transform_sort_values(
|
||||||
|
pairs: Sequence[Tuple[str, Any]],
|
||||||
|
) -> Sequence[Tuple[str, Any]]:
|
||||||
if not sort_values:
|
if not sort_values:
|
||||||
return pairs
|
return pairs
|
||||||
transformed_pairs = []
|
transformed_pairs = []
|
||||||
for (key, value) in pairs:
|
for (key, value) in pairs:
|
||||||
if (key not in sort_values # No sorting requested
|
if (
|
||||||
or not isinstance(value, List) # Value is no list, sorting makes no sense
|
key not in sort_values or
|
||||||
or len(set([type(x) for x in value])) > 1 # Only sort if all list entries are of the same type
|
not isinstance(value, List) or
|
||||||
or any([isinstance(x, (List, Mapping)) for x in value]) # Only sort if all list entries are no list or mapping
|
len({type(x) for x in value}) > 1 or
|
||||||
|
any([isinstance(x, (List, Mapping)) for x in value])
|
||||||
):
|
):
|
||||||
|
# No sorting requested
|
||||||
|
# Value is no list, sorting makes no sense
|
||||||
|
# Only sort if all list entries are of the same type
|
||||||
|
# Only sort if all list entries are no list or mapping
|
||||||
transformed_pairs.append((key, value))
|
transformed_pairs.append((key, value))
|
||||||
continue
|
continue
|
||||||
transformed_pairs.append((key, sorted(value)))
|
transformed_pairs.append((key, sorted(value)))
|
||||||
return transformed_pairs
|
return transformed_pairs
|
||||||
|
|
||||||
def transform_unique_values(pairs: Sequence[Tuple[str, Any]]) -> Sequence[Tuple[str, Any]]:
|
def transform_unique_values(
|
||||||
|
pairs: Sequence[Tuple[str, Any]],
|
||||||
|
) -> Sequence[Tuple[str, Any]]:
|
||||||
if not unique_values:
|
if not unique_values:
|
||||||
return pairs
|
return pairs
|
||||||
print(pairs)
|
print(pairs)
|
||||||
transformed_pairs = []
|
transformed_pairs = []
|
||||||
for (key, value) in pairs:
|
for (key, value) in pairs:
|
||||||
if (key not in unique_values # No unification requested
|
if (
|
||||||
or not isinstance(value, List) # Value is no list, unification makes no sense
|
key not in unique_values or
|
||||||
or len(set([type(x) for x in value])) > 1 # Only unify if all list entries are of the same type
|
not isinstance(value, List) or
|
||||||
or any([isinstance(x, (List, Mapping)) for x in value]) # Only unify if all list entries are no list or mapping
|
len({type(x) for x in value}) > 1 or
|
||||||
|
any([isinstance(x, (List, Mapping)) for x in value])
|
||||||
):
|
):
|
||||||
|
# No unification requested
|
||||||
|
# Value is no list, unification makes no sense
|
||||||
|
# Only unify if all list entries are of the same type
|
||||||
|
# Only unify if all list entries are no list or mapping
|
||||||
transformed_pairs.append((key, value))
|
transformed_pairs.append((key, value))
|
||||||
continue
|
continue
|
||||||
transformed_pairs.append((key, list(dict.fromkeys(value))))
|
transformed_pairs.append((key, list(dict.fromkeys(value))))
|
||||||
|
|
@ -68,7 +84,7 @@ def _get_pretty_format(
|
||||||
transformed_pairs = transform_top_keys(transformed_pairs)
|
transformed_pairs = transform_top_keys(transformed_pairs)
|
||||||
return dict(transformed_pairs)
|
return dict(transformed_pairs)
|
||||||
|
|
||||||
load=json.loads(contents, object_pairs_hook=pairs_first)
|
load = json.loads(contents, object_pairs_hook=pairs_first)
|
||||||
json_pretty = json.dumps(
|
json_pretty = json.dumps(
|
||||||
load,
|
load,
|
||||||
indent=indent,
|
indent=indent,
|
||||||
|
|
|
||||||
|
|
@ -107,8 +107,11 @@ def test_badfile_main():
|
||||||
|
|
||||||
|
|
||||||
def test_sort_values_get_pretty_format():
|
def test_sort_values_get_pretty_format():
|
||||||
ret = main((
|
ret = main([
|
||||||
'--no-sort-keys', '--sort-values=sort_list,wont_sort_list,sort_sub_sub_sub_dict', get_resource_path('sort_values_pretty_formatted_json.json')))
|
'--no-sort-keys',
|
||||||
|
'--sort-values=sort_list,wont_sort_list,sort_sub_sub_sub_dict',
|
||||||
|
get_resource_path('sort_values_pretty_formatted_json.json'),
|
||||||
|
])
|
||||||
assert ret == 1
|
assert ret == 1
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -144,7 +147,11 @@ def test_sort_values_diffing_output(capsys):
|
||||||
"do_not_sort": []
|
"do_not_sort": []
|
||||||
}}
|
}}
|
||||||
'''
|
'''
|
||||||
actual_retval = main(['--no-sort-keys', '--sort-values=sort_list,wont_sort_list,sort_sub_sub_sub_dict', resource_path])
|
actual_retval = main([
|
||||||
|
'--no-sort-keys',
|
||||||
|
'--sort-values=sort_list,wont_sort_list,sort_sub_sub_sub_dict',
|
||||||
|
resource_path,
|
||||||
|
])
|
||||||
actual_out, actual_err = capsys.readouterr()
|
actual_out, actual_err = capsys.readouterr()
|
||||||
|
|
||||||
assert actual_retval == expected_retval
|
assert actual_retval == expected_retval
|
||||||
|
|
@ -154,7 +161,10 @@ def test_sort_values_diffing_output(capsys):
|
||||||
|
|
||||||
def test_uniquevalues_get_pretty_format():
|
def test_uniquevalues_get_pretty_format():
|
||||||
ret = main([
|
ret = main([
|
||||||
'--no-sort-keys', '--unique-values=unique_list,sub_list', get_resource_path('unique_values_pretty_formatted_json.json')])
|
'--no-sort-keys',
|
||||||
|
'--unique-values=unique_list,sub_list',
|
||||||
|
get_resource_path('unique_values_pretty_formatted_json.json'),
|
||||||
|
])
|
||||||
assert ret == 1
|
assert ret == 1
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue