Ë
    ` ÚdÙ& ã                  ó�  — d dl mZ d dlmZ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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Zd dlZd d	lmZmZmZmZmZ d d
lmZ d„ Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de"«      Z# G d„ de#e"«      Z$ G d„ de"«      Z% G d„ de%e$e«      Z& G d„ de%e$e«      Z' G d„ de$e«      Z( G d„ de$e«      Z) G d „ d!e$e«      Z* G d"„ d#e$e«      Z+ G d$„ d%e«      Z, G d&„ d'e«      Z- G d(„ d)e«      Z.d*„ Z/ej`                   G d+„ d,e"«      «       Z1ej`                   G d-„ d.e"«      «       Z2y)/é    )Úannotations)ÚdequeÚ
namedtuple)Úcontextmanager)ÚDecimal)ÚBytesIO)ÚTestCaseÚmock)Úpathname2urlN)ÚFormatCheckerÚTypeCheckerÚ
exceptionsÚ	protocolsÚ
validators)Úbugc              #  ól   K  — |D ]+  }|j                  dd«       t        j                  di |¤Ž–— Œ- y ­w)NÚmessagezYou told me to fail!© )Ú
setdefaultr   ÚValidationError)Ú	validatorÚerrorsÚinstanceÚschemaÚeachs        úB/usr/lib/python3/dist-packages/jsonschema/tests/test_validators.pyÚfailr      s8   è ø€ Øò 1ˆØ�‰˜	Ð#9Ô:Ü×(Ñ(Ñ0¨4Ñ0Ó0ñ1ùs   ‚24c                  ór   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestCreateAndExtendc                óH  — | j                  | j                  t        j                  t	        t        j                  «      «       ddi| _        dt        i| _        t        «       | _        t        j                  | j
                  | j                  | j                  ¬«      | _
        y )Nú$idzsome://meta/schemar   )Úmeta_schemar   Útype_checker)Ú
addCleanupÚassertEqualr   Ú_META_SCHEMASÚdictr"   r   r   r#   ÚcreateÚ	Validator©Úselfs    r   ÚsetUpzTestCreateAndExtend.setUp#   s~   € Ø�‰Ø×ÑÜ×$Ñ$Ü”×)Ñ)Ó*ô	
ð "Ð#7Ð8ˆÔØ!¤4˜.ˆŒÜ'›MˆÔÜ#×*Ñ*Ø×(Ñ(Ø—‘Ø×*Ñ*ô
ˆ�ó    c                óè   — | j                  | j                  j                  | j                  j                  | j                  j                  f| j
                  | j                  | j                  f«       y ©N)r%   r)   Ú
VALIDATORSÚMETA_SCHEMAÚTYPE_CHECKERr   r"   r#   r*   s    r   Ú
test_attrszTestCreateAndExtend.test_attrs3   s\   € Ø×Ñà—‘×)Ñ)Ø—‘×*Ñ*Ø—‘×+Ñ+ðð
 —‘Ø× Ñ Ø×!Ñ!ðõ
	
r-   c                ób   — dg i}| j                  | j                  |«      j                  |«       y )Nr   )r%   r)   r   ©r+   r   s     r   Ú	test_initzTestCreateAndExtend.test_init@   s*   € Ø˜"�ˆØ×Ñ˜Ÿ™¨Ó/×6Ñ6¸Õ?r-   c                ó†   — dg i}| j                  |«      }t        |j                  d«      «      }| j                  |g «       y )Nr   Úhello)r)   ÚlistÚiter_errorsr%   ©r+   r   r   r   s       r   Útest_iter_errors_successfulz/TestCreateAndExtend.test_iter_errors_successfulD   s>   € Ø˜"�ˆØ—N‘N 6Ó*ˆ	ä�i×+Ñ+¨GÓ4Ó5ˆØ×Ñ˜ Õ$r-   c           
     óP  — dddigi}| j                  |«      }t        j                  dd|dddigt        dg«      ¬«      }t	        |j                  d«      «      }| j                  t        |«      d«       | j                  |d   j                  «       |j                  «       «       y )Nr   r   zWhoops!Úgoodbye)r   r   r   Úvalidator_valueÚschema_pathé   r   )	r)   r   r   r   r9   r:   r%   ÚlenÚ	_contents)r+   r   r   Úexpected_errorr   s        r   Útest_iter_errors_one_errorz.TestCreateAndExtend.test_iter_errors_one_errorK   s£   € Ø˜I yÐ1Ð2Ð3ˆØ—N‘N 6Ó*ˆ	ä#×3Ñ3ØØØØØ'¨Ð3Ð4Ü˜v˜h›ô
ˆô �i×+Ñ+¨IÓ6Ó7ˆØ×Ñœ˜V› aÔ(Ø×Ñ˜ ™×,Ñ,Ó.°×0HÑ0HÓ0JÕKr-   c                ó¬   — dddidddœddigi}| j                  |«      }t        |j                  d«      «      }| j                  t	        |«      d	«       y )
Nr   r   ÚFirstzSecond!Úasdf)r   r   ÚThirdr>   é   )r)   r9   r:   r%   rB   r;   s       r   Ú test_iter_errors_multiple_errorsz4TestCreateAndExtend.test_iter_errors_multiple_errors\   sb   € àØ˜GÐ$Ø%°FÑ;Ø˜GÐ$ðð
ˆð —N‘N 6Ó*ˆ	ä�i×+Ñ+¨IÓ6Ó7ˆØ×Ñœ˜V› aÕ(r-   c                óú   — t        j                  ddid¬«      }| j                  t         j                  j                  d«       | j                  |j                  d«       | j                  |j                  d«       y )Nr!   Ú	somethingú
my version©r"   ÚversionÚMyVersionValidator)r   r(   r$   r&   Úpopr%   Ú__name__Ú__qualname__©r+   r)   s     r   Ú.test_if_a_version_is_provided_it_is_registeredzBTestCreateAndExtend.test_if_a_version_is_provided_it_is_registeredi   sg   € Ü×%Ñ%Ø Ð,Ø ô
ˆ	ð 	�‰œ
×0Ñ0×4Ñ4°kÔBØ×Ñ˜×+Ñ+Ð-AÔBØ×Ñ˜×/Ñ/Ð1EÕFr-   c                óÌ   — t        j                  ddid¬«      }| j                  t         j                  j                  d«       | j                  t         |i «      «      d«       y )Nr!   rM   rN   rO   z2MyVersionValidator(schema={}, format_checker=None))r   r(   r$   r&   rR   r%   ÚreprrU   s     r   Ú	test_reprzTestCreateAndExtend.test_reprr   sV   € Ü×%Ñ%Ø Ð,Ø ô
ˆ	ð 	�‰œ
×0Ñ0×4Ñ4°kÔBØ×ÑÜ‘˜2“ÓØ@õ	
r-   c                óô   — t        j                  ddid¬«      }| j                  t         j                  j                  d«       | j                  t         |dt        t        d«      «      i«      «      d«       y )Nr!   rM   rN   rO   Úaiè  zNMyVersionValidator(schema={'a': [0, 1, 2, 3, 4, 5, ...]}, format_checker=None))	r   r(   r$   r&   rR   r%   rX   r9   ÚrangerU   s     r   Útest_long_reprz"TestCreateAndExtend.test_long_repr}   sg   € Ü×%Ñ%Ø Ð,Ø ô
ˆ	ð 	�‰œ
×0Ñ0×4Ñ4°kÔBØ×ÑÜ‘˜C¤¤e¨D£kÓ!2Ð3Ó4Ó5ð'õ	
r-   c                ór   — t        j                  i ¬«      }| j                  t         |i «      «      d«       y )N©r"   z)Validator(schema={}, format_checker=None))r   r(   r%   rX   rU   s     r   Útest_repr_no_versionz(TestCreateAndExtend.test_repr_no_versionŠ   s/   € Ü×%Ñ%°"Ô5ˆ	Ø×ÑÜ‘˜2“ÓØ7õ	
r-   c                óÂ   — t        j                  ddid¬«      }| j                  t         j                  j                  d«       | j                  |j                  d«       y )Nr!   rM   zfoo-barrO   ÚFooBarValidator)r   r(   r$   r&   rR   r%   rT   rU   s     r   Ú-test_dashes_are_stripped_from_validator_nameszATestCreateAndExtend.test_dashes_are_stripped_from_validator_names‘   sP   € Ü×%Ñ%Ø Ð,Øô
ˆ	ð 	�‰œ
×0Ñ0×4Ñ4°kÔBØ×Ñ˜×/Ñ/Ð1BÕCr-   c                ó¦   — t        t        j                  «      }t        j                  ddi¬«       | j	                  t        j                  |«       y )NÚidr_   )r'   r   r&   r(   r%   )r+   Úoriginals     r   Ú6test_if_a_version_is_not_provided_it_is_not_registeredzJTestCreateAndExtend.test_if_a_version_is_not_provided_it_is_not_registered™   s:   € Üœ
×0Ñ0Ó1ˆÜ×Ñ t¨T lÕ3Ø×Ñœ×1Ñ1°8Õ<r-   c                óÖ   — d}d|i}t        j                  |dd„ ¬«       | j                  t         j                  j                  |«       | j                  |t         j                  «       y )Númeta schema idre   rN   c                ó&   — | j                  dd«      S ©Nre   Ú ©Úget©Úss    r   ú<lambda>zMTestCreateAndExtend.test_validates_registers_meta_schema_id.<locals>.<lambda>¥   ó   € ˜AŸE™E $¨›O€ r-   ©r"   rP   Úid_of©r   r(   r$   r&   rR   ÚassertIn©r+   Úmeta_schema_keyÚmy_meta_schemas      r   Ú'test_validates_registers_meta_schema_idz;TestCreateAndExtend.test_validates_registers_meta_schema_idž   sX   € Ø*ˆØ Ð0ˆä×ÑØ&Ø Ù+õ	
ð
 	�‰œ
×0Ñ0×4Ñ4°oÔFà�‰�o¤z×'?Ñ'?Õ@r-   c                óÒ   — d}d|i}t        j                  |d¬«       | j                  t         j                  j                  |«       | j                  |t         j                  «       y )Númeta schema $idr!   rN   rO   ru   rw   s      r   Ú.test_validates_registers_meta_schema_draft6_idzBTestCreateAndExtend.test_validates_registers_meta_schema_draft6_id«   sU   € Ø+ˆØ Ð1ˆä×ÑØ&Ø õ	
ð 	�‰œ
×0Ñ0×4Ñ4°oÔFà�‰�o¤z×'?Ñ'?Õ@r-   c                ó�   ‡— t        j                  i d¬«      Š| j                  t        ˆfd„dg fddddd	i fd
fD «       «      «       y )Nr   )r"   r   c              3  óV   •K  — | ]   \  }} ‰i «      j                  ||¬ «      –— Œ" y­w))r   ÚtypeN)Úis_type)Ú.0r€   r   r)   s      €r   ú	<genexpr>z@TestCreateAndExtend.test_create_default_types.<locals>.<genexpr>º   s1   øè ø€ ò á"�D˜(ñ ˜"“×%Ñ%¨x¸dÐ%×Cñùs   ƒ&)Úarray)ÚbooleanT)Úintegeré   )ÚnullN)Únumberg      (@Úobject)ÚstringÚfoo)r   r(   Ú
assertTrueÚallrU   s    @r   Útest_create_default_typesz-TestCreateAndExtend.test_create_default_types·   sW   ø€ Ü×%Ñ%°"ÀÔDˆ	Ø�‰Üó ð ˜b�MØ%Ø#Ø"Ø$Ø˜r�NØ%ð'ôó õ	
r-   c                óš  — t        | j                  j                  «      }t        «       }t	        j
                  | j                  d|i¬«      }| j                  |j                  |j                  |j                  | j                  j                  ft        ||¬«      | j                  j                  | j                  j                  |f«       y )NÚnew)r   )r‘   )	r'   r)   r0   rŠ   r   Úextendr%   r1   r2   )r+   rf   r‘   ÚExtendeds       r   Útest_extendzTestCreateAndExtend.test_extendÈ   s¦   € Ü˜Ÿ™×1Ñ1Ó2ˆÜ‹hˆä×$Ñ$Ø�N‰NØ˜s�|ô
ˆð 	×Ñà×#Ñ#Ø×$Ñ$Ø×%Ñ%Ø—‘×)Ñ)ð	ô �X 3Ô'Ø—‘×*Ñ*Ø—‘×+Ñ+Øð	õ	
r-   c                óN  ‡ — ˆ fd„}d}d|dœ}t        j                  |‰ j                   ‰ j                  |¬«      }‰ j                  |j	                  |j
                  «      |«       t        j                  |«      }‰ j                  |j	                  |j
                  «      |«       y)zK
        Extending a validator preserves its notion of schema IDs.
        c                óZ   •— | j                  d‰j                  j                  | «      «      S )NÚ__test__)rn   r)   ÚID_OF)r   r+   s    €r   rt   z3TestCreateAndExtend.test_extend_idof.<locals>.id_ofâ   s#   ø€ Ø—:‘:˜j¨$¯.©.×*>Ñ*>¸vÓ*FÓGÐGr-   zthe://correct/id/zthe://wrong/id/)r!   r—   )r"   r   r#   rt   N)r   r(   r#   r%   r˜   r1   r’   )r+   rt   Ú
