
    g8              	      (   U d dl mZ d dlmZ d dlmZ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mZ e
j                  egef   Z e
j$                  de      Ze
j(                  e
j*                  e   e
j.                  e
j*                  e   d	f   f   Z e	j2                  d
e	j4                        Z G d d      Z e       Z e       Z e       Z e       Z  e       Z! e       Z" e#eeee e!e"      Z$de%d<   	 	 	 	 	 	 	 	 dJ	 dKdZ& e&d       e&d      dLd              Z' e&ddddddejP                        dLd       Z) e&dejP                        dLd       Z* ee+      5  d dl,m-Z-  e&dddddd      dLd       Z.ddd        ee+      5  d dl/Z/ e&d d d e/j`                  e1f!      dLd"       Z2ddd       	 d dl3Z3 e&d#d#d#e4!      dLd$       Z5 e&d%d%d%e4!      dLd&       Z6 e&d'e4      dLd(       Z7 e&d)d)d)d)e4*      dLd+       Z8 ee+      5  d d/l;m<Z<  e&d0      dLd1       Z= e&d2d2d23      dLd4       Z>ddd        e&d5e	j~                        dLd6       Z@ e&d7d7d7d7e48      dLd9       ZA e&d2e4:      dLd;       ZB ee+      5  d dlCZC e&d<e4eDf:      dLd=       ZEddd        ee+      5  d dlFZF e&d>d>d>d>eFj                  *      dLd?       ZH e&d@d@d@eFj                  !      dLdA       ZIddd        ee+      5  d dlJZJ e&dBdBdBdBC      dLdD       ZKddd        ee+      5  d dlLZL e&dEdEeLj                  F      dLdG       ZNddd        e&dHdHe4F      dLdI       ZOy# 1 sw Y   xY w# 1 sw Y   xY w# e+$ rL  ee+      5  d d,l9m:Z:  e&d'      dLd-       Z7 e&d)d)d)d)e4*      dLd.       Z8ddd       n# 1 sw Y   nxY wY w xY w# 1 sw Y   xY w# 1 sw Y   AxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)M    )annotations)suppress)datedatetime)UUIDN)FormatError_F)bound.z^\d{4}-\d{2}-\d{2}$c                      e Zd ZU dZi Zded<   dddZd Z	 d	 	 	 	 	 ddZe		 d	 	 	 	 	 dd       Z
e		 d	 	 	 	 	 dd	       Zdd
ZddZy)FormatCheckeraz  
    A ``format`` property checker.

    JSON Schema does not mandate that the ``format`` property actually do any
    validation. If validation is desired however, instances of this class can
    be hooked into validators to enable format validation.

    `FormatChecker` objects always return ``True`` when asked about
    formats that they do not know how to validate.

    To add a check for a custom format use the `FormatChecker.checks`
    decorator.

    Arguments:

        formats:

            The known formats to validate. This argument can be used to
            limit which formats will be used during validation.

    z3dict[str, tuple[_FormatCheckCallable, _RaisesType]]checkersNc                    || j                   j                         }|D ci c]  }|| j                   |    c}| _         y c c}w N)r   keys)selfformatsks      G/var/www/openai/venv/lib/python3.12/site-packages/jsonschema/_format.py__init__zFormatChecker.__init__3   s@    ?mm((*G6=>gDMM!,,g>>s   Ac                4    dt        | j                         dS )Nz<FormatChecker checkers=>)sortedr   )r   s    r   __repr__zFormatChecker.__repr__8   s    )&*?)@BB    c                     d fd}|S )a  
        Register a decorated function as validating a new format.

        Arguments:

            format:

                The format that the decorated function will check.

            raises:

                The exception(s) raised by the decorated function when an
                invalid instance is found.

                The exception object will be accessible as the
                `jsonschema.exceptions.ValidationError.cause` attribute of the
                resulting validation error.

        c                *    | fj                   <   | S r   r   )funcformatraisesr   s    r   _checksz%FormatChecker.checks.<locals>._checksR   s    %)6NDMM&!Kr   r   r	   returnr	    )r   r   r    r!   s   ``` r   checkszFormatChecker.checks;   s    .	 r   c                `    t        j                  dt        d       | j                  ||      S )NzoFormatChecker.cls_checks is deprecated. Call FormatChecker.checks on a specific FormatChecker instance instead.   )
