§
    ¥”jí^  ã                   óâ   — d dl mZ d dl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 G d„ de¦  «        ZdS )é    )ÚTestCaseN)Ú
exceptions)Ú_LATEST_VERSIONc                   ó†   — 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S )ÚTestBestMatchc                 óª  — t          t          |¦  «                             |¦  «        ¦  «        }d|› d|›d�}|                      ||¬¦  «         t	          j        t          |¦  «        ¦  «        }t	          j        t          |¦  «        ¦  «        }|                      | 	                    ¦   «         | 	                    ¦   «         d|› d|› �¦  «         |S )NzNo errors found for z under ú!)ÚmsgzNo consistent best match!
Got: z

Then: )
Úlistr   Úiter_errorsÚ
assertTruer   Ú
best_matchÚiterÚreversedÚassertEqualÚ	_contents)ÚselfÚinstanceÚschemaÚerrorsr
   ÚbestÚreversed_bests          úo/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.pyÚbest_match_ofzTestBestMatch.best_match_of   sÏ   € Ý•o fÑ-Ô-×9Ò9¸(ÑCÔCÑDÔDˆØB hÐBÐB°vÐBÐBÐBˆØ�Š˜ CˆÑ(Ô(Ð(åÔ$¥T¨&¡\¤\Ñ2Ô2ˆÝ"Ô-­h°vÑ.>Ô.>Ñ?Ô?ˆà×ÒØ�NŠNÑÔØ×#Ò#Ñ%Ô%ØN¨tÐNÐN¸}ÐNÐNñ	
ô 	
ð 	
ð
 ˆó    c                 óŒ   — ddddddiidœii}|                       ddg ii|¬¦  «        }|                      |j        d	¦  «         d S )
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   so   € àØØ%&Ø#(¨6°8Ð*<Ð"=ðð ðð
ˆð ×!Ò!¨E°E¸2°;Ð+?ÈÐ!ÑOÔOˆØ×Ò˜œ¨Ñ9Ô9Ð9Ð9Ð9r   c                 óŽ   — dddiddigddiddigdœ}|                       i |¬¦  «        }|                      |j        d¦  «         dS )	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&   so   € ð Ø˜xÐ(¨6°8Ð*<Ð=Ø˜xÐ(¨6°8Ð*<Ð=ð
ð 
ˆð
 ×!Ò!¨2°fÐ!Ñ=Ô=ˆØ×Ò˜œ¨Ñ9Ô9Ð9Ð9Ð9r   c                 ó–   — dddddiddddiiigiii}|                       dddii|¬	¦  «        }|                      |j        d¦  «         d
S )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_traversed4   ó   € ð ØØØ Ð*Ø%¨°¸Ð/@Ð'AÐBðððð	
ˆð ×!Ò!¨E°E¸2°;Ð+?ÈÐ!ÑOÔOˆØ×Ò˜Ô-¨wÑ7Ô7Ð7Ð7Ð7r   c                 ó„   — dddiddiddigi}|                       g |¬¦  «        }|                      |j        d¦  «         dS )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_errorsK   óc   € ð Ø˜Ð"Ø˜Ð#Ø˜Ð"ðð
ˆð ×!Ò!¨2°fÐ!Ñ=Ô=ˆØ×Ò˜œ¨Ñ1Ô1Ð1Ð1Ð1r   c                 óx   — dddigi}|                       g |¬¦  «        }|                      |j        d¦  «         dS )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_error[   óS   € ð Ø˜Ð"ðð
ˆð
 ×!Ò!¨2°fÐ!Ñ=Ô=ˆØ×Ò˜œ¨Ñ0Ô0Ð0Ð0Ð0r   c                 ó€   — ddddiigi}|                       ddg|¬¦  «        }|                      |j        d¦  «         dS )z|
        We *do* traverse anyOf with a single subschema that fails multiple
        times (e.g. on multiple items).
        r,   ÚitemsÚconsté%   r1   r$   Nr%   r'   s      r   Ú.test_anyOf_traversal_for_single_sibling_errorsz<TestBestMatch.test_anyOf_traversal_for_single_sibling_errorsi   ó[   € ð Ø˜7 B˜-Ð(ðð
ˆð
 ×!Ò!¨B°¨8¸FÐ!ÑCÔCˆØ×Ò˜œ¨Ñ1Ô1Ð1Ð1Ð1r   c                 ó†   — dddidddiigi}|                       ddg|¬¦  «        }|                      |j        d¦  «         d	S )
