
    d                     T   d Z ddlmZ ddlmZ ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZ ddlZd Z ej        d           G d	 d
                      Z ej        d           G d d                      Z ej        dd           G d d                      Zd ZdS )z=
Python representations of the JSON Schema Test Suite tests.
    )partial)PathN)_VALIDATORSc                      t           j                            d          } | t          |           S t          t          j                  j        j        dz  } |                                 st          d          | S )NJSON_SCHEMA_TEST_SUITEjsonzCan't find the JSON-Schema-Test-Suite directory. Set the 'JSON_SCHEMA_TEST_SUITE' environment variable or run the tests from alongside a checkout of the suite.)	osenvirongetr   
jsonschema__file__parentis_dir
ValueError)roots    [/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/jsonschema/tests/_suite.py_find_suiter      sq    :>>233DDzz
#$$+2V;D;;== 
 
 
 	
 K    T)hashc                   ^    e Zd Z ej         ej        e                    Zd Zd Z	d Z
dS )Suitedefaultc                     | j                             dd          }t          j        t          j        t          |          dg          }t          j        |	                    d                    S )Nbinjsonschema_suiteremotesutf-8)
_rootjoinpath
subprocesscheck_outputsys
executablestrr   loadsdecode)selfr   r   s      r   _remoteszSuite._remotes+   s`    :..u6HII)^S!122I>
 
 z'..11222r   c                     t          j                    D ]0\  }}|                     |                              ||           1d S )N)name)runner	Validator)r   itemsversion	benchmark)r(   r,   r+   r-   s       r   r0   zSuite.benchmark2   s^    *022 	 	OD)LLdL##--# .    	 	r   c                 |    t          || j                            d|          |                                           S )Ntests)r+   pathr   )Versionr   r    r)   r(   r+   s     r   r/   zSuite.version9   s<    $$Wd33MMOO
 
 
 	
r   N)__name__
__module____qualname__attribFactoryr   r   r)   r0   r/    r   r   r   r   &   sc         DGLDL55666E3 3 3  
 
 
 
 
r   r   c                       e Zd Z ej                    Z ej                    Z ej                    Zd Zd Z	d Z
d Zd Zd ZdS )r4   c           
          |                                  D ]2}|D ]-}|                    |j        t          |j        fi |           .3d S N)r2   
bench_funcfully_qualified_namer   validate_ignoring_errors)r(   r,   kwargssuitetests        r   r0   zVersion.benchmarkI   sp    ZZ\\ 	 	E  !!-D9DDVDD   	 	r   c                 P      fd j                             d          D             S )Nc              3   j   K   | ]-}                     |j        d d         |          D ]}|V  .d S Nsubjectr3   	_tests_inr+   .0childrE   r(   s      r   	<genexpr>z Version.tests.<locals>.<genexpr>R   q       
 

3B3 '  
 
  
 
 
 
 
 
 
r   *.json)_pathglobr(   s   `r   r2   zVersion.testsQ   s<    
 
 
 
22
 
 
 	
r   c                 |      j                             dd          } fd|                    d          D             S )Noptionalformatc              3   j   K   | ]-}                     |j        d d         |          D ]}|V  .d S rH   rL   rN   s      r   rQ   z'Version.format_tests.<locals>.<genexpr>]   rR   r   rS   )rT   r    rU   )r(   r3   s   ` r   format_testszVersion.format_tests[   sQ    z"":x88
 
 
 
8,,
 
 
 	
r   c                 h    |                      || j                            d|dz                       S )NrX   z.jsonrJ   )rM   rT   r    r5   s     r   optional_tests_ofzVersion.optional_tests_off   s9    ~~$$Z@@  
 
 	
r   c                 .                        dd| j                                                            dd          z             }fd|D             }t	          |t
          j        f|          }	 t                      |_        n# t          $ r Y nw xY w|S )Nr+   Test- c           
      J    i | ]}|D ]}|D ]}|j          |j        d i  S )r<   )method_nameto_unittest_method)rO   rD   r2   rE   rC   s       r   
<dictcomp>z0Version.to_unittest_testcase.<locals>.<dictcomp>n   sp     
 
 

 
 	
 
  5d5????
 
 
 
 