stacklevel)r   r    )warningswarnDeprecationWarning_cls_checks)clsr   r    s      r   
cls_checkszFormatChecker.cls_checksX   s2     	 	
 fV<<r   c                     d fd}|S )Nc                *    | fj                   <   | S r   r   )r   r-   r   r    s    r   r!   z*FormatChecker._cls_checks.<locals>._checksk   s    $(&>CLL Kr   r"   r$   )r-   r   r    r!   s   ``` r   r,   zFormatChecker._cls_checksg   s    	 r   c                    || j                   vry| j                   |   \  }}d\  }}	  ||      }|st        |d||      y# |$ r}|}Y d}~!d}~ww xY w)a  
        Check whether the instance conforms to the given format.

        Arguments:

            instance (*any primitive type*, i.e. str, number, bool):

                The instance to check

            format:

                The format that instance should conform to

        Raises:

            FormatError:

                if the instance does not conform to ``format``

        N)NNz
 is not a )cause)r   r   )r   instancer   r   r    resultr2   es           r   checkzFormatChecker.checkq   su    * &}}V,f"	(^F JvjAOO   	E	s   A A
AAc                H    	 | j                  ||       y# t        $ r Y yw xY w)aW  
        Check whether the instance conforms to the given format.

        Arguments:

            instance (*any primitive type*, i.e. str, number, bool):

                The instance to check

            format:

                The format that instance should conform to

        Returns:

            bool: whether it conformed

        TF)r6   r   )r   r3   r   s      r   conformszFormatChecker.conforms   s.    &	JJx(   		s    	!!r   )r   ztyping.Iterable[str] | None)r$   )r   strr    _RaisesTyper#   typing.Callable[[_F], _F])r3   objectr   r9   r#   None)r3   r<   r   r9   r#   bool)__name__
__module____qualname____doc__r   __annotations__r   r   r%   classmethodr.   r,   r6   r8   r$   r   r   r   r      s    2 	   
?
C 24#.	": 02=="-=	"= = 02"-	" PBr   r   )draft3draft4draft6draft7draft201909draft202012zdict[str, FormatChecker]_draft_checkersc                t    xs | xs | xs | xs | xs | xs | dfd}|S )Nc                   rt        d   j                        |       } rt        d   j                        |       } rt        d   j                        |       } rt        d   j                        |       } rt        d   j                        |       } rt        d   j                        |       } t        j                  xs xs xs
 xs xs       |        | S )NrE   rF   rG   rH   rI   rJ   )rK   r%   r   r,   )r   rI   rJ   rE   rF   rG   rH   r    s    r   wrapz_checks_drafts.<locals>.wrap   s   "8,33FFCDID"8,33FFCDID"8,33FFCDID"8,33FFCDID"=188fMD "=188fMD 	!!N;N&NFNfN	
 	 r   r"   r$   )	namerE   rF   rG   rH   rI   rJ   r    rN   s	    ``````` r   _checks_draftsrP      sN     ^tF^tF^tF^tF%K%K 4 Kr   z	idn-email)rO   emailc                ,    t        | t              syd| v S )NT@)
isinstancer9   r3   s    r   is_emailrV      s     h$(?r   z
ip-addressipv4)rE   rF   rG   rH   rI   rJ   r    c                `    t        | t              syt        t        j                  |             S NT)rT   r9   r>   	ipaddressIPv4AddressrU   s    r   is_ipv4r\      s'     h$	%%h/00r   ipv6)rO   r    c                j    t        | t              syt        j                  |       }t	        |dd       S )NTscope_id )rT   r9   rZ   IPv6Addressgetattr)r3   addresss     r   is_ipv6rd     s1    h$##H-Gw
B///r   )FQDNz	host-namehostnamec                R    t        | t              syt        | d      j                  S )NT   )
min_labels)rT   r9   re   is_validrU   s    r   is_host_namerk     s$     (C(H+444r   zidn-hostname)rH   rI   rJ   r    c                P    t        | t              syt        j                  |        yrY   )rT   r9   idnaencoderU   s    r   is_idn_host_namero      s      (C(Hr   iric                R    t        | t              syt        j                  | d      S )NTIRIrulerT   r9   rfc3987parserU   s    r   is_irirx   G  s"     (C(}}XE22r   ziri-referencec                R    t        | t              syt        j                  | d      S )NTIRI_referencers   ru   rU   s    r   is_iri_referencer{   R  s"     (C(}}XO<<r   uric                R    t        | t              syt        j                  | d      S NTURIrs   ru   rU   s    r   is_urir   ]  s     (C(}}XE22r   zuri-reference)rG   rH   rI   rJ   r    c                R    t        | t              syt        j                  | d      S NTURI_referencers   ru   rU   s    r   is_uri_referencer   c  s"     (C(}}XO<<r   )validate_rfc3986c                >    t        | t              syt        | d      S r~   rT   r9   r   rU   s    r   r   r   3  s    h,#H599r   c                >    t        | t              syt        | d      S r   r   rU   s    r   r   r   9  s     h,#H?CCr   )validate_rfc3339z	date-timec                V    t        | t              syt        | j                               S rY   )rT   r9   r   upperrU   s    r   is_datetimer   s  s!    (C( 011r   time)rH   rI   rJ   c                @    t        | t              syt        d| z         S )NTz1970-01-01T)rT   r9   r   rU   s    r   is_timer   y  s!     (C(=8344r   regexc                `    t        | t              syt        t        j                  |             S rY   )rT   r9   r>   recompilerU   s    r   is_regexr     s#    h$