correct_idr"   ÚOriginalÚDeriveds   `     r   Útest_extend_idofz$TestCreateAndExtend.test_extend_idofÞ   s“   ø€ ô	Hà(ˆ
à$Ø"ñ
ˆô ×$Ñ$Ø#Ø—‘Ø×*Ñ*Øô	
ˆð 	×Ñ˜Ÿ™¨×(<Ñ(<Ó=¸zÔJä×#Ñ# HÓ-ˆØ×Ñ˜Ÿ™ w×':Ñ':Ó;¸ZÕHr-   N)rS   Ú
__module__rT   r,   r3   r6   r<   rE   rK   rV   rY   r]   r`   rc   rg   rz   r}   r�   r”   rœ   r   r-   r   r   r   "   s^   „ ò
ò 
ò@ò%òLò")òGò	
ò
ò
òDò=ò
Aò
Aò
ò"
ó,Ir-   r   c                  ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.y-).ÚTestValidationErrorMessagesc                ó:  — |j                  dt        j                  «      }|j                  |«        ||g|¢­i |¤Ž}t	        |j                  |«      «      }| j                  |d|›�¬«       | j                  t        |«      dd|›�¬«       |d   j                  S )NÚclszNo errors were raised for )ÚmsgrA   z"Expected exactly one error, found r   )
rR   r   Ú_LATEST_VERSIONÚcheck_schemar9   r:   r�   r%   rB   r   )r+   r   r   ÚargsÚkwargsr¡   r   r   s           r   Úmessage_forz'TestValidationErrorMessages.message_forö   s    € Ø�j‰j˜¤
× :Ñ :Ó;ˆØ×Ñ˜Ô Ù˜Ð0 Ò0¨Ñ0ˆ	Ü�i×+Ñ+¨HÓ5Ó6ˆØ�‰˜Ð&@ÀÀÐ$MˆÔNØ×ÑÜ�‹KØØ4°V°JÐ?ð 	ô 	
ð
 �a‰y× Ñ Ð r-   c                óR   — | j                  dddi¬«      }| j                  |d«       y ©NrA   r€   r‹   ©r   r   ú1 is not of type 'string'©r§   r%   ©r+   r   s     r   Útest_single_type_failurez4TestValidationErrorMessages.test_single_type_failure  s-   € Ø×"Ñ"¨A°v¸xÐ6HÐ"ÓIˆØ×Ñ˜Ð"=Õ>r-   c                óT   — | j                  dddgi¬«      }| j                  |d«       y r©   r¬   r­   s     r   Útest_single_type_list_failurez9TestValidationErrorMessages.test_single_type_list_failure  s/   € Ø×"Ñ"¨A°vÀ¸zÐ6JÐ"ÓKˆØ×Ñ˜Ð"=Õ>r-   c                óh   — d}| j                  ddt        |«      i¬«      }| j                  |d«       y )N)r‹   rŠ   rA   r€   rª   z#1 is not of type 'string', 'object')r§   r9   r%   )r+   Útypesr   s      r   Útest_multiple_type_failurez6TestValidationErrorMessages.test_multiple_type_failure  s6   € Ø"ˆØ×"Ñ"¨A°v¼tÀE»{Ð6KÐ"ÓLˆØ×Ñ˜Ð"GÕHr-   c                ó|   — ddddœgi}| j                  d|t        j                  ¬«      }| j                  |d«       y )Nr€   ÚFoorJ   )ÚnameÚminimumrA   ©r   r   r¡   z1 is not of type 'Foo'©r§   r   ÚDraft3Validatorr%   ©r+   r   r   s      r   Ú#test_object_with_named_type_failurez?TestValidationErrorMessages.test_object_with_named_type_failure  sK   € Ø E°aÑ8Ð9Ð:ˆØ×"Ñ"ØØÜ×*Ñ*ð #ó 
ˆð
 	×Ñ˜Ð":Õ;r-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NrA   r·   é   rª   z1 is less than the minimum of 2r¬   r­   s     r   Útest_minimumz(TestValidationErrorMessages.test_minimum  s,   € Ø×"Ñ"¨A°yÀ!°nÐ"ÓEˆØ×Ñ˜Ð"CÕDr-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NrA   Úmaximumr   rª   z"1 is greater than the maximum of 0r¬   r­   s     r   Útest_maximumz(TestValidationErrorMessages.test_maximum  s,   € Ø×"Ñ"¨A°yÀ!°nÐ"ÓEˆØ×Ñ˜Ð"FÕGr-   c                ó†   — d\  }}d||ii}| j                  ddi|t        j                  ¬«      }| j                  |d«       y ©N©ÚbarrŒ   ÚdependenciesrÆ   r¾   r¸   z'foo' is a dependency of 'bar'r¹   ©r+   ÚdependÚonr   r   s        r   Ú test_dependencies_single_elementz<TestValidationErrorMessages.test_dependencies_single_element!  sT   € Ø!‰
ˆ�Ø  6¨2 ,Ð/ˆØ×"Ñ"Ø˜Q�ZØÜ×*Ñ*ð #ó 
ˆð
 	×Ñ˜Ð"BÕCr-   c                ó€   — dddigi}| j                  dd|git        j                  ¬«      }| j                  |d«       y )Nr€   r·   rJ   rA   r¸   z+1 is not of type {'type': [{'minimum': 3}]}r¹   )r+   r€   r   s      r   Ú-test_object_without_title_type_failure_draft3zITestValidationErrorMessages.test_object_without_title_type_failure_draft3+  sT   € Ø˜) Q˜Ð(Ð)ˆØ×"Ñ"ØØ˜T˜FÐ#Ü×*Ñ*ð #ó 
ˆð
 	×ÑØØ9õ	
r-   c                óˆ   — d\  }}d||gii}| j                  ddi|t        j                  ¬«      }| j                  |d«       y rÄ   r¹   rÈ   s        r   Útest_dependencies_list_draft3z9TestValidationErrorMessages.test_dependencies_list_draft37  óV   € Ø!‰
ˆ�Ø  6¨B¨4 .Ð1ˆØ×"Ñ"Ø˜Q�ZØÜ×*Ñ*ð #ó 
ˆð
 	×Ñ˜Ð"BÕCr-   c                óˆ   — d\  }}d||gii}| j                  ddi|t        j                  ¬«      }| j                  |d«       y rÄ   )r§   r   ÚDraft7Validatorr%   rÈ   s        r   Útest_dependencies_list_draft7z9TestValidationErrorMessages.test_dependencies_list_draft7A  rÐ   r-   c                ót   — | j                  dgg ddœt        j                  ¬«      }| j                  d|«       y )Nr¾   F©ÚitemsÚadditionalItemsr¸   z(2 was unexpected)©r§   r   rº   rv   r­   s     r   Ú#test_additionalItems_single_failurez?TestValidationErrorMessages.test_additionalItems_single_failureK  s>   € Ø×"Ñ"Ø�SØ°EÑ:Ü×*Ñ*ð #ó 
ˆð
 	�‰Ð*¨GÕ4r-   c                óv   — | j                  g d¢g ddœt        j                  ¬«      }| j                  d|«       y )N©rA   r¾   rJ   FrÕ   r¸   z(1, 2, 3 were unexpected)rØ   r­   s     r   Ú&test_additionalItems_multiple_failureszBTestValidationErrorMessages.test_additionalItems_multiple_failuresS  s<   € Ø×"Ñ"ÚØ°EÑ:Ü×*Ñ*ð #ó 
ˆð
 	�‰Ð1°7Õ;r-   c                ó^   — d}ddi}| j                  |di|¬«      }| j                  d|«       y )NrŒ   ÚadditionalPropertiesFr¾   rª   z('foo' was unexpected)©r§   rv   )r+   Ú
additionalr   r   s       r   Ú(test_additionalProperties_single_failurezDTestValidationErrorMessages.test_additionalProperties_single_failure[  s9   € Øˆ
Ø(¨%Ð0ˆØ×"Ñ"¨Z¸¨OÀFÐ"ÓKˆØ�‰Ð.°Õ8r-   c                óì   — ddi}| j                  t        j                  ddg«      |¬«      }| j                  t	        d«      |«       | j                  t	        d«      |«       | j                  d|«       y )NrÞ   FrŒ   rÆ   rª   zwere unexpected))r§   r'   Úfromkeysrv   rX   r»   s      r   Ú+test_additionalProperties_multiple_failureszGTestValidationErrorMessages.test_additionalProperties_multiple_failuresa  si   € Ø(¨%Ð0ˆØ×"Ñ"Ü—]‘] E¨5 >Ó2Øð #ó 
ˆð
 	�‰”d˜5“k 7Ô+Ø�‰”d˜5“k 7Ô+Ø�‰Ð(¨'Õ2r-   c                óZ   — ddi}| j                  ddi|¬«      }| j                  d|«       y )NÚconstr‡   rŒ   rÆ   rª   z12 was expectedrß   r»   s      r   Ú
test_constz&TestValidationErrorMessages.test_constl  s;   € Ø˜2�ˆØ×"Ñ"Ø˜U�^Øð #ó 
ˆð 	�‰Ð'¨Õ1r-   c                ó~   — dddii}| j                  di g g|t        j                  ¬«      }| j                  |d«       y )NÚcontainsræ   r‡   r¾   r¸   z4None of [2, {}, []] are valid under the given schema)r§   r   ÚDraft6Validatorr%   r»   s      r   Útest_contains_draft_6z1TestValidationErrorMessages.test_contains_draft_6t  sP   € Ø˜w¨˜mÐ,ˆØ×"Ñ"Ø˜˜R�[ØÜ×*Ñ*ð #ó 
ˆð
 	×ÑØØBõ	
r-   c                ó  — t        d¬«      } |j                  d«      d„ «       ddi}| j                  d||¬«      }| j                  t	        d«      |«       | j                  t	        d«      |«       | j                  d|«       y )	Nr   )ÚformatsÚthingc                 ó   — y©NFr   )Úvalues    r   rq   zQTestValidationErrorMessages.test_invalid_format_default_message.<locals>.<lambda>‚  s   � r-   ÚformatÚbla)r   r   Úformat_checkerzis not a)r   Úchecksr§   rv   rX   )r+   Úcheckerr   r   s       r   Ú#test_invalid_format_default_messagez?TestValidationErrorMessages.test_invalid_format_default_message€  s|   € Ü¨Ô+ˆØˆ�‰�wÓÑ 3Ô4à˜GÐ$ˆØ×"Ñ"ØØØ"ð #ó 
ˆð 	�‰”d˜5“k 7Ô+Ø�‰”d˜7“m WÔ-Ø�‰�j 'Õ*r-   c                ó¼  — ddddiddidœdœ}| j                  ddi|t        j                  ¬	«      }| j                  |d
j	                  t        d«      t        d«      t        d«      «      «       | j                  dddœ|t        j                  ¬	«      }| j                  |dj	                  t        d«      t        d«      t        d«      t        d«      «      «       y )NrŠ   Fr€   r‹   )ú^abc$ú^def$)r€   rÞ   ÚpatternPropertiesÚzebraé{   r¸   z,{} does not match any of the regexes: {}, {}rù   rú   iÈ  )rü   Úfishz.{}, {} do not match any of the regexes: {}, {}rþ   )r§   r   ÚDraft4Validatorr%   rò   rX   r»   s      r   Ú1test_additionalProperties_false_patternPropertieszMTestValidationErrorMessages.test_additionalProperties_false_patternProperties�  sç   € Ø"Ø*/à &¨Ð1Ø &¨Ð1ñ(ñˆð ×"Ñ"Ø˜s�^ØÜ×*Ñ*ð #ó 
ˆð
 	×ÑØØ:×AÑAÜ�W“œt G›}¬d°7«móô	
ð ×"Ñ"Ø"¨CÑ0ØÜ×*Ñ*ð #ó 
ˆð
 	×ÑØØ<×CÑCÜ�V“œd 7›m¬T°'«]¼DÀ»Móõ	
r-   c                óN   — | j                  dd¬«      }| j                  |d«       y )NrM   Frª   z'False schema does not allow 'something'r¬   r­   s     r   Útest_False_schemaz-TestValidationErrorMessages.test_False_schema­  s0   € Ø×"Ñ"Ø Øð #ó 
ˆð 	×Ñ˜Ð"KÕLr-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NrJ   Ú
multipleOfr¾   rª   z3 is not a multiple of 2r¬   r­   s     r   Útest_multipleOfz+TestValidationErrorMessages.test_multipleOf´  s5   € Ø×"Ñ"ØØ  !Ð$ð #ó 
ˆð 	×Ñ˜Ð"<Õ=r-   c                óR   — | j                  g ddi¬«      }| j                  |d«       y )NÚminItemsr¾   rª   z[] is too shortr¬   r­   s     r   Útest_minItemsz)TestValidationErrorMessages.test_minItems»  s,   € Ø×"Ñ"¨B¸
ÀA°Ð"ÓGˆØ×Ñ˜Ð"3Õ4r-   c                óV   — | j                  g d¢ddi¬«      }| j                  |d«       y )NrÛ   ÚmaxItemsr¾   rª   z[1, 2, 3] is too longr¬   r­   s     r   Útest_maxItemsz)TestValidationErrorMessages.test_maxItems¿  s,   € Ø×"Ñ"ªI¸zÈ1¸oÐ"ÓNˆØ×Ñ˜Ð"9Õ:r-   c                ó\   — | j                  g d¢di i gdœ¬«      }| j                  |d«       y )N©rA   r¾   rŒ   é   F©rÖ   ÚprefixItemsrª   z%Expected at most 2 items, but found 4r¬   r­   s     r   Útest_prefixItems_with_itemsz7TestValidationErrorMessages.test_prefixItems_with_itemsÃ  s9   € Ø×"Ñ"Ú%Ø"°B¸°8Ñ<ð #ó 
ˆð 	×Ñ˜Ð"IÕJr-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )Nrl   Ú	minLengthr¾   rª   z'' is too shortr¬   r­   s     r   Útest_minLengthz*TestValidationErrorMessages.test_minLengthÊ  s5   € Ø×"Ñ"ØØ Ð#ð #ó 
ˆð 	×Ñ˜Ð"3Õ4r-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NÚabcÚ	maxLengthr¾   rª   z'abc' is too longr¬   r­   s     r   Útest_maxLengthz*TestValidationErrorMessages.test_maxLengthÑ  s5   € Ø×"Ñ"ØØ Ð#ð #ó 
ˆð 	×Ñ˜Ð"5Õ6r-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NÚbbbÚpatternz^a*$rª   z'bbb' does not match '^a*$'r¬   r­   s     r   Útest_patternz(TestValidationErrorMessages.test_patternØ  s5   € Ø×"Ñ"ØØ˜vÐ&ð #ó 
ˆð 	×Ñ˜Ð"?Õ@r-   c                óV   — | j                  g dddii¬«      }| j                  |d«       y )Nré   r€   r‹   rª   z3[] does not contain items matching the given schemar¬   r­   s     r   Útest_does_not_containz1TestValidationErrorMessages.test_does_not_containß  s=   € Ø×"Ñ"ØØ ¨Ð 2Ð3ð #ó 
ˆð 	×ÑØØAõ	
r-   c                ó\   — | j                  ddgddiddœ¬«      }| j                  |d«       y )	NrŒ   rA   r€   r‹   r¾   ©ré   ÚminContainsrª   úMToo few items match the given schema (expected at least 2 but only 1 matched)r¬   r­   s     r   Útest_contains_too_fewz1TestValidationErrorMessages.test_contains_too_fewé  sC   € Ø×"Ñ"Ø˜Q�ZØ!'¨Ð 2À1ÑEð #ó 
ˆð 	×ÑØð7õ	
r-   c                ó^   — | j                  ddgddidddœ¬«      }| j                  |d	«       y )
NrŒ   rA   r€   r‹   r¾   é   ©ré   r!  ÚmaxContainsrª   r"  r¬   r­   s     r   Ú&test_contains_too_few_both_constrainedzBTestValidationErrorMessages.test_contains_too_few_both_constrainedô  sI   € Ø×"Ñ"Ø˜Q�Zà# XÐ.Ø Ø ñð #ó 
ˆð 	×ÑØðõ	
r-   c                ó\   — | j                  g d¢ddiddœ¬«      }| j                  |d«       y )N©rŒ   rÆ   Úbazr€   r‹   r¾   ©ré   r'  rª   ú:Too many items match the given schema (expected at most 2)r¬   r­   s     r   Útest_contains_too_manyz2TestValidationErrorMessages.test_contains_too_many  s=   € Ø×"Ñ"Ú*Ø!'¨Ð 2À1ÑEð #ó 
ˆð 	×ÑØØHõ	
r-   c                ób   — | j                  dgdz  ddidddœ¬«      }| j                  |d	«       y )
NrŒ   r  r€   r‹   r¾   r%  r&  rª   z:Too many items match the given schema (expected at most 4)r¬   r­   s     r   Ú'test_contains_too_many_both_constrainedzCTestValidationErrorMessages.test_contains_too_many_both_constrained  sI   € Ø×"Ñ"Ø�W˜q‘[à# XÐ.Ø Ø ñð #ó 
ˆð 	×ÑØØHõ	
r-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NrJ   ÚexclusiveMinimumr  rª   z+3 is less than or equal to the minimum of 5r¬   r­   s     r   Útest_exclusiveMinimumz1TestValidationErrorMessages.test_exclusiveMinimum  s8   € Ø×"Ñ"ØØ&¨Ð*ð #ó 
ˆð 	×ÑØØ9õ	
r-   c                óR   — | j                  dddi¬«      }| j                  |d«       y )NrJ   ÚexclusiveMaximumr¾   rª   z.3 is greater than or equal to the maximum of 2r¬   r­   s     r   Útest_exclusiveMaximumz1TestValidationErrorMessages.test_exclusiveMaximum%  s1   € Ø×"Ñ"¨AÐ7IÈ1Ð6MÐ"ÓNˆØ×ÑØØ<õ	
r-   c                óT   — | j                  i ddgi¬«      }| j                  |d«       y )NÚrequiredrŒ   rª   z'foo' is a required propertyr¬   r­   s     r   Útest_requiredz)TestValidationErrorMessages.test_required,  s/   € Ø×"Ñ"¨B¸
ÀUÀGÐ7LÐ"ÓMˆØ×Ñ˜Ð"@ÕAr-   c                ó\   — | j                  di idddgii¬«      }| j                  |d«       y )NrŒ   ÚdependentRequiredrÆ   rª   z'bar' is a dependency of 'foo'r¬   r­   s     r   Útest_dependentRequiredz2TestValidationErrorMessages.test_dependentRequired0  s@   € Ø×"Ñ"Ø˜R�[Ø'¨%°%°Ð)9Ð:ð #ó 
ˆð 	×Ñ˜Ð"BÕCr-   c                óR   — | j                  i ddi¬«      }| j                  |d«       y )NÚminPropertiesr¾   rª   z"{} does not have enough propertiesr¬   r­   s     r   Útest_minPropertiesz.TestValidationErrorMessages.test_minProperties7  s-   € Ø×"Ñ"¨B¸ÈÐ7KÐ"ÓLˆØ×Ñ˜Ð"FÕGr-   c                óZ   — | j                  i i i dœddi¬«      }| j                  |d«       y )N)r[   ÚbÚcÚmaxPropertiesr¾   rª   z3{'a': {}, 'b': {}, 'c': {}} has too many propertiesr¬   r­   s     r   Útest_maxPropertiesz.TestValidationErrorMessages.test_maxProperties;  s?   € Ø×"Ñ"Ø B¨RÑ0Ø# QÐ'ð #ó 
ˆð 	×ÑØØAõ	
r-   c                óT   — | j                  i ddgi¬«      }| j                  |d«       y )NÚoneOfFrª   z.{} is not valid under any of the given schemasr¬   r­   s     r   Útest_oneOf_matches_nonez3TestValidationErrorMessages.test_oneOf_matches_noneE  s2   € Ø×"Ñ"¨B¸À%ÀÐ7IÐ"ÓJˆØ×ÑØØ<õ	
r-   c                óV   — | j                  i dddgi¬«      }| j                  |d«       y )NrF  Trª   z${} is valid under each of True, Truer¬   r­   s     r   Útest_oneOf_matches_too_manyz7TestValidationErrorMessages.test_oneOf_matches_too_manyL  s1   € Ø×"Ñ"¨B¸À$ÈÀÐ7NÐ"ÓOˆØ×Ñ˜Ð"HÕIr-   c                ó\   — dddœ}| j                  ddg|¬«      }| j                  |d«       y )Nr„   F©r€   ÚunevaluatedItemsrŒ   rÆ   rª   z@Unevaluated items are not allowed ('bar', 'foo' were unexpected)rß   r»   s      r   Útest_unevaluated_itemsz2TestValidationErrorMessages.test_unevaluated_itemsP  s7   € Ø!°uÑ=ˆØ×"Ñ"¨U°E¨NÀ6Ð"ÓJˆØ�‰ØØNõ	
r-   c                óX   — dddœ}| j                  d|¬«      }| j                  |d«       y )Nr„   FrK  rŒ   rª   z'foo' is not of type 'array'r¬   r»   s      r   Ú&test_unevaluated_items_on_invalid_typezBTestValidationErrorMessages.test_unevaluated_items_on_invalid_typeX  s2   € Ø!°uÑ=ˆØ×"Ñ"¨E¸&Ð"ÓAˆØ×Ñ˜Ð"@ÕAr-   c                ó^   — dddœ}| j                  dddœ|¬«      }| j                  |d«       y )	NrŠ   F©r€   ÚunevaluatedPropertiesrŒ   rÆ   ©rŒ   rÆ   rª   zEUnevaluated properties are not allowed ('bar', 'foo' were unexpected)r¬   r»   s      r   Útest_unevaluated_propertiesz7TestValidationErrorMessages.test_unevaluated_properties]  sI   € Ø"¸UÑCˆØ×"Ñ"àØñð ð #ó 
ˆð 	×ÑØð-õ	
r-   c                óX   — dddœ}| j                  d|¬«      }| j                  |d«       y )NrŠ   FrQ  rŒ   rª   z'foo' is not of type 'object'r¬   r»   s      r   Ú+test_unevaluated_properties_on_invalid_typezGTestValidationErrorMessages.test_unevaluated_properties_on_invalid_typel  s2   € Ø"¸UÑCˆØ×"Ñ"¨E¸&Ð"ÓAˆØ×Ñ˜Ð"AÕBr-   N)/rS   r�   rT   r§   r®   r°   r³   r¼   r¿   rÂ   rË   rÍ   rÏ   rÓ   rÙ   rÜ   rá   rä   rç   rë   r÷   r   r  r  r  r  r  r  r  r  r  r#  r(  r.  r0  r3  r6  r9  r<  r?  rD  rG  rI  rM  rO  rT  rV  r   r-   r   rŸ   rŸ   õ   sí   „ ò!ò?ò?òIò
<òEòHòDò

òDòDò5ò<ò9ò	3ò2ò

ò+ò
ò<Mò>ò5ò;òKò5ò7òAò
ò	
ò
ò
ò
ò
ò
òBòDòHò
ò
òJò
òBò

óCr-   rŸ   c                  ó„   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestValidationErrorDetailsc                ó6  — d}dddiddigi}t        j                  |«      }t        |j                  |«      «      }| j	                  t        |«      d«       |d   }| j	                  |j                  d«       | j	                  |j                  |d   «       | j	                  |j                  |«       | j	                  |j                  |«       | j                  |j                  «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                   d	«       | j	                  |j"                  t        dg«      «       | j	                  |j$                  t        dg«      «       | j	                  |j&                  t        dg«      «       | j	                  t        |j(                  «      d
«       t+        |j(                  «      \  }}| j	                  |j                  d«       | j	                  |j                  |d   d   d   «       | j	                  |j                  |«       | j	                  |j                  |d   d   «       | j-                  |j                  |«       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                   d	«       | j	                  |j"                  t        ddg«      «       | j	                  |j$                  t        ddg«      «       | j	                  |j&                  t        g d¢«      «       | j/                  |j(                  «       | j	                  |j                  d«       | j	                  |j                  |d   d   d   «       | j	                  |j                  |«       | j	                  |j                  |d   d   «       | j-                  |j                  |«       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                   d	«       | j	                  |j"                  t        ddg«      «       | j	                  |j$                  t        ddg«      «       | j	                  |j&                  t        g d¢«      «       | j	                  t        |j(                  «      d«       y )Nr  ÚanyOfr·   é   r€   r‹   rA   r   ú$r¾   )rZ  r   r·   )rZ  rA   r€   )r   rÿ   r9   r:   r%   rB   r   r?   r   r   ÚassertIsNoneÚparentÚpathr   Úrelative_pathÚabsolute_pathÚ	json_pathr@   Úrelative_schema_pathÚabsolute_schema_pathÚcontextÚsorted_errorsÚassertIsÚassertFalse©r+   r   r   r   r   ÚeÚe1Úe2s           r   Ú
test_anyOfz%TestValidationErrorDetails.test_anyOfu  sA  € ØˆàØ˜B�Ø˜Ð"ðð
ˆô ×.Ñ.¨vÓ6ˆ	Ü�i×+Ñ+¨HÓ5Ó6ˆØ×Ñœ˜V› aÔ(Ø�1‰Iˆà×Ñ˜Ÿ™ gÔ.Ø×Ñ˜×*Ñ*¨F°7©OÔ<Ø×Ñ˜Ÿ™ XÔ.Ø×Ñ˜Ÿ™ 6Ô*Ø×Ñ˜!Ÿ(™(Ô#à×Ñ˜Ÿ™¤ r£Ô+Ø×Ñ˜Ÿ™¬%°«)Ô4Ø×Ñ˜Ÿ™¬%°«)Ô4Ø×Ñ˜Ÿ™ cÔ*à×Ñ˜Ÿ™¬¨w¨iÓ(8Ô9Ø×Ñ˜×/Ñ/´¸°yÓ1AÔBØ×Ñ˜×/Ñ/´¸°yÓ1AÔBà×Ñœ˜QŸY™Y›¨Ô+ä˜qŸy™yÓ)‰ˆˆBà×Ñ˜Ÿ™ yÔ1Ø×Ñ˜×+Ñ+¨V°G©_¸QÑ-?À	Ñ-JÔKØ×Ñ˜Ÿ™ hÔ/Ø×Ñ˜Ÿ™ F¨7¡O°AÑ$6Ô7Ø�‰�b—i‘i Ô#à×Ñ˜Ÿ™¤%¨£)Ô,Ø×Ñ˜×)Ñ)¬5°«9Ô5Ø×Ñ˜×)Ñ)¬5°«9Ô5Ø×Ñ˜Ÿ™ sÔ+à×Ñ˜Ÿ™¬°°9¨~Ó)>Ô?Ø×Ñ˜×0Ñ0´%¸¸I¸Ó2GÔHØ×ÑØ×#Ñ#¤UÒ+BÓ%Cô	
ð 	×Ñ˜Ÿ™Ô$à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜×+Ñ+¨V°G©_¸QÑ-?ÀÑ-GÔHØ×Ñ˜Ÿ™ hÔ/Ø×Ñ˜Ÿ™ F¨7¡O°AÑ$6Ô7Ø�‰�b—i‘i Ô#à×Ñ˜Ÿ™¤%¨£)Ô,Ø×Ñ˜×)Ñ)¬5°«9Ô5Ø×Ñ˜×)Ñ)¬5°«9Ô5Ø×Ñ˜Ÿ™ sÔ+à×Ñ˜Ÿ™¬°°6¨{Ó);Ô<Ø×Ñ˜×0Ñ0´%¸¸F¸Ó2DÔEØ×Ñ˜×0Ñ0´%Ò8LÓ2MÔNà×Ñœ˜RŸZ™Z›¨!Õ,r-   c                ó"  — ddi}dddiddddgiidœgi}t        j                  |«      }t        |j                  |«      «      }| j	                  t        |«      d«       |d	   }| j	                  |j                  d«       | j	                  |j                  |d   «       | j	                  |j                  |«       | j	                  |j                  |«       | j                  |j                  «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                   d
«       | j	                  |j"                  t        dg«      «       | j	                  |j$                  t        dg«      «       | j	                  |j&                  t        dg«      «       | j	                  t        |j(                  «      d«       t+        |j(                  «      \  }}| j	                  |j                  d«       | j	                  |j                  |d   d	   d   «       | j	                  |j                  |«       | j	                  |j                  |d   d	   «       | j-                  |j                  |«       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                  t        g «      «       | j	                  |j                   d
«       | j	                  |j"                  t        d	dg«      «       | j	                  |j$                  t        d	dg«      «       | j	                  |j&                  t        g d¢«      «       | j/                  |j(                  «       | j	                  |j                  d«       | j	                  |j                  dg«       | j	                  |j                  d«       | j	                  |j                  ddgi«       | j-                  |j                  |«       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                   d«       | j	                  |j"                  t        g d¢«      «       | j	                  |j$                  t        g d¢«      «       | j	                  |j&                  t        g d¢«      «       | j/                  |j(                  «       y )NrŒ   rA   r€   r†   rŠ   Úenumr¾   ©r€   Ú
propertiesr   r\  )r€   r   r€   ú$.foo)rA   rq  rŒ   ro  )r€   rA   rq  rŒ   ro  )r   rº   r9   r:   r%   rB   r   r?   r   r   r]  r^  r_  r   r`  ra  rb  r@   rc  rd  re  rf  rg  rh  ri  s           r   Ú	test_typez$TestValidationErrorDetails.test_typeº  sG  € Ø˜1�:ˆàØ˜Ð#à$Ø#(¨6°A°3¨-Ð"8ñðð
ˆô ×.Ñ.¨vÓ6ˆ	Ü�i×+Ñ+¨HÓ5Ó6ˆØ×Ñœ˜V› aÔ(Ø�1‰Iˆà×Ñ˜Ÿ™ fÔ-Ø×Ñ˜×*Ñ*¨F°6©NÔ;Ø×Ñ˜Ÿ™ XÔ.Ø×Ñ˜Ÿ™ 6Ô*Ø×Ñ˜!Ÿ(™(Ô#à×Ñ˜Ÿ™¤ r£Ô+Ø×Ñ˜Ÿ™¬%°«)Ô4Ø×Ñ˜Ÿ™¬%°«)Ô4Ø×Ñ˜Ÿ™ cÔ*à×Ñ˜Ÿ™¬¨v¨h«Ô8Ø×Ñ˜×/Ñ/´¸°x³ÔAØ×Ñ˜×/Ñ/´¸°x³ÔAà×Ñœ˜QŸY™Y›¨Ô+ä˜qŸy™yÓ)‰ˆˆBà×Ñ˜Ÿ™ vÔ.Ø×Ñ˜×+Ñ+¨V°F©^¸AÑ->¸vÑ-FÔGØ×Ñ˜Ÿ™ hÔ/Ø×Ñ˜Ÿ™ F¨6¡N°1Ñ$5Ô6Ø�‰�b—i‘i Ô#à×Ñ˜Ÿ™¤%¨£)Ô,Ø×Ñ˜×)Ñ)¬5°«9Ô5Ø×Ñ˜×)Ñ)¬5°«9Ô5Ø×Ñ˜Ÿ™ sÔ+à×Ñ˜Ÿ™¬°°6¨{Ó);Ô<Ø×Ñ˜×0Ñ0´%¸¸F¸Ó2DÔEØ×Ñ˜×0Ñ0´%Ò8KÓ2LÔMà×Ñ˜Ÿ™Ô$à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜×+Ñ+¨a¨SÔ1Ø×Ñ˜Ÿ™ aÔ(Ø×Ñ˜Ÿ™ V¨a¨S MÔ2Ø�‰�b—i‘i Ô#à×Ñ˜Ÿ™¤%¨¨£.Ô1Ø×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜Ÿ™ wÔ/à×ÑØ�N‰NœEÒ"BÓCô	
ð 	×ÑØ×#Ñ#¤UÒ+KÓ%Lô	
ð 	×ÑØ×#Ñ#ÜÒ:Ó;ô	
ð
 	×Ñ˜Ÿ™Õ$r-   c                óò  — ddgdddœ}dddid	did
g d¢dœdœi}t        j                  |«      }|j                  |«      }t        |«      \  }}}}| j	                  |j
                  t        dg«      «       | j	                  |j
                  t        dg«      «       | j	                  |j
                  t        dg«      «       | j	                  |j
                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  t        dg«      «       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d	«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       y )Nr¾   rA   é   Úspam)rŒ   rÆ   r+  Úquuxrq  r€   r‹   r  é
   )r¾   r%  é   é   )rÁ   ro  r*  rÆ   r+  rŒ   ú$.barz$.bazrr  ro  rÁ   )r   rº   r:   rf  r%   r_  r   r`  ra  rb  r   )	r+   r   r   r   r   rk  rl  Úe3Úe4s	            r   Útest_single_nestingz.TestValidationErrorDetails.test_single_nesting  sT  € Ø a S°¸VÑDˆàØ Ð)Ø" A�Ø#%ª|Ñ<ñð
ˆô ×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0ˆÜ& vÓ.‰ˆˆB��Bà×Ñ˜Ÿ™¤%¨¨£.Ô1Ø×Ñ˜Ÿ™¤%¨¨£.Ô1Ø×Ñ˜Ÿ™¤%¨¨£.Ô1Ø×Ñ˜Ÿ™¤%¨¨£.Ô1à×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:à×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:Ø×Ñ˜×)Ñ)¬5°%°«>Ô:à×Ñ˜Ÿ™ wÔ/Ø×Ñ˜Ÿ™ wÔ/Ø×Ñ˜Ÿ™ wÔ/Ø×Ñ˜Ÿ™ wÔ/à×Ñ˜Ÿ™ zÔ2Ø×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ yÔ1Ø×Ñ˜Ÿ™ vÕ.r-   c                ó   — ddddgidœdg}dddgddd	gid
ddiddidœdœdœdœdœ}t        j                  |«      }|j                  |«      }t        |«      \  }}}}}	}
| j	                  |j
                  t        g «      «       | j	                  |j
                  t        dg«      «       | j	                  |j
                  t        ddg«      «       | j	                  |j
                  t        g d¢«      «       | j	                  |	j
                  t        g d¢«      «       | j	                  |
j
                  t        ddg«      «       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |	j                  d«       | j	                  |
j                  d«       | j	                  |j                  t        dg«      «       | j	                  |j                  t        ddg«      «       | j	                  t        |j                  «      g d¢«       | j	                  t        |j                  «      g d¢«       | j	                  t        |	j                  «      g d ¢«       | j	                  t        |
j                  «      g d!¢«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |	j                  d«       | j	                  |
j                  d«       y )"NrA   r¾   r+  rS  rw  r‹   rŠ   ro  rJ   r„   r8  Tr  )rÆ   r+  rp  )r€   rÖ   r   rÆ   )rA   rÆ   rÆ   )rA   rÆ   r+  rŒ   r\  ú$[0]z$[1].barz$[1].bar.barz$[1].bar.bazz$[1].foor€   rÖ   )rÖ   rq  rÆ   r€   )rÖ   rq  rÆ   rq  rÆ   r8  )rÖ   rq  rÆ   rq  r+  r  )rÖ   rq  rŒ   ro  )r   rº   r:   rf  r%   r_  r   rb  r@   r9   r   )r+   r   r   r   r   rk  rl  r|  r}  Úe5Úe6s              r   Útest_multiple_nestingz0TestValidationErrorDetails.test_multiple_nesting.  sÚ  € Ø˜q¨%°!°¨Ñ6¸Ð?ˆàà! 8Ð,à" Q¨ FÐ+à 'à$.°Ð#5Ø$.° ?ñ'ññ	ññ
ˆô" ×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0ˆÜ!.¨vÓ!6ÑˆˆB��B˜˜Bà×Ñ˜Ÿ™¤%¨£)Ô,Ø×Ñ˜Ÿ™¤%¨¨£*Ô-Ø×Ñ˜Ÿ™¤%¨¨E¨
Ó"3Ô4Ø×Ñ˜Ÿ™¤%Ò(9Ó":Ô;Ø×Ñ˜Ÿ™¤%Ò(9Ó":Ô;Ø×Ñ˜Ÿ™¤%¨¨E¨
Ó"3Ô4à×Ñ˜Ÿ™ sÔ+Ø×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ zÔ2Ø×Ñ˜Ÿ™ ~Ô6Ø×Ñ˜Ÿ™ ~Ô6Ø×Ñ˜Ÿ™ zÔ2à×Ñ˜Ÿ™¬°¨x«Ô9Ø×Ñ˜Ÿ™¬°¸Ð/@Ó)AÔBØ×ÑÜ�—‘Ó Ò"Hô	
ð 	×ÑÜ�—‘Ó ÚKô	
ð 	×ÑÜ�—‘Ó ÚKô	
ð 	×ÑÜ�—‘Ó Ò"Hô	
ð 	×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ zÔ2Ø×Ñ˜Ÿ™ zÔ2Ø×Ñ˜Ÿ™ vÕ.r-   c           	     ól  — dddddgddiddd	d
iidœdœdœgiiddgdd	d
iidœ}dddddddiidœidœi}t        j                  |«      }|j                  |«      \  }| j                  |j                  t        dg«      «       | j                  |j                  t        g d¢«      «       | j                  |j                  d«       |j                  \  }| j                  |j                  t        g d¢«      «       | j                  |j                  t        g d¢«      «       | j                  |j                  d«       |j                  \  }| j                  |j                  t        g d¢«      «       | j                  |j                  t        g d¢«      «       | j                  |j                  d«       y )NÚnoderZ  rŠ   r¶   Úchildrenr€   r‹   ú^.*$ú$refz#/definitions/node)r€   rû   )r¶   r†  )r€   r8  rq  Úroot)Údefinitionsr€   r8  rq  r[   Úab)rq  r‰  rZ  z$.root)r‰  r†  r[   )	rq  r‰  rZ  r   rq  r†  rû   r‡  rZ  z$.root.children.a)r‰  r†  r[   r†  r‹  )rq  r‰  rZ  r   rq  r†  rû   r‡  rZ  r   rq  r†  rû   r‡  rZ  z$.root.children.a.children.ab)	r   rÿ   r:   r%   ra  r   rd  rb  re  )r+   r   r   r   rj  rk  rl  s          r   Útest_recursivez)TestValidationErrorDetails.test_recursivek  sè  € ð ØØ (Ø%+¨ZÐ$8ð !'¨ð%ð )1à$*Ø(.Ð0Dð-&ð6"ñ)ñ	'ñð ððð* Ø˜Ø! FÐ,@Ð#AÐBñ1
ˆð8 ØàØ #à Ø &¨ð#ð%ñð
ñð
ˆô  ×.Ñ.¨vÓ6ˆ	à×"Ñ" 8Ó,‰ˆØ×Ñ˜Ÿ™¬%°°«/Ô:Ø×ÑØ×"Ñ"¤EÒ*IÓ$Jô	
ð 	×Ñ˜Ÿ™ hÔ/à�i‰i‰ˆØ×Ñ˜×)Ñ)¬5Ò1JÓ+KÔLØ×ÑØ×#Ñ#¤Uò
ó&ô	
ð 	×Ñ˜Ÿ™Ð':Ô;à�j‰j‰ˆØ×ÑØ×ÑœeÚ;óô	
ð
 	×ÑØ×#Ñ#¤Uòó&ô	
ð* 	×Ñ˜Ÿ™Ð'FÕGr-   c                óü  — dddœ}ddddœi}t        j                  |«      }|j                  |«      }t        |«      \  }}| j	                  |j
                  t        dg«      «       | j	                  |j
                  t        dg«      «       | j	                  |j                  d	«       | j	                  |j                  d
«       | j	                  |j                  d«       | j	                  |j                  d«       y )NrÆ   r¾   rÅ   rÞ   r†   r  ©r€   r·   rŒ   r{  rr  r€   r·   ©	r   rº   r:   rf  r%   r_  r   rb  r   ©r+   r   r   r   r   rk  rl  s          r   Útest_additionalPropertiesz4TestValidationErrorDetails.test_additionalPropertiesÐ  sÍ   € Ø ¨Ñ+ˆØ(°9ÈÑ*KÐLˆä×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0ˆÜ˜vÓ&‰ˆˆBà×Ñ˜Ÿ™¤%¨¨£.Ô1Ø×Ñ˜Ÿ™¤%¨¨£.Ô1à×Ñ˜Ÿ™ wÔ/Ø×Ñ˜Ÿ™ wÔ/à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ yÕ1r-   c                ó  — dddœ}dddiddidœi}t        j                  |«      }|j                  |«      }t        |«      \  }}| j	                  |j
                  t        d	g«      «       | j	                  |j
                  t        d
g«      «       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       | j	                  |j                  d«       y )NrA   r¾   rÅ   rû   r€   r‹   r·   r  rÆ   rŒ   r{  rr  r�  r�  s          r   Útest_patternPropertiesz1TestValidationErrorDetails.test_patternPropertiesá  sÞ   € Ø QÑ'ˆàØ Ð)Ø! 1�~ñ"ð
ˆô ×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0ˆÜ˜vÓ&‰ˆˆBà×Ñ˜Ÿ™¤%¨¨£.Ô1Ø×Ñ˜Ÿ™¤%¨¨£.Ô1à×Ñ˜Ÿ™ wÔ/Ø×Ñ˜Ÿ™ wÔ/à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ yÕ1r-   c                óü  — ddg}g dddœdœ}t        j                  |«      }|j                  |«      }t        |«      \  }}| j	                  |j
                  t        dg«      «       | j	                  |j
                  t        dg«      «       | j	                  |j                  d«       | j	                  |j                  d	«       | j	                  |j                  d
«       | j	                  |j                  d«       y )NrŒ   rA   r†   r  rŽ  rÕ   r   r€  ú$[1]r€   r·   r�  r�  s          r   Útest_additionalItemsz/TestValidationErrorDetails.test_additionalItems÷  sÑ   € Ø˜1�:ˆàØ(1¸aÑ@ñ
ˆô
 ×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0ˆÜ˜vÓ&‰ˆˆBà×Ñ˜Ÿ™¤%¨¨£*Ô-Ø×Ñ˜Ÿ™¤%¨¨£*Ô-à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ vÔ.à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ yÕ1r-   c                óþ  — g d¢}i gdddœdœ}t        j                  |«      }|j                  |«      }t        |«      \  }}| j	                  |j
                  t        dg«      «       | j	                  |j
                  t        dg«      «       | j	                  |j                  d«       | j	                  |j                  d	«       | j	                  |j                  d
«       | j	                  |j                  d«       y )N)rŒ   rÆ   rA   r†   r  rŽ  rÕ   rA   r¾   r•  z$[2]r€   r·   r�  r�  s          r   Útest_additionalItems_with_itemsz:TestValidationErrorDetails.test_additionalItems_with_items  sÏ   € Ú$ˆà�TØ(1¸aÑ@ñ
ˆô
 ×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0ˆÜ˜vÓ&‰ˆˆBà×Ñ˜Ÿ™¤%¨¨£*Ô-Ø×Ñ˜Ÿ™¤%¨¨£*Ô-à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ vÔ.à×Ñ˜Ÿ™ vÔ.Ø×Ñ˜Ÿ™ yÕ1r-   c                ó¬  — ddi}ddddiii}t        j                  |«      }|j                  |«      \  }| j                  |j                  d«       | j                  |j
                  d«       | j                  |j                  t        g «      «       | j                  |j                  d«       | j                  |j                  t        ddg«      «       y )NrŒ   r‡   ÚpropertyNamesÚnotræ   z0'foo' should not be valid under {'const': 'foo'}r\  ©
r   rÒ   r:   r%   r   r   r_  r   rb  r@   )r+   r   r   r   Úerrors        r   Útest_propertyNamesz-TestValidationErrorDetails.test_propertyNames  s»   € Ø˜2�;ˆØ! E¨G°UÐ+;Ð#<Ð=ˆä×.Ñ.¨vÓ6ˆ	Ø×&Ñ& xÓ0‰ˆà×Ñ˜Ÿ™¨%Ô0Ø×ÑØ�M‰MØ>ô	
ð 	×Ñ˜Ÿ™¤U¨2£YÔ/Ø×Ñ˜Ÿ™¨#Ô.Ø×Ñ˜×*Ñ*¬E°?ÀEÐ2JÓ,KÕLr-   c                ó¦  — ddiddidœ}t        j                  |«      }|j                  d«      \  }| j                  |j                  d«       | j                  |j
                  d«       | j                  |j                  t        g «      «       | j                  |j                  d«       | j                  |j                  t        ddg«      «       y )Nræ   r‡   é   )ÚifÚthenú13 was expectedr\  r¢  rœ  ©r+   r   r   r�  s       r   Útest_if_thenz'TestValidationErrorDetails.test_if_then/  ó°   € à˜B�-Ø˜b�Mñ
ˆô
 ×.Ñ.¨vÓ6ˆ	Ø×&Ñ& rÓ*‰ˆà×Ñ˜Ÿ™¨'Ô2Ø×Ñ˜Ÿ™Ð(9Ô:Ø×Ñ˜Ÿ™¤U¨2£YÔ/Ø×Ñ˜Ÿ™¨#Ô.Ø×Ñ˜×*Ñ*¬E°6¸7Ð2CÓ,DÕEr-   c                ó¦  — ddiddidœ}t        j                  |«      }|j                  d«      \  }| j                  |j                  d«       | j                  |j
                  d«       | j                  |j                  t        g «      «       | j                  |j                  d«       | j                  |j                  t        ddg«      «       y )	Nræ   r‡   r   )r¡  Úelseru  r£  r\  r¨  rœ  r¤  s       r   Útest_if_elsez'TestValidationErrorDetails.test_if_else>  r¦  r-   c                ó2  — t        j                  d«      }|j                  d«      \  }| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  fdd d ddt        g «      df«       y )NFr‡   zFalse schema does not allow 12r\  )r   rÒ   r:   r%   r   r   r?   r   r   r@   rb  r   )r+   r   r�  s      r   Útest_boolean_schema_Falsez4TestValidationErrorDetails.test_boolean_schema_FalseM  sŒ   € Ü×.Ñ.¨uÓ5ˆ	Ø×&Ñ& rÓ*‰ˆà×Ñà—‘Ø—‘Ø×%Ñ%Ø—‘Ø—‘Ø×!Ñ!Ø—‘ðð 1ØØØØÜ�b“	Øðõ	
r-   c                ó²  — ddddii}}t        j                  d|it        j                  di ||i¬«      ¬«      }|j                  d	d
i«      \  }| j	                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  fdddd
t        d	g«      ddit        ddg«      df«       y )NÚsomeRefrÞ   r€   r†   rˆ  rl   ©Ústore©ÚresolverrŒ   ÚnotAnIntegerz''notAnInteger' is not of type 'integer'rr  )r   rÒ   ÚRefResolverr:   r%   r   r   r?   r   ra  r   r@   rb  r   )r+   Úrefr   r   r�  s        r   Útest_refz#TestValidationErrorDetails.test_reff  sâ   € ØÐ"8¸6À9Ð:MÐ!NˆVˆÜ×.Ñ.Ø�SˆMÜ×+Ñ+¨B°¸3À¸-ÔHô
ˆ	ð ×&Ñ&¨¨~Ð'>Ó?‰ˆà×Ñà—‘Ø—‘Ø×%Ñ%Ø—‘Ø×#Ñ#Ø—‘Ø×!Ñ!Ø—‘ð	ð :ØØØÜ�u�g“Ø˜Ð#ÜÐ-¨vÐ6Ó7Øð	õ	
r-   c                ó–  — dddii i ddigi}t        j                  |«      }|j                  g d¢«      \  }}| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fddddt        d	g«      ddit        g d
¢«      df«       | j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fddddt        dg«      ddit        g d¢«      df«       y )Nr  r€   r‹   rÁ   rJ   r  r«   rA   r   )r  r   r€   r€  z"5 is greater than the maximum of 3r  )r  rJ   rÁ   ú$[3]©r   ÚDraft202012Validatorr:   r%   r   r   r?   r   ra  r   r@   rb  r   )r+   r   r   Ú
type_errorÚ	min_errors        r   Útest_prefixItemsz+TestValidationErrorDetails.test_prefixItems…  s[  € Ø 6¨8Ð"4°b¸"¸yÈ!¸nÐ!MÐNˆÜ×3Ñ3°FÓ;ˆ	Ø )× 5Ñ 5Ò6FÓ GÑˆ
�IØ×Ñà×"Ñ"Ø×$Ñ$Ø×*Ñ*Ø×#Ñ#Ø×(Ñ(Ø×!Ñ!Ø×&Ñ&Ø×$Ñ$ð	ð ,ØØØÜ�q�c“
Ø˜Ð"ÜÒ0Ó1Øð	ô	
ð, 	×Ñà×!Ñ!Ø×#Ñ#Ø×)Ñ)Ø×"Ñ"Ø×'Ñ'Ø× Ñ Ø×%Ñ%Ø×#Ñ#ð	ð 5ØØØÜ�q�c“
Ø˜A�ÜÒ3Ó4Øð	õ	
r-   c                óŽ  — ddii gdœ}t        j                  |«      }|j                  g d¢«      \  }}| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fddddt        dg«      ddit        ddg«      d	f«       | j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fd
dddt        dg«      ddit        ddg«      df«       y )Nr€   r‹   r  )rŒ   r¾   rÆ   r%  r+  z2 is not of type 'string'r¾   rA   rÖ   r•  z4 is not of type 'string'r%  rJ   r·  r¸  ©r+   r   r   rk  rl  s        r   r  z6TestValidationErrorDetails.test_prefixItems_with_items¶  sE  € à˜hÐ'Ø˜4ñ
ˆô ×3Ñ3°FÓ;ˆ	Ø×&Ñ&Ò'BÓC‰ˆˆBØ×Ñà—
‘
Ø—‘Ø×"Ñ"Ø—‘Ø× Ñ Ø—	‘	Ø—‘Ø—‘ð	ð ,ØØØÜ�q�c“
Ø˜Ð"Ü�w Ð'Ó(Øð	ô	
ð, 	×Ñà—
‘
Ø—‘Ø×"Ñ"Ø—‘Ø× Ñ Ø—	‘	Ø—‘Ø—‘ð	ð ,ØØØÜ�q�c“
Ø˜Ð"Ü�w Ð'Ó(Øð	õ	
r-   c                ó~  — ddiddœ}t        j                  |«      }|j                  g d¢«      \  }| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fdddg d¢t        g «      ddiddœt        dg«      d	f«       y
)zˆ
        `contains` + `maxContains` produces only one error, even if there are
        many more incorrectly matching elements.
        r€   r‹   r¾   r,  )rŒ   r¾   rÆ   r%  r+  rw  r-  r'  ré   r\  Nr¸  r¤  s       r   r.  z1TestValidationErrorDetails.test_contains_too_manyê  s¼   € ð
  & xÐ0ÀÑCˆÜ×3Ñ3°FÓ;ˆ	Ø×&Ñ&Ò'JÓK‰ˆØ×Ñà—‘Ø—‘Ø×%Ñ%Ø—‘Ø×#Ñ#Ø—‘Ø×!Ñ!Ø—‘ð	ð MØØÚ3Ü�b“	Ø$ hÐ/ÀÑBÜ�z�lÓ#Øð	õ	
r-   c                ó~  — ddiddœ}t        j                  |«      }|j                  g d¢«      \  }| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fdddg d¢t        g «      ddiddœt        dg«      d	f«       y )
Nr€   r‹   r¾   r   )rŒ   r¾   r%  r"  r!  ré   r\  r¸  r¤  s       r   r#  z0TestValidationErrorDetails.test_contains_too_few	  sº   € Ø% xÐ0ÀÑCˆÜ×3Ñ3°FÓ;ˆ	Ø×&Ñ&¢}Ó5‰ˆØ×Ñà—‘Ø—‘Ø×%Ñ%Ø—‘Ø×#Ñ#Ø—‘Ø×!Ñ!Ø—‘ð	ð?ð ØÚÜ�b“	Ø$ hÐ/ÀÑBÜ�z�lÓ#Øðõ	
r-   c                ó‚  — ddiddœ}t        j                  |«      }|j                  ddg«      \  }| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  fddddiddgt        g «      ddiddœt        dg«      df«       y )	Nr€   r‹   r¾   r   r%  z7[2, 4] does not contain items matching the given schemaré   r\  r¸  r¤  s       r   Útest_contains_nonez-TestValidationErrorDetails.test_contains_none'  sÆ   € Ø% xÐ0ÀÑCˆÜ×3Ñ3°FÓ;ˆ	Ø×&Ñ&¨¨1 vÓ.‰ˆØ×Ñà—‘Ø—‘Ø×%Ñ%Ø—‘Ø×#Ñ#Ø—‘Ø×!Ñ!Ø—‘ð	ð JØØ˜Ð"Ø�A�Ü�b“	Ø$ hÐ/ÀÑBÜ�z�lÓ#Øð	õ	
r-   c                ó  — dddgiidddgdœidœ}t        j                  |«      }|j                  di i«      \  }}| j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  f	d	ddgi t        dg«      ddgit        g d
¢«      t        g d
¢«      df	«       | j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  f	dddgi t        dg«      ddgdœt        g d
¢«      t        g d
¢«      df	«       y )NrŒ   r8  rÆ   Úapropz#/$defs/foor+  )rˆ  r8  )z$defsrq  z'bar' is a required property)rq  rÄ  r8  z$.apropz'baz' is a required property)r   r¹  r:   r%   r   r   r?   r   ra  r   r@   rc  rb  r   r¾  s        r   Útest_ref_siblingz+TestValidationErrorDetails.test_ref_siblingB  s…  € à˜j¨5¨'Ð2Ð3àØ)Ø!& ñðñ
ˆô ×3Ñ3°FÓ;ˆ	Ø×&Ñ&¨° }Ó5‰ˆˆBØ×Ñà—
‘
Ø—‘Ø×"Ñ"Ø—‘Ø× Ñ Ø—	‘	Ø—‘Ø×'Ñ'Ø—‘ð
ð /ØØ�ØÜ�w�iÓ Ø˜e˜WÐ%ÜÒ9Ó:ÜÒ9Ó:Øð
ô	
ð0 	×Ñà—
‘
Ø—‘Ø×"Ñ"Ø—‘Ø× Ñ Ø—	‘	Ø—‘Ø×'Ñ'Ø—‘ð
ð /ØØ�ØÜ�w�iÓ Ø&°U°GÑ<ÜÒ9Ó:ÜÒ9Ó:Øð
õ	
r-   N)rS   r�   rT   rm  rs  r~  rƒ  rŒ  r‘  r“  r–  r˜  rž  r¥  r©  r«  rµ  r¼  r  r.  r#  rÂ  rÅ  r   r-   r   rX  rX  r  st   „ òC-òJK%òZ%/òN;/òzcHòJ2ò"2ò,2ò(2ò(Mò FòFò
ò2
ò>/
òb2
òh
ò>
ò<
ó6<
r-   rX  c                  ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚMetaSchemaTestsMixinc                ó¦   — | j                  t        j                  «      5  | j                  j	                  ddi«       d d d «       y # 1 sw Y   y xY w)Nrq  r‡   ©ÚassertRaisesr   ÚSchemaErrorr)   r¤   r*   s    r   Útest_invalid_propertiesz,MetaSchemaTestsMixin.test_invalid_propertiesƒ  sB   € Ø×Ñœz×5Ñ5Ó6ñ 	<Ø�N‰N×'Ñ'¨°rÐ(:Ô;÷	<÷ 	<ñ 	<úó    AÁAc                ó¦   — | j                  t        j                  «      5  | j                  j	                  ddi«       d d d «       y # 1 sw Y   y xY w)Nr  Ú1rÉ  r*   s    r   Útest_minItems_invalid_stringz1MetaSchemaTestsMixin.test_minItems_invalid_string‡  sB   € Ø×Ñœz×5Ñ5Ó6ñ 	;à�N‰N×'Ñ'¨°SÐ(9Ô:÷	;÷ 	;ñ 	;úrÍ  c                ó>   — | j                   j                  dg i«       y)zk
        Technically, all the spec says is they SHOULD have elements, not MUST.

        See #529.
        ro  N©r)   r¤   r*   s    r   Útest_enum_allows_empty_arraysz2MetaSchemaTestsMixin.test_enum_allows_empty_arraysŒ  s   € ð 	�‰×#Ñ# V¨R LÕ1r-   c                óB   — | j                   j                  dddgi«       y)zg
        Technically, all the spec says is they SHOULD be unique, not MUST.

        See #529.
        ro  r‡   NrÒ  r*   s    r   Ú!test_enum_allows_non_unique_itemsz6MetaSchemaTestsMixin.test_enum_allows_non_unique_items”  s   € ð 	�‰×#Ñ# V¨b°"¨XÐ$6Õ7r-   N)rS   r�   rT   rÌ  rÐ  rÓ  rÕ  r   r-   r   rÇ  rÇ  �  s   „ ò<ò;ò
2ó8r-   rÇ  c                  ó~   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚValidatorTestMixinc                ób   — | j                  | j                  i «      t        j                  «       y r/   )ÚassertIsInstancer)   r   r*   s    r   Ú)test_it_implements_the_validator_protocolz<ValidatorTestMixin.test_it_implements_the_validator_protocolž  s!   € Ø×Ñ˜dŸn™n¨RÓ0´)×2EÑ2EÕFr-   c                ó€   — | j                   \  }}| j                  | j                  |«      j                  |«      «       y r/   )Úvalidr�   r)   Úis_valid©r+   r   r   s      r   Útest_valid_instances_are_validz1ValidatorTestMixin.test_valid_instances_are_valid¡  s0   € ØŸ:™:Ñˆ�Ø�‰˜Ÿ™ vÓ.×7Ñ7¸ÓAÕBr-   c                ó€   — | j                   \  }}| j                  | j                  |«      j                  |«      «       y r/   )Úinvalidrh  r)   rÝ  rÞ  s      r   Ú$test_invalid_instances_are_not_validz7ValidatorTestMixin.test_invalid_instances_are_not_valid¥  s2   € ØŸ<™<Ñˆ�Ø×Ñ˜Ÿ™¨Ó/×8Ñ8¸ÓBÕCr-   c                óz   — | j                  t        «       t        «       i«      j                  t        «       ¬«       y )N)r   )r)   rŠ   Úvalidater*   s    r   Ú(test_non_existent_properties_are_ignoredz;ValidatorTestMixin.test_non_existent_properties_are_ignored©  s'   € Ø�‰œ›¤&£(Ð+Ó,×5Ñ5¼v»xÐ5ÕHr-   c                óv   — | j                  | j                  i «      j                  t        j                  «       y r/   )rÙ  r)   r±  r   r³  r*   s    r   Ú.test_it_creates_a_ref_resolver_if_not_providedzAValidatorTestMixin.test_it_creates_a_ref_resolver_if_not_provided¬  s+   € Ø×ÑØ�N‰N˜2Ó×'Ñ'Ü×"Ñ"õ	
r-   c                óø   — dddi}}t        j                  di ||i¬«      }| j                  d|i|¬«      }| j                  t        j
                  «      5  |j                  d «       d d d «       y # 1 sw Y   y xY w)NÚsomeCoolRefr€   r†   rl   r®  rˆ  r°  )r   r³  r)   rÊ  r   r   rä  )r+   r´  r   r±  r   s        r   Ú#test_it_delegates_to_a_ref_resolverz6ValidatorTestMixin.test_it_delegates_to_a_ref_resolver²  su   € Ø# f¨iÐ%8ˆVˆÜ×)Ñ)¨"¨b¸¸f¸ÔFˆØ—N‘N F¨C =¸8�NÓDˆ	à×Ñœz×9Ñ9Ó:ñ 	%Ø×Ñ˜tÔ$÷	%÷ 	%ñ 	%ús   ÁA0Á0A9c                ó  — dddi}}t        j                  di ||i¬«      }| j                  ||¬«      }|j                  ddi¬«      }| j                  ddi|¬«      }| j	                  ||«       | j                  ||«       y )	Nré  r€   r†   rl   r®  r°  r‹   ©r   )r   r³  r)   Úevolver%   ÚassertNotEqual)r+   r´  r   r±  r   r‘   Úexpecteds          r   Útest_evolvezValidatorTestMixin.test_evolveº  s‰   € Ø# f¨iÐ%8ˆVˆÜ×)Ñ)¨"¨b¸¸f¸ÔFˆà—N‘N 6°H�NÓ=ˆ	Ø×Ñ v¨xÐ&8ÐÓ9ˆà—>‘> 6¨8Ð"4¸x�>ÓHˆà×Ñ˜˜hÔ'Ø×Ñ˜C Õ+r-   c                ó@  — t         j                   G d„ d| j                  «      «       } |i d¬«      }| j                  |j                  g d¢«       |j                  ddi¬«      }| j                  |j                  g d¢«       | j                  |j                  d«       y	)
ar  
        Subclassing validators isn't supported public API, but some users have
        done it, because we don't actually error entirely when it's done :/

        We need to deprecate doing so first to help as many of these users
        ensure they can move to supported APIs, but this test ensures that in
        the interim, we haven't broken those users.
        c                  óZ   — e Zd Z ej                  d„ ¬«      Z ej                  d¬«      Zy)ú:ValidatorTestMixin.test_evolve_with_subclass.<locals>.OhNoc                 ó
   — g d¢S )NrÛ   r   r   r-   r   rq   zCValidatorTestMixin.test_evolve_with_subclass.<locals>.OhNo.<lambda>Ò  s   € ª)€ r-   )Úfactoryé%   ©ÚdefaultN)rS   r�   rT   ÚattrÚibrŒ   Ú_barr   r-   r   ÚOhNoró  Ð  s#   „ à�$—'‘'Ñ"3Ô4ˆCØ�4—7‘7 2Ô&‰Dr-   rü  r‡   )rÆ   rÛ   r€   r†   rì  N)rù  rp   r)   r%   rŒ   rí  rû  )r+   rü  r   r‘   s       r   Útest_evolve_with_subclassz,ValidatorTestMixin.test_evolve_with_subclassÆ  s‡   € ô 
�‰ô	'�4—>‘>ó 	'ó 
ð	'ñ ˜ Ô$ˆ	Ø×Ñ˜Ÿ™ª	Ô2à×Ñ v¨yÐ&9ÐÓ:ˆØ×Ñ˜Ÿ™¢)Ô,Ø×Ñ˜Ÿ™ 2Õ&r-   c                óê   ‡ —  G ˆ fd„dt         «      } |«       }ddi}‰ j                  t        j                  «      5  ‰ j	                  ||¬«      j                  d«       ddd«       y# 1 sw Y   yxY w)zb
        Legacy RefResolvers support only the context manager form of
        resolution.
        c                  ó"   •— e Zd Zeˆ fd„«       Zy)úXValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolver.<locals>.LegacyRefResolverc              3  ó>   •K  — ‰j                  |d«       ddi–— y ­w)Núthe refr€   r†   ©r%   )Úthisr´  r+   s     €r   Ú	resolvingzbValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolver.<locals>.LegacyRefResolver.resolvingã  s"   øè ø€ à× Ñ   iÔ0Ø˜yÐ)Ó)ùs   ƒN)rS   r�   rT   r   r  r*   s   €r   ÚLegacyRefResolverr   â  s   ø„ Øó*ó ñ*r-   r  rˆ  r  r°  N)rŠ   rÊ  r   r   r)   rä  )r+   r  r±  r   s   `   r   Ú*test_it_delegates_to_a_legacy_ref_resolverz=ValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolverÜ  sk   ø€ ö	*¤ô 	*ñ %Ó&ˆØ˜)Ð$ˆà×Ñœz×9Ñ9Ó:ñ 	EØ�N‰N˜6¨HˆNÓ5×>Ñ>¸tÔD÷	E÷ 	Eñ 	Eús   ½#A)Á)A2c                ód   — | j                  | j                  i «      j                  dd«      «       y )NrŒ   r‹   )r�   r)   r�   r*   s    r   Ú#test_is_type_is_true_for_valid_typez6ValidatorTestMixin.test_is_type_is_true_for_valid_typeî  s$   € Ø�‰˜Ÿ™ rÓ*×2Ñ2°5¸(ÓCÕDr-   c                ód   — | j                  | j                  i «      j                  dd«      «       y )NrŒ   r„   ©rh  r)   r�   r*   s    r   Ú&test_is_type_is_false_for_invalid_typez9ValidatorTestMixin.test_is_type_is_false_for_invalid_typeñ  s&   € Ø×Ñ˜Ÿ™¨Ó+×3Ñ3°E¸7ÓCÕDr-   c                óÄ   — | j                  | j                  i «      j                  dd«      «       | j                  | j                  i «      j                  dd«      «       y )NTr†   r‰   r  r*   s    r   Ú,test_is_type_evades_bool_inheriting_from_intz?ValidatorTestMixin.test_is_type_evades_bool_inheriting_from_intô  sJ   € Ø×Ñ˜Ÿ™¨Ó+×3Ñ3°D¸)ÓDÔEØ×Ñ˜Ÿ™¨Ó+×3Ñ3°D¸(ÓCÕDr-   c                óˆ  — dddii}t        j                  | j                  | j                  j                  j	                  dd„ «      ¬«      } ||«      }|j                  ddt        d«      t        d«      z  g«       d	i g d