zg
        We *do* traverse anyOf with multiple subschemas when one does not type
        match.
        r,   r!   r"   r>   r?   r@   r1   r$   Nr%   r'   s      r   Ú9test_anyOf_traversal_for_non_type_matching_sibling_errorszGTestBestMatch.test_anyOf_traversal_for_non_type_matching_sibling_errorsw   óc   € ð Ø˜Ð"Ø˜7 B˜-Ð(ðð
ˆð ×!Ò!¨B°¨8¸FÐ!ÑCÔCˆØ×Ò˜œ¨Ñ1Ô1Ð1Ð1Ð1r   c                 ó–   — dddddiddddiiigiii}|                       dddii|¬	¦  «        }|                      |j        d¦  «         d
S )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    r0   r1   r$   Nr2   r'   s      r   Ú8test_if_the_most_relevant_error_is_oneOf_it_is_traversedzFTestBestMatch.test_if_the_most_relevant_error_is_oneOf_it_is_traversed†   r5   r   c                 ó„   — dddiddiddigi}|                       g |¬¦  «        }|                      |j        d¦  «         dS )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*   r7   r"   r$   Nr%   r'   s      r   Ú3test_no_oneOf_traversal_for_equally_relevant_errorszATestBestMatch.test_no_oneOf_traversal_for_equally_relevant_errors�   r9   r   c                 óx   — dddigi}|                       g |¬¦  «        }|                      |j        d¦  «         dS )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­   r<   r   c                 ó€   — ddddiigi}|                       ddg|¬¦  «        }|                      |j        d¦  «         dS )z|
        We *do* traverse oneOf with a single subschema that fails multiple
        times (e.g. on multiple items).
        r-   r>   r?   r@   r1   r$   Nr%   r'   s      r   Ú.test_oneOf_traversal_for_single_sibling_errorsz<TestBestMatch.test_oneOf_traversal_for_single_sibling_errors»   rB   r   c                 ó†   — dddidddiigi}|                       ddg|¬¦  «        }|                      |j        d¦  «         d	S )
zg
        We *do* traverse oneOf with multiple subschemas when one does not type
        match.
        r-   r!   r"   r>   r?   r@   r1   r$   Nr%   r'   s      r   Ú9test_oneOf_traversal_for_non_type_matching_sibling_errorszGTestBestMatch.test_oneOf_traversal_for_non_type_matching_sibling_errorsÉ   rE   r   c                 ó–   — dddddiddddiiigiii}|                       dddii|¬	¦  «        }|                      |j        d¦  «         d
S )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    r0   r1   r$   Nr2   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Ø   s   € ð ØØØ Ð*Ø%¨°¸Ð/@Ð'AÐBðððð	
ˆð ×!Ò!¨E°E¸2°;Ð+?ÈÐ!ÑOÔOˆØ×Ò˜Ô-¨xÑ8Ô8Ð8Ð8Ð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}|                       dddii|¬	¦  «        }|                      |j        d¦  «         d
S )zp
        We traverse into nested contexts (a oneOf containing an error in a
        nested oneOf here).
        r   r   r-   r!   r*   r    r0   r1   r$   Nr2   r'   s      r   Útest_nested_context_for_oneOfz+TestBestMatch.test_nested_context_for_oneOfë   s™   € ð ØØØ Ð*à#Ø!'¨Ð 2à$0Ø(-°¸Ð/@ð3&ð!"ð&ð	ðððð
ˆð& ×!Ò!¨E°E¸2°;Ð+?ÈÐ!ÑOÔOˆØ×Ò˜Ô-¨wÑ7Ô7Ð7Ð7Ð7r   c                 ó  — ddddddœddd	œgiii}|                       dd
i|¬¦  «        }|                      |j        d¦  «         dddddd	œdddœgiii}|                       dd
i|¬¦  «        }|                      |j        d¦  «         d S )Nr   r   r,   r0   r   ©r!   ÚminItemsr*   é
   ©r!   Ú	minLengthr    r$   rZ   r%   ©r   r   r   Ú	reordereds       r   Ú"test_it_prioritizes_matching_typesz0TestBestMatch.test_it_prioritizes_matching_types  sà   € àØØØ!(°aÐ8Ð8Ø!)¸Ð;Ð;ðððð	
