o
    f                  
   @   s|   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r<ze  W dS  ey; Z	 ze
e	j W Y dZ	[	dS dZ	[	ww 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rd |d< d(|d)< |jd}zJ|jrd*d+ |D }nt|f}|jd u rtj}n|jjd,dd}|}	|D ]}
tj|
|	fi | |	d- qW d    n1 sw   Y  W n ty } zt|d }~ww W d    d S 1 sw   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_ascii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--tabstore_constindent	z9separate items with newlines and use tabs for indentation)r   r   constr
   z--no-indentz/separate items with spaces rather than newlinesz	--compactz1suppress all whitespace separation (most compact))r   r
   )	sort_keysr   r   ),:
separatorsc                 s   s    | ]}t |V  qd S )N)jsonloads).0line r    /usr/lib/python3.10/json/tool.py	<genexpr>A   s    zmain.<locals>.<genexpr>w
)argparseArgumentParseradd_argumentFileTypesysstdinr   add_mutually_exclusive_groupint
parse_argsr   r   r   compactr   
json_linesr   loadr   stdoutopendumpwrite
ValueError
SystemExit)r   r   parsergroupoptions	dump_argsr   objsoutr   objer   r   r    main   s   







"r>   __main__)__doc__r$   r   r(   pathlibr   r>   __name__BrokenPipeErrorexcexiterrnor   r   r   r    <module>   s    >