d g}| j                  |j                  |«      D �cg c]  }|j                  ‘Œ c}|«       y c c}w )NrÖ   r€   r‰   c                ó^   — t        |t        t        t        f«      xr t        |t        «       S r/   )Ú
isinstanceÚintÚfloatr   Úbool©rö   rî   s     r   rq   zGValidatorTestMixin.test_it_can_validate_with_decimals.<locals>.<lambda>þ  s,   € ¤zØœC¤¬Ð0ó(ò (2ä$ U¬DÓ1Ð1ð r-   ©r#   rA   gš™™™™™ñ?rz  rŒ   T)
r   r’   r)   r2   Úredefinerä  r   r%   r:   r   )r+   r   r)   r   rá  r�  s         r   Ú"test_it_can_validate_with_decimalsz5ValidatorTestMixin.test_it_can_validate_with_decimalsø  s·   € Ø˜F HÐ-Ð.ˆÜ×%Ñ%Ø�N‰NØŸ™×4Ñ4×=Ñ=Øñ2óô
ˆ	ñ ˜fÓ%ˆ	Ø×Ñ˜A˜s¤G¨A£J´¸³Ñ$;Ð<Ô=à˜"˜b $¨Ð-ˆØ×ÑØ)2×)>Ñ)>¸wÓ)GÖH ˆU�^‹^ÒHØõ	
ùÚHs   Â#B?c                ó`   — | j                  ddit        «       ¬«      }|j                  d«       y )Nrò   Úcarrot©rô   Úbugs)r)   r   rä  ©r+   r   s     r   Ú7test_it_returns_true_for_formats_it_does_not_know_aboutzJValidatorTestMixin.test_it_returns_true_for_formats_it_does_not_know_about  s1   € Ø—N‘NØ�xÐ ´³ð #ó 
ˆ	ð 	×Ñ˜6Õ"r-   c                ó\   — | j                  i «      }| j                  |j                  «       y r/   )r)   r]  rô   r  s     r   Ú,test_it_does_not_validate_formats_by_defaultz?ValidatorTestMixin.test_it_does_not_validate_formats_by_default  s$   € Ø—N‘N 2Ó&ˆ	Ø×Ñ˜)×2Ñ2Õ3r-   c                ó”  ‡ ‡— t        «       }t        d«      Š|j                  dt        ¬«      ˆˆ fd„«       }‰ j                  ddi|¬«      }|j	                  d«       ‰ j                  t        j                  «      5 }|j	                  d«       d d d «       ‰ j                  j                  j                  ‰«       y # 1 sw Y   Œ0xY w)	NzBad!rŒ   )Úraisesc                ó`   •— | dk(  ry| dk(  r‰‚‰j                  dj                  | «      «       y )NÚgoodTÚbadz What is {}? [Baby Don't Hurt Me])r   rò   )rñ   r%  r+   s    €€r   ÚcheckzTValidatorTestMixin.test_it_validates_formats_if_a_checker_is_provided.<locals>.check  s1   ø€ à˜ŠØØ˜%’Ø�	à—	‘	Ð<×CÑCÀEÓJÕKr-   rò   r  r$  r%  )r   Ú
ValueErrorrõ   r)   rä  rÊ  r   r   rg  Ú	exceptionÚcause)r+   rö   r&  r   Úcmr%  s   `    @r   Ú2test_it_validates_formats_if_a_checker_is_providedzEValidatorTestMixin.test_it_validates_formats_if_a_checker_is_provided  s·   ù€ Ü“/ˆÜ˜Ó ˆà	�‰˜¤jˆÓ	1ô	Ló 
2ð	Lð —N‘NØ�uÐ¨gð #ó 
ˆ	ð 	×Ñ˜6Ô"Ø×Ñœz×9Ñ9Ó:ð 	&¸bØ×Ñ˜uÔ%÷	&ð 	�‰�b—l‘l×(Ñ(¨#Õ.÷		&ð 	&ús   Á=B>Â>Cc                óÜ   — t        «       }d|gi}t        j                  | j                  | j                  j                  j                  |d„ «      ¬«      } ||«      j                  d«       y )Nr€   c                ó"   — t        |t        «      S r/   ©r  r  r  s     r   rq   z@ValidatorTestMixin.test_non_string_custom_type.<locals>.<lambda>6  s   € ¤z°%¼Ó'=€ r-   r  ru  )rŠ   r   r’   r)   r2   r  rä  )r+   Únon_string_typer   ÚCrazys       r   Útest_non_string_custom_typez.ValidatorTestMixin.test_non_string_custom_type/  s_   € Ü ›(ˆØ˜?Ð+Ð,ˆÜ×!Ñ!Ø�N‰NØŸ™×4Ñ4×=Ñ=ØÙ=óô
ˆñ 	ˆf‹×Ñ˜rÕ"r-   c                ót  — t        j                  | j                  | j                  j                  j	                  dd„ «      ¬«      }| j                  t        j                  «      5 } |ddi«      j                  d«       ddd«       | j                  dt        j                  «      «       y# 1 sw Y   Œ/xY w)	zh
        A tuple instance properly formats validation errors for uniqueItems.

        See #224
        r„   c                ó"   — t        |t        «      S r/   )r  Útupler  s     r   rq   zNValidatorTestMixin.test_it_properly_formats_tuples_in_errors.<locals>.<lambda>E  s   € ¤z°%¼Ó'?€ r-   r  ÚuniqueItemsT)rA   rA   Nz(1, 1) has non-unique elements)r   r’   r)   r2   r  rÊ  r   r   rä  rv   Ústrr(  )r+   ÚTupleValidatorrj  s      r   Ú)test_it_properly_formats_tuples_in_errorsz<ValidatorTestMixin.test_it_properly_formats_tuples_in_errors;  sš   € ô $×*Ñ*Ø�N‰NØŸ™×4Ñ4×=Ñ=ØÙ?óô
ˆð ×Ñœz×9Ñ9Ó:ð 	C¸aÙ˜M¨4Ð0Ó1×:Ñ:¸6ÔB÷	Cà�‰Ð6¼¸A¿K¹KÓ8HÕI÷	Cð 	Cús   Á&B.Â.B7c                óŽ  ‡— dddœ}t        dd«      Št        j                  | j                  | j                  j                  j                  d„ ˆfd„dœ«      ¬	«      } ||«      }t        g d
¢«      t        dgdgg«      t        dg«      t        dg«      gt        dg«      gt        dg«      ggt        dg«      ggggt        dg«      gggggt        t        dg«      g«      t        t        dg«      g«      g ‰dd«       ‰dd«      g ‰dt        dg«      g«       ‰dt        dg«      g«      g ‰d ‰dt        dg«      «      g«       ‰d ‰dt        dg«      «      g«      gt        t        t        dg«      «      «      t        t        t        dg«      «      «      gg
}|D ]  }|j                  |«       Œ t        g d¢«      t        dgdgg«      t        dg«      t        dg«      gt        dg«      gt        dg«      ggt        dg«      ggggt        dg«      gggggt        t        dg«      g«      t        t        dg«      g«      g ‰dd«       ‰dd«      g ‰dt        dg«      g«       ‰dt        dg«      g«      g ‰d ‰dt        dg«      «      g«       ‰d ‰dt        dg«      «      g«      gt        t        t        dg«      «      «      t        t        t        dg«      «      «      gg
}|D ];  }| j                  t        j                  «      5  |j                  |«       ddd«       Œ= y# 1 sw Y   ŒHxY w)zO
        Allow array to validate against another defined sequence type
        r„   T)r€   r5  Ú	MyMappingza, bc                ó.   — t        |t        t        f«      S r/   )r  r9   r   r  s     r   rq   zBValidatorTestMixin.test_check_redefined_sequence.<locals>.<lambda>V  s   € ´JØ¤¤e˜}ó5€ r-   c                ó(   •— t        |t        ‰f«      S r/   )r  r'   )rö   rî   r:  s     €r   rq   zBValidatorTestMixin.test_check_redefined_sequence.<locals>.<lambda>Y  s   ø€ ´ZØ¤ iÐ0ó6€ r-   )r„   rŠ   r  )r[   NrÏ  rl   TFr   r[   )r[   rA  r[   N)r   r   r’   r)   r2   Úredefine_manyr   rä  rÊ  r   r   )r+   r   r)   r   Úvalid_instancesr   Úinvalid_instancesr:  s          @r   Útest_check_redefined_sequencez0ValidatorTestMixin.test_check_redefined_sequenceL  sY  ø€ ð "°$Ñ7ˆÜ˜{¨FÓ3ˆ	Ü×%Ñ%Ø�N‰NØŸ™×4Ñ4×BÑBñóñ	ó	ô
ˆ	ñ ˜fÓ%ˆ	ô Ò,Ó-Ü�E�7˜Q˜C�.Ó!Ü�E�7‹^œU A 3›ZÐ(Ü�U�G‹nÐ¤ q c£
˜|Ð,Ü˜�w“Ð Ð!Ð"Ð#¬°¨s«¨ ~Ð&6Ð%7Ð8Ü”E˜5˜'“NÐ#Ó$¤e¬U°A°3«Z¨LÓ&9Ð:Ù�s˜AÓ¡	¨#¨uÓ 5Ð6á˜#¤ q c£
˜|Ó,Ù˜#¤ u g£Ð/Ó0ðñ
 ˜#¡	¨#¬u°a°S«zÓ :Ð;Ó<Ù˜#¡	¨#¬u°e°W«~Ó >Ð?Ó@ðô ”5œ ˜w›Ó(Ó)¬5´´u¸a¸S³zÓ1BÓ+CÐDð!
ˆð& (ò 	)ˆHØ×Ñ˜xÕ(ð	)ô ’/Ó"Ü�E�7˜U˜GÐ$Ó%Ü�E�7‹^œU E 7›^Ð,Ü�U�G‹nÐ¤ u g£Ð/Ð0Ü˜�w“Ð Ð!Ð"Ð#¬°¨w«Ð(8Ð'9Ð&:Ð%;Ð<Ü”E˜5˜'“NÐ#Ó$¤e¬U°E°7«^Ð,<Ó&=Ð>Ù�s˜EÓ"¡I¨c°5Ó$9Ð:á˜#¤ u g£Ð/Ó0Ù˜#¤ u g£Ð/Ó0ðñ
 ˜#¡	¨#¬u°e°W«~Ó >Ð?Ó@Ù˜#¡	¨#¬u°e°W«~Ó >Ð?Ó@ðô ”5œ ˜w›Ó(Ó)¬5´´u¸e¸W³~Ó1FÓ+GÐHð!
Ðð& *ò 	-ˆHØ×"Ñ"¤:×#=Ñ#=Ó>ñ -Ø×"Ñ" 8Ô,÷-ð -ñ	-÷-ð -ús   ÌL;Ì;M	N)rS   r�   rT   rÚ  rß  râ  rå  rç  rê  rð  rý  r  r	  r  r  r  r  r   r+  r1  r8  r@  r   r-   r   r×  r×  �  sk   „ òGòCòDòIò
ò%ò
,ò'ò,Eò$EòEòEò
ò*#ò4ò/ò0
#òJó"@-r-   r×  c                  ó”   — e Zd ZdZd„ Zd„ Z ej                   ed«      «      d„ «       Z	 ej                   ed«      «      d„ «       Z
y)ÚAntiDraft6LeakMixinzN
    Make sure functionality from draft 6 doesn't leak backwards in time.
    c                óì   — | j                  t        j                  «      5 }| j                  j	                  d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)NTzTrue is not of type©rÊ  r   rË  r)   r¤   rv   r6  r(  ©r+   rj  s     r   Útest_True_is_not_a_schemaz-AntiDraft6LeakMixin.test_True_is_not_a_schema”  sW   € Ø×Ñœz×5Ñ5Ó6ð 	.¸!Ø�N‰N×'Ñ'¨Ô-÷	.à�‰Ð+¬S°·±Ó-=Õ>÷	.ð 	.úó    A*Á*A3c                óì   — | j                  t        j                  «      5 }| j                  j	                  d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)NFzFalse is not of typerD  rE  s     r   Útest_False_is_not_a_schemaz.AntiDraft6LeakMixin.test_False_is_not_a_schema™  sW   € Ø×Ñœz×5Ñ5Ó6ð 	/¸!Ø�N‰N×'Ñ'¨Ô.÷	/à�‰Ð,¬c°!·+±+Ó.>Õ?÷	/ð 	/úrG  i  c                ó  — t        j                  di «      }| j                  t        «      5 }| j	                  d|¬«      j                  d«       d d d «       | j                  j                  t        j                  «       y # 1 sw Y   Œ4xY w)Nrl   Tr°  r‡   ©
r   r³  rÊ  Ú	Exceptionr)   rä  ÚassertNotIsInstancer(  r   r   ©r+   r±  rj  s      r   Ú5test_True_is_not_a_schema_even_if_you_forget_to_checkzIAntiDraft6LeakMixin.test_True_is_not_a_schema_even_if_you_forget_to_checkž  sr   € ä×)Ñ)¨"¨bÓ1ˆØ×ÑœyÓ)ð 	A¨QØ�N‰N˜4¨(ˆNÓ3×<Ñ<¸RÔ@÷	Aà× Ñ  §¡¬j×.HÑ.HÕI÷	Að 	Aúó   ¬#BÂBc                ó  — t        j                  di «      }| j                  t        «      5 }| j	                  d|¬«      j                  d«       d d d «       | j                  j                  t        j                  «       y # 1 sw Y   Œ4xY w)Nrl   Fr°  r‡   rK  rN  s      r   Ú6test_False_is_not_a_schema_even_if_you_forget_to_checkzJAntiDraft6LeakMixin.test_False_is_not_a_schema_even_if_you_forget_to_check¥  sr   € ä×)Ñ)¨"¨bÓ1ˆØ×ÑœyÓ)ð 	B¨QØ�N‰N˜5¨8ˆNÓ4×=Ñ=¸bÔA÷	Bà× Ñ  §¡¬j×.HÑ.HÕI÷	Bð 	BúrP  N)rS   r�   rT   Ú__doc__rF  rI  ÚunittestÚskipr   rO  rR  r   r-   r   rB  rB  �  s\   „ ñò?ò
@ð
 €X‡]�]‘3�s“8ÓñJó ðJð €X‡]�]‘3�s“8ÓñJó ñJr-   rB  c                  ó\   — e Zd ZU ej                  Zi i fZded<   ddidfZd„ Z	d„ Z
d„ Zd	„ Zy
)ÚTestDraft3Validatorútuple[dict, dict]rÜ  r€   r†   rŒ   c                ó\   — | j                  ddi«      }|j                  t        «       «       y ©Nr€   Úany)r)   rä  rŠ   r  s     r   Ú#test_any_type_is_valid_for_type_anyz7TestDraft3Validator.test_any_type_is_valid_for_type_any²  s$   € Ø—N‘N F¨E ?Ó3ˆ	Ø×Ñœ6›8Õ$r-   c                óP  — t        j                  | j                  | j                  j                  j	                  dd„ «      ¬«      } |ddi«      }|j                  d«       | j                  t        j                  «      5  |j                  d«       ddd«       y# 1 sw Y   yxY w)z(
        Sigh, because why not.
        r[  c                ó"   — t        |t        «      S r/   r.  r  s     r   rq   zBTestDraft3Validator.test_any_type_is_redefinable.<locals>.<lambda>½  s   € ¬j¸ÄÓ.D€ r-   r  r€   r‡   rŒ   N)	r   r’   r)   r2   r  rä  rÊ  r   r   )r+   r0  r   s      r   Útest_any_type_is_redefinablez0TestDraft3Validator.test_any_type_is_redefinable¶  sŽ   € ô ×!Ñ!Ø�N‰NØŸ™×4Ñ4×=Ñ=ØÑDóô
ˆñ ˜6 5˜/Ó*ˆ	Ø×Ñ˜2ÔØ×Ñœz×9Ñ9Ó:ñ 	&Ø×Ñ˜uÔ%÷	&÷ 	&ñ 	&ús   ÂBÂB%c                óv   — | j                  | j                  ddi«      j                  t        «       «      «       y rZ  )r�   r)   rÝ  rŠ   r*   s    r   Ú!test_is_type_is_true_for_any_typez5TestDraft3Validator.test_is_type_is_true_for_any_typeÅ  s(   € Ø�‰˜Ÿ™¨° Ó7×@Ñ@ÄÃÓJÕKr-   c                óÆ   — | j                  | j                  i «      j                  dd«      «       | j                  | j                  ddi«      j                  d«      «       y )NTr…   r€   r[  )r�   r)   r�   rÝ  r*   s    r   Ú6test_is_type_does_not_evade_bool_if_it_is_being_testedzJTestDraft3Validator.test_is_type_does_not_evade_bool_if_it_is_being_testedÈ  sH   € Ø�‰˜Ÿ™ rÓ*×2Ñ2°4¸ÓCÔDØ�‰˜Ÿ™¨° Ó7×@Ñ@ÀÓFÕGr-   N)rS   r�   rT   r   rº   r)   rÜ  Ú__annotations__rá  r\  r_  ra  rc  r   r-   r   rW  rW  ­  sA   … Ø×*Ñ*€IØ " B˜x€EÐÓ'Ø�yÐ! 5Ð(€Gò%ò&òLóHr-   rW  c                  óD   — e Zd ZU ej                  Zi i fZded<   ddidfZy)ÚTestDraft4ValidatorrX  rÜ  r€   r†   rŒ   N)	rS   r�   rT   r   rÿ   r)   rÜ  rd  rá  r   r-   r   rf  rf  Í  ó+   … Ø×*Ñ*€IØ " B˜x€EÐÓ'Ø�yÐ! 5Ð(�Gr-   rf  c                  óD   — e Zd ZU ej                  Zi i fZded<   ddidfZy)ÚTestDraft6ValidatorrX  rÜ  r€   r†   rŒ   N)	rS   r�   rT   r   rê   r)   rÜ  rd  rá  r   r-   r   ri  ri  Ó  rg  r-   ri  c                  óD   — e Zd ZU ej                  Zi i fZded<   ddidfZy)ÚTestDraft7ValidatorrX  rÜ  r€   r†   rŒ   N)	rS   r�   rT   r   rÒ   r)   rÜ  rd  rá  r   r-   r   rk  rk  Ù  rg  r-   rk  c                  óD   — e Zd ZU ej                  Zi i fZded<   ddidfZy)ÚTestDraft201909ValidatorrX  rÜ  r€   r†   rŒ   N)	rS   r�   rT   r   ÚDraft201909Validatorr)   rÜ  rd  rá  r   r-   r   rm  rm  ß  ó+   … Ø×/Ñ/€IØ " B˜x€EÐÓ'Ø�yÐ! 5Ð(�Gr-   rm  c                  óD   — e Zd ZU ej                  Zi i fZded<   ddidfZy)ÚTestDraft202012ValidatorrX  rÜ  r€   r†   rŒ   N)	rS   r�   rT   r   r¹  r)   rÜ  rd  rá  r   r-   r   rq  rq  å  ro  r-   rq  c                  óf   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestValidatorForc                óà   — ddi}| j                  t        j                  |«      t        j                  «       ddi}| j                  t        j                  |«      t        j                  «       y )Nú$schemaú&http://json-schema.org/draft-03/schemaú'http://json-schema.org/draft-03/schema#)rg  r   Úvalidator_forrº   r5   s     r   Útest_draft_3zTestValidatorFor.test_draft_3ì  ó`   € ØÐEÐFˆØ�‰Ü×$Ñ$ VÓ,Ü×&Ñ&ô	
ð
 ÐFÐGˆØ�‰Ü×$Ñ$ VÓ,Ü×&Ñ&õ	
