a
    c_n                  
   @   sl   d Z ddlZddlZddlZdd Zedkrhz
e  W n0 eyf Z zeej	 W Y dZ[n
dZ[0 0 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   s  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ddddd | }|jddtdd |jdddd d!d" |jd#ddd d$d" |jd%dd&d' |	 }|j
|j|jd(}|jrd |d< d)|d*< |j}|j}zR|jr8d+d, |D }nt|f}|D ]$}	tj|	|fi | |d- qHW n. ty }
 zt|
W Y d }
~
n
d }
~
0 0 W d    n1 s0    Y  W d    n1 s0    Y  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--no-ensure-asciiensure_asciiZstore_falsez(disable escaping of non-ASCII characters)destr   r	   z--json-linesznparse input using the JSON Lines format. Use with --no-indent or --compact to produce valid JSON Lines output.z--indent   zJseparate items with newlines and use this number of spaces for indentation)r
   r   r	   z--tabZstore_constindent	z9separate items with newlines and use tabs for indentation)r   r   Zconstr	   z--no-indentz/separate items with spaces rather than newlinesz	--compactz1suppress all whitespace separation (most compact))r   r	   )	sort_keysr   r   ),:Z
separatorsc                 s   s   | ]}t |V  qd S )N)jsonloads).0line r   lib/python3.9/json/tool.py	<genexpr>@       zmain.<locals>.<genexpr>
)argparseArgumentParseradd_argumentZFileTypesysstdinstdoutZadd_mutually_exclusive_groupint
parse_argsr   r   r   Zcompactr   r   Z
json_linesr   loaddumpwrite
ValueError
SystemExit)r   r   parsergroupZoptionsZ	dump_argsr   r   Zobjsobjer   r   r   main   sl    






r1   __main__)
__doc__r    r   r#   r1   __name__BrokenPipeErrorexcexiterrnor   r   r   r   <module>   s   8
