U
    ad                  
   @   sj   d Z ddlZddlZddlZdd Zedkrfz
e  W n. ek
rd Z zeej	 W 5 dZ[X Y nX dS )a  Command-line tool to validate and pretty-print JSON

Usage::

    $ echo '{"json":"obj"}' | python -m json.tool
    {
        "json": "obj"
    }
    $ echo '{ 1.2:3.4}' | python -m json.tool
    Expecting property name enclosed in double quotes: line 1 column 3 (char 2)

    Nc                  C   s4  d} d}t j| |d}|jddt jdddtjd	 |jd
dt jddddtjd	 |jddddd |jddddd | }|j}|j	}|j
}|j}| |~ zJ|rdd |D }nt|f}|D ] }	tj|	||dd |d qW n, tk
r }
 zt|
W 5 d }
~
X Y nX W 5 Q R X W 5 Q R X d S )Nzpython -m json.toolzZA simple command line interface for json module to validate and pretty-print JSON objects.)progdescriptioninfile?zutf-8)encodingz-a JSON file to be validated or pretty-printed)nargstypehelpdefaultoutfilewz%write the output of infile to outfilez--sort-keys
store_trueFz5sort the output of dictionaries alphabetically by key)actionr
   r	   z--json-linesz&parse input using the jsonlines formatc                 s   s   | ]}t |V  qd S )N)jsonloads).0line r   /usr/lib/python3.8/json/tool.py	<genexpr>,   s     zmain.<locals>.<genexpr>   )	sort_keysindent
)argparseArgumentParseradd_argumentZFileTypesysstdinstdout
parse_argsr   r   r   
json_linesr   loaddumpwrite
ValueError
SystemExit)r   r   parserZoptionsr   r   r   r!   Zobjsobjer   r   r   main   sD    


r*   __main__)
__doc__r   r   r   r*   __name__BrokenPipeErrorexcexiterrnor   r   r   r   <module>   s   $