ˆð ×!Ò!¨E°5¨>À&Ð!ÑIÔIˆØ×Ò˜œ¨Ñ5Ô5Ð5ð ØØØ!)¸Ð;Ð;Ø!(°aÐ8Ð8ðððð	
ˆ	ð ×!Ò!¨E°5¨>À)Ð!ÑLÔLˆØ×Ò˜œ¨Ñ5Ô5Ð5Ð5Ð5r   c                 ó  — dddddgddœdd	gd
dœgiii}|                       ddi|¬¦  «        }|                      |j        d¦  «         dddd	d
dœdddœgiii}|                       ddi|¬¦  «        }|                      |j        d¦  «         d S )Nr   r   r,   r0   r"   r   rV   r7   r*   rX   rY   r    r$   rZ   r%   r[   s       r   Ú(test_it_prioritizes_matching_union_typesz6TestBestMatch.test_it_prioritizes_matching_union_types"  sê   € àØØØ")¨8Ð!4À!ÐDÐDØ"+¨XÐ!6ÀRÐHÐHðððð	
ˆð ×!Ò!¨E°5¨>À&Ð!ÑIÔIˆØ×Ò˜œ¨Ñ5Ô5Ð5ð ØØØ!)¸Ð;Ð;Ø!(°aÐ8Ð8ðððð	
ˆ	ð ×!Ò!¨E°5¨>À)Ð!ÑLÔLˆØ×Ò˜œ¨Ñ5Ô5Ð5Ð5Ð5r   c                 óx   — dddii}|                       ddi|¬¦  «        }|                      |j        ¦  «         d S )Nr   r   Fr    r$   )r   ÚassertIsNoner&   r'   s      r   Útest_boolean_schemasz"TestBestMatch.test_boolean_schemas=  sH   € Ø ¨ Ð/ˆØ×!Ò!¨E°5¨>À&Ð!ÑIÔIˆØ×Ò˜$œ.Ñ)Ô)Ð)Ð)Ð)r   c                 óÒ   — t          ddi¦  «        }|                     i ¦  «         |                      t          j        |                     i ¦  «        ¦  «        j        d¦  «         d S )Nr#   r   )r   r   r   r   r   r&   ©r   r&   s     r   Útest_one_errorzTestBestMatch.test_one_errorB  sl   € Ý# _°aÐ$8Ñ9Ô9ˆ	Ø×Ò˜bÑ!Ô!Ð!Ø×ÒÝÔ! )×"7Ò"7¸Ñ";Ô";Ñ<Ô<ÔFØñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó˜   — t          i ¦  «        }|                      t          j        |                     i ¦  «        ¦  «        ¦  «         d S )N)r   ra   r   r   r   rd   s     r   Útest_no_errorszTestBestMatch.test_no_errorsJ  sB   € Ý# BÑ'Ô'ˆ	Ø×Ò�*Ô/°	×0EÒ0EÀbÑ0IÔ0IÑJÔJÑKÔKÐKÐKÐKr   N)Ú__name__Ú
__module__Ú__qualname__r   r(   r.   r4   r8   r;   rA   rD   rG   rI   rK   rM   rO   rR   rT   r]   r_   rb   re   rg   © r   r   r   r   
   sE  € € € € € ðð ð ð
:ð 
:ð 
:ð:ð :ð :ð8ð 8ð 8ð.2ð 2ð 2ð 1ð 1ð 1ð2ð 2ð 2ð2ð 2ð 2ð8ð 8ð 8ð.2ð 2ð 2ð 1ð 1ð 1ð2ð 2ð 2ð2ð 2ð 2ð9ð 9ð 9ð&8ð 8ð 8ð86ð 6ð 6ð66ð 6ð 6ð6*ð *ð *ð