r-   c                óà   — ddi}| j                  t        j                  |«      t        j                  «       ddi}| j                  t        j                  |«      t        j                  «       y )Nru  ú&http://json-schema.org/draft-04/schemaú'http://json-schema.org/draft-04/schema#)rg  r   rx  rÿ   r5   s     r   Útest_draft_4zTestValidatorFor.test_draft_4ù  rz  r-   c                óà   — ddi}| j                  t        j                  |«      t        j                  «       ddi}| j                  t        j                  |«      t        j                  «       y )Nru  ú&http://json-schema.org/draft-06/schemaú'http://json-schema.org/draft-06/schema#)rg  r   rx  rê   r5   s     r   Útest_draft_6zTestValidatorFor.test_draft_6  rz  r-   c                óà   — ddi}| j                  t        j                  |«      t        j                  «       ddi}| j                  t        j                  |«      t        j                  «       y )Nru  ú&http://json-schema.org/draft-07/schemaú'http://json-schema.org/draft-07/schema#)rg  r   rx  rÒ   r5   s     r   Útest_draft_7zTestValidatorFor.test_draft_7  rz  r-   c                óà   — ddi}| j                  t        j                  |«      t        j                  «       ddi}| j                  t        j                  |«      t        j                  «       y )Nru  z,https://json-schema.org/draft/2019-09/schemaz-https://json-schema.org/draft/2019-09/schema#)rg  r   rx  rn  r5   s     r   Útest_draft_201909z"TestValidatorFor.test_draft_201909   ó`   € ØÐKÐLˆØ�‰Ü×$Ñ$ VÓ,Ü×+Ñ+ô	
ð
 ÐLÐMˆØ�‰Ü×$Ñ$ VÓ,Ü×+Ñ+õ	
