Ë
    ` Úd/   ã                   ó^  — d Z ddlmZ ddlmZ ddlZddlZddlZddlZ	 ddlm	Z	 	 ddlmZ ddlZddlmZ ddlmZmZ  G d	„ d
e«      Zej.                   G d„ de«      «       Zej.                   G d„ de«      «       Zej.                   G d„ de«      «       Zd„ Z ej:                  d¬«      Zej?                  ddddd¬«       ej?                  ddd¬«       ej?                  ddd d!gd d"¬#«       ej?                  d$d%ed&¬'«       ej?                  d(d)¬«       ej?                  d*d+ e	j@                  d,«      ¬-«       ej?                  d.d/¬«       d0„ Z!d1„ Z"ejF                  d2d fd3„Z$ejJ                  ejL                  ejN                  fd4„Z(y# e
$ r ddlZ	Y �Œsw xY w# e
$ r
 ddlmZ Y �Œ~w xY w)5z"
The ``jsonschema`` command line.
é    )ÚJSONDecodeError)ÚdedentN)Úmetadata©Úresolve_name)ÚSchemaError)ÚRefResolverÚvalidator_forc                   ó   — e Zd Zy)Ú_CannotLoadFileN)Ú__name__Ú
__module__Ú__qualname__© ó    ú0/usr/lib/python3/dist-packages/jsonschema/cli.pyr   r      s   „ Ør   r   c                   ó    — e Zd Z ej                  «       Z ej                  «       Z ej                  «       Zed„ «       Z	d„ Z
d„ Zd„ Zd„ Zd„ Zy)Ú
_Outputterc                 ój   — |d   dk(  rt        |d   «      }n|d   dk(  r
t        «       } | ||¬«      S )NÚoutputÚplainÚerror_formatÚpretty)Ú	formatterÚstdoutÚstderr)Ú_PlainFormatterÚ_PrettyFormatter)ÚclsÚ	argumentsr   r   r   s        r   Úfrom_argumentsz_Outputter.from_arguments'   sB   € à�XÑ 'Ò)Ü'¨	°.Ñ(AÓB‰IØ�xÑ  HÒ,Ü(Ó*ˆIÙ˜Y¨v¸fÔEÐEr   c                 óf  — 	 t        |«      }|5  	 t        j                  |«      cd d d «       S # t        $ r0 | j                  |t        j                  «       ¬«       t        «       ‚w xY w# t        $ r0 | j                  |t        j                  «       ¬«       t        «       ‚w xY w# 1 sw Y   y xY w)N©ÚpathÚexc_info)
ÚopenÚFileNotFoundErrorÚfilenotfound_errorÚsysr%   r   ÚjsonÚloadr   Úparsing_error)Úselfr$   Úfiles      r   r+   z_Outputter.load/   s¤   € ð	$Ü˜“:ˆDð
 ñ 	(ð(Ü—y‘y “÷	(ñ 	(øô	 !ò 	$Ø×#Ñ#¨¼¿¹»Ð#ÔGÜ!Ó#Ð#ð	$ûô #ò (Ø×"Ñ"¨´s·|±|³~Ð"ÔFÜ%Ó'Ð'ð(ú÷	(ð 	(ús%   ‚/ �B'‘A+¯9A(Á+9B$Â$B'Â'B0c                 ón   — | j                   j                   | j                  j                  di |¤Ž«       y ©Nr   )Ú_stderrÚwriteÚ
_formatterr(   ©r-   Úkwargss     r   r(   z_Outputter.filenotfound_error=   ó)   € Ø�‰×ÑÐ=˜4Ÿ?™?×=Ñ=ÑGÀÑGÕHr   c                 ón   — | j                   j                   | j                  j                  di |¤Ž«       y r0   )r1   r2   r3   r,   r4   s     r   r,   z_Outputter.parsing_error@   s)   € Ø�‰×ÑÐ8˜4Ÿ?™?×8Ñ8ÑB¸6ÑBÕCr   c                 ón   — | j                   j                   | j                  j                  di |¤Ž«       y r0   )r1   r2   r3   Úvalidation_errorr4   s     r   r9   z_Outputter.validation_errorC   s)   € Ø�‰×ÑÐ;˜4Ÿ?™?×;Ñ;ÑE¸fÑEÕFr   c                 ón   — | j                   j                   | j                  j                  di |¤Ž«       y r0   )Ú_stdoutr2   r3   Úvalidation_successr4   s     r   r<   z_Outputter.validation_successF   r6   r   N)r   r   r   ÚattrÚibr3   r;   r1   Úclassmethodr!   r+   r(   r,   r9   r<   r   r   r   r   r       s\   „ ð �—‘“€JØˆd�g‰g‹i€GØˆd�g‰g‹i€GàñFó ðFò(òIòDòGóIr   r   c                   ó8   — e Zd Z ed«      ZdZd„ Zd„ Zd„ Zd„ Z	y)r   z`        ===[{type}]===({path})===

        {body}
        -----------------------------
        z===[SUCCESS]===({path})===