r   )
popr+   titlereplacetypeunittestTestCase)_someone_save_us_the_module_of_the_callerr7   	Exception)r(   suitesrC   r+   methodsclss     `   r   to_unittest_testcasezVersion.to_unittest_testcasel   s    zz&&49??+<+<+D+DS"+M+M"MNN
 
 
 

 
 
 4(+-w77	FHHCNN 	 	 	 D		 
s   1B 
BBc              #       K   t          j        |                    d                    D ] fdd         D             V  d S )Nr   )encodingc           
   3   ^   K   | ]'}t          dd          d         j        d|V  (dS )descriptionschema)r/   rK   case_descriptionrv   r   Nr<   )_Testr)   )rO   rE   eachr(   rK   s     r   rQ   z$Version._tests_in.<locals>.<genexpr>   sq       	 	    #%)-%8> M   	 	 	 	 	 	r   r2   )r   r&   	read_text)r(   rK   r3   ry   s   `` @r   rM   zVersion._tests_in   s      Jt~~w~??@@ 
	 
	D	 	 	 	 	 	 #7m	 	 	 	 	 	 	
	 
	r   N)r6   r7   r8   r9   r:   rT   r)   r+   r0   r2   r[   r]   rq   rM   r<   r   r   r4   r4   A   s         DGIIEtwyyH4799D  
 
 
	
 	
 	

 
 
  (    r   r4   F)r   reprc                   n   e Zd Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z	 ej        d          Z
 ej                    Z ej                    Z ej        d          Zd Zed             Zed             Zd fd	Zd
 Zd ZdS )rx   F)r{   Nr   c                 6    d                     | j                  S )Nz	<Test {}>)rY   rA   rV   s    r   __repr__z_Test.__repr__   s    !!$";<<<r   c                 f    d                     | j        j        | j        | j        | j        g          S )Nz > )joinr/   r+   rK   rw   ru   rV   s    r   rA   z_Test.fully_qualified_name   s6    zz!% 	
 
 	
r   c           	          d}d                     t          j        |d| j                  t          j        |d| j                  t          j        |d| j                            S )Nz[\W\- ]+ztest_{}_{}_{}_)rY   resubrK   rw   ru   )r(   
delimiterss     r   rc   z_Test.method_name   sZ     
%%F:sDL11F:sD$9::F:sD$455
 
 	
r   c                     d S r?   r<   )rE   s    r   <lambda>z_Test.<lambda>   s    4 r   c                 V     j         r fd}n fd} j        |_         |           }|$t          j                            dd          dk    r|S t          j                            dd          dk    rt          j        |          S  t          j        |          |          S )Nc                 "     j         di  d S Nr<   )validatethisrC   r(   s    r   fnz$_Test.to_unittest_method.<locals>.fn   s!    '''''''r   c                     |                      t          j                  5   j        di  d d d            d S # 1 swxY w Y   d S r   )assertRaisesr   ValidationErrorr   r   s    r   r   z$_Test.to_unittest_method.<locals>.fn   s    &&z'ABB , ,!DM++F+++, , , , , , , , , , , , , , , , , ,s   <A A JSON_SCHEMA_DEBUG0JSON_SCHEMA_EXPECTED_FAILURES)	validrc   r6   r	   r
   r   rj   expectedFailureskip)r(   r   rC   r   reasons   ` `  r   rd   z_Test.to_unittest_method   s    : 	,( ( ( ( ( ( (, , , , , , &d>RZ^^,?EELLIZ^^;SAASHH+B///(8=((,,,r   c                 j   |                     | j                   t          j                            | j        | j        |j                  }d }||_         |d| j        |d|}t          j	        
                    dd          dk    rt                       |                    | j                   d S )N)rv   storeid_ofc                 &    t          d|            )NzTried to access the network: )RuntimeError)uris    r   prevent_network_accessz._Test.validate.<locals>.prevent_network_access   s    DsDDEEEr   )rv   resolverr   r   )instancer<   )check_schemarv   r   RefResolverfrom_schemar)   ID_OFresolve_remoter	   r
   r   
breakpointr   data)r(   r-   rC   r   r   	validators         r   r   z_Test.validate   s    t{+++)55;-/ 6 
 
	F 	F 	F"8INT[8NNvNN	:>>-s33s::LLLDI.....r   c                 `    	 |                      |           d S # t          j        $ r Y d S w xY w)N)r-   )r   r   r   )r(   r-   s     r   rB   z_Test.validate_ignoring_errors   sF    	MMIM.....) 	 	 	DD	s    --)r6   r7   r8   r9   r:   r/   rK   rw   ru   r   rv   r   r)   commentr~   propertyrA   rc   rd   r   rB   r<   r   r   rx   rx      s        dgiiGdgiiGtwyy$'))K4799DTW%   FDGIIEtwyyHdgd###G= = = 
 
 X
 
 
 X
 '8&7 - - - -$/ / /(    r   rx   c                  @    t          j        d          j        d         S )a  
    The FQON of the module 2nd stack frames up from here.

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

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

    Save us all, this is all so so so so so terrible.
       r6   )r#   	_getframe	f_globalsr<   r   r   rl   rl      s     =%j11r   )__doc__	functoolsr   pathlibr   r   r	   r   r!   r#   rj   r9   jsonschema.validatorsr   r   r   sr   r4   rx   rl   r<   r   r   <module>r      s                 				 				     



   - - - - - -      $ T
 
 
 
 
 
 
 
4 TI I I I I I I IX TR R R R R R R Rj2 2 2 2 2r   