r-   c                óà   — ddi}| j                  t        j                  |«      t        j                  «       ddi}| j                  t        j                  |«      t        j                  «       y )Nru  ú,https://json-schema.org/draft/2020-12/schemaú-https://json-schema.org/draft/2020-12/schema#)rg  r   rx  r¹  r5   s     r   Útest_draft_202012z"TestValidatorFor.test_draft_202012-  r‰  r-   c                ój   — | j                  t        j                  d«      t        j                  «       y )NT©rg  r   rx  r£   r*   s    r   Ú	test_TruezTestValidatorFor.test_True:  s%   € Ø�‰Ü×$Ñ$ TÓ*Ü×&Ñ&õ	
r-   c                ój   — | j                  t        j                  d«      t        j                  «       y rð   r�  r*   s    r   Ú
test_FalsezTestValidatorFor.test_False@  s%   € Ø�‰Ü×$Ñ$ UÓ+Ü×&Ñ&õ	
r-   c                óŒ   — t        j                  ddidd„ ¬«      }ddi}| j                  t        j                  |«      |«       y )Nre   ri   Ú12c                ó&   — | j                  dd«      S rk   rm   ro   s    r   rq   z8TestValidatorFor.test_custom_validator.<locals>.<lambda>J  rr   r-   rs   ru  ©r   r(   rg  rx  ©r+   r)   r   s      r   Útest_custom_validatorz&TestValidatorFor.test_custom_validatorF  sK   € Ü×%Ñ%ØÐ/Ð0ØÙ+ô
ˆ	ð
 Ð-Ð.ˆØ�‰Ü×$Ñ$ VÓ,Øõ	