c                 ó\   — | j                   j                  |ddj                  |«      ¬«      S )Nr'   z{!r} does not exist.©r$   ÚtypeÚbody)Ú
_ERROR_MSGÚformat©r-   r$   r%   s      r   r(   z#_PrettyFormatter.filenotfound_errorW   s2   € Ø�‰×%Ñ%ØØ$Ø'×.Ñ.¨tÓ4ð &ó 
ð 	
r   c                 óª   — |\  }}}dj                  t        j                  |||«      «      }| j                  j	                  ||j
                  |¬«      S )NÚ rB   )ÚjoinÚ	tracebackÚformat_exceptionrE   rF   r   )r-   r$   r%   Úexc_typeÚ	exc_valueÚexc_tracebackÚ	exc_liness          r   r,   z_PrettyFormatter.parsing_error^   s[   € Ø-5Ñ*ˆ�)˜]Ø—G‘GÜ×&Ñ& x°¸MÓJó
ˆ	ð �‰×%Ñ%ØØ×"Ñ"Øð &ó 
ð 	
r   c                 óf   — | j                   j                  ||j                  j                  |¬«      S )NrB   )rE   rF   Ú	__class__r   ©r-   Úinstance_pathÚerrors      r   r9   z!_PrettyFormatter.validation_errori   s1   € Ø�‰×%Ñ%ØØ—‘×)Ñ)Øð &ó 
ð 	
r   c                 ó:   — | j                   j                  |¬«      S )N)r$   )Ú_SUCCESS_MSGrF   ©r-   rT   s     r   r<   z#_PrettyFormatter.validation_successp   s   € Ø× Ñ ×'Ñ'¨]Ð'Ó;Ð;r   N)
r   r   r   r   rE   rW   r(   r,   r9   r<   r   r   r   r   r   J   s.   „ ñ ð	ó€Jð 2€Lò
ò	
ò
ó<r   r   c                   óF   — e Zd Z ej                  «       Zd„ Zd„ Zd„ Zd„ Z	y)r   c                 ó$   — dj                  |«      S )Nz{!r} does not exist.
)rF   rG   s      r   r(   z"_PlainFormatter.filenotfound_errory   s   € Ø'×.Ñ.¨tÓ4Ð4r   c                 óL   — dj                  |dk(  rdn
t        |«      |d   «      S )NzFailed to parse {}: {}
ú<stdin>é   )rF   ÚreprrG   s      r   r,   z_PlainFormatter.parsing_error|   s,   € Ø)×0Ñ0Ø Ò*‰I´°T³
Ø�Q‰Kó
ð 	
r   c                 ó<   — | j                   j                  ||¬«      S )N)Ú	file_namerU   )Ú_error_formatrF   rS   s      r   r9   z _PlainFormatter.validation_error‚   s   € Ø×!Ñ!×(Ñ(°=ÈÐ(ÓNÐNr   c                  ó   — y)NrI   r   rX   s     r   r<   z"_PlainFormatter.validation_success…   s   € Ør   N)
r   r   r   r=   r>   ra   r(   r,   r9   r<   r   r   r   r   r   t   s&   „ ð �D—G‘G“I€Mò5ò
òOór   r   c                 ó*   — d| vrd| z   } t        | «      S )Nú.zjsonschema.r   )Únames    r   Ú_resolve_name_with_defaultrf   ‰   s   € Ø
�$�Ø˜tÑ#ˆÜ˜ÓÐr   zJSON Schema Validation CLI)Údescriptionz-iz
--instanceÚappendÚ	instanceszÑ
        a path to a JSON instance (i.e. filename.json) to validate (may
        be specified multiple times). If no instances are provided via this
        option, one will be expected on standard input.
    )ÚactionÚdestÚhelpz-Fz--error-formata¢  
        the format to use for each validation error message, specified
        in a form suitable for str.format. This string will be passed
        one formatted object named 'error' for each ValidationError.
        Only provide this option when using --output=plain, which is the
        default. If this argument is unprovided and --output=plain is
        used, a simple default representation will be used.
    )rl   z-oz--outputr   r   zÓ
        an output format to use. 'plain' (default) will produce minimal
        text with one line for each error, while 'pretty' will produce
        more detailed human-readable output on multiple lines.
    )ÚchoicesÚdefaultrl   z-Vz--validatorzª
        the fully qualified object name of a validator to use, or, for
        validators that are registered with jsonschema, simply the name
        of the class.
    )rC   rl   z
--base-urizá
        a base URI to assign to the provided schema, even if it does not
        declare one (via e.g. $id). This option can be used if you wish to
        resolve relative references to a particular URI (or local path)
    z	--versionÚversionÚ
