a
    If                  
   @   sx   d Z ddlZddlZddlZddlmZ dd Zedkrtz
e  W n0 eyr 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)

    N)Pathc                  C   s  d} d}t j| |d}|jddt jdddtjd	 |jd
dtdd 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}z|jr$d*d+ |D }nt|f}|jd u rDtj}n|jjd,dd}|:}	|D ]$}
tj|
|	fi | |	d- q^W d    n1 s0    Y  W n. ty } zt|W Y d }~n
d }~0 0 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outfilez%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>A       zmain.<locals>.<genexpr>w
)argparseArgumentParseradd_argumentZFileTypesysstdinr   Zadd_mutually_exclusive_groupint
parse_argsr   r   r   Zcompactr   Z
json_linesr   loadr   stdoutopendumpwrite
ValueError
SystemExit)r   r   parsergroupZoptionsZ	dump_argsr   Zobjsoutr   objer   r   r   main   st    






2r4   __main__)__doc__r!   r   r$   pathlibr   r4   __name__BrokenPipeErrorexcexiterrnor   r   r   r   <module>   s   >