r-   c                óˆ   — t        j                  ddid¬«      }ddi}| j                  t        j                  |«      |«       y )Nr!   r|   Ú13rO   ru  r–  r—  s      r   Útest_custom_validator_draft6z-TestValidatorFor.test_custom_validator_draft6R  sH   € Ü×%Ñ%ØÐ 1Ð2Øô
ˆ	ð Ð.Ð/ˆØ�‰Ü×$Ñ$ VÓ,Øõ	
r-   c                ój   — | j                  t        j                  i «      t        j                  «       y r/   r�  r*   s    r   Ú%test_validator_for_jsonschema_defaultz6TestValidatorFor.test_validator_for_jsonschema_default]  s!   € Ø�‰”j×.Ñ.¨rÓ2´J×4NÑ4NÕOr-   c                óR   — | j                  t        j                  i d ¬«      d «       y )Nr÷  )rg  r   rx  r*   s    r   Ú!test_validator_for_custom_defaultz2TestValidatorFor.test_validator_for_custom_default`  s   € Ø�‰”j×.Ñ.¨r¸4Ô@À$ÕGr-   c                ó  — | j                  t        «      5 }t        j                  ddi¬«       d d d «       | j	                  j
                  t        «       | j	                  t        |j                  «      d«       y # 1 sw Y   ŒOxY w)Nru  ÚunknownSchemarì  z‚The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future.)	ÚassertWarnsÚDeprecationWarningr   rx  r%   ÚfilenameÚ__file__r6  Úwarning)r+   r*  s     r   Ú1test_warns_if_meta_schema_specified_was_not_foundzBTestValidatorFor.test_warns_if_meta_schema_specified_was_not_foundc  ss   € Ø×ÑÔ0Ó1ð 	J°RÜ×$Ñ$¨Y¸Ð,HÕI÷	Jð 	×Ñ˜Ÿ™¤hÔ/Ø×ÑÜ�—
‘
‹Oð&õ	
÷		Jð 	Jús   –A=Á=Bc                óÔ   — t        j                  d¬«      5 }t        j                  d«       t        j                  i i ¬«       d d d «       | j                  «       y # 1 sw Y   ŒxY w)NT)ÚrecordÚalways)r   rø  )ÚwarningsÚcatch_warningsÚsimplefilterr   rx  rh  )r+   Úws     r   Ú0test_does_not_warn_if_meta_schema_is_unspecifiedzATestValidatorFor.test_does_not_warn_if_meta_schema_is_unspecifiedo  sU   € Ü×$Ñ$¨DÔ1ð 	<°QÜ×!Ñ! (Ô+Ü×$Ñ$¨B¸Õ;÷	<ð 	×Ñ˜Õ÷	<ð 	<ús   —-AÁA'c                ól   — ddit        «       }}| j                  t        j                  ||«      |«       y )Nru  zmailto:foo@example.com)rŠ   rg  r   rx  )r+   r   rø  s      r   Ú-test_validator_for_custom_default_with_schemaz>TestValidatorFor.test_validator_for_custom_default_with_schemau  s.   € Ø$Ð&>Ð?ÄÃ�ˆØ�‰”j×.Ñ.¨v°wÓ?ÀÕIr-   N)rS   r�   rT   ry  r~  r‚  r†  rˆ  r�  r�  r’  r˜  r›  r�  rŸ  r§  r¯  r±  r   r-   r   rs  rs  ë  sP   „ ò
ò
ò
ò
ò
ò
ò
ò
ò

ò	
òPòHò

òóJr-   rs  c                  óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestValidatec                óÚ   — g }t         j                  j                  |d|j                  «      5  t	        j
                  i |«       d d d «       | j                  ||g«       y # 1 sw Y   ŒxY w)Nr¤   )r
   ÚpatchrŠ   Úappendr   rä  r%   )r+   r   r)   Úresults       r   Ú
assertUseszTestValidate.assertUses{  sX   € ØˆÜ�Z‰Z×Ñ˜y¨.¸&¿-¹-ÓHñ 	,Ü×Ñ  FÔ+÷	,à×Ñ˜ & Õ*÷	,ð 	,ús   ®A!Á!A*c                ó�   — | j                  ddit        j                  ¬«       | j                  ddit        j                  ¬«       y )Nru  rw  ©r   r)   rv  )r¸  r   rº   r*   s    r   Útest_draft3_validator_is_chosenz,TestValidate.test_draft3_validator_is_chosen�  óJ   € Ø�‰ØÐHÐIÜ ×0Ñ0ð 	ô 	
ð
 	�‰ØÐGÐHÜ ×0Ñ0ð 	õ 	
r-   c                ó�   — | j                  ddit        j                  ¬«       | j                  ddit        j                  ¬«       y )Nru  r}  rº  r|  )r¸  r   rÿ   r*   s    r   Útest_draft4_validator_is_chosenz,TestValidate.test_draft4_validator_is_chosenŒ  r¼  r-   c                ó�   — | j                  ddit        j                  ¬«       | j                  ddit        j                  ¬«       y )Nru  r�  rº  r€  )r¸  r   rê   r*   s    r   Útest_draft6_validator_is_chosenz,TestValidate.test_draft6_validator_is_chosen—  r¼  r-   c                ó�   — | j                  ddit        j                  ¬«       | j                  ddit        j                  ¬«       y )Nru  r…  rº  r„  )r¸  r   rÒ   r*   s    r   Útest_draft7_validator_is_chosenz,TestValidate.test_draft7_validator_is_chosen¢  r¼  r-   c                ó�   — | j                  ddit        j                  ¬«       | j                  ddit        j                  ¬«       y )Nru  rŒ  rº  r‹  ©r¸  r   r¹  r*   s    r   Ú$test_draft202012_validator_is_chosenz1TestValidate.test_draft202012_validator_is_chosen­  sR   € Ø�‰àÐJðô !×5Ñ5ð	 	ô 	
ð 	�‰àÐIðô !×5Ñ5ð	 	õ 	
r-   c                óF   — | j                  i t        j                  ¬«       y )Nrº  rÄ  r*   s    r   Ú)test_draft202012_validator_is_the_defaultz6TestValidate.test_draft202012_validator_is_the_default¼  s   € Ø�‰˜r¬Z×-LÑ-LˆÕMr-   c                óæ   — | j                  t        j                  «      5 }t        j                  dddi«       d d d «       | j                  t        j                  «      d«       y # 1 sw Y   Œ/xY w)Nr‡   r€   r‹   z1(?s)Failed validating '.*' in schema.*On instance)rÊ  r   r   r   rä  ÚassertRegexr6  r(  rE  s     r   Útest_validation_error_messagez*TestValidate.test_validation_error_message¿  s_   € Ø×Ñœz×9Ñ9Ó:ð 	8¸aÜ×Ñ  V¨XÐ$6Ô7÷	8à×ÑÜ�—‘ÓØ?õ	
÷	8ð 	8úó    A'Á'A0c                óæ   — | j                  t        j                  «      5 }t        j                  dddi«       d d d «       | j                  t        j                  «      d«       y # 1 sw Y   Œ/xY w)Nr‡   r€   z3(?s)Failed validating '.*' in metaschema.*On schema)rÊ  r   rË  r   rä  rÉ  r6  r(  rE  s     r   Útest_schema_error_messagez&TestValidate.test_schema_error_messageÇ  s^   € Ø×Ñœz×5Ñ5Ó6ð 	2¸!Ü×Ñ  V¨R LÔ1÷	2à×ÑÜ�—‘ÓØAõ	
÷	2ð 	2úrË  c                óø   — ddddœddigi}| j                  t        j                  «      5 }t        j                  d|«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)	NrF  r‰   r[  rŽ  r€   r„   r‡   z!12 is less than the minimum of 20)rÊ  r   r   r   rä  rv   r6  r(  )r+   r   rj  s      r   Útest_it_uses_best_matchz$TestValidate.test_it_uses_best_matchÏ  sv   € àØ!¨bÑ1Ø˜Ð!ðð
ˆð ×Ñœz×9Ñ9Ó:ð 	,¸aÜ×Ñ  FÔ+÷	,à�‰Ð9¼3¸q¿{¹{Ó;KÕL÷	,ð 	,ús   «A0Á0A9N)rS   r�   rT   r¸  r»  r¾  rÀ  rÂ  rÅ  rÇ  rÊ  rÍ  rÏ  r   r-   r   r³  r³  z  s6   „ ò+ò	
ò	
ò	
ò	
ò
òNò
ò
ó	Mr-   r³  c                  óv   — e Zd ZdZdZddiZd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRefResolverrl   zfoo://storedÚstoredr   c                óÀ   — i | _         | j                  | j                  i| _        t	        j
                  | j                  | j                   | j                  «      | _        y r/   )ÚreferrerÚ
stored_uriÚstored_schemar¯  r   r³  Úbase_urir±  r*   s    r   r,   zTestRefResolver.setUpá  sD   € ØˆŒØ—o‘o t×'9Ñ'9Ð:ˆŒ
Ü"×.Ñ.Ø�M‰M˜4Ÿ=™=¨$¯*©*ó
ˆ�r-   c                ó¨  — t         j                  j                  d   }t        j                  j                  | j                  d«      5 }| j                  j                  |«      5 }	 d d d «       d d d «       | j                  t         j                  j                  «       | j                  j                  «       y # 1 sw Y   ŒWxY w# 1 sw Y   Œ[xY w)Nre   Úresolve_remote)r   rº   r1   r
   rµ  rŠ   r±  r  r%   rh  Úcalled)r+   r´  ÚpatchedÚresolveds       r   Ú6test_it_does_not_retrieve_schema_urls_from_the_networkzFTestRefResolver.test_it_does_not_retrieve_schema_urls_from_the_networkè  s¤   € Ü×(Ñ(×4Ñ4°TÑ:ˆÜ�Z‰Z×Ñ˜tŸ}™}Ð.>Ó?ð 	À7Ø—‘×(Ñ(¨Ó-ð °Ø÷÷	ð 	×Ñ˜¤:×#=Ñ#=×#IÑ#IÔJØ×Ñ˜Ÿ™Õ(÷ð ú÷	ð 	ús$   ÁCÁ$B<Á&CÂ<C	ÃCÃCc                óÞ   — d}dt        «       i| j                  d<   | j                  j                  |«      5 }| j	                  || j                  d   d   «       d d d «       y # 1 sw Y   y xY w)Nz#/properties/foorŒ   rq  )rŠ   rÔ  r±  r  r%   )r+   r´  rÜ  s      r   Útest_it_resolves_local_refsz+TestRefResolver.test_it_resolves_local_refsð  sg   € Ø ˆØ',¬f«hÐ&7ˆ�‰�lÑ#Ø�]‰]×$Ñ$ SÓ)ð 	K¨XØ×Ñ˜X t§}¡}°\Ñ'BÀ5Ñ'IÔJ÷	K÷ 	Kñ 	Kús   ·#A#Á#A,c                óB  — dddidœ}t         j                  j                  |d„ ¬«      }|j                  d«      5 }| j	                  ||d   «       d d d «       |j                  d	«      5 }| j	                  ||d   «       d d d «       y # 1 sw Y   Œ9xY w# 1 sw Y   y xY w)
Nzhttp://bar/schema#rŒ   rÆ   )re   r[   c                ó&   — | j                  dd«      S rk   rm   rì  s    r   rq   zETestRefResolver.test_it_resolves_local_refs_with_id.<locals>.<lambda>ú  ó   €  §¡¨D°"Ó!5€ r-   ©rt   z#/ar[   zhttp://bar/schema#/a)r   r³  Úfrom_schemar  r%   ©r+   r   r±  rÜ  s       r   Ú#test_it_resolves_local_refs_with_idz3TestRefResolver.test_it_resolves_local_refs_with_idö  s«   € Ø,°E¸5°>ÑBˆÜ×)Ñ)×5Ñ5ØÙ5ð 6ó 
ˆð ×Ñ Ó&ð 	4¨(Ø×Ñ˜X v¨c¡{Ô3÷	4à×ÑÐ 6Ó7ð 	4¸8Ø×Ñ˜X v¨c¡{Ô3÷	4ð 	4÷	4ð 	4ú÷	4ð 	4ús   »B	Á*BÂ	BÂBc                ój  — | j                   j                  | j                  «      5 }| j                  || j                  «       d d d «       ddi| j                   j
                  d<   | j                   j                  d«      5 }| j                  |d«       d d d «       y # 1 sw Y   Œ[xY w# 1 sw Y   y xY w)NrŒ   r‡   Ú
cached_refzcached_ref#/foo)r±  r  rÕ  rg  rÖ  r¯  r%   )r+   rÜ  s     r   Útest_it_retrieves_stored_refsz-TestRefResolver.test_it_retrieves_stored_refs  sœ   € Ø�]‰]×$Ñ$ T§_¡_Ó5ð 	8¸Ø�M‰M˜( D×$6Ñ$6Ô7÷	8ð .3°B¨Kˆ�‰×Ñ˜LÑ)Ø�]‰]×$Ñ$Ð%6Ó7ð 	+¸8Ø×Ñ˜X rÔ*÷	+ð 	+÷		8ð 	8ú÷	+ð 	+ús   ¦BÂB)ÂB&Â)B2c                ól  — d}ddi}dt         j                  v r<| j                  t         j                  j                  dt         j                  d   «       t	        d|i«      t         j                  d<   | j
                  j                  |«      5 }| j                  |d«       d d d «       y # 1 sw Y   y xY w)Núhttp://bar#bazr+  r‡   Úrequestsú
http://bar)ÚsysÚmodulesr$   Ú__setitem__ÚReallyFakeRequestsr±  r  r%   )r+   r´  r   rÜ  s       r   Ú,test_it_retrieves_unstored_refs_via_requestsz<TestRefResolver.test_it_retrieves_unstored_refs_via_requests	  s•   € ØˆØ˜�ˆàœŸ™Ñ$Ø�O‰OÜ—‘×'Ñ'¨´S·[±[ÀÑ5Lôô #5°lÀFÐ5KÓ"LŒ�‰�JÑà�]‰]×$Ñ$ SÓ)ð 	+¨XØ×Ñ˜X rÔ*÷	+÷ 	+ñ 	+ús   ÂB*Â*B3c                óä  ‡ ‡— d}ddiŠdt         j                  v r<‰ j                  t         j                  j                  dt         j                  d   «       d t         j                  d<   t        ˆˆ fd„«       }‰ j                  t
        t        dt        j                  «       |t        _        ‰ j                  j                  |«      5 }	 d d d «       ‰ j                  d«       y # 1 sw Y   ŒxY w)Nrë  r+  r‡   rì  c              3  ó�   •K  — ‰j                  | d«       t        t        j                  ‰«      j	                  d«      «      –— y ­w)Nrí  Úutf8)r%   r   ÚjsonÚdumpsÚencode)Úurlr   r+   s    €€r   Úfake_urlopenzQTestRefResolver.test_it_retrieves_unstored_refs_via_urlopen.<locals>.fake_urlopen   s6   øè ø€ à×Ñ˜S ,Ô/Üœ$Ÿ*™* VÓ,×3Ñ3°FÓ;Ó<Ó<ùs   ƒAAÚurlopen)rî  rï  r$   rð  r   Úsetattrr   rû  r±  r  r%   )r+   r´  rú  rÜ  r   s   `   @r   Ú+test_it_retrieves_unstored_refs_via_urlopenz;TestRefResolver.test_it_retrieves_unstored_refs_via_urlopen  sÃ   ù€ ØˆØ˜�ˆàœŸ™Ñ$Ø�O‰OÜ—‘×'Ñ'¨´S·[±[ÀÑ5Lôð #'Œ�‰�JÑä	ô	=ó 
ð	=ð 	�‰œ¤¨Y¼
×8JÑ8JÔKØ)Œ
Ôà�]‰]×$Ñ$ SÓ)ð 	¨XØ÷	à×Ñ˜ 2Õ&÷	ð 	ús   Ã	C&Ã&C/c                ó¬  — t        j                  dd¬«      5 }| j                  t        j                  |j
                  «       t        j                  ddi|«       d d d «       dj                  t        j
                  «      «      }| j                  j                  |«      5 }| j                  |d«       d d d «       y # 1 sw Y   ŒdxY w# 1 sw Y   y xY w)NFÚwt)ÚdeleteÚmoderŒ   rÆ   zfile://{}#foo)ÚtempfileÚNamedTemporaryFiler$   ÚosÚremover¶   rö  Údumprò   r   r±  r  r%   )r+   Útempfr´  rÜ  s       r   Ú(test_it_retrieves_local_refs_via_urlopenz8TestRefResolver.test_it_retrieves_local_refs_via_urlopen,  sª   € Ü×(Ñ(°¸DÔAð 	-ÀUØ�O‰OœBŸI™I u§z¡zÔ2Ü�I‰I�u˜e�n eÔ,÷	-ð ×$Ñ$¤\°%·*±*Ó%=Ó>ˆØ�]‰]×$Ñ$ SÓ)ð 	.¨XØ×Ñ˜X uÔ-÷	.ð 	.÷	-ð 	-ú÷
	.ð 	.ús   ˜AB>Â"C