8$%%r   r   )rE   rH   rI   rJ   r    c                    t        | t              syt        t        j	                  |       xr t        j                  |             S rY   )rT   r9   r>   _RE_DATE	fullmatchr   fromisoformatrU   s    r   is_dater     s7     h$""8,M1C1CH1MNNr   )rE   r    c                b    t        | t              syt        t        j                  | d            S )NTz%H:%M:%S)rT   r9   r>   r   strptimerU   s    r   is_draft3_timer     s'    h$!!(J788r   colorc                    t        | t              r	 t        j                  |        yy# t        $ r& t        j
                  | j                                Y yw xY wrY   )rT   r9   	webcolorsname_to_hex
ValueErrornormalize_hexlowerrU   s    r   is_css21_colorr     sM    h$:%%h/   :''(89:s   ) ,AAzjson-pointerc                `    t        | t              syt        t        j                  |             S rY   )rT   r9   r>   jsonpointerJsonPointerrU   s    r   is_json_pointerr     s'     (C(K++H566r   zrelative-json-pointerc                0   t        | t              sy| syg d}}t        |       D ]L  \  }}|j                         r-|dkD  rt	        | |dz
           dk(  r y|j                  |       C|s y| |d  } n |dk(  xs t        t        j                  |            S )NTFr`   r   rh   #)	rT   r9   	enumerateisdigitintappendr>   r   r   )r3   non_negative_integerresti	characters        r   is_relative_json_pointerr     s     (C(%'d%h/LAy  "q5S!a%1Q6 $++I6'AB<D 0 C[%<%<T%B CCr   zuri-template)rG   rH   rI   rJ   c                N    t        | t              syt        j                  |       S rY   )rT   r9   uri_templatevalidaterU   s    r   is_uri_templater     s"     (C($$X..r   duration)rI   rJ   r    c                    t        | t              syt        j                  |        | j	                  t        d            S )NTDMYWHMS)rT   r9   isodurationparse_durationendswithtuplerU   s    r   is_durationr     s5     (C(""8,  y!122r   uuidc                d     t         t              syt                t         fddD              S )NTc              3  .   K   | ]  }|   d k(    yw)-Nr$   ).0positionr3   s     r   	<genexpr>zis_uuid.<locals>.<genexpr>  s     IXx!S(s   )            )rT   r9   r   allrU   s   `r   is_uuidr     s*     h$NIIIIr   )NNNNNNNr$   )r#   r;   )r3   r<   r#   r>   )P
__future__r   
contextlibr   r   r   r   r   rZ   r   typingr)   jsonschema.exceptionsr   Callabler<   r>   _FormatCheckCallableTypeVarr	   UnionType	ExceptionTupler:   r   ASCIIr   r   draft3_format_checkerdraft4_format_checkerdraft6_format_checkerdraft7_format_checkerdraft201909_format_checkerdraft202012_format_checkerdictrK   rC   rP   rV   AddressValueErrorr\   rd   ImportErrorfqdnre   rk   rm   	IDNAErrorUnicodeErrorro   rv   r   rx   r{   r   r   rfc3986_validatorr   rfc3339_validatorr   r   r   errorr   r   r   r   	TypeErrorr   r   JsonPointerExceptionr   r   r   r   r   DurationParsingExceptionr   r   r$   r   r   <module>r      s9   "  #   	   -x~6 V^^D 45ll
KK	FLLY)?)DEF 2::,bhh7S Sl & % % % *_ *_ ,0    **-)  
+ +\ [!W  " &&11 VI$?$?@0 A0 k55 " k""-	 "@=2 	33
 ##	==
 z23 33
 ##== k2%2 &2
 
5
5 ( WRXX.& /& OO vj19 29 k7J	+BC D	  k""//77 &++//	DD3 f k""	//  k33
3
3   
J
Jq " &  D	+	6	U	#	: 
$	:
 
""''

	D

	D! 
		DB ^  f  s   #M($M5<N )OO#4A O0O<,!P(M25M?O+O:	OO	OOO #O-0O9<PP