U
    kuf!                     @   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 rd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)SuiteZdraft3)nameZdraft4Zdraft6Z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 O/tmp/pip-unpacked-wheel-k94ccfep/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ks4|dks4d|ks4|d  jjks4| jr8d S d|d dS )NTFformatzFormat checker z not found.)schemaFORMAT_CHECKERZcheckersZ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| p`t|dd| p`t|dd| p`t|dd| p`t|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+Z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| pt |ddd| pt |ddd| pt |ddd| pt |ddd| pt |dd	d| pt |dd
d| pt |ddd| pt |ddd| pt |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%   Zbignumznon-bmp-regexZzeroTerminatedFloatsc                 C   s   t tj| pt| S r   )r   
jsonschemaDraft3Validatorr   r	   r   r   r   <lambda>   s    r(   )r   format_checkerr   zfloat-overflowidc                 C   s&   t | p$t| p$ttj| p$t| S r   )r#   r%   r   r&   Draft4Validatorr   r	   r   r   r   r(      s    c                 C   s&   t | p$t| p$ttj| p$t| S r   )r#   r%   r   r&   Draft6Validatorr   r	   r   r   r   r(      s    zcross-draftZunknownKeywordc                 C   s&   t | p$t| p$ttj| p$t| S r   )r#   r%   r   r&   Draft7Validatorr   r	   r   r   r   r(      s    anchorz	no-schemaZrefOfUnknownKeywordz(Vocabulary support is still in-progress.Z
vocabularyz5no validation: invalid number, but it still validates)r   r   TestDraft201909Formatc                 C   s.   t | p,t| p,t| p,ttj| p,t | S r   )r   r#   r%   r   r&   Draft201909Validatorr	   r   r   r   r(      s    )r   r   r)   r   TestDraft202012Formatc                 C   s.   t | p,t| p,t| p,ttj| p,t | S r   )r   r#   r%   r   r&   Draft202012Validatorr	   r   r   r   r(     s    )'__doc__sysZjsonschema.tests._suiter   r&   ZSUITEversionZDRAFT3ZDRAFT4ZDRAFT6ZDRAFT7ZDRAFT201909ZDRAFT202012r   r   r   version_infor   r#   r%   Zto_unittest_testcaseZcasesZformat_casesZoptional_cases_ofr'   r   Z
TestDraft3r+   Z
TestDraft4r,   Z
TestDraft6r-   Z
TestDraft7r0   ZTestDraft201909r/   r2   ZTestDraft202012r1   r   r   r   r   <module>   s   
-



