Â>CÃ
Cc                ó€  — ddi}t         j                  j                  |d„ ¬«      }| j                  |j                  d«       | j                  |j
                  d«       |j                  d«      5 }| j                  ||«       d d d «       |j                  d«      5 }| j                  ||«       d d d «       |j                  d«      5 }| j                  ||«       d d d «       |j                  d«      5 }| j                  ||«       d d d «       y # 1 sw Y   ŒŽxY w# 1 sw Y   ŒnxY w# 1 sw Y   ŒNxY w# 1 sw Y   y xY w)Nre   rŒ   c                ó&   — | j                  dd«      S rk   rm   rì  s    r   rq   zPTestRefResolver.test_it_can_construct_a_base_uri_from_a_schema.<locals>.<lambda>9  râ  r-   rã  rl   ú#zfoo#©r   r³  rä  r%   r×  Úresolution_scoper  rå  s       r   Ú.test_it_can_construct_a_base_uri_from_a_schemaz>TestRefResolver.test_it_can_construct_a_base_uri_from_a_schema5  s3  € Ø˜�ˆÜ×)Ñ)×5Ñ5ØÙ5ð 6ó 
ˆð 	×Ñ˜×*Ñ*¨EÔ2Ø×Ñ˜×2Ñ2°EÔ:Ø×Ñ Ó#ð 	/ xØ×Ñ˜X vÔ.÷	/à×Ñ Ó$ð 	/¨Ø×Ñ˜X vÔ.÷	/à×Ñ Ó&ð 	/¨(Ø×Ñ˜X vÔ.÷	/à×Ñ Ó'ð 	/¨8Ø×Ñ˜X vÔ.÷	/ð 	/÷	/ð 	/ú÷	/ð 	/ú÷	/ð 	/ú÷	/ð 	/ús0   Á0DÂDÃD(Ã4D4ÄDÄD%Ä(D1Ä4D=c                ó–  — i }t         j                  j                  |«      }| j                  |j                  d«       | j                  |j
                  d«       |j                  d«      5 }| j                  ||«       d d d «       |j                  d«      5 }| j                  ||«       d d d «       y # 1 sw Y   Œ6xY w# 1 sw Y   y xY w)Nrl   r  r  rå  s       r   Ú9test_it_can_construct_a_base_uri_from_a_schema_without_idzITestRefResolver.test_it_can_construct_a_base_uri_from_a_schema_without_idF  s¸   € ØˆÜ×)Ñ)×5Ñ5°fÓ=ˆØ×Ñ˜×*Ñ*¨BÔ/Ø×Ñ˜×2Ñ2°BÔ7Ø×Ñ Ó#ð 	/ xØ×Ñ˜X vÔ.÷	/à×Ñ Ó$ð 	/¨Ø×Ñ˜X vÔ.÷	/ð 	/÷	/ð 	/ú÷	/ð 	/ús   Á+B3ÂB?Â3B<Â?Cc                óÈ   ‡ ‡‡— ˆˆˆ fd„}ddiŠdŠt        j                  di d|i¬«      }|j                  ‰«      5 }‰ j                  |‰«       d d d «       y # 1 sw Y   y xY w)Nc                ó,   •— ‰j                  | ‰«       ‰S r/   r  )rù  r´  r   r+   s    €€€r   Úhandlerz@TestRefResolver.test_custom_uri_scheme_handlers.<locals>.handlerQ  s   ø€ Ø×Ñ˜S #Ô&ØˆMr-   rŒ   rÆ   ú	foo://barrl   ©Úhandlers)r   r³  r  r%   )r+   r  r±  rÜ  r´  r   s   `   @@r   Útest_custom_uri_scheme_handlersz/TestRefResolver.test_custom_uri_scheme_handlersP  sf   ú€ ö	ð ˜�ˆØˆÜ×)Ñ)¨"¨b¸EÀ7Ð;KÔLˆØ×Ñ Ó$ð 	/¨Ø×Ñ˜X vÔ.÷	/÷ 	/ñ 	/ús   ¼AÁA!c                ó   ‡ ‡— t        «       gŠˆˆ fd„}d}t        j                  di dd|i¬«      }|j                  |«      5  	 d d d «       |j                  |«      5  	 d d d «       y # 1 sw Y   Œ%xY w# 1 sw Y   y xY w)Nc                óf   •— 	 ‰j                  «       S # t        $ r ‰j                  d«       Y y w xY w)Nz#Response must not have been cached!©rR   Ú
