Remove pretty_format_json simplejson dependency
* The simplejson module is only needed for <=py25 so replace with builtin json.
* Replace six dependecy for simple Py2 check for convertion to unicode.
* Cleanup quotes.
diff --git a/pre_commit_hooks/pretty_format_json.py b/pre_commit_hooks/pretty_format_json.py
index bb7a3d0..9115077 100644
--- a/pre_commit_hooks/pretty_format_json.py
+++ b/pre_commit_hooks/pretty_format_json.py
@@ -2,11 +2,11 @@
import argparse
import io
+import json
import sys
from collections import OrderedDict
-import simplejson
-import six
+from six import text_type
def _get_pretty_format(contents, indent, ensure_ascii=True, sort_keys=True, top_keys=[]):
@@ -17,18 +17,18 @@
if sort_keys:
after = sorted(after, key=lambda x: x[0])
return OrderedDict(before + after)
- return six.text_type(simplejson.dumps(
- simplejson.loads(
- contents,
- object_pairs_hook=pairs_first,
- ),
+ json_pretty = json.dumps(
+ json.loads(contents, object_pairs_hook=pairs_first),
indent=indent,
ensure_ascii=ensure_ascii,
- )) + "\n" # dumps does not end with a newline
+ separators=(',', ': '), # Workaround for https://bugs.python.org/issue16333
+ )
+ # Ensure unicode (Py2) and add the newline that dumps does not end with.
+ return text_type(json_pretty) + '\n'
def _autofix(filename, new_contents):
- print("Fixing file {}".format(filename))
+ print('Fixing file {}'.format(filename))
with io.open(filename, 'w', encoding='UTF-8') as f:
f.write(new_contents)
@@ -110,16 +110,15 @@
)
if contents != pretty_contents:
- print("File {} is not pretty-formatted".format(json_file))
+ print('File {} is not pretty-formatted'.format(json_file))
if args.autofix:
_autofix(json_file, pretty_contents)
status = 1
-
- except simplejson.JSONDecodeError:
+ except ValueError:
print(
- "Input File {} is not a valid JSON, consider using check-json"
+ 'Input File {} is not a valid JSON, consider using check-json'
.format(json_file),
)
return 1