jsonschema)rj   ro   Úschemaz=the path to a JSON Schema to validate with (i.e. schema.json)c                 ó¶   — t        t        j                  | xs dg¬«      «      }|d   dk7  r|d   rt        j                  d«      ‚|d   dk(  r
|d   €d|d<   |S )Nz--help©Úargsr   r   r   z3--error-format can only be used with --output plainz"{error.instance}: {error.message}
)ÚvarsÚparserÚ
parse_argsrU   )rt   r    s     r   rw   rw   Í   sr   € Ü”V×&Ñ&¨DÒ,>°X°JÐ&Ó?Ó@€IØ�Ñ˜gÒ%¨)°NÒ*CÜ�l‰lØAó
ð 	
ð �Ñ˜gÒ%¨)°NÑ*CÐ*KØ$Iˆ	�.Ñ!ØÐr   c                 óˆ   — d}|j                  |«      D ]  }d}|j                  | |¬«       Œ |s|j                  | ¬«       |S )NFT©rT   rU   )rT   )Úiter_errorsr9   r<   )rT   ÚinstanceÚ	validatorÚ	outputterÚinvalidrU   s         r   Ú_validate_instancer   Ø   sV   € Ø€GØ×&Ñ& xÓ0ò MˆØˆØ×"Ñ"°ÀeÐ"ÕLðMñ Ø×$Ñ$°=Ð$ÔAØ€Nr   r]   c                 óV   — t        j                  t        t        | ¬«      ¬«      «       y )Nrs   )r    )r)   ÚexitÚrunrw   rs   s    r   Úmainrƒ   ã   s   € Ü‡H�HŒSœ:¨4Ô0Ô1Õ2r   c                 ó  ‡‡— t         j                  | ||¬«      Š	 ‰j                  | d   «      }| d   €t	        |«      | d<   	 | d   j                  |«       | d   r‰j                  | d   }}n	ˆˆfd„}dg}| d	   �t        | d	   |¬
«      nd } | d   ||¬«      }	d}
|D ]  }	  ||«      }|
t        |||	‰¬«      z  }
Œ |
S # t        $ r Y yw xY w# t        $ r }‰j                  | d   |¬«       Y d }~yd }~ww xY w# t        $ r d}
Y Œjw xY w)N)r    r   r   rq   r]   r|   ry   ri   c                 ó¨   •— 	 t        j                  ‰«      S # t        $ r0 ‰j                  dt	        j
                  «       ¬«       t        «       ‚w xY w)Nr\   r#   )r*   r+   r   r,   r)   r%   r   )Ú_r}   Ústdins    €€r   r+   zrun.<locals>.load  sO   ø€ ð(Ü—y‘y Ó'Ð'øÜ"ò (Ø×'Ñ'Ø"¬S¯\©\«^ð (ô ô &Ó'Ð'ð	(ús	   ƒ ˜9Ar\   Úbase_uri)rˆ   Úreferrer)Úresolverr   )rT   r{   r|   r}   )
r   r!   r+   r   r
   Úcheck_schemar   r9   r	   r   )r    r   r   r‡   rq   rU   r+   ri   rŠ   r|   Ú	exit_codeÚeachr{   r}   s      `         @r   r‚   r‚   ç   s€  ù€ Ü×)Ñ)ØØØð *ó €IðØ—‘ 	¨(Ñ 3Ó4ˆð �ÑÐ%Ü!.¨vÓ!6ˆ	�+ÑðØ�+Ñ×+Ñ+¨FÔ3ð �ÒØ#Ÿ.™.¨)°KÑ*@ˆi‰õ	(ð �Kˆ	ð
 
�:Ñ	Ð	*ô Ø˜:Ñ&Øõð 15ð ð
 '�	˜+Ñ& v¸ÔA€IØ€IØò ˆð
	Ù˜D“zˆHð Ô+Ø"Ø!Ø#Ø#ô	ñ ‰Iðð Ðøôa ò Ùðûô ò Ø×"Ñ"Ø# HÑ-Øð 	#ô 	
ô ûðûô< ò 	ØŠIð	ús;   œC ÁC Â$C=Ã	CÃCÃ	C:ÃC5Ã5C:Ã=DÄ
D))Ú__doc__r*   r   Útextwrapr   Úargparser)   rK   Ú	importlibr   ÚImportErrorÚimportlib_metadataÚpkgutilr   Úpkgutil_resolve_namer=   Újsonschema.exceptionsr   Újsonschema.validatorsr	   r
   Ú	Exceptionr   ÚsÚobjectr   r   r   rf   ÚArgumentParserrv   Úadd_argumentro   rw   r   Úargvrƒ   r   r   r‡   r‚   r   r   r   ú<module>rž      s  ðñõ !Ý Û Û Û 
Û ð*Ý"ð2Ý$ó å -ß <ô	�iô 	ð ‡�ô&I�ó &Ió ð&IðR ‡�ô&<�vó &<ó ð&<ðR ‡�ô�fó ó ðò(ð 
!ˆ×	 Ñ	 Ø,ô
€ð × Ñ Øˆ,ØØ	ð
ð	 ô 	ð × Ñ ØÐ
ð
ð ô 
ð × Ñ Øˆ*Ø�hÐØð
ð	 ô 	ð × Ñ Øˆ-Ø	#ð
ð ô ð × Ñ Øð
ð ô ð × Ñ ØØØˆH×Ñ˜\Ó*ð ô ð
 × Ñ ØØ	Hð ô òòð �h‰h�q�rˆló 3ð Ÿ*™*¨S¯Z©Z¸s¿y¹yô 9øðs ò *Þ)ð*ûð
 ò 2ß1Ð1ð2ús"    F §F Æ	FÆFÆF,Æ+F,