o
    mi!                     @   s  d 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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 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 d,Z#dS )/z
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.
    )SuiteNZ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 e/home/kim/smarthome/.venv/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                 C   s   | j dkrdS d S )Nzecmascript-regexz*ECMA regex support will be added in #1142.)subjectr	   r   r   r   ecmascript_regex   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_CHECKERZ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)r   r   r
   r   r   r   r   complex_email_validation2   sJ   
	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 secondr   r   r   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_secondI   s    $r$   Zbignumznon-bmp-regexZzeroTerminatedFloatsc                 C   s   t | pttj| pt| S r   )r   r   
jsonschemaDraft3Validatorr!   r	   r   r   r   <lambda>~   s   r'   )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   r'         c                 C   r*   r   )r   r$   r   r%   Draft6Validatorr!   r	   r   r   r   r'      r,   zcross-draftZunknownKeywordc                 C   r*   r   )r   r$   r   r%   Draft7Validatorr!   r	   r   r   r   r'      r,   anchorz	no-schemaZrefOfUnknownKeywordz(Vocabulary support is still in-progress.Z
vocabularyz5no validation: invalid number, but it still validatesr#   )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   r'         )r   r   r(   r   TestDraft202012Formatc                 C   r1   r   )r!   r   r$   r   r%   Draft202012Validatorr	   r   r   r   r'      r3   )$__doc__Zjsonschema.tests._suiter   r%   ZSUITEversionZDRAFT3ZDRAFT4ZDRAFT6ZDRAFT7ZDRAFT201909ZDRAFT202012r   r   r   r!   r$   Zto_unittest_testcasecasesZformat_casesZoptional_cases_ofr&   r   Z
TestDraft3r+   Z
TestDraft4r-   Z
TestDraft6r.   Z
TestDraft7r2   ZTestDraft201909r0   r5   ZTestDraft202012r4   r   r   r   r   <module>   s    	-




































