Ë
    ` ÚdöJ  ã                   óž   — d dl mZ d dlZd dlmZ d dlm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«      Zy)é    )ÚTestCaseN)Ú
exceptions)Ú_LATEST_VERSIONc                   ól   — 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y)ÚTestBestMatchc                 ó.  — t        t        |«      j                  |«      «      }t        j                  t        |«      «      }t        j                  t        |«      «      }| j                  |j                  «       |j                  «       d|› d|› �«       |S )NzNo consistent best match!
Got: z

Then: )	Úlistr   Úiter_errorsr   Ú
best_matchÚiterÚreversedÚassertEqualÚ	_contents)ÚselfÚinstanceÚschemaÚerrorsÚbestÚreversed_bests         úB/usr/lib/python3/dist-packages/jsonschema/tests/test_exceptions.pyÚbest_match_ofzTestBestMatch.best_match_of	   s€   € Ü”o fÓ-×9Ñ9¸(ÓCÓDˆÜ×$Ñ$¤T¨&£\Ó2ˆÜ"×-Ñ-¬h°vÓ.>Ó?ˆØ×ÑØ�N‰NÓØ×#Ñ#Ó%Ø.¨t¨f°J¸}¸oÐNô	
ð
 ˆó    c                 ó„   — ddddddiidœii}| j                  ddg ii|¬«      }| j                  |j                  d	«       y )
NÚ
propertiesÚfooé   ÚbarÚtypeÚobject)ÚminPropertiesr   ©r   r   r    ©r   r   Ú	validator©r   r   r   s      r   Ú(test_shallower_errors_are_better_matchesz6TestBestMatch.test_shallower_errors_are_better_matches   s]   € àØØ%&Ø#(¨6°8Ð*<Ð"=ñðð
ˆð ×!Ñ!¨E°E¸2°;Ð+?ÈÐ!ÓOˆØ×Ñ˜Ÿ™¨Õ9r   c                 ó†   — dddiddigddiddigdœ}| j                  i |¬«      }| j                  |j                  d«       y)	zn
        A property you *must* match is probably better than one you have to
        match a part of.
        r   r   ÚstringÚnumber)r    ÚanyOfÚoneOfr!   r    Nr"   r$   s      r   Ú%test_oneOf_and_anyOf_are_weak_matchesz3TestBestMatch.test_oneOf_and_anyOf_are_weak_matches    s]   € ð Ø˜xÐ(¨6°8Ð*<Ð=Ø˜xÐ(¨6°8Ð*<Ð=ñ
ˆð
 ×!Ñ!¨2°fÐ!Ó=ˆØ×Ñ˜Ÿ™¨Õ9r   c                 óŽ   — dddddiddddiiigiii}| j                  dddii|¬	«      }| j                  |j                  d«       y
)aL  
        If the most relevant error is an anyOf, then we traverse its context
        and select the otherwise *least* relevant error, since in this case
        that means the most specific, deep, error inside the instance.

        I.e. since only one of the schemas must match, we look for the most
        relevant one.
        r   r   r)   r   r'   r   Úarrayé   r!   N©r   r   Úvalidator_valuer$   s      r   Ú8test_if_the_most_relevant_error_is_anyOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_anyOf_it_is_traversed.   ós   € ð ØØØ Ð*Ø%¨°¸Ð/@Ð'AÐBðððð	
ˆð ×!Ñ!¨E°E¸2°;Ð+?ÈÐ!ÓOˆØ×Ñ˜×-Ñ-¨wÕ7r   c                 ó|   — dddiddiddigi}| j                  g |¬«      }| j                  |j                  d«       y)z’
        We don't traverse into an anyOf (as above) if all of its context errors
        seem to be equally "wrong" against the instance.
        r)   r   r'   Úintegerr   r!   Nr"   r$   s      r   Ú3test_no_anyOf_traversal_for_equally_relevant_errorszATestBestMatch.test_no_anyOf_traversal_for_equally_relevant_errorsE   óV   € ð Ø˜Ð"Ø˜Ð#Ø˜Ð"ðð
ˆð ×!Ñ!¨2°fÐ!Ó=ˆØ×Ñ˜Ÿ™¨Õ1r   c                 óp   — dddigi}| j                  g |¬«      }| j                  |j                  d«       y)z„
        We *do* traverse anyOf with a single nested error, even though it is
        vacuously equally relevant to itself.
        r)   r   r'   r!   Nr"   r$   s      r   Ú6test_anyOf_traversal_for_single_equally_relevant_errorzDTestBestMatch.test_anyOf_traversal_for_single_equally_relevant_errorU   óF   € ð Ø˜Ð"ðð
ˆð
 ×!Ñ!¨2°fÐ!Ó=ˆØ×Ñ˜Ÿ™¨Õ0r   c                 óŽ   — dddddiddddiiigiii}| j                  dddii|¬	«      }| j                  |j                  d«       y
)aL  
        If the most relevant error is an oneOf, then we traverse its context
        and select the otherwise *least* relevant error, since in this case
        that means the most specific, deep, error inside the instance.

        I.e. since only one of the schemas must match, we look for the most
        relevant one.
        r   r   r*   r   r'   r   r-   r.   r!   Nr/   r$   s      r   Ú8test_if_the_most_relevant_error_is_oneOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_oneOf_it_is_traversedc   r2   r   c                 ó|   — dddiddiddigi}| j                  g |¬«      }| j                  |j                  d«       y)z’
        We don't traverse into an oneOf (as above) if all of its context errors
        seem to be equally "wrong" against the instance.
        r*   r   r'   r4   r   r!   Nr"   r$   s      r   Ú3test_no_oneOf_traversal_for_equally_relevant_errorszATestBestMatch.test_no_oneOf_traversal_for_equally_relevant_errorsz   r6   r   c                 óp   — dddigi}| j                  g |¬«      }| j                  |j                  d«       y)z„
        We *do* traverse oneOf with a single nested error, even though it is
        vacuously equally relevant to itself.
        r*   r   r'   r!   Nr"   r$   s      r   Ú6test_oneOf_traversal_for_single_equally_relevant_errorzDTestBestMatch.test_oneOf_traversal_for_single_equally_relevant_errorŠ   r9   r   c                 óŽ   — dddddiddddiiigiii}| j                  dddii|¬	«      }| j                  |j                  d«       y
)z¥
        Now, if the error is allOf, we traverse but select the *most* relevant
        error from the context, because all schemas here must match anyways.
        r   r   ÚallOfr   r'   r   r-   r.   r!   Nr/   r$   s      r   Ú8test_if_the_most_relevant_error_is_allOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_allOf_it_is_traversed˜   ss   € ð ØØØ Ð*Ø%¨°¸Ð/@Ð'AÐBðððð	
ˆð ×!Ñ!¨E°E¸2°;Ð+?ÈÐ!ÓOˆØ×Ñ˜×-Ñ-¨xÕ8r   c           
      óš   — dddddidddiddddiiigigiii}| j                  dddii|¬	«      }| j                  |j                  d«       y
)zp
        We traverse into nested contexts (a oneOf containing an error in a
        nested oneOf here).
        r   r   r*   r   r'   r   r-   r.   r!   Nr/   r$   s      r   Útest_nested_context_for_oneOfz+TestBestMatch.test_nested_context_for_oneOf«   s�   € ð ØØØ Ð*à#Ø!'¨Ð 2à$0Ø(-°¸Ð/@ð3&ð!"ð&ð	ðððð
ˆð& ×!Ñ!¨E°E¸2°;Ð+?ÈÐ!ÓOˆØ×Ñ˜×-Ñ-¨wÕ7r   c                 ó  — ddddddœddd	œgiii}| j                  dd
i|¬«      }| j                  |j                  d«       dddddd	œdddœgiii}| j                  dd
i|¬«      }| j                  |j                  d«       y )Nr   r   r)   r-   r   ©r   ÚminItemsr'   é
   ©r   Ú	minLengthr   r!   rJ   r"   ©r   r   r   Ú	reordereds       r   Ú"test_it_prioritizes_matching_typesz0TestBestMatch.test_it_prioritizes_matching_typesÇ   sÀ   € àØØØ!(°aÑ8Ø!)¸Ñ;ðððð	
ˆð ×!Ñ!¨E°5¨>À&Ð!ÓIˆØ×Ñ˜Ÿ™¨Ô5ð ØØØ!)¸Ñ;Ø!(°aÑ8ðððð	
ˆ	ð ×!Ñ!¨E°5¨>À)Ð!ÓLˆØ×Ñ˜Ÿ™¨Õ5r   c                 ó  — dddddgddœdd	gd
dœgiii}| j                  ddi|¬«      }| j                  |j                  d«       dddd	d
dœdddœgiii}| j                  ddi|¬«      }| j                  |j                  d«       y )Nr   r   r)   r-   r   r   rF   r4   r'   rH   rI   r   r!   rJ   r"   rK   s       r   Ú(test_it_prioritizes_matching_union_typesz6TestBestMatch.test_it_prioritizes_matching_union_typesâ   sÊ   € àØØØ")¨8Ð!4À!ÑDØ"+¨XÐ!6ÀRÑHðððð	
ˆð ×!Ñ!¨E°5¨>À&Ð!ÓIˆØ×Ñ˜Ÿ™¨Ô5ð ØØØ!)¸Ñ;Ø!(°aÑ8ðððð	
ˆ	ð ×!Ñ!¨E°5¨>À)Ð!ÓLˆØ×Ñ˜Ÿ™¨Õ5r   c                 óp   — dddii}| j                  ddi|¬«      }| j                  |j                  «       y )Nr   r   Fr   r!   )r   ÚassertIsNoner#   r$   s      r   Útest_boolean_schemasz"TestBestMatch.test_boolean_schemasý   s;   € Ø ¨ Ð/ˆØ×!Ñ!¨E°5¨>À&Ð!ÓIˆØ×Ñ˜$Ÿ.™.Õ)r   c                 óÀ   — t        ddi«      }|j                  i «      \  }| j                  t        j                  |j                  i «      «      j
                  d«       y )Nr    r   )r   r
   r   r   r   r#   )r   r#   Úerrors      r   Útest_one_errorzTestBestMatch.test_one_error  sS   € Ü# _°aÐ$8Ó9ˆ	Ø×&Ñ& rÓ*‰ˆØ×ÑÜ×!Ñ! )×"7Ñ"7¸Ó";Ó<×FÑFØõ	
r   c                 ó€   — t        i «      }| j                  t        j                  |j	                  i «      «      «       y )N)r   rQ   r   r   r
   )r   r#   s     r   Útest_no_errorszTestBestMatch.test_no_errors
  s0   € Ü# BÓ'ˆ	Ø×Ñœ*×/Ñ/°	×0EÑ0EÀbÓ0IÓJÕKr   N)Ú__name__Ú
__module__Ú__qualname__r   r%   r+   r1   r5   r8   r;   r=   r?   rB   rD   rM   rO   rR   rU   rW   © r   r   r   r      sS   „ ò	ò
:ò:ò8ò.2ò 1ò8ò.2ò 1ò9ò&8ò86ò66ò6*ò

óLr   r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestByRelevancec                 ó"  — t        j                  ddg¬«      }t        j                  dddg¬«      }t        ||gt         j                  ¬«      }| j	                  ||«       t        ||gt         j                  ¬«      }| j	                  ||«       y )NúOh no!Úbaz©ÚpathúOh yes!r   r   ©Úkey)r   ÚValidationErrorÚmaxÚ	relevanceÚassertIs)r   ÚshallowÚdeepÚmatchs       r   Ú#test_short_paths_are_better_matchesz3TestByRelevance.test_short_paths_are_better_matches  st   € Ü×,Ñ,¨X¸U¸GÔDˆÜ×)Ñ)¨)¸5À%¸.ÔIˆÜ�W˜d�O¬×)=Ñ)=Ô>ˆØ�‰�e˜WÔ%ä�T˜7�O¬×)=Ñ)=Ô>ˆØ�‰�e˜WÕ%r   c                 óÂ  — t        j                  dg ¬«      }t        j                  ddg¬«      }t        ||gt         j                  ¬«      }| j	                  |D �cg c]  }t        |j                  «      ‘Œ c}dgg g«       t        ||gt         j                  ¬«      }| j	                  |D �cg c]  }t        |j                  «      ‘Œ c}dgg g«       y c c}w c c}w )Nr_   ra   rc   r   rd   )r   rf   Úsortedrh   r   r	   rb   )r   rj   rk   r   rT   s        r   Ú*test_global_errors_are_even_better_matchesz:TestByRelevance.test_global_errors_are_even_better_matches  s¼   € Ü×,Ñ,¨X¸BÔ?ˆÜ×)Ñ)¨)¸5¸'ÔBˆä˜ $˜¬Z×-AÑ-AÔBˆØ×ÑØ+1Ö2 %ŒT�%—*‘*ÕÒ2ØˆW�bˆMô	
ô
 ˜˜w˜¬Z×-AÑ-AÔBˆØ×ÑØ+1Ö2 %ŒT�%—*‘*ÕÒ2ØˆW�bˆMõ	
ùò 3ùò 3s   ÁCÂ/Cc                 ó  — t        j                  dg d¬«      }t        j                  dg d¬«      }t        j                  d¬«      }t        ||g|¬«      }| j	                  ||«       t        ||g|¬«      }| j	                  ||«       y )Nr_   Úa©rb   r#   rc   Úb)Úweakrd   ©r   rf   Úby_relevancerg   ri   )r   ru   Únormalr   rl   s        r   Ú%test_weak_keywords_are_lower_priorityz5TestByRelevance.test_weak_keywords_are_lower_priority)  sv   € Ü×)Ñ)¨(¸ÀsÔKˆÜ×+Ñ+¨I¸BÈ#ÔNˆä×,Ñ,°#Ô6ˆ
ä�T˜6�N¨
Ô3ˆØ�‰�e˜VÔ$ä�V˜T�N¨
Ô3ˆØ�‰�e˜VÕ$r   c                 óJ  — t        j                  dg d¬«      }t        j                  dg d¬«      }t        j                  dg d¬«      }t        j                  dd¬«      }t        |||g|¬	«      }| j	                  ||«       t        |||g|¬	«      }| j	                  ||«       y )
Nr_   rr   rs   rc   rt   zOh fine!Úc)ru   Ústrongrd   rv   )r   ru   rx   r|   r   rl   s         r   Ú(test_strong_keywords_are_higher_priorityz8TestByRelevance.test_strong_keywords_are_higher_priority5  s’   € Ü×)Ñ)¨(¸ÀsÔKˆÜ×+Ñ+¨I¸BÈ#ÔNˆÜ×+Ñ+¨J¸RÈ3ÔOˆä×,Ñ,°#¸cÔBˆ
ä�T˜6 6Ð*°
Ô;ˆØ�‰�e˜VÔ$ä�V˜V TÐ*°
Ô;ˆØ�‰�e˜VÕ$r   N)rX   rY   rZ   rm   rp   ry   r}   r[   r   r   r]   r]     s   „ ò&ò
ò 
%ó%r   r]   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)ÚTestErrorTreec                 óÊ   — t        d«      D �cg c]  }t        j                  d|¬«      ‘Œ }}t        j                  |«      }| j	                  |j
                  d«       y c c}w )Né   Ú	Something©r#   )Úranger   rf   Ú	ErrorTreer   Útotal_errors)r   Úir   Útrees       r   Ú/test_it_knows_how_many_total_errors_it_containsz=TestErrorTree.test_it_knows_how_many_total_errors_it_containsD  s_   € ô ˜1“Xö
àô ×&Ñ& {¸aÖ@ð
ˆð 
ô ×#Ñ# FÓ+ˆØ×Ñ˜×*Ñ*¨AÕ.ùò
s   ŽA c                 ó„   — t        j                  ddg¬«      g}t        j                  |«      }| j                  d|«       y )Nú	a messager   ra   )r   rf   r…   ÚassertIn©r   r   rˆ   s      r   Ú1test_it_contains_an_item_if_the_item_had_an_errorz?TestErrorTree.test_it_contains_an_item_if_the_item_had_an_errorM  s7   € Ü×,Ñ,¨[À¸wÔGÐHˆÜ×#Ñ# FÓ+ˆØ�‰�e˜TÕ"r   c                 ó„   — t        j                  ddg¬«      g}t        j                  |«      }| j                  d|«       y )Nr‹   r   ra   r   )r   rf   r…   ÚassertNotInr�   s      r   Ú9test_it_does_not_contain_an_item_if_the_item_had_no_errorzGTestErrorTree.test_it_does_not_contain_an_item_if_the_item_had_no_errorR  s9   € Ü×,Ñ,¨[À¸wÔGÐHˆÜ×#Ñ# FÓ+ˆØ×Ñ˜ Õ%r   c                 óš   — t        j                  dd¬«      }t        j                  |g«      }| j                  |j                  d|i«       y )Nr‹   r   rƒ   ©r   rf   r…   r   r   ©r   rT   rˆ   s      r   Ú/test_keywords_that_failed_appear_in_errors_dictz=TestErrorTree.test_keywords_that_failed_appear_in_errors_dictW  s>   € Ü×*Ñ*¨;À%ÔHˆÜ×#Ñ# U GÓ,ˆØ×Ñ˜Ÿ™ u¨e nÕ5r   c                 óä   — t        j                  ddg¬«      t        j                  dddg¬«      g}t        j                  |«      }| j                  d|d   «       | j	                  d|d   «       y )Nza bar messager   ra   za bar -> 0 messager   é   )r   rf   r…   rŒ   r�   r�   s      r   Ú1test_it_creates_a_child_tree_for_each_nested_pathz?TestErrorTree.test_it_creates_a_child_tree_for_each_nested_path\  sh   € ä×&Ñ& ¸e¸WÔEÜ×&Ñ&Ð';À5È!À*ÔMð
ˆô ×#Ñ# FÓ+ˆØ�‰�a˜˜e™Ô%Ø×Ñ˜˜D ™KÕ(r   c                 óä   — t        j                  ddddg¬«      t        j                  ddddg¬«      }}t        j                  ||g«      }| j                  |d   d   j                  ||dœ«       y )	NÚ1r   r   r   )r#   rb   Ú2Úquux)r   rœ   r“   ©r   Úe1Úe2rˆ   s       r   Ú+test_children_have_their_errors_dicts_builtz9TestErrorTree.test_children_have_their_errors_dicts_builte  sn   € ä×&Ñ& s°eÀ5È!À*ÔMÜ×&Ñ& s°fÀEÈ1À:ÔNð ˆô ×#Ñ# R¨ HÓ-ˆØ×Ñ˜˜e™ Q™×.Ñ.¸ÀBÑ0GÕHr   c                 óž   — t        j                  ddddgd¬«      t        j                  ddd	d
gd¬«      }}t        j                  ||g«       y )Nrš   r   r   Úbar2Úi1©r#   rb   r   r›   rœ   Úfoobarr   Úi2)r   rf   r…   )r   rž   rŸ   s      r   Ú"test_multiple_errors_with_instancez0TestErrorTree.test_multiple_errors_with_instancem  s[   € ä×&Ñ&ØØØ˜V�_Øô	ô
 ×&Ñ&ØØ Ø �]Øô	ð ˆô 	×Ñ˜b "˜XÕ&r   c                 ó¾   — t        j                  ddg ¬«      }t        j                  |g«      }| j                  t        «      5  |d    d d d «       y # 1 sw Y   y xY w)NÚ123r   )r#   r   r   )r   rf   r…   ÚassertRaisesÚ
IndexErrorr”   s      r   Ú>test_it_does_not_contain_subtrees_that_are_not_in_the_instancezLTestErrorTree.test_it_does_not_contain_subtrees_that_are_not_in_the_instance|  sR   € Ü×*Ñ*¨5¸EÈBÔOˆÜ×#Ñ# U GÓ,ˆà×ÑœzÓ*ñ 	Ø�ŠG÷	÷ 	ñ 	ús   ÁAÁAc                 óª   — t        j                  ddi dg¬«      }t        j                  |g«      }| j                  |d   t         j                  «       y)zŒ
        If a keyword refers to a path that isn't in the instance, the
        tree still properly returns a subtree for that path.
        r‹   r   )r#   r   rb   N)r   rf   r…   ÚassertIsInstancer”   s      r   Ú9test_if_its_in_the_tree_anyhow_it_does_not_raise_an_errorzGTestErrorTree.test_if_its_in_the_tree_anyhow_it_does_not_raise_an_errorƒ  sM   € ô ×*Ñ*Ø 5°2¸U¸Gô
ˆô ×#Ñ# U GÓ,ˆØ×Ñ˜d 5™k¬:×+?Ñ+?Õ@r   c                 óÔ   — t        j                  ddddgd¬«      t        j                  ddd	d
gd¬«      }}t        j                  ||g«      }| j                  t	        |«      d«       y )Nrš   r   r   r¢   r£   r¤   r›   rœ   r¥   r   r¦   z<ErrorTree (2 total errors)>)r   rf   r…   r   Úreprr�   s       r   Ú	test_reprzTestErrorTree.test_repr�  sr   € ä×&Ñ&ØØØ˜V�_Øô	ô
 ×&Ñ&ØØ Ø �]Øô	ð ˆô ×#Ñ# R¨ HÓ-ˆØ×Ñœ˜d›Ð%CÕDr   N)rX   rY   rZ   r‰   rŽ   r‘   r•   r˜   r    r§   r¬   r¯   r²   r[   r   r   r   r   C  s7   „ ò/ò#ò
&ò
6ò
)òIò'òò
AóEr   r   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)ÚTestErrorInitReprStrc                 ór   — t        ddddddi¬«      }|j                  |«       t        j                  di |¤ŽS )NÚhellor   r'   é   )Úmessager#   r0   r   r   r[   )ÚdictÚupdater   rf   )r   ÚkwargsÚdefaultss      r   Ú
make_errorzTestErrorInitReprStr.make_error¡  sB   € ÜØØØ$ØØ˜HÐ%ô
ˆð 	�‰˜ÔÜ×)Ñ)Ñ5¨HÑ5Ð5r   c                 ó  — t        j                  |«      j                  d«      } | j                  di |¤Ž}t	        |«      j                  d«      \  }}}| j                  ||j                  «       | j                  ||«       y )Nú
r[   )ÚtextwrapÚdedentÚrstripr½   ÚstrÚ	partitionr   r¸   )r   Úexpectedr»   rT   Úmessage_lineÚ_Úrests          r   ÚassertShowsz TestErrorInitReprStr.assertShows¬  sm   € Ü—?‘? 8Ó,×3Ñ3°DÓ9ˆà�—‘Ñ) &Ñ)ˆÜ # E£
× 4Ñ 4°TÓ :Ñˆ�a˜Ø×Ñ˜ u§}¡}Ô5Ø×Ñ˜˜xÕ(r   c                 ón   — | j                  «       }| j                  t        |j                  «      d«       y )Nr—   )r½   ÚassertGreaterÚlenÚargs)r   rT   s     r   Ú!test_it_calls_super_and_sets_argsz6TestErrorInitReprStr.test_it_calls_super_and_sets_args´  s&   € Ø—‘Ó!ˆØ×Ñœ3˜uŸz™z›?¨AÕ.r   c                 ób   — | j                  t        t        j                  d¬«      «      d«       y )NzHello!©r¸   z<ValidationError: 'Hello!'>)r   r±   r   rf   ©r   s    r   r²   zTestErrorInitReprStr.test_repr¸  s&   € Ø×ÑÜ”×+Ñ+°HÔ=Ó>Ø)õ	
r   c                 ó   — t        j                  d«      }| j                  t        |«      d«       dddddidœ}|D ]@  }t	        |«      }||= t        j                  di |¤Ž}| j                  t        |«      d«       ŒB y )Nr¸   r   r'   r·   )r#   r0   r   r   rÐ   )r   rf   r   rÃ   r¹   )r   rT   r»   ÚattrÚks        r   Útest_unset_errorz%TestErrorInitReprStr.test_unset_error¾  sˆ   € Ü×*Ñ*¨9Ó5ˆØ×Ñœ˜U› YÔ/ð  Ø'ØØ˜xÐ(ñ	
ˆð ò 	4ˆDÜ�V“ˆAØ�$�Ü×.Ñ.Ñ>¸AÑ>ˆEØ×ÑœS ›Z¨Õ3ñ		4r   c                 ó,   — | j                  dg g ¬«       y )NzŒ
            Failed validating 'type' in schema:
                {'type': 'string'}

            On instance:
                5
            ©rb   Úschema_path©rÉ   rÑ   s    r   Útest_empty_pathsz%TestErrorInitReprStr.test_empty_pathsÏ  s"   € Ø×Ñðð Øð 	õ 
	
r   c                 ó0   — | j                  ddgdg¬«       y )Nz�
            Failed validating 'type' in schema:
                {'type': 'string'}

            On instance[0]:
                5
            r   Úitemsr×   rÙ   rÑ   s    r   Útest_one_item_pathsz(TestErrorInitReprStr.test_one_item_pathsÜ  s&   € Ø×Ñðð �Ø ˜	ð 	õ 
	
r   c                 ó4   — | j                  dddgg d¢¬«       y )Nz 
            Failed validating 'type' in schema['items'][0]:
                {'type': 'string'}

            On instance[0]['a']:
                5
            r   rr   )rÜ   r   r—   r×   rÙ   rÑ   s    r   Útest_multiple_item_pathsz-TestErrorInitReprStr.test_multiple_item_pathsé  s&   € Ø×Ñðð �S�Ú'ð 	õ 
	
r   c                 óœ   — | j                  dt        t        d«      «      t        t	        t        d«      t        d«      «      «      d¬«       y )Na?  
            Failed validating 'maxLength' in schema:
                {0: 0,
                 1: 1,
                 2: 2,
                 3: 3,
                 4: 4,
                 5: 5,
                 6: 6,
                 7: 7,
                 8: 8,
                 9: 9,
                 10: 10,
                 11: 11,
                 12: 12,
                 13: 13,
                 14: 14,
                 15: 15,
                 16: 16,
                 17: 17,
                 18: 18,
                 19: 19}

            On instance:
                [0,
                 1,
                 2,
                 3,
                 4,
                 5,
                 6,
                 7,
                 8,
                 9,
                 10,
                 11,
                 12,
                 13,
                 14,
                 15,
                 16,
                 17,
                 18,
                 19,
                 20,
                 21,
                 22,
                 23,
                 24]
            é   é   Ú	maxLength)r   r   r#   )rÉ   r	   r„   r¹   ÚziprÑ   s    r   Útest_uses_pprintz%TestErrorInitReprStr.test_uses_pprintö  sC   € Ø×Ñð1ôd œ% ›)“_ÜœœE "›I¤u¨R£yÓ1Ó2Ø!ðk 	õ 6	
r   c                 ó²   ‡ —  G ˆ fd„dt         «      } |«       }t        j                  dd|dd¬«      }‰ j                  t	        |«      t        |«      «       y)	z´
        Check for #164 which rendered exceptions unusable when a
        `ValidationError` involved instances with an `__eq__` method
        that returned truthy values.
        c                   ó"   •— e Zd Zˆ fd„Zˆ fd„Zy)údTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBroc                 ó(   •— ‰j                  d«       y ©NzDon't!©Úfail©ÚthisÚotherr   s     €r   Ú__eq__zkTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBro.__eq__7  ó   ø€ Ø—	‘	˜(Õ#r   c                 ó(   •— ‰j                  d«       y rê   rë   rí   s     €r   Ú__ne__zkTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBro.__ne__:  rñ   r   N)rX   rY   rZ   rð   ró   rÑ   s   €r   ÚDontEQMeBrorè   6  s   ø„ ô$õ$r   rô   r‹   r   Úsomer   )r#   r   r0   r   N)r   r   rf   rŒ   r±   rÃ   )r   rô   r   rT   s   `   r   Ú:test_str_works_with_instances_having_overriden_eq_operatorzOTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator/  sO   ø€ ö	$œ&ô 	$ñ “=ˆÜ×*Ñ*ØØØØ"Øô
ˆð 	�‰”d˜8“n¤c¨%£jÕ1r   N)rX   rY   rZ   r½   rÉ   rÎ   r²   rÕ   rÚ   rÝ   rß   rå   rö   r[   r   r   r´   r´      s5   „ ò	6ò)ò/ò
ò4ò"
ò
ò
ò7
ór2r   r´   c                   ó   — e Zd Zd„ Zy)ÚTestHashablec                 ó€   — t        t        j                  d«      g«       t        t        j                  d«      g«       y )NÚ )Úsetr   rf   ÚSchemaErrorrÑ   s    r   Útest_hashablezTestHashable.test_hashableI  s.   € ÜŒZ×'Ñ'¨Ó+Ð,Ô-ÜŒZ×#Ñ# BÓ'Ð(Õ)r   N)rX   rY   rZ   rý   r[   r   r   rø   rø   H  s   „ ó*r   rø   )Úunittestr   rÀ   Ú
jsonschemar   Újsonschema.validatorsr   r   r]   r   r´   rø   r[   r   r   ú<module>r     s[   ðÝ Û å !Ý 1ôDL�Hô DLôN1%�hô 1%ôhZE�Hô ZEôze2˜8ô e2ôP*�8õ *r   