
    {g                        S r SSKrSSKJr  SSKr\" 5       r\R                  SS9r\R                  SS9r\R                  SS9r	\R                  SS9r
\R                  S	S9r\R                  S
S9rS rS rS r\R                   S:  a  Sr\" \SSS9rOS rS r\R)                  \R+                  5       \R-                  5       \R/                  SS9\R/                  SS9\R/                  SS9\R0                  \R0                  R2                  S S9r\R)                  \R+                  5       \R-                  5       \R/                  SS9\R/                  SS9\R/                  SS9\R/                  SS9\R6                  \R6                  R2                  S S9	r\	R)                  \	R+                  5       \	R-                  5       \	R/                  SS9\	R/                  SS9\	R/                  SS9\R:                  \R:                  R2                  S S9r\
R)                  \
R+                  5       \
R-                  5       \
R/                  SS9\
R/                  SS9\
R/                  SS9\
R/                  SS9\R>                  \R>                  R2                  S S9	r \R)                  \R+                  5       \R/                  SS9\R/                  SS9\R/                  SS9\R/                  SS9\R/                  SS9\RB                  \" S S!S"S9S#9r"\R)                  \R-                  5       S$\RB                  \RB                  R2                  S% S&9r#\R)                  \R+                  5       \R/                  SS9\R/                  SS9\R/                  SS9\R/                  SS9\R/                  SS9\RH                  \" S S!S"S9S#9r%\R)                  \R-                  5       S'\RH                  \RH                  R2                  S( S&9r&g))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.
    N)Suitedraft3)namedraft4draft6draft7zdraft2019-09zdraft2020-12c                    ^ ^ UU 4S jnU$ )Nc                 \   >^  [        U 4S jTR                  5        5       5      (       a  T$ g )Nc              3   F   >#    U  H  u  pU[        TU5      :H  v   M     g 7fN)getattr).0attrvaluetests      M/usr/lib/python3/dist-packages/jsonschema/tests/test_jsonschema_test_suite.py	<genexpr>(skip.<locals>.skipper.<locals>.<genexpr>   s     N~ud++~s   !)allitems)r   kwargsmessages   `r   skipperskip.<locals>.skipper   s%    Nv||~NNNN O     )r   r   r   s   `` r   skipr      s     Nr   c                    ^  U 4S jnU$ )Nc                    > U R                   nUSL d9  USL d4  SU;  d.  US   TR                  R                  ;   d  U R                  (       a  g SUS   < S3$ )NTFformatzFormat checker z not found.)schemaFORMAT_CHECKERcheckersvalid)r   r!   	Validators     r   missing_format&missing_format.<locals>.missing_format   sZ    dNv%h9#;#;#D#DDzz !1 4K@@r   r   )r%   r&   s   ` r   r&   r&      s    A r   c                     U R                   S:w  a  g Sn[        USS9" U 5      =(       dU    [        USS9" U 5      =(       d>    [        USS9" U 5      =(       d'    [        USS9" U 5      =(       d    [        USS9" U 5      $ )	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   s     r   complex_email_validationr-   .   s    ||wHG'   5  7  8  I r   )   	   zRejecting leading zeros is 3.9+ipv4z5invalid leading zeroes, as they are treated as octalsr   r+   r*   c                     g r   r   r   s    r   allowed_leading_zerosr4   M   s    r   c                    Sn[        USSS9" U 5      =(       d    [        USSS9" U 5      =(       d    [        USSS9" U 5      =(       d    [        USSS9" U 5      =(       d    [        USSS9" U 5      =(       dq    [        USS	S9" U 5      =(       dY    [        USS
S9" U 5      =(       dA    [        USSS9" U 5      =(       d)    [        USSS9" U 5      =(       d    [        USSS9" U 5      $ )NzLeap seconds are unsupported.timez$a valid time string with leap secondr1   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,   s     r   leap_secondr7   Q   s]   -G: 	 ( @ 		( F 	( = 	(  = 	!(( C 	)(0 C 	1(8 9 	9(@ ? 	A(H M 	I(r   bignumznon-bmp-regexzeroTerminatedFloatsc                 d    [        [        R                  5      " U 5      =(       d    [        U 5      $ r   )r&   
jsonschemaDraft3Validatorr-   r3   s    r   <lambda>r=      s'    z11248 	*#D)	*r   )r%   format_checkerr   zfloat-overflowc                     [        U 5      =(       dC    [        U 5      =(       d1    [        [        R                  5      " U 5      =(       d    [        U 5      $ r   )r4   r7   r&   r;   Draft4Validatorr-   r3   s    r   r=   r=      C    d# 	*t	**445d;	* $D)	*r   c                     [        U 5      =(       dC    [        U 5      =(       d1    [        [        R                  5      " U 5      =(       d    [        U 5      $ r   )r4   r7   r&   r;   Draft6Validatorr-   r3   s    r   r=   r=      rA   r   zcross-draftc                     [        U 5      =(       dC    [        U 5      =(       d1    [        [        R                  5      " U 5      =(       d    [        U 5      $ r   )r4   r7   r&   r;   Draft7Validatorr-   r3   s    r   r=   r=      rA   r   refOfUnknownKeywordz(Vocabulary support is still in-progress.
vocabularyz5no validation: invalid number, but it still validates)r%   r   TestDraft201909Formatc                     [        U 5      =(       dU    [        U 5      =(       dC    [        U 5      =(       d1    [        [        R
                  5      " U 5      =(       d    [        U 5      $ r   )r-   r4   r7   r&   r;   Draft201909Validatorr3   s    r   r=   r=      R     & 	* &	*t	* *99:4@	* $D)		*r   )r   r%   r>   r   TestDraft202012Formatc                     [        U 5      =(       dU    [        U 5      =(       dC    [        U 5      =(       d1    [        [        R
                  5      " U 5      =(       d    [        U 5      $ r   )r-   r4   r7   r&   r;   Draft202012Validatorr3   s    r   r=   r=      rK   r   )'__doc__sysjsonschema.tests._suiter   r;   SUITEversionDRAFT3DRAFT4DRAFT6DRAFT7DRAFT201909DRAFT202012r   r&   r-   version_infor   r4   r7   to_unittest_testcasecasesformat_casesoptional_cases_ofr<   r"   
TestDraft3r@   
TestDraft4rC   
TestDraft6rE   
TestDraft7rJ   TestDraft201909rH   rN   TestDraft202012rL   r   r   r   <module>re      s    ) 	H	%	H	%	H	%	H	%mmm0mmm0 . f/G K*Z ((
LLN

(+
/2
"89((--<<
 ) 
 ((
LLN

(+
"23
/2
"89((--<<
 ) 
$ ((
LLN

(+
"23
/2((--<<
 ) 
" ((
LLN

(+
-0
"23
/2((--<<
 ) 
$ 22!!x!0!!}!5!!'7!8!!!7!!'<!=--	:C	
 3 $ $88	 --22AA
 9   22!!x!0!!}!5!!'7!8!!!7!!'<!=--	:C	
 3 $ $88	 --22AA
 9  r   