ð 
ð 
ðLð Lð Lð Lð Lr   r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestByRelevancec                 ó0  — t          j        ddg¬¦  «        }t          j        dddg¬¦  «        }t          ||gt           j        ¬¦  «        }|                      ||¦  «         t          ||gt           j        ¬¦  «        }|                      ||¦  «         d S )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_matchesP  s’   € ÝÔ,¨X¸U¸GÐDÑDÔDˆÝÔ)¨)¸5À%¸.ÐIÑIÔ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        ¬¦  «        }|                      d„ |D ¦   «         dgg g¦  «         t          ||gt           j        ¬¦  «        }|                      d„ |D ¦   «         dgg g¦  «         d S )Nro   rq   rs   r   rt   c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS rk   ©r   rr   ©Ú.0Úerrors     r   ú
<listcomp>zNTestByRelevance.test_global_errors_are_even_better_matches.<locals>.<listcomp>_  ó"   € Ð2Ð2Ð2 %�T�%”*ÑÔÐ2Ð2Ð2r   c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS rk   r€   r�   s     r   r„   zNTestByRelevance.test_global_errors_are_even_better_matches.<locals>.<listcomp>e  r…   r   )r   rv   Úsortedrx   r   )r   rz   r{   r   s       r   Ú*test_global_errors_are_even_better_matchesz:TestByRelevance.test_global_errors_are_even_better_matchesY  sÐ   € ÝÔ,¨X¸BÐ?Ñ?Ô?ˆÝÔ)¨)¸5¸'ÐBÑBÔBˆå˜ $˜­ZÔ-AÐBÑBÔBˆØ×ÒØ2Ð2¨6Ð2Ñ2Ô2ØˆW�bˆMñ	
ô 	
ð 	
õ
 ˜˜w˜­ZÔ-AÐBÑBÔBˆØ×ÒØ2Ð2¨6Ð2Ñ2Ô2ØˆW�bˆMñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó0  — t          j        dg d¬¦  «        }t          j        dg d¬¦  «        }t          j        d¬¦  «        }t          ||g|¬¦  «        }|                      ||¦  «         t          ||g|¬¦  «        }|                      ||¦  «         d S )Nro   Úa©rr   r&   rs   Úb)Úweakrt   ©r   rv   Úby_relevancerw   ry   )r   r�   Únormalr   r|   s        r   Ú%test_weak_keywords_are_lower_priorityz5TestByRelevance.test_weak_keywords_are_lower_priorityi  s�   € ÝÔ)¨(¸ÀsÐKÑKÔKˆÝÔ+¨I¸BÈ#ÐNÑNÔNˆåÔ,°#Ð6Ñ6Ô6ˆ
å�T˜6�N¨
Ð3Ñ3Ô3ˆØ�Š�e˜VÑ$Ô$Ð$å�V˜T�N¨
Ð3Ñ3Ô3ˆØ�Š�e˜VÑ$Ô$Ð$Ð$Ð$r   c                 ód  — t          j        dg d¬¦  «        }t          j        dg d¬¦  «        }t          j        dg d¬¦  «        }t          j        dd¬¦  «        }t          |||g|¬	¦  «        }|                      ||¦  «         t          |||g|¬	¦  «        }|                      ||¦  «         d S )
Nro   rŠ   r‹   rs   rŒ   zOh fine!Úc)r�   Ústrongrt   rŽ   )r   r�   r�   r”   r   r|   s         r   Ú(test_strong_keywords_are_higher_priorityz8TestByRelevance.test_strong_keywords_are_higher_priorityu  s¼   € ÝÔ)¨(¸ÀsÐKÑKÔKˆÝÔ+¨I¸BÈ#ÐNÑNÔNˆÝÔ+¨J¸RÈ3ÐOÑOÔOˆåÔ,°#¸cÐBÑBÔBˆ
å�T˜6 6Ð*°
Ð;Ñ;Ô;ˆØ�Š�e˜VÑ$Ô$Ð$å�V˜V TÐ*°
Ð;Ñ;Ô;ˆØ�Š�e˜VÑ$Ô$Ð$Ð$Ð$r   N)rh   ri   rj   r}   rˆ   r‘   r•   rk   r   r   rm   rm   O  sP   € € € € € ð&ð &ð &ð
ð 
ð 
ð 
%ð 
%ð 
%ð%ð %ð %ð %ð %r   rm   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S )ÚTestErrorTreec                 ó–   — d„ t          d¦  «        D ¦   «         }t          j        |¦  «        }|                      |j        d¦  «         d S )Nc                 ó:   — g | ]}t          j        d |¬¦  «        ‘ŒS )Ú	Something©r&   )r   rv   )r‚   Úis     r   r„   zQTestErrorTree.test_it_knows_how_many_total_errors_it_contains.<locals>.<listcomp>†  s8   € ð 
ð 
ð 
àõ Ô& {¸aÐ@Ñ@Ô@ð
ð 
ð 
r   é   )Úranger   Ú	ErrorTreer   Útotal_errors©r   r   Útrees      r   Ú/test_it_knows_how_many_total_errors_it_containsz=TestErrorTree.test_it_knows_how_many_total_errors_it_contains„  sW   € ð
ð 
å˜1‘X”Xð
ñ 
ô 
ˆõ Ô# FÑ+Ô+ˆØ×Ò˜Ô*¨AÑ.Ô.Ð.Ð.Ð.r   c                 óŠ   — t          j        ddg¬¦  «        g}t          j        |¦  «        }|                      d|¦  «         d S )Nú	a messager    rq   )r   rv   rŸ   ÚassertInr¡   s      r   Ú1test_it_contains_an_item_if_the_item_had_an_errorz?TestErrorTree.test_it_contains_an_item_if_the_item_had_an_error�  sF   € ÝÔ,¨[À¸wÐGÑGÔGÐHˆÝÔ# FÑ+Ô+ˆØ�Š�e˜TÑ"Ô"Ð"Ð"Ð"r   c                 óŠ   — t          j        ddg¬¦  «        g}t          j        |¦  «        }|                      d|¦  «         d S )Nr¥   r    rq   r   )r   rv   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_error’  sH   € ÝÔ,¨[À¸wÐGÑGÔGÐHˆÝÔ# FÑ+Ô+ˆØ×Ò˜ Ñ%Ô%Ð%Ð%Ð%r   c                 ó–   — t          j        dd¬¦  «        }t          j        |g¦  «        }|                      |j        d|i¦  «         d S )Nr¥   r   r›   ©r   rv   rŸ   r   r   ©r   rƒ   r¢   s      r   Ú/test_keywords_that_failed_appear_in_errors_dictz=TestErrorTree.test_keywords_that_failed_appear_in_errors_dict—  sK   € ÝÔ*¨;À%ÐHÑHÔHˆÝÔ# U GÑ,Ô,ˆØ×Ò˜œ u¨e nÑ5Ô5Ð5Ð5Ð5r   c                 óü   — t          j        ddg¬¦  «        t          j        dddg¬¦  «        g}t          j        |¦  «        }|                      d|d         ¦  «         |                      d|d         ¦  «         d S )Nza bar messager    rq   za bar -> 0 messager   é   )r   rv   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œ  s€   € åÔ& ¸e¸WÐEÑEÔEÝÔ&Ð';À5È!À*ÐMÑMÔ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¦  «        }|                      |d         d         j        ||dœ¦  «         d S )	NÚ1r   r    r   )r&   rr   Ú2Úquux)r   rµ   r¬   ©r   Úe1Úe2r¢   s       r   Ú+test_children_have_their_errors_dicts_builtz9TestErrorTree.test_children_have_their_errors_dicts_built¥  s€   € åÔ& s°eÀ5È!À*ÐMÑMÔMÝÔ& s°fÀEÈ1À:ÐNÑNÔNð ˆõ Ô# R¨ HÑ-Ô-ˆØ×Ò˜˜eœ QœÔ.¸ÀBÐ0GÐ0GÑHÔHÐHÐHÐHr   c                 óš   — t          j        ddddgd¬¦  «        t          j        ddd	d
gd¬¦  «        }}t          j        ||g¦  «         d S ©Nr³   r   r    Úbar2Úi1©r&   rr   r   r´   rµ   Úfoobarr   Úi2)r   rv   rŸ   )r   r·   r¸   s      r   Ú"test_multiple_errors_with_instancez0TestErrorTree.test_multiple_errors_with_instance­  sr   € åÔ&ØØØ˜V�_Øð	ñ ô õ
 Ô&ØØ Ø �]Øð	ñ ô ð ˆõ 	Ô˜b "˜XÑ&Ô&Ð&Ð&Ð&r   c                 óÔ   — t          j        ddg ¬¦  «        }t          j        |g¦  «        }|                      t          ¦  «        5  |d          d d d ¦  «         d S # 1 swxY w Y   d S )NÚ123r   )r&   r   r   )r   rv   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¼  s¬   € ÝÔ*¨5¸EÈBÐOÑOÔOˆÝÔ# U GÑ,Ô,ˆà×Ò�zÑ*Ô*ð 	ð 	Ø�ŒGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á	AÁA!Á$A!c                 ó®   — t          j        ddi dg¬¦  «        }t          j        |g¦  «        }|                      |d         t           j        ¦  «         dS )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   rr   N)r   rv   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Ã  s]   € õ Ô*Ø 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¦  «        }|                      t	          |¦  «        dd	h¦  «         d S r»   )r   rv   rŸ   r   Úsetr¶   s       r   Ú	test_iterzTestErrorTree.test_iterÏ  s’   € åÔ&ØØØ˜V�_Øð	ñ ô õ
 Ô&ØØ Ø �]Øð	ñ ô ð ˆõ Ô# R¨ HÑ-Ô-ˆØ×Ò�˜T™œ U¨HÐ$5Ñ6Ô6Ð6Ð6Ð6r   c                 óª   — t          j        ddddgd¬¦  «        }t          j        |g¦  «        }|                      t	          |¦  «        d¦  «         d S )Nr³   r   r    r¼   r½   r¾   z<ErrorTree (1 total error)>©r   rv   rŸ   r   Úreprr­   s      r   Útest_repr_singlezTestErrorTree.test_repr_singleß  s`   € ÝÔ*ØØØ˜�Øð	
ñ 
ô 
ˆõ Ô# U GÑ,Ô,ˆØ×Ò�˜d™œÐ%BÑCÔCÐCÐCÐCr   c                 óà   — t          j        ddddgd¬¦  «        t          j        ddd	d
gd¬¦  «        }}t          j        ||g¦  «        }|                      t	          |¦  «        d¦  «         d S )Nr³   r   r    r¼   r½   r¾   r´   rµ   r¿   r   rÀ   z<ErrorTree (2 total errors)>rÎ   r¶   s       r   Útest_repr_multiplez TestErrorTree.test_repr_multipleé  sŽ   € åÔ&ØØØ˜V�_Øð	ñ ô õ
 Ô&ØØ Ø �]Øð	ñ ô ð ˆõ Ô# R¨ HÑ-Ô-ˆØ×Ò�˜d™œÐ%CÑDÔDÐDÐDÐDr   c                 ót   — t          j        g ¦  «        }|                      t          |¦  «        d¦  «         d S )Nz<ErrorTree (0 total errors)>)r   rŸ   r   rÏ   )r   r¢   s     r   Útest_repr_emptyzTestErrorTree.test_repr_emptyù  s5   € ÝÔ# BÑ'Ô'ˆØ×Ò�˜d™œÐ%CÑDÔDÐDÐDÐDr   N)rh   ri   rj   r£   r§   rª   r®   r±   r¹   rÁ   rÆ   rÉ   rÌ   rÐ   rÒ   rÔ   rk   r   r   r—   r—   ƒ  sè   € € € € € ð/ð /ð /ð#ð #ð #ð
&ð &ð &ð
6ð 6ð 6ð
)ð )ð )ðIð Ið Ið'ð 'ð 'ðð ð ð
Að 
Að 
Að7ð 7ð 7ð Dð Dð DðEð Eð Eð Eð Eð Eð Eð Er   r—   c                   óP   — 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S )ÚTestErrorInitReprStrc                 óz   — t          ddddddi¬¦  «        }|                     |¦  «         t          j        di |¤ŽS )NÚhellor!   r*   é   )Úmessager&   r3   r   r   rk   )ÚdictÚupdater   rv   )r   ÚkwargsÚdefaultss      r   Ú
make_errorzTestErrorInitReprStr.make_errorÿ  sU   € ÝØØØ$ØØ˜HÐ%ð
ñ 
ô 
ˆð 	�Š˜ÑÔÐÝÔ)Ð5Ð5¨HÐ5Ð5Ð5r   c                 ó  — t          j        |¦  «                             d¦  «        } | j        di |¤Ž}t	          |¦  «                             d¦  «        \  }}}|                      ||j        ¦  «         |                      ||¦  «         d S )Nú
rk   )ÚtextwrapÚdedentÚrstriprß   ÚstrÚ	partitionr   rÚ   )r   ÚexpectedrÝ   rƒ   Úmessage_lineÚ_Úrests          r   ÚassertShowsz TestErrorInitReprStr.assertShows
  sŠ   € Ý”? 8Ñ,Ô,×3Ò3°DÑ9Ô9ˆà�”Ð)Ð) &Ð)Ð)ˆÝ # E¡
¤
× 4Ò 4°TÑ :Ô :Ñˆ�a˜Ø×Ò˜ u¤}Ñ5Ô5Ð5Ø×Ò˜˜xÑ(Ô(Ð(Ð(Ð(r   c                 ó~   — |                       ¦   «         }|                      t          |j        ¦  «        d¦  «         d S )Nr°   )rß   ÚassertGreaterÚlenÚargs)r   rƒ   s     r   Ú!test_it_calls_super_and_sets_argsz6TestErrorInitReprStr.test_it_calls_super_and_sets_args  s5   € Ø—’Ñ!Ô!ˆØ×Ò�3˜uœz™?œ?¨AÑ.Ô.Ð.Ð.Ð.r   c                 ór   — |                       t          t          j        d¬¦  «        ¦  «        d¦  «         d S )NzHello!©rÚ   z<ValidationError: 'Hello!'>)r   rÏ   r   rv   ©r   s    r   Ú	test_reprzTestErrorInitReprStr.test_repr  s@   € Ø×ÒÝ•Ô+°HÐ=Ñ=Ô=Ñ>Ô>Ø)ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — t          j        d¦  «        }|                      t          |¦  «        d¦  «         dddddidœ}|D ]H}t	          |¦  «        }||= t          j        di |¤Ž}|                      t          |¦  «        d¦  «         ŒId S )NrÚ   r!   r*   rÙ   )r&   r3   r   r   rò   )r   rv   r   rå   rÛ   )r   rƒ   rÝ   ÚattrÚks        r   Útest_unset_errorz%TestErrorInitReprStr.test_unset_error  s¯   € ÝÔ*¨9Ñ5Ô5ˆØ×Ò�˜U™œ YÑ/Ô/Ð/ð  Ø'ØØ˜xÐ(ð	
ð 
ˆð ð 	4ð 	4ˆDÝ�V‘”ˆAØ�$�ÝÔ.Ð>Ð>¸AÐ>Ð>ˆEØ×Ò�S ™ZœZ¨Ñ3Ô3Ð3Ð3ð		4ð 	4r   c                 ó6   — |                       dg g ¬¦  «         d S )NzŒ
            Failed validating 'type' in schema:
                {'type': 'string'}

            On instance:
                5
            ©rr   Úschema_path©rë   ró   s    r   Útest_empty_pathsz%TestErrorInitReprStr.test_empty_paths-  s6   € Ø×Òðð Øð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c                 ó:   — |                       ddgdg¬¦  «         d S )Nz�
            Failed validating 'type' in schema:
                {'type': 'string'}

            On instance[0]:
                5
            r   r>   rú   rü   ró   s    r   Útest_one_item_pathsz(TestErrorInitReprStr.test_one_item_paths:  s:   € Ø×Òðð �Ø ˜	ð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c                 ó>   — |                       dddgg d¢¬¦  «         d S )Nz 
            Failed validating 'type' in schema['items'][0]:
                {'type': 'string'}

            On instance[0]['a']:
                5
            r   rŠ   )r>   r   r°   rú   rü   ró   s    r   Útest_multiple_item_pathsz-TestErrorInitReprStr.test_multiple_item_pathsG  s>   € Ø×Òðð �S�Ø'˜˜ð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c                 óÖ   — |                       dt          t          d¦  «        ¦  «        t          t	          t          d¦  «        t          d¦  «        ¦  «        ¦  «        d¬¦  «         d S )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_pprintT  se   € Ø×Òð1õd �% ™)œ)‘_”_Ý��E "™IœI¥u¨R¡y¤yÑ1Ô1Ñ2Ô2Ø!ðk 	ñ 6	
ô 6	
ð 6	
ð 6	
ð 6	
r   c           	      óJ   — |                       ddddddœdddddœ¬¦  «         d S )	NzÐ
            Failed validating 'type' in schema:
                {'do': 3, 'not': 7, 'sort': 37, 'me': 73}

            On instance:
                {'here': 73, 'too': 37, 'no': 7, 'sorting': 3}
            é   é   r@   éI   )ÚdoÚnotÚsortÚme)ÚhereÚtooÚnoÚsorting)r   r   rü   ró   s    r   Útest_does_not_reorder_dictsz0TestErrorInitReprStr.test_does_not_reorder_dicts�  s^   € Ø×Òðð ØØØð	ð ð ØØØð	ð ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óÌ   ‡ —  G ˆ fd„d¦  «        } |¦   «         }t          j        dd|dd¬¦  «        }‰                      t          |¦  «        t	          |¦  «        ¦  «         dS )	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dS )údTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBroc                 ó2   •— ‰                      d¦  «         d S ©NzDon't!©Úfail©ÚthisÚotherr   s     €r   Ú__eq__zkTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBro.__eq__¬  ó   ø€ Ø—	’	˜(Ñ#Ô#Ð#Ð#Ð#r   c                 ó2   •— ‰                      d¦  «         d S r  r  r  s     €r   Ú__ne__zkTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBro.__ne__¯  r   r   N)rh   ri   rj   r  r"  ró   s   €r   ÚDontEQMeBror  «  sG   ø€ € € € € ð$ð $ð $ð $ð $ð$ð $ð $ð $ð $ð $ð $r   r#  r¥   r   Úsomer   )r&   r   r3   r   N)r   rv   r¦   rÏ   rå   )r   r#  r   rƒ   s   `   r   Ú:test_str_works_with_instances_having_overriden_eq_operatorzOTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator¤  s�   ø€ ð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð �;‘=”=ˆÝÔ*ØØØØ"Øð
ñ 
ô 
ˆð 	�Š•d˜8‘n”n¥c¨%¡j¤jÑ1Ô1Ð1Ð1Ð1r   N)rh   ri   rj   rß   rë   rð   rô   rø   rý   rÿ   r  r  r  r%  rk   r   r   rÖ   rÖ   þ  sº   € € € € € ð	6ð 	6ð 	6ð)ð )ð )ð/ð /ð /ð
ð 
ð 
ð4ð 4ð 4ð"
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð7
ð 7
ð 7
ðr
ð 
ð 
ð.2ð 2ð 2ð 2ð 2r   rÖ   c                   ó   — e Zd Zd„ ZdS )ÚTestHashablec                 óZ   — t          j        d¦  «        h t          j        d¦  «        h d S )NÚ )r   rv   ÚSchemaErrorró   s    r   Útest_hashablezTestHashable.test_hashable¾  s0   € Ý	Ô	# BÑ	'Ô	'Ð(Ð(Ý	Ô	 Ñ	#Ô	#Ð$Ð$Ð$Ð$r   N)rh   ri   rj   r+  rk   r   r   r'  r'  ½  s#   € € € € € ð%ð %ð %ð %ð %r   r'  c                   ób   — 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S )ÚTestJsonPathRenderingc                 óæ   — t          j        |gddd¬¦  «        }|j        }|                      ||¦  «         t	          j        |¦  «        j        j        d         }|                      ||¦  «         d S )Nr³   r   r½   )rr   rÚ   r&   r   r   )r   rv   Ú	json_pathr   Újsonpath_ngÚparseÚrightÚfields)r   Úproperty_nameÚexpected_pathrƒ   Úrendered_json_pathÚre_parsed_names         r   Úvalidate_json_path_renderingz2TestJsonPathRendering.validate_json_path_renderingÄ  s€   € ÝÔ*Ø�ØØØð	
ñ 
ô 
ˆð #œ_ÐØ×ÒÐ+¨]Ñ;Ô;Ð;å$Ô*Ð+=Ñ>Ô>ÔDÔKÈAÔNˆØ×Ò˜¨Ñ7Ô7Ð7Ð7Ð7r   c                 ó2   — |                       dd¦  «         d S )NÚxz$.x©r8  ró   s    r   Ú
test_basicz TestJsonPathRendering.test_basicÒ  s   € Ø×)Ò)¨#¨uÑ5Ô5Ð5Ð5Ð5r   c                 ó2   — |                       dd¦  «         d S )Nr)  z$['']r;  ró   s    r   Ú
test_emptyz TestJsonPathRendering.test_emptyÕ  s   € Ø×)Ò)¨"¨gÑ6Ô6Ð6Ð6Ð6r   c                 ó2   — |                       dd¦  «         d S )Nr³   z$['1']r;  ró   s    r   Útest_numberz!TestJsonPathRendering.test_numberØ  ó   € Ø×)Ò)¨#¨xÑ8Ô8Ð8Ð8Ð8r   c                 ó2   — |                       dd¦  «         d S )Nú.z$['.']r;  ró   s    r   Útest_periodz!TestJsonPathRendering.test_periodÛ  rA  r   c                 ó2   — |                       dd¦  «         d S )Nú'z$['\'']r;  ró   s    r   Útest_single_quotez'TestJsonPathRendering.test_single_quoteÞ  s   € Ø×)Ò)¨#¨zÑ:Ô:Ð:Ð:Ð:r   c                 ó2   — |                       dd¦  «         d S )Nú z$[' ']r;  ró   s    r   Ú
test_spacez TestJsonPathRendering.test_spaceá  rA  r   c                 ó2   — |                       dd¦  «         d S )Nú\z$['\\']r;  ró   s    r   Útest_backslashz$TestJsonPathRendering.test_backslashä  s   € Ø×)Ò)¨$°
Ñ;Ô;Ð;Ð;Ð;r   c                 ó2   — |                       dd¦  «         d S )Nz\'z	$['\\\'']r;  ró   s    r   Útest_backslash_single_quotez1TestJsonPathRendering.test_backslash_single_quoteç  s   € Ø×)Ò)¨%°Ñ>Ô>Ð>Ð>Ð>r   c                 ó2   — |                       dd¦  «         d S )Nré   z$['_']r;  ró   s    r   Útest_underscorez%TestJsonPathRendering.test_underscoreê  s   € Ø×)Ò)¨#¨yÑ9Ô9Ð9Ð9Ð9r   c                 ó2   — |                       dd¦  «         d S )Nú"z$['"']r;  ró   s    r   Útest_double_quotez'TestJsonPathRendering.test_double_quoteí  s   € Ø×)Ò)¨#¨|Ñ<Ô<Ð<Ð<Ð<r   c                 ó2   — |                       dd¦  «         d S )Nú-z$['-']r;  ró   s    r   Útest_hyphenz!TestJsonPathRendering.test_hyphenð  rA  r   c                 ó2   — |                       dd¦  «         d S )Nza[0]z	$['a[0]']r;  ró   s    r   Útest_json_path_injectionz.TestJsonPathRendering.test_json_path_injectionó  s   € Ø×)Ò)¨&°+Ñ>Ô>Ð>Ð>Ð>r   c                 ó2   — |                       dd¦  «         d S )Nú[z$['[']r;  ró   s    r   Útest_open_bracketz'TestJsonPathRendering.test_open_bracketö  rA  r   N)rh   ri   rj   r8  r<  r>  r@  rD  rG  rJ  rM  rO  rQ  rT  rW  rY  r\  rk   r   r   r-  r-  Ã  sæ   € € € € € ð8ð 8ð 8ð6ð 6ð 6ð7ð 7ð 7ð9ð 9ð 9ð9ð 9ð 9ð;ð ;ð ;ð9ð 9ð 9ð<ð <ð <ð?ð ?ð ?ð:ð :ð :ð=ð =ð =ð9ð 9ð 9ð?ð ?ð ?ð9ð 9ð 9ð 9ð 9r   r-  )Úunittestr   râ   r0  Ú
jsonschemar   Újsonschema.validatorsr   r   rm   r—   rÖ   r'  r-  rk   r   r   ú<module>r`     s‚  ðØ Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðBLð BLð BLð BLð BL�Hñ BLô BLð BLðJ
1%ð 1%ð 1%ð 1%ð 1%�hñ 1%ô 1%ð 1%ðhxEð xEð xEð xEð xE�Hñ xEô xEð xEðv|2ð |2ð |2ð |2ð |2˜8ñ |2ô |2ð |2ð~%ð %ð %ð %ð %�8ñ %ô %ð %ð49ð 49ð 49ð 49ð 49˜Hñ 49ô 49ð 49ð 49ð 49r   