IndexErrorr   ©rù  Úresponser+   s    €€r   r  z5TestRefResolver.test_cache_remote_on.<locals>.handler^  s3   ø€ ðAØ—|‘|“~Ð%øÜò AØ—	‘	Ð?Ö@ðAúó   ƒ “0¯0r  rl   TrŒ   ©Úcache_remoter  ©rŠ   r   r³  r  ©r+   r  r´  r±  r  s   `   @r   Útest_cache_remote_onz$TestRefResolver.test_cache_remote_on[  sŠ   ù€ Ü“H�:ˆõ	Að ˆÜ×)Ñ)Ø� °¸Ð0@ô
ˆð ×Ñ Ó$ñ 	Ø÷	à×Ñ Ó$ñ 	Ø÷	ð 	÷	ð 	ú÷	ð 	ús   ÁA(ÁA4Á(A1Á4A=c                ó²   ‡ ‡— t        «       gŠˆˆ fd„}d}t        j                  di dd|i¬«      }|j                  |«      5  	 d d d «       y # 1 sw Y   y xY w)Nc                óf   •— 	 ‰j                  «       S # t        $ r ‰j                  d«       Y y w xY w)NzHandler called twice!r  r  s    €€r   r  z6TestRefResolver.test_cache_remote_off.<locals>.handlerp  s0   ø€ ð3Ø—|‘|“~Ð%øÜò 3Ø—	‘	Ð1Ö2ð3úr  r  rl   FrŒ   r  r!  r"  s   `   @r   Útest_cache_remote_offz%TestRefResolver.test_cache_remote_offm  s^   ù€ Ü“H�:ˆõ	3ð ˆÜ×)Ñ)Ø� °%¸Ð1Aô
ˆð ×Ñ Ó$ñ 	Ø÷	÷ 	ñ 	ús   ÁAÁAc                ó’  ‡— t        d«      Šˆfd„}d}t        j                  di d|i¬«      }| j                  t        j
                  «      5 }|j                  |«      5  | j                  d«       d d d «       d d d «       | j                  j                  t	        j
                  ‰«      «       y # 1 sw Y   ŒAxY w# 1 sw Y   ŒExY w)NzOh no! What's this?c                ó   •— ‰‚r/   r   )rù  r�  s    €r   r  zTTestRefResolver.test_if_you_give_it_junk_you_get_a_resolution_error.<locals>.handler€  s   ø€ ØˆKr-   r  rl   rŒ   r  zShouldn't get this far!)
r'  r   r³  rÊ  r   ÚRefResolutionErrorr  r   r%   r(  )r+   r  r´  r±  Úerrr�  s        @r   Ú3test_if_you_give_it_junk_you_get_a_resolution_errorzCTestRefResolver.test_if_you_give_it_junk_you_get_a_resolution_error}  s¯   ø€ ÜÐ0Ó1ˆô	ð ˆÜ×)Ñ)¨"¨b¸EÀ7Ð;KÔLˆØ×Ñœz×<Ñ<Ó=ð 	5ÀØ×#Ñ# CÓ(ñ 5Ø—	‘	Ð3Ô4÷5÷	5ð 	×Ñ˜Ÿ™¬
×(EÑ(EÀeÓ(LÕM÷5ð 5ú÷	5ð 	5ús$   ÁB=ÁB1Á1B=Â1B:	Â6B=Â=Cc                ó"  — t        j                  di «      }|j                  «        | j                  t        j
                  «      5 }|j                  «        d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nrl   zFailed to pop the scope)	r   r³  Ú	pop_scoperÊ  r   r)  rv   r6  r(  )r+   r±  Úexcs      r   Ú.test_helpful_error_message_on_failed_pop_scopez>TestRefResolver.test_helpful_error_message_on_failed_pop_scopeŠ  so   € Ü×)Ñ)¨"¨bÓ1ˆØ×ÑÔØ×Ñœz×<Ñ<Ó=ð 	!ÀØ×ÑÔ ÷	!à�‰Ð/´°S·]±]Ó1CÕD÷	!ð 	!ús   ÁBÂBN)rS   r�   rT   r×  rÕ  rÖ  r,   rÝ  rß  ræ  ré  rò  rý  r  r  r  r  r#  r&  r+  r/  r   r-   r   rÑ  rÑ  Û  sd   „ à€HØ€JØ˜xÐ(€Mò
ò)òKò	4ò+ò+ò'ò,.ò/ò"/ò	/òò$ò NóEr-   rÑ  c                ó"   — d„ }t        | |¬«      S )Nc                ó¢   — | j                   D �cg c]  }t        |«      ‘Œ c}| j                  D �cg c]  }t        |«      ‘Œ c}fS c c}w c c}w r/   )r_  r6  r@   )r�  rj  s     r   Úkeyzsorted_errors.<locals>.key“  s@   € à"ŸZ™ZÖ(˜ŒS��VÒ(Ø"×.Ñ.Ö/˜ŒS��VÒ/ð
ð 	
ùÚ(ùÚ/s
   �A±A)r2  )Úsorted)r   r2  s     r   rf  rf  ’  s   € ò
ô
 �&˜cÔ"Ð"r-   c                  ó4   — e Zd Z ej                  «       Zd„ Zy)rñ  c                ó¦   — | j                   j                  |«      }|€t        dt        |«      z   «      ‚t	        t        j                  |«      «      S )NzUnknown URL: )Ú
_responsesrn   r'  rX   Ú_ReallyFakeJSONResponserö  r÷  )r+   rù  r  s      r   rn   zReallyFakeRequests.get   sC   € Ø—?‘?×&Ñ& sÓ+ˆØˆ;Ü˜_¬t°C«yÑ8Ó9Ð9Ü&¤t§z¡z°(Ó';Ó<Ð<r-   N)rS   r�   rT   rù  rú  r6  rn   r   r-   r   rñ  rñ  ›  s   „ ð �—‘“€Jó=r-   rñ  c                  ó4   — e Zd Z ej                  «       Zd„ Zy)r7  c                ó@   — t        j                  | j                  «      S r/   )rö  ÚloadsÚ	_responser*   s    r   rö  z_ReallyFakeJSONResponse.json¬  s   € Ü�z‰z˜$Ÿ.™.Ó)Ð)r-   N)rS   r�   rT   rù  rú  r;  rö  r   r-   r   r7  r7  §  s   „ ð �—‘“	€Ió*r-   r7  )3Ú
__future__r   Úcollectionsr   r   Ú
contextlibr   Údecimalr   Úior   rT  r	   r
   Úurllib.requestr   rö  r  rî  r  r«  rù  Ú
jsonschemar   r   r   r   r   Újsonschema.tests._helpersr   r   r   rŸ   rX  rŠ   rÇ  r×  rB  rW  rf  ri  rk  rm  rq  rs  r³  rÑ  rf  rp   rñ  r7  r   r-   r   ú<module>rD     sy  ðÝ "ç )Ý %Ý Ý ß #Ý 'Û Û 	Û 
Û Û Û ã ÷õ õ *ò1ôPI˜(ô PIôfzC (ô zCôzL
 ô L
ô^8˜6ô 8ô8o-Ð-¨vô o-ôdJ˜&ô Jô<HÐ-Ð/AÀ8ô Hô@)Ð-Ð/AÀ8ô )ô)Ð,¨hô )ô)Ð,¨hô )ô)Ð1°8ô )ô)Ð1°8ô )ôLJ�xô LJô^^M�8ô ^MôBtE�hô tEòn#ð ‡�ô=˜ó =ó ð=ð ‡�ô*˜fó *ó ñ*r-   