o
    h!                     @   s<  d Z ddlZddlmZ ddlZe ZejddZejddZejddZ	ejddZ
ejd	dZejd
dZdd Zdd Zdd Zejdk rRdZeedddZndd Zdd Zeje e ejddejddejddejejjdd dZeje e ejddejd dejd!dejddejddejejjd"d d
Ze	je	 e	 e	jdde	jd de	jd!de	jddejejjd#d d	Ze
je
 e
 e
jdde
jd$de
jd de	jd!de
jdde
jd%dejejjd&d dZ eje ejd'dejddejd$dejd dejd!dejd(dejddejd)dejd%dej!ed*d+d,dd-Z"eje d.ej!ej!jd/d d0Z#eje ejd'dejddejd$dejd dejd!dejd(dejddejd)dejd%dej$ed*d+d,dd-Z%eje d1ej$ej$jd2d d0Z&dS )3z
Test runner for the JSON Schema official test suite

Tests comprehensive correctness of each draft's validator.

See https://github.com/json-schema-org/JSON-Schema-Test-Suite for details.
    N)Suitedraft3)namedraft4draft6draft7zdraft2019-09zdraft2020-12c                    s    fdd}|S )Nc                    s"   t  fdd D rS d S )Nc                 3   s"    | ]\}}|t  |kV  qd S N)getattr).0attrvaluetest _/var/www/vscode/kcb/lib/python3.10/site-packages/jsonschema/tests/test_jsonschema_test_suite.py	<genexpr>   s     z(skip.<locals>.skipper.<locals>.<genexpr>)allitemsr   kwargsmessager   r   skipper   s   zskip.<locals>.skipperr   )r   r   r   r   r   r   skip   s   r   c                    s    fdd}|S )Nc                    sH   | j }|du s|du sd|vs|d  jjv s| jrd S d|d dS )NTFformatzFormat checker z not found.)schemaFORMAT_CHECKERcheckersvalid)r   r   	Validatorr   r   missing_format   s   z&missing_format.<locals>.missing_formatr   )r   r    r   r   r   r       s   r    c                 C   sb   | j dkrd S d}t|dd| p0t|dd| p0t|dd| p0t|dd| p0t|dd| S )	Nemailz8Complex email validation is (intentionally) unsupported.zan invalid domain)r   descriptionzan invalid IPv4-address-literalz!dot after local part is not validz"dot before local part is not validz3two subsequent dots inside local part are not valid)subjectr   r   r   r   r   r   complex_email_validation.   sJ   
	r%   )   	   zRejecting leading zeros is 3.9+ipv4z5invalid leading zeroes, as they are treated as octalsr   r#   r"   c                 C   s   d S r   r   r   r   r   r   allowed_leading_zerosM   s   r*   c                 C   s   d}t |ddd| p[t |ddd| p[t |ddd| p[t |ddd| p[t |ddd| p[t |dd	d| p[t |dd
d| p[t |ddd| p[t |ddd| p[t |ddd| S )NzLeap seconds are unsupported.timez$a valid time string with leap secondr)   z*a valid time string with leap second, Zuluz0a valid time string with leap second with offsetz'valid leap second, positive time-offsetz'valid leap second, negative time-offsetz-valid leap second, large positive time-offsetz-valid leap second, large negative time-offsetz#valid leap second, zero time-offsetz	date-timez)a valid date-time with a leap second, UTCz7a valid date-time with a leap second, with minus offset)r   r$   r   r   r   leap_secondQ   s    $r,   bignumznon-bmp-regexzeroTerminatedFloatsc                 C   s   t tj| p
t| S r   )r    
jsonschemaDraft3Validatorr%   r   r   r   r   <lambda>   s   r1   )r   format_checkerr   zfloat-overflowidc                 C   &   t | pt| pttj| pt| S r   )r*   r,   r    r/   Draft4Validatorr%   r   r   r   r   r1         c                 C   r4   r   )r*   r,   r    r/   Draft6Validatorr%   r   r   r   r   r1      r6   zcross-draftunknownKeywordc                 C   r4   r   )r*   r,   r    r/   Draft7Validatorr%   r   r   r   r   r1      r6   anchorz	no-schemarefOfUnknownKeywordz(Vocabulary support is still in-progress.
vocabularyz5no validation: invalid number, but it still validates)r   r   TestDraft201909Formatc                 C   .   t | pt| pt| pttj| pt | S r   )r%   r*   r,   r    r/   Draft201909Validatorr   r   r   r   r1         )r   r   r2   r   TestDraft202012Formatc                 C   r>   r   )r%   r*   r,   r    r/   Draft202012Validatorr   r   r   r   r1     r@   )'__doc__sysjsonschema.tests._suiter   r/   SUITEversionDRAFT3DRAFT4DRAFT6DRAFT7DRAFT201909DRAFT202012r   r    r%   version_infor   r*   r,   to_unittest_testcasecasesformat_casesoptional_cases_ofr0   r   
TestDraft3r5   
TestDraft4r7   
TestDraft6r9   
TestDraft7r?   TestDraft201909r=   rB   TestDraft202012rA   r   r   r   r   <module>   s    
-




































