Make j2y more resilient to differently-nested JSON input
This commit is contained in:
parent
1ac1dee58c
commit
b24f37349a
1 changed files with 6 additions and 3 deletions
|
@ -1,17 +1,20 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from yaml import dump
|
from yaml import dump
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from yaml import CDumper as Dumper
|
from yaml import CDumper as Dumper
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from yaml import Dumper
|
from yaml import Dumper
|
||||||
|
|
||||||
|
from collections.abc import Sized
|
||||||
import json, re, sys
|
import json, re, sys
|
||||||
|
|
||||||
def dict_representer(dumper, d):
|
def dict_representer(dumper, d):
|
||||||
node = dumper.represent_dict(d)
|
node = dumper.represent_dict(d)
|
||||||
# Don't use YAML flow style for large dicts, because the flow style output
|
# Don't use YAML flow style for large dicts, because the flow style output
|
||||||
# only really looks good with a very small number of keys.
|
# only really looks good with a very small number of keys.
|
||||||
if len(d) > 5 or sum(len(v) for v in d.values()) > 30:
|
if len(d) > 5 or sum(len(v) for v in d.values() if isinstance(v, Sized)) > 30:
|
||||||
node.flow_style = False
|
node.flow_style = False
|
||||||
return node
|
return node
|
||||||
Dumper.add_representer(dict, dict_representer)
|
Dumper.add_representer(dict, dict_representer)
|
||||||
|
|
Loading…
Reference in a new issue