`d 7 UddlmZddlmZddlmZddlZddlZddlZddl Z ddl m Z e je gefZe j deZe j$e j&ee j*e j&edffZGd d e ZeZeZeZeZeZeZeeeeeee Zd e d < dJ dKdZ!e!de!ddLdZ"e!ddddddejFdLdZ$e!dejFdLdZ%ee&5ddl'm(Z(e!dddddd dLdZ)dddee&5ddl*Z*e!ddde*jVe,fdLd Z-ddd ddl.Z.e!d!d!d!e/dLd"Z0e!d#d#d#e/dLd$Z1e!d%e/dLd&Z2e!d'd'd'd'e/(dLd)Z3ee&5dd-l6m7Z7e!d.dLd/Z8e!d0d0d01dLd2Z9ddde!d3ejtdLd4Z;e!d5d5d5d5e/6dLd7Z<e!d0e/8dLd9Z=ee&5dd:l>m?Z?ddl>Z>dLd;Z@e!dd>d>d>eCj(dLd?ZEe!d@d@d@eCjdLdAZFdddee&5ddlGZGe!dBdBdBdBCdLdDZHdddee&5ddlIZIe!dEdEeIjFdLdGZKddde!dHdHe/FdLdIZLy#1swYxYw#1swYxYw#e&$rLee&5dd*l4m5Z5e!d%dLd+Z2e!d'd'd'd'e/(dLd,Z3dddn #1swYnxYwYwxYw#1swYxYw#1swYAxYw#1swYxYw#1swYxYw#1swYxYw)M) annotations)suppress)UUIDN) FormatError_F)bound.cveZdZUdZiZded<d d dZdZ d ddZe d ddZ dd Z dd Z y) FormatCheckera 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 check a custom format using a function that takes an instance and returns a ``bool``, use the `FormatChecker.checks` or `FormatChecker.cls_checks` decorators. Arguments: formats (~collections.abc.Iterable): 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|| jj_ytfd|D_y)Nc3@K|]}|j|fywNr ).0kselfs 4/usr/lib/python3/dist-packages/jsonschema/_format.py z)FormatChecker.__init__..3s H1!T]]1%5!6 Hs)r copydict)rformatss` r__init__zFormatChecker.__init__/s. ? MM..0DM H HHDMcJdjt|jS)Nz)formatsortedr )rs r__repr__zFormatChecker.__repr__5s,33F4==4IJJrcdfd }|S)a Register a decorated function as validating a new format. Arguments: format (str): The format that the decorated function will check. raises (Exception): 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*|fj<|Srr)funcrraisesrs r_checksz%FormatChecker.checks.._checksNs%)6NDMM& !Krr rreturnr)rrr!r"s``` rcheckszFormatChecker.checks8s, rcdfd }|S)Nc*|fj<|Srr)r clsrr!s rr"z)FormatChecker.cls_checks.._checksXs$(&>CLL Krr#r%)r)rr!r"s``` r cls_checkszFormatChecker.cls_checksTs rc||jvry|j|\}}d\}} ||}|st|d||y#|$r }|}Yd}~!d}~wwxYw)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 (str): 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)rinstancerr r!resultr,es rcheckzFormatChecker.check^su(  & }}V, f"  (^F JvjAO O E sAA AAcH |j||y#t$rYywxYw)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 (str): The format that instance should conform to Returns: bool: whether it conformed TF)r0r)rr-rs rconformszFormatChecker.conforms~s.&  JJx (  s  !!r)rztyping.Iterable[str] | None)r%)rstrr! _RaisesTyper$typing.Callable[[_F], _F])r-objectrr3r$None)r-r6rr3r$bool) __name__ __module__ __qualname____doc__r __annotations__rrr& classmethodr*r0r2r%rrr r s2   I K24#. "802"- "P@rr )draft3draft4draft6draft7 draft201909 draft202012zdict[str, FormatChecker]_draft_checkersctxs|xs|xs|xs|xs|xs|dfd }|S)Ncrtdj|}rtdj|}rtdj|}rtdj|}rtdj|}rtdj|}tjxsxsxs xsxs||S)Nr?r@rArBrCrD)rEr&r r*)r rCrDr?r@rArBr!s rwrapz_checks_drafts..wraps "8,33FFCDID "8,33FFCDID "8,33FFCDID "8,33FFCDID "=188fMD "=188fMD    N; N& NF Nf N     rr#r%) namer?r@rArBrCrDr!rHs ``````` r_checks_draftsrJsN^tF ^tF ^tF ^tF%K%K4 Krz idn-email)rIemailc,t|tsyd|vS)NT@) isinstancer3r-s ris_emailrPs h $ (?rz ip-addressipv4)r?r@rArBrCrDr!c`t|tsyttj|SNT)rNr3r8 ipaddress IPv4AddressrOs ris_ipv4rVs' h $  %%h/ 00ripv6)rIr!cjt|tsytj|}t |dd S)NTscope_id)rNr3rT IPv6Addressgetattr)r-addresss ris_ipv6r^s1 h $##H-Gw B/ //r)FQDNz host-namehostnamecNt|tsyt|jSrS)rNr3r_is_validrOs r is_host_namercs!(C(H~&&&rz idn-hostname)rBrCrDr!cPt|tsytj|yrS)rNr3idnaencoderOs ris_idn_host_namerg s (C( HriricRt|tsytj|dS)NTIRIrulerNr3rfc3987parserOs ris_irirp3s"(C(}}XE22rz iri-referencecRt|tsytj|dS)NT IRI_referencerkrmrOs ris_iri_referencers>s"(C(}}XO<t|tsyt|dSrvrNr3r}rOs rrxrxsh,#H59 9rc>t|tsyt|dSrzrrOs rr|r|%sh,#H?C Cr)validate_rfc3339z date-timecVt|tsyt|jSrS)rNr3rupperrOs r is_datetimer_s!(C( 011rtime)rBrCrDc@t|tsytd|zS)NTz 1970-01-01T)rNr3rrOs ris_timeres! (C(=8344rregexc`t|tsyttj|SrS)rNr3r8recompilerOs ris_regexrps# h $  8$ %%rdate)r?rBrCrDr!ct|tsyt|jxrtj j |SrS)rNr3r8isasciidatetimer fromisoformatrOs ris_daterws9 h $   "Lx}}'B'B8'L MMr)r?r!cvt|tsyttjj |dS)NTz%H:%M:%S)rNr3r8rstrptimerOs ris_draft3_timers- h $ !!**8Z@ AAr)CSS21_NAMES_TO_HEXc,tj|Sr) webcolors normalize_hexrOs ris_css_color_coders&&x00rcolorcft|tr|jtvryt |SrS)rNr3lowerrrrOs ris_css21_colorrs,8S)~~#55 **rz json-pointerc`t|tsyttj|SrS)rNr3r8 jsonpointer JsonPointerrOs ris_json_pointerrs'(C(K++H566rzrelative-json-pointerc*t|tsygd}}t|D]L\}}|jr-|dkDrt ||dz dk(ry|j |C|sy||d}n|dk(xst tj|S)NTrZrF#) rNr3 enumerateisdigitintappendr8rr)r-non_negative_integerresti characters ris_relative_json_pointerrs(C(%'d%h/ LAy  "q5S!a%1Q6 $++I6'AB.sIXx!S(Is) )rNr3rallrOs`ris_uuidrs* h $N II IIr)NNNNNNNr%)r$r5)r-r6r$r8)M __future__r contextlibrrrrrTrtypingjsonschema.exceptionsrCallabler6r8_FormatCheckCallableTypeVarrUnionType ExceptionTupler4r draft3_format_checkerdraft4_format_checkerdraft6_format_checkerdraft7_format_checkerdraft201909_format_checkerdraft202012_format_checkerrrEr=rJrPAddressValueErrorrVr^ ImportErrorfqdnr_rcre IDNAError UnicodeErrorrgrn ValueErrorrprsrxr|rfc3986_validatorr}rfc3339_validatorrrrerrorrrrrrr TypeErrorrrJsonPointerExceptionrrrrrDurationParsingExceptionrrr%rrrsm" -x~6V^^D 45ll KK FLLY)?)DEF CFCL&%%%*_*_,0 ** -)      ++\[!W"       & &11 VI$?$?@0A0k' '''"k"" -    "@=2  3  3 ##  =  = z2333 ## == k52%2&2  5  55(WRXX.&/&     NN vj1B2B k+,17J +BC+D++"k-D""// 77&++//  D  D3-D`k /""  /  / /k :33 :  : :  J  Jo''"&D + D6 U # : $ : ""''   D  D!DDDDB55^++"-D-D` / / : :s?M+$MM(/)N<("O AO*O"!O.MM%( N95+N) N9)N2 .N98N9<O OO"O+.O7