
    ?Ki^                         S SK Jr  S SKrS SKrS SKJr  S SKJr   " S S\5      r " S S\5      r	 " S	 S
\5      r
 " S S\5      r " S S\5      r " S S\5      rg)    )TestCaseN)
exceptions)_LATEST_VERSIONc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)TestBestMatch
   c                 d   [        [        U5      R                  U5      5      nSU SU< S3nU R                  X4S9  [        R
                  " [        U5      5      n[        R
                  " [        U5      5      nU R                  UR                  5       UR                  5       SU SU 35        U$ )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          b/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/jsonschema/tests/test_exceptions.pybest_match_ofTestBestMatch.best_match_of   s    of-99(CD%hZwvjB($$T&\2"--hv.>?NN##%.tfJ}oN	

     c                 ~    SSSSSS00S.00nU R                  SS/ 00US9nU R                  UR                  S	5        g )
N
propertiesfoo   bartypeobject)minPropertiesr   r   r   r%   r   r   	validatorr   r   r   s      r   (test_shallower_errors_are_better_matches6TestBestMatch.test_shallower_errors_are_better_matches   s]    %&#(68*<"=
 !!EE2;+?!O9r   c                     SSS0SS0/SS0SS0/S.nU R                  0 US9nU R                  UR                  S5        g)	zV
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_matches3TestBestMatch.test_oneOf_and_anyOf_are_weak_matches&   s]     x(68*<=x(68*<=

 !!2f!=9r   c                     SSSSS0SSSS000/000nU R                  SSS00US	9nU R                  UR                  S5        g
)a  
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_traversedFTestBestMatch.test_if_the_most_relevant_error_is_anyOf_it_is_traversed4   s     *%/@'AB	
 !!EE2;+?!O--w7r   c                 v    SSS0SS0SS0/0nU R                  / US9nU R                  UR                  S5        g)zz
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_errorsATestBestMatch.test_no_anyOf_traversal_for_equally_relevant_errorsK   V     "#"
 !!2f!=1r   c                 j    SSS0/0nU R                  / US9nU R                  UR                  S5        g)zl
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_errorDTestBestMatch.test_anyOf_traversal_for_single_equally_relevant_error[   F     "

 !!2f!=0r   c                 r    SSSS00/0nU R                  SS/US9nU R                  UR                  S5        g)zd
We *do* traverse anyOf with a single subschema that fails multiple
times (e.g. on multiple items).
r/   itemsconst%   r5   r&   Nr'   r)   s      r   .test_anyOf_traversal_for_single_sibling_errors<TestBestMatch.test_anyOf_traversal_for_single_sibling_errorsi   N     7B-(

 !!B8F!C1r   c                 x    SSS0SSS00/0nU R                  SS/US9nU R                  UR                  S5        g	)
zO
We *do* traverse anyOf with multiple subschemas when one does not type
match.
r/   r#   r$   rE   rF   rG   r5   r&   Nr'   r)   s      r   9test_anyOf_traversal_for_non_type_matching_sibling_errorsGTestBestMatch.test_anyOf_traversal_for_non_type_matching_sibling_errorsw   V     "7B-(
 !!B8F!C1r   c                     SSSSS0SSSS000/000nU R                  SSS00US	9nU R                  UR                  S5        g
)a  
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    r0   r#   r-   r"   r4   r5   r&   Nr6   r)   s      r   8test_if_the_most_relevant_error_is_oneOf_it_is_traversedFTestBestMatch.test_if_the_most_relevant_error_is_oneOf_it_is_traversed   r:   r   c                 v    SSS0SS0SS0/0nU R                  / US9nU R                  UR                  S5        g)zz
We don't traverse into an oneOf (as above) if all of its context errors
seem to be equally "wrong" against the instance.
r0   r#   r-   r<   r$   r&   Nr'   r)   s      r   3test_no_oneOf_traversal_for_equally_relevant_errorsATestBestMatch.test_no_oneOf_traversal_for_equally_relevant_errors   r?   r   c                 j    SSS0/0nU R                  / US9nU R                  UR                  S5        g)zl
We *do* traverse oneOf with a single nested error, even though it is
vacuously equally relevant to itself.
r0   r#   r-   r&   Nr'   r)   s      r   6test_oneOf_traversal_for_single_equally_relevant_errorDTestBestMatch.test_oneOf_traversal_for_single_equally_relevant_error   rC   r   c                 r    SSSS00/0nU R                  SS/US9nU R                  UR                  S5        g)zd
We *do* traverse oneOf with a single subschema that fails multiple
times (e.g. on multiple items).
r0   rE   rF   rG   r5   r&   Nr'   r)   s      r   .test_oneOf_traversal_for_single_sibling_errors<TestBestMatch.test_oneOf_traversal_for_single_sibling_errors   rJ   r   c                 x    SSS0SSS00/0nU R                  SS/US9nU R                  UR                  S5        g	)
zO
We *do* traverse oneOf with multiple subschemas when one does not type
match.
r0   r#   r$   rE   rF   rG   r5   r&   Nr'   r)   s      r   9test_oneOf_traversal_for_non_type_matching_sibling_errorsGTestBestMatch.test_oneOf_traversal_for_non_type_matching_sibling_errors   rN   r   c                     SSSSS0SSSS000/000nU R                  SSS00US	9nU R                  UR                  S5        g
)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"   r4   r5   r&   Nr6   r)   s      r   8test_if_the_most_relevant_error_is_allOf_it_is_traversedFTestBestMatch.test_if_the_most_relevant_error_is_allOf_it_is_traversed   ss     *%/@'AB	
 !!EE2;+?!O--x8r   c           
          SSSSS0SSS0SSSS000/0/000nU R                  SSS00US	9nU R                  UR                  S5        g
)zX
We traverse into nested contexts (a oneOf containing an error in a
nested oneOf here).
r   r    r0   r#   r-   r"   r4   r5   r&   Nr6   r)   s      r   test_nested_context_for_oneOf+TestBestMatch.test_nested_context_for_oneOf   s     *#!' 2$0(-/@3&!"&	
& !!EE2;+?!O--w7r   c                     SSSSSS.SSS	./000nU R                  SS
0US9nU R                  UR                  S5        SSSSSS	.SSS./000nU R                  SS
0US9nU R                  UR                  S5        g )Nr   r    r/   r4   r!   r#   minItemsr-   r   r#   	minLengthr"   r&   ri   r'   r   r   r   	reordereds       r   "test_it_prioritizes_matching_types0TestBestMatch.test_it_prioritizes_matching_types  s    !(a8!);	
 !!E5>&!I5 !);!(a8	
	 !!E5>)!L5r   c                    SSSSS/SS.SS	/S
S./000nU R                  SS0US9nU R                  UR                  S5        SSSS	S
S.SSS./000nU R                  SS0US9nU R                  UR                  S5        g )Nr   r    r/   r4   r$   r!   rf   r<   r-   r   rh   r"   r&   ri   r'   rj   s       r   (test_it_prioritizes_matching_union_types6TestBestMatch.test_it_prioritizes_matching_union_types"  s    ")8!4!D"+X!6RH	
 !!E5>&!I5 !);!(a8	
	 !!E5>)!L5r   c                 j    SSS00nU R                  SS0US9nU R                  UR                  5        g )Nr   r    Fr"   r&   )r   assertIsNoner(   r)   s      r   test_boolean_schemas"TestBestMatch.test_boolean_schemas=  s;    /!!E5>&!I$..)r   c                     [        SS05      nUR                  0 5        U R                  [        R                  " UR                  0 5      5      R
                  S5        g )Nr%   r!   )r   r   r   r   r   r(   r   r(   s     r   test_one_errorTestBestMatch.test_one_errorB  sO    #_a$89	b!!!)"7"7";<FF	
r   c                     [        0 5      nU R                  [        R                  " UR	                  0 5      5      5        g )N)r   rr   r   r   r   rv   s     r   test_no_errorsTestBestMatch.test_no_errorsJ  s0    #B'	*//	0E0Eb0IJKr    N)__name__
__module____qualname____firstlineno__r   r*   r1   r8   r=   rA   rH   rL   rP   rS   rV   rY   r\   r`   rc   rl   ro   rs   rw   rz   __static_attributes__r|   r   r   r   r   
   sg    
::8.2 1228.2 1229&886666*

Lr   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestByRelevanceiO  c                    [         R                  " SS/S9n[         R                  " SSS/S9n[        X/[         R                  S9nU R	                  X15        [        X!/[         R                  S9nU R	                  X15        g )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_matches3TestByRelevance.test_short_paths_are_better_matchesP  sl    ,,XUGD)))5%.IWO)=)=>e%TO)=)=>e%r   c                    [         R                  " S/ S9n[         R                  " SS/S9n[        X/[         R                  S9nU R	                  U Vs/ s H  n[        UR                  5      PM     snS// /5        [        X!/[         R                  S9nU R	                  U Vs/ s H  n[        UR                  5      PM     snS// /5        g s  snf s  snf )Nr   r   r   r    r   )r   r   sortedr   r   r   r   )r   r   r   r   errors        r   *test_global_errors_are_even_better_matches:TestByRelevance.test_global_errors_are_even_better_matchesY  s    ,,XB?)))5'BZ-A-AB+126%T%**62WbM	

 Z-A-AB+126%T%**62WbM	
 3 3s   C&Cc                     [         R                  " S/ SS9n[         R                  " S/ SS9n[         R                  " SS9n[        X/US9nU R	                  XB5        [        X!/US9nU R	                  XB5        g )Nr   ar   r(   r   b)weakr   r   r   by_relevancer   r   )r   r   normalr   r   s        r   %test_weak_keywords_are_lower_priority5TestByRelevance.test_weak_keywords_are_lower_priorityi  sn    ))(sK++IB#N,,#6
TN
3e$VN
3e$r   c                 &   [         R                  " S/ SS9n[         R                  " S/ SS9n[         R                  " S/ SS9n[         R                  " SSS9n[        XU/US	9nU R	                  XS5        [        X2U/US	9nU R	                  XS5        g )
Nr   r   r   r   r   zOh fine!c)r   strongr   r   )r   r   r   r   r   r   s         r   (test_strong_keywords_are_higher_priority8TestByRelevance.test_strong_keywords_are_higher_priorityu  s    ))(sK++IB#N++JR3O,,#cB
T6*
;e$VT*
;e$r   r|   N)	r}   r~   r   r   r   r   r   r   r   r|   r   r   r   r   O  s    &
 
%%r   r   c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)TestErrorTreei  c                     [        S5       Vs/ s H  n[        R                  " SUS9PM     nn[        R                  " U5      nU R	                  UR
                  S5        g s  snf )N   	Somethingr(   )ranger   r   	ErrorTreer   total_errors)r   ir   trees       r   /test_it_knows_how_many_total_errors_it_contains=TestErrorTree.test_it_knows_how_many_total_errors_it_contains  sb     1X
 &&{a@ 	 
 ##F+**A.
s   A"c                     [         R                  " SS/S9/n[         R                  " U5      nU R                  SU5        g )N	a messager"   r   )r   r   r   assertInr   r   r   s      r   1test_it_contains_an_item_if_the_item_had_an_error?TestErrorTree.test_it_contains_an_item_if_the_item_had_an_error  s7    ,,[wGH##F+eT"r   c                     [         R                  " SS/S9/n[         R                  " U5      nU R                  SU5        g )Nr   r"   r   r    )r   r   r   assertNotInr   s      r   9test_it_does_not_contain_an_item_if_the_item_had_no_errorGTestErrorTree.test_it_does_not_contain_an_item_if_the_item_had_no_error  s9    ,,[wGH##F+%r   c                     [         R                  " SSS9n[         R                  " U/5      nU R                  UR                  SU05        g )Nr   r    r   r   r   r   r   r   r   r   r   s      r   /test_keywords_that_failed_appear_in_errors_dict=TestErrorTree.test_keywords_that_failed_appear_in_errors_dict  s>    **;%H##UG,uen5r   c                     [         R                  " SS/S9[         R                  " SSS/S9/n[         R                  " U5      nU R                  SUS   5        U R	                  SUS   5        g )Nza bar messager"   r   za bar -> 0 messager      )r   r   r   r   r   r   s      r   1test_it_creates_a_child_tree_for_each_nested_path?TestErrorTree.test_it_creates_a_child_tree_for_each_nested_path  sh    &&eWE&&';5!*M
 ##F+ae%DK(r   c                     [         R                  " SSSS/S9[         R                  " SSSS/S9p![         R                  " X/5      nU R                  US   S   R                  XS.5        g )	N1r    r"   r   )r(   r   2quux)r    r   r   r   e1e2r   s       r   +test_children_have_their_errors_dicts_built9TestErrorTree.test_children_have_their_errors_dicts_built  sh    &&se5!*M&&sfE1:N  ##RH-eQ..0GHr   c                     [         R                  " SSSS/SS9[         R                  " SSS	S
/SS9p![         R                  " X/5        g Nr   r    r"   bar2i1r(   r   r   r   r   foobarr!   i2)r   r   r   )r   r   r   s      r   "test_multiple_errors_with_instance0TestErrorTree.test_multiple_errors_with_instance  sW    &&V_	
 && ]	  	bX&r   c                     [         R                  " SS/ S9n[         R                  " U/5      nU R                  [        5         US     S S S 5        g ! , (       d  f       g = f)N123r    )r(   r   r   )r   r   r   assertRaises
IndexErrorr   s      r   >test_it_does_not_contain_subtrees_that_are_not_in_the_instanceLTestErrorTree.test_it_does_not_contain_subtrees_that_are_not_in_the_instance  sI    **5EBO##UG,z*G +**s   A
A c                     [         R                  " SS0 S/S9n[         R                  " U/5      nU R                  US   [         R                  5        g)zt
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   r   N)r   r   r   assertIsInstancer   s      r   9test_if_its_in_the_tree_anyhow_it_does_not_raise_an_errorGTestErrorTree.test_if_its_in_the_tree_anyhow_it_does_not_raise_an_error  sM     **52UG
 ##UG,d5k:+?+?@r   c                     [         R                  " SSSS/SS9[         R                  " SSS	S
/SS9p![         R                  " X/5      nU R                  [	        U5      SS	15        g r   )r   r   r   r   setr   s       r   	test_iterTestErrorTree.test_iter  sr    &&V_	
 && ]	  ##RH-TUH$56r   c                     [         R                  " SSSS/SS9n[         R                  " U/5      nU R                  [	        U5      S5        g )Nr   r    r"   r   r   r   z<ErrorTree (1 total error)>r   r   r   r   reprr   s      r   test_repr_singleTestErrorTree.test_repr_single  sK    **	
 ##UG,d%BCr   c                     [         R                  " SSSS/SS9[         R                  " SSS	S
/SS9p![         R                  " X/5      nU R                  [	        U5      S5        g )Nr   r    r"   r   r   r   r   r   r   r!   r   z<ErrorTree (2 total errors)>r   r   s       r   test_repr_multiple TestErrorTree.test_repr_multiple  sn    &&V_	
 && ]	  ##RH-d%CDr   c                 f    [         R                  " / 5      nU R                  [        U5      S5        g )Nz<ErrorTree (0 total errors)>)r   r   r   r   )r   r   s     r   test_repr_emptyTestErrorTree.test_repr_empty  s'    ##B'd%CDr   r|   N)r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r     sH    /#
&
6
)I'
A7 DE Er   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestErrorInitReprStri  c                 n    [        SSSSSS0S9nUR                  U5        [        R                  " S0 UD6$ )Nhellor#   r-      )messager(   r7   r   r   r|   )dictupdater   r   )r   kwargsdefaultss      r   
make_errorTestErrorInitReprStr.make_error  sB    $H%
 	))5H55r   c                    [         R                  " U5      R                  S5      nU R                  " S0 UD6n[	        U5      R                  S5      u  pEnU R                  XCR                  5        U R                  Xa5        g )N
r|   )textwrapdedentrstripr   str	partitionr   r   )r   expectedr   r   message_line_rests          r   assertShows TestErrorInitReprStr.assertShows
  se    ??8,33D9)&) #E
 4 4T :}}5(r   c                 n    U R                  5       nU R                  [        UR                  5      S5        g )Nr   )r   assertGreaterlenargs)r   r   s     r   !test_it_calls_super_and_sets_args6TestErrorInitReprStr.test_it_calls_super_and_sets_args  s&    !3uzz?A.r   c                 ^    U R                  [        [        R                  " SS95      S5        g )NzHello!r   z<ValidationError: 'Hello!'>)r   r   r   r   r   s    r   	test_reprTestErrorInitReprStr.test_repr  s&    ++H=>)	
r   c                    [         R                  " S5      nU R                  [        U5      S5        SSSSS0S.nU HA  n[	        U5      nXC	 [         R                  " S0 UD6nU R                  [        U5      S5        MC     g )Nr   r#   r-   r   )r(   r7   r   r   r  )r   r   r   r  r   )r   r   r   attrks        r   test_unset_error%TestErrorInitReprStr.test_unset_error  s    **95UY/  'x(	
 DVA..>A>ESZ3	 r   c                 &    U R                  S/ / S9  g )Nz
            Failed validating 'type' in schema:
                {'type': 'string'}

            On instance:
                5
            r   schema_pathr  r  s    r   test_empty_paths%TestErrorInitReprStr.test_empty_paths-  s"      	 
	
r   c                 *    U R                  SS/S/S9  g )Nz
            Failed validating 'type' in schema:
                {'type': 'string'}

            On instance[0]:
                5
            r   rE   r  r   r  s    r   test_one_item_paths(TestErrorInitReprStr.test_one_item_paths:  s&      	 	 
	
r   c                 .    U R                  SSS// SQS9  g )Nz
            Failed validating 'type' in schema['items'][0]:
                {'type': 'string'}

            On instance[0]['a']:
                5
            r   r   )rE   r   r   r  r   r  s    r   test_multiple_item_paths-TestErrorInitReprStr.test_multiple_item_pathsG  s&     S' 	 
	
r   c                     U R                  S[        [        S5      5      [        [	        [        S5      [        S5      5      5      SS9  g )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_pprint%TestErrorInitReprStr.test_uses_pprintT  sC    1d %)_E"IuRy12!k 	 6	
r   c           	      :    U R                  SSSSSS.SSSSS.S9  g )	Nz
            Failed validating 'type' in schema:
                {'do': 3, 'not': 7, 'sort': 37, 'me': 73}

            On instance:
                {'here': 73, 'too': 37, 'no': 7, 'sorting': 3}
                  rG   I   )donotsortme)heretoonosorting)r   r   r   r  s    r   test_does_not_reorder_dicts0TestErrorInitReprStr.test_does_not_reorder_dicts  s@     	 	 	 	
r   c                    ^   " U 4S jS5      nU" 5       n[         R                  " SSUSSS9nT R                  [        U5      [	        U5      5        g)	z
Check for #164 which rendered exceptions unusable when a
`ValidationError` involved instances with an `__eq__` method
that returned truthy values.
c                   .   > \ rS rSrU 4S jrU 4S jrSrg)dTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBroi  c                 (   > TR                  S5        g NzDon't!failthisotherr   s     r   __eq__kTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBro.__eq__      		(#r   c                 (   > TR                  S5        g rB  rC  rE  s     r   __ne__kTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator.<locals>.DontEQMeBro.__ne__  rJ  r   r|   N)r}   r~   r   r   rH  rL  r   r  s   r   DontEQMeBror@    s    $$ $r   rN  r   r    somer   )r(   r   r7   r   N)r   r   r   r   r  )r   rN  r   r   s   `   r   :test_str_works_with_instances_having_overriden_eq_operatorOTestErrorInitReprStr.test_str_works_with_instances_having_overriden_eq_operator  sM    	$ 	$ =**"
 	d8nc%j1r   r|   N)r}   r~   r   r   r   r  r  r  r  r!  r$  r'  r.  r<  rP  r   r|   r   r   r   r     s:    	6)/
4"


7
r
.2r   r   c                       \ rS rSrS rSrg)TestHashablei  c                 `    [         R                  " S5      1  [         R                  " S5      1  g )N )r   r   SchemaErrorr  s    r   test_hashableTestHashable.test_hashable  s$    		#	#B	'(				#$r   r|   N)r}   r~   r   r   rW  r   r|   r   r   rS  rS    s    %r   rS  c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)TestJsonPathRenderingi  c                     [         R                  " U/SSSS9nUR                  nU R                  XB5        [        R
                  " U5      R                  R                  S   nU R                  XQ5        g )Nr   r    r   )r   r   r(   r   r   )r   r   	json_pathr   jsonpath_ngparserightfields)r   property_nameexpected_pathr   rendered_json_pathre_parsed_names         r   validate_json_path_rendering2TestJsonPathRendering.validate_json_path_rendering  sk    **	
 #__+;$**+=>DDKKAN7r   c                 (    U R                  SS5        g )Nxz$.xre  r  s    r   
test_basic TestJsonPathRendering.test_basic  s    ))#u5r   c                 (    U R                  SS5        g )NrU  z$['']ri  r  s    r   
test_empty TestJsonPathRendering.test_empty  s    ))"g6r   c                 (    U R                  SS5        g )Nr   z$['1']ri  r  s    r   test_number!TestJsonPathRendering.test_number      ))#x8r   c                 (    U R                  SS5        g )N.z$['.']ri  r  s    r   test_period!TestJsonPathRendering.test_period  rr  r   c                 (    U R                  SS5        g )N'z$['\'']ri  r  s    r   test_single_quote'TestJsonPathRendering.test_single_quote  s    ))#z:r   c                 (    U R                  SS5        g )N z$[' ']ri  r  s    r   
test_space TestJsonPathRendering.test_space  rr  r   c                 (    U R                  SS5        g )N\z$['\\']ri  r  s    r   test_backslash$TestJsonPathRendering.test_backslash  s    ))$
;r   c                 (    U R                  SS5        g )Nz\'z	$['\\\'']ri  r  s    r   test_backslash_single_quote1TestJsonPathRendering.test_backslash_single_quote  s    ))%>r   c                 (    U R                  SS5        g )Nr	  z$['_']ri  r  s    r   test_underscore%TestJsonPathRendering.test_underscore  s    ))#y9r   c                 (    U R                  SS5        g )N"z$['"']ri  r  s    r   test_double_quote'TestJsonPathRendering.test_double_quote  s    ))#|<r   c                 (    U R                  SS5        g )N-z$['-']ri  r  s    r   test_hyphen!TestJsonPathRendering.test_hyphen  rr  r   c                 (    U R                  SS5        g )Nza[0]z	$['a[0]']ri  r  s    r   test_json_path_injection.TestJsonPathRendering.test_json_path_injection  s    ))&+>r   c                 (    U R                  SS5        g )N[z$['[']ri  r  s    r   test_open_bracket'TestJsonPathRendering.test_open_bracket  rr  r   r|   N)r}   r~   r   r   re  rj  rm  rp  ru  ry  r}  r  r  r  r  r  r  r  r   r|   r   r   rZ  rZ    sH    86799;9<?:=9?9r   rZ  )unittestr   r  r]  
jsonschemar   jsonschema.validatorsr   r   r   r   r   rS  rZ  r|   r   r   <module>r     sj       ! 1BLH BLJ
1%h 1%hxEH xEv|28 |2~%8 %49H 49r   