a XC?h � @sxdZddlZddlZddlZddlmZdd�Zedkrtz e�Wn0eyrZ ze� e j �WYdZ [ n dZ [ 00dS)aCommand-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 Cs�d}d}tj||d�}|jddtjdd�dtjd �|jd dtd dd �|jd d ddd�|jddddd�|jdd ddd�|��}|jddtdd�|jddddd d!�|jd"dddd#d!�|jd$d d%d&�|� �}|j |j |j d'�}|j �rd|d<d(|d)<|j��}z�|j�r$d*d+�|D�}n t�|�f}|jdu�rDtj}n|jjd,dd�}|�:} |D]$} tj| | fi|��| �d-��q^Wd�n1�s�0YWn.t�y�} zt| ��WYd} ~ n d} ~ 00Wd�n1�s�0YdS).Nzpython -m json.toolzZA simple command line interface for json module to validate and pretty-print JSON objects.)�prog� description�infile�?zutf-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)�destrr 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)rrZconstr z --no-indentz/separate items with spaces rather than newlinesz --compactz1suppress all whitespace separation (most compact))rr )� sort_keysrr)�,�:Z separatorscss|]}t�|�VqdS)N)�json�loads)�.0�line�r�./opt/alt/python39/lib64/python3.9/json/tool.py� A�zmain..�w� )�argparse�ArgumentParser� add_argumentZFileType�sys�stdinrZadd_mutually_exclusive_group�int� parse_argsrrrZcompactrZ json_linesr�loadr �stdout�open�dump�write� ValueError� SystemExit) rr�parser�groupZoptionsZ dump_argsrZobjs�outr �obj�errr�mainst �� � � � � � ���  2r4�__main__) �__doc__r!rr$�pathlibrr4�__name__�BrokenPipeError�exc�exit�errnorrrr�s  >