Fix too long floating point number parse problem

- Also include @dougthor42's diff to test the fix
    see: [his diff](https://github.com/pre-commit/pre-commit-hooks/compare/main...dougthor42:high-precision-numbers)
This commit is contained in:
SilverTux 2022-10-06 17:51:41 +02:00
parent 6b03546fc3
commit 629df55544
3 changed files with 7 additions and 2 deletions

View file

@ -1,7 +1,7 @@
from __future__ import annotations from __future__ import annotations
import argparse import argparse
import json import simplejson as json
import sys import sys
from difflib import unified_diff from difflib import unified_diff
from typing import Mapping from typing import Mapping
@ -23,7 +23,7 @@ def _get_pretty_format(
after.sort() after.sort()
return dict(before + after) return dict(before + after)
json_pretty = json.dumps( json_pretty = json.dumps(
json.loads(contents, object_pairs_hook=pairs_first), json.loads(contents, object_pairs_hook=pairs_first, use_decimal=True),
indent=indent, indent=indent,
ensure_ascii=ensure_ascii, ensure_ascii=ensure_ascii,
) )

View file

@ -0,0 +1,3 @@
{
"foo": 4.4257052820783003
}

View file

@ -23,6 +23,8 @@ def test_parse_num_to_int():
('unsorted_pretty_formatted_json.json', 1), ('unsorted_pretty_formatted_json.json', 1),
('non_ascii_pretty_formatted_json.json', 1), ('non_ascii_pretty_formatted_json.json', 1),
('pretty_formatted_json.json', 0), ('pretty_formatted_json.json', 0),
# numbers with high precision should not be modified.
('high_precision_numbers.json', 0),
), ),
) )
def test_main(filename, expected_retval): def test_main(filename, expected_retval):