Ë
    ùmxi¶   ã                  ó¦  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlZddlZddlZddlZddlZddlmZmZ dd	lmZ ddlZe
rdd
lmZmZmZ ddlmZ ddlZddlmZ ddlZdZ  ejB                  d«      Z"d„ Z#e G d„ d«      «       Z$e G d„ d«      «       Z%e G d„ d«      «       Z&	 	 	 	 	 	 	 	 dd„Z' ed¬«       G d„ d«      «       Z(d„ Z)y)z=
Python representations of the JSON Schema Test Suite tests.
é    )Úannotations)Úsuppress)Úpartial)ÚPath)ÚTYPE_CHECKINGÚAnyN)ÚfieldÚfrozen)ÚRegistry)ÚIterableÚMappingÚSequence)ÚSchema)Ú_VALIDATORSzhttp://localhost:1234z[\W\- ]+c                 óô   — t         j                  j                  d«      } | �t        | «      S t        t        j
                  «      j                  j                  dz  } | j                  «       st        d«      ‚| S )NÚJSON_SCHEMA_TEST_SUITEÚjsonzŸCan't find the JSON-Schema-Test-Suite directory. Set the 'JSON_SCHEMA_TEST_SUITE' environment variable or run the tests from alongside a checkout of the suite.)	ÚosÚenvironÚgetr   Ú
jsonschemaÚ__file__ÚparentÚis_dirÚ
ValueError)Úroots    úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/jsonschema/tests/_suite.pyÚ_find_suiter   "   sh   € Ü�:‰:�>‰>Ð2Ó3€DØÐÜ�D‹zÐä”
×#Ñ#Ó$×+Ñ+×2Ñ2°VÑ;€DØ�;‰;Œ=Üð ó
ð 	
ð €Kó    c                  ó:   — e Zd ZU  ee¬«      Zded<   dd„Zdd„Zy)	ÚSuite)Úfactoryr   Ú_rootc                ó‚   — t        j                  «       D ](  \  }}| j                  |¬«      j                  ||¬«       Œ* y )N)Úname)ÚrunnerÚ	Validator)r   ÚitemsÚversionÚ	benchmark)Úselfr&   r%   r'   s       r   r*   zSuite.benchmark:   sB   € Ü*×0Ñ0Ó2ò 	‰OˆD�)Ø�L‰L˜dˆLÓ#×-Ñ-ØØ#ð .õ ñ	r   c                ó,  — t         |   }|j                  |j                  «      }t        j                  j                  |«      }t        «       j                  t        | j                  dz  ||¬«      |¬«      }t        || j                  dz  |z  |¬«      S )NÚremotes)r   r%   Úuri)Údefault_specificationÚtests)r%   Úpathr-   )r   ÚID_OFÚMETA_SCHEMAÚreferencingr   Úspecification_withr   Úwith_contentsÚ
remotes_inr#   ÚVersion)r+   r%   r'   r.   ÚspecificationÚregistrys         r   r)   zSuite.versionA   s‹   € Ü Ñ%ˆ	Ø—?‘? 9×#8Ñ#8Ó9ˆÜ#×.Ñ.×AÑAÀ#ÓFˆä“:×+Ñ+Ü˜DŸJ™J¨Ñ2¸À3ÔGØ"/ð ,ó 
ˆô ØØ—‘˜gÑ%¨Ñ,Øô
ð 	
r   N©r&   zpyperf.Runner)Úreturnr8   )	Ú__name__Ú
__module__Ú__qualname__r	   r   r#   Ú__annotations__r*   r)   © r   r   r!   r!   4   s   … ñ  Ô,€Eˆ4Ó,óô
r   r!   c                  óX   — e Zd ZU ded<   ded<   ded<   d„ Zdd„Zdd	„Zdd
„Zd„ Zdd„Z	y)r8   r   Ú_pathú%referencing.jsonschema.SchemaRegistryÚ_remotesÚstrr%   c                óR   — | j                  «       D ]  } |j                  di |¤Ž Œ y ©NrA   )Úcasesr*   )r+   ÚkwargsÚcases      r   r*   zVersion.benchmarkY   s(   € Ø—J‘J“Lò 	%ˆDØˆD�N‰NÑ$˜VÓ$ñ	%r   c                óX   — | j                  | j                  j                  d«      ¬«      S )Nú*.json©Úpaths©Ú	_cases_inrC   Úglob©r+   s    r   rI   zVersion.cases]   s    € Ø�~‰~ D§J¡J§O¡O°HÓ$=ˆ~Ó>Ð>r   c                óX   — | j                  | j                  j                  d«      ¬«      S )Nzoptional/format/*.jsonrN   rP   rS   s    r   Úformat_caseszVersion.format_cases`   s!   € Ø�~‰~ D§J¡J§O¡OÐ4LÓ$Mˆ~ÓNÐNr   c                óN   — | j                  | j                  dz  |› d�z  g¬«      S )NÚoptionalz.jsonrN   )rQ   rC   )r+   r%   s     r   Úoptional_cases_ofzVersion.optional_cases_ofc   s*   € Ø�~‰~ T§Z¡Z°*Ñ%<À$ÀÀu¸~Ñ%MÐ$Nˆ~ÓOÐOr   c                ór  ‡— ‰j                  dd| j                  j                  «       j                  dd«      z   «      }ˆfd„|D «       D �ci c]  }|j                  |“Œ }}t        |t        j                  f|«      }t        t        «      5  t        «       |_        d d d «       |S c c}w # 1 sw Y   |S xY w)Nr%   ÚTestú-Ú c              3  ór   •K  — | ].  }|D ]'  }|j                   D ]  } |j                  di ‰¤Ž–— Œ Œ) Œ0 y ­wrH   )r0   Úto_unittest_method)Ú.0ÚgrouprK   ÚtestrJ   s       €r   ú	<genexpr>z/Version.to_unittest_testcase.<locals>.<genexpr>j   sW   øè ø€ ò àØ!òð Ø ŸJ™Jò	ð ð (�×'Ñ'Ñ1¨&Õ1ðØ1ðØ1ñùs   ƒ47)Úpopr%   ÚtitleÚreplacer=   ÚtypeÚunittestÚTestCaser   Ú	ExceptionÚ)_someone_save_us_the_module_of_the_callerr>   )r+   ÚgroupsrJ   r%   ÚmethodÚmethodsÚclss     `    r   Úto_unittest_testcasezVersion.to_unittest_testcasef   s³   ø€ Ø�z‰z˜& &¨4¯9©9¯?©?Ó+<×+DÑ+DÀSÈ"Ó+MÑ"MÓNˆóà#ôö
àð �O‰O˜VÑ#ð
ˆð 
ô �4œ(×+Ñ+Ð-¨wÓ7ˆô
 ”iÓ ñ 	IÜFÓHˆCŒN÷	Ið ˆ
ùò#
÷	Ið ˆ
ús   ÁB'ÂB,Â,B6c              #  óÌ   K  — |D ][  }t        j                  |j                  d¬«      «      D ]1  }t        j	                  || |j
                  | j                  ¬«      –— Œ3 Œ] y ­w)Nzutf-8)Úencoding)r)   Úsubjectr-   )r   ÚloadsÚ	read_textÚ_CaseÚ	from_dictÚstemrE   )r+   rO   r1   rK   s       r   rQ   zVersion._cases_in{   sb   è ø€ Øò 	ˆDÜŸ
™
 4§>¡>¸7 >Ó#CÓDò �Ü—o‘oØØ Ø ŸI™IØ ŸM™Mð	 &ó ó ññ	ùs   ‚A"A$N)r<   úIterable[_Case])r%   rF   r<   rx   )rO   zIterable[Path]r<   rx   )
r=   r>   r?   r@   r*   rI   rU   rX   ro   rQ   rA   r   r   r8   r8   Q   s4   … ð ƒKØ3Ó3à
ƒIò%ó?óOóPòô*r   r8   c                  ót   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
Zded<   dZded<   ed„ «       Zdd„Zy
)ru   r8   r)   rF   rr   ÚdescriptionúMapping[str, Any] | boolÚschemazlist[_Test]r0   Nú
str | NoneÚcommentrA   zSequence[dict[str, str]]r9   c                ó´   — |j                  |«       |j                  d«      D �cg c]  }t        d|d   |d   |d   |d   |dœ|¤Ž‘Œ! }} | dd|i|¤ŽS c c}w )Nr0   r)   rr   rz   r|   )r)   rr   Úcase_descriptionr|   r-   rA   )Úupdaterc   Ú_Test)rn   Údatar-   rJ   ra   r0   s         r   rv   z_Case.from_dict’   s†   € à�‰�FÔð Ÿ(™( 7Ó+ö	
ð ô ð Ø˜Y™Ø˜Y™Ø!% mÑ!4Ø˜H‘~Øñð óð	
ˆð 	
ñ Ñ'˜Ð' $Ñ'Ð'ùò	
s   ¥$Ac           	     ó†   — | j                   D ]2  }|j                  |j                  t        |j                  fi |¤Ž«       Œ4 y ©N)r0   Ú
bench_funcÚfully_qualified_namer   Úvalidate_ignoring_errors)r+   r&   rJ   ra   s       r   r*   z_Case.benchmark¡   s?   € Ø—J‘Jò 	ˆDØ×ÑØ×)Ñ)Ü˜×5Ñ5Ñ@¸Ñ@õñ	r   r;   )	r=   r>   r?   r@   r~   r9   Úclassmethodrv   r*   rA   r   r   ru   ru   †   sM   … ð ÓàƒLØÓØ$Ó$ØÓØ€GˆZÓØ.0€MÐ+Ó0àñ(ó ð(ôr   ru   c              #  ód  K  — | j                  d«      D ]˜  }t        j                  |j                  «       «      }t	        |j                  | «      «      j                  dd«      }|dv r|j                  dk(  s&d|vr#|j                  d«      r|j                  |«      sŒŠt        › d|› �|f–— Œš y ­w)NrM   ú\ú/>   Údraft3Údraft4Útreez$schemaÚdraft)
Úrglobr   rs   rt   rF   Úrelative_tore   rw   Ú
startswithÚMAGIC_REMOTE_URL)r   r%   r.   Úeachr|   Úrelatives         r   r7   r7   ©   s°   è ø€ ð —
‘
˜8Ó$ò 7ˆÜ—‘˜DŸN™NÓ,Ó-ˆä�t×'Ñ'¨Ó-Ó.×6Ñ6°t¸SÓAˆð Ð,Ñ,Ø—I‘I Ò'ð  Ñ'Ø×'Ñ'¨Ô0Ø ×+Ñ+¨DÔ1ð Ü!Ð" ! H :Ð.°Ð6Ó6ñ#7ùs   ‚B.B0F)Úreprc                  óš   — e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   dZded<   d„ Zed„ «       Zd„ fd„Zd„ Z	d„ Z
y)r‚   r8   r)   rF   rr   r€   rz   r   rƒ   r{   r|   ÚboolÚvalidrD   rE   Nr}   r~   c                ó"   — d| j                   › d�S )Nz<Test ú>)r‡   rS   s    r   Ú__repr__z_Test.__repr__Ù   s   € Ø˜×1Ñ1Ð2°!Ð4Ð4r   c                ó�   — dj                  | j                  j                  | j                  | j                  | j
                  g«      S )Nz > )Újoinr)   r%   rr   r€   rz   rS   s    r   r‡   z_Test.fully_qualified_nameÜ   s>   € à�z‰zà—‘×!Ñ!Ø—‘Ø×%Ñ%Ø× Ñ ð	ó
ð 	
r   c                 ó   — y r…   rA   )ra   s    r   ú<lambda>z_Test.<lambda>ç   s   � r   c           	     ó$  ‡ ‡— ‰ j                   rˆˆ fd„}nˆˆ fd„}dj                  dt        j                  d‰ j                  «      t        j                  d‰ j
                  «      t        j                  d‰ j                  «      g«      |_         |‰ «      }|�#t        j                  j                  dd«      dk7  r|S t        j                  j                  dd«      dk7  rt        j                  |«      S  t        j                  |«      |«      S )Nc                ó*   •—  ‰j                   di ‰¤Ž y rH   )Úvalidate©ÚthisrJ   r+   s    €€r   Úfnz$_Test.to_unittest_method.<locals>.fné   s   ø€ Ø�—‘Ñ' Ó'r   c                ó’   •— | j                  t        j                  «      5   ‰j                  di ‰¤Ž d d d «       y # 1 sw Y   y xY wrH   )ÚassertRaisesr   ÚValidationErrorr¤   r¥   s    €€r   r§   z$_Test.to_unittest_method.<locals>.fnì   s=   ø€ Ø×&Ñ&¤z×'AÑ'AÓBñ ,Ø!�D—M‘MÑ+ FÒ+÷,÷ ,ñ ,ús	   ¡=½AÚ_ra   ÚJSON_SCHEMA_DEBUGÚ0ÚJSON_SCHEMA_EXPECTED_FAILURES)rš   rŸ   Ú_DELIMITERSÚsubrr   r€   rz   r=   r   r   r   rg   ÚexpectedFailureÚskip)r+   r²   rJ   r§   Úreasons   ` `  r   r^   z_Test.to_unittest_methodç   sÓ   ù€ Ø�:Š:ö(õ,ð —h‘hàÜ—‘  T§\¡\Ó2Ü—‘  T×%:Ñ%:Ó;Ü—‘  T×%5Ñ%5Ó6ð	ó
ˆŒñ �d“ˆØˆ>œRŸZ™ZŸ^™^Ð,?ÀÓEÈÒLØˆIÜ�Z‰Z�^‰^Ð;¸SÓAÀSÒHÜ×+Ñ+¨BÓ/Ð/à(”8—=‘= Ó(¨Ó,Ð,r   c                ó
  — |j                  | j                  «        |d| j                  | j                  dœ|¤Ž}t        j                  j                  dd«      dk7  r
t        «        |j                  | j                  ¬«       y )N)r|   r:   r¬   r­   )ÚinstancerA   )	Úcheck_schemar|   rE   r   r   r   Ú
breakpointr¤   rƒ   )r+   r'   rJ   Ú	validators       r   r¤   z_Test.validate   so   € Ø×Ñ˜tŸ{™{Ô+Ùð 
Ø—;‘;Ø—]‘]ñ
ð ñ
ˆ	ô
 �:‰:�>‰>Ð-¨sÓ3°sÒ:ÜŒLØ×Ñ D§I¡IÐÕ.r   c                ó„   — t        t        j                  «      5  | j                  |¬«       d d d «       y # 1 sw Y   y xY w)N)r'   )r   r   rª   r¤   )r+   r'   s     r   rˆ   z_Test.validate_ignoring_errors  s3   € Ü”j×0Ñ0Ó1ñ 	/Ø�M‰M IˆMÔ.÷	/÷ 	/ñ 	/ús   š6¶?)r=   r>   r?   r@   r~   r�   Úpropertyr‡   r^   r¤   rˆ   rA   r   r   r‚   r‚   Ç   sh   … ð ÓàƒLØÓØÓà
ƒIØ$Ó$àƒKà3Ó3à€GˆZÓò5ð ñ
ó ð
ñ '8ó -ò2	/ó/r   r‚   c                 óF   — t        j                  d«      j                  d   S )a‡  
    The FQON of the module 2nd stack frames up from here.

    This is intended to allow us to dynamically return test case classes that
    are indistinguishable from being defined in the module that wants them.

    Otherwise, trial will mis-print the FQON, and copy pasting it won't re-run
    the class that really is running.

    Save us all, this is all so so so so so terrible.
    é   r=   )ÚsysÚ	_getframeÚ	f_globalsrA   r   r   rj   rj     s   € ô �=‰=˜Ó×%Ñ% jÑ1Ð1r   )r   r   r%   rF   r.   rF   r<   zIterable[tuple[str, Schema]])*Ú__doc__Ú
__future__r   Ú
contextlibr   Ú	functoolsr   Úpathlibr   Útypingr   r   r   r   Úrer½   rg   Úattrsr	   r
   r4   r   Úreferencing.jsonschemaÚcollections.abcr   r   r   r   ÚpyperfÚjsonschema.validatorsr   r   r”   Úcompiler¯   r   r!   r8   ru   r7   r‚   rj   rA   r   r   ú<module>rÍ      s   ðñõ #å Ý Ý ß %Û Û 	Û 	Û 
Û ç Ý  Û áß;Ñ;å-Ûå -Û à*Ð àˆb�j‰j˜Ó%€òð$ ÷
ð 
ó ð
ð8 ÷1ð 1ó ð1ðh ÷ð ó ððD7Ø
ð7à
ð7ð 
ð7ð "ó	7ñ< ˆUÔ÷E/ð E/ó ðE/óP2r   