B _oa1@sddlmZddlZddlZddlZddlmZmZddlm Z dZ dZ e dZ Gd d d eZGd d d eZGd ddeZGdddeZeedddZeeedddZeedddZeedddZeeefedddZeeefeedd d!ZdBeeed#d$d%Zeedd&d'Zeedd(d)Zeddd*d+Z eeed,d-d.Z!dCeeeed/d0d1Z"eeee#fddd2d3Z$eedd4d5Z%eeee#fedd6d7Z&dDeeeed9d:d;Z'dEeeee#feeeeed<d=d>Z(dFeeee#feeeed?d@dAZ)dS)G)idnadataN)UnionOptional)intranges_contain sxn--u [.。.。]c@seZdZdZdS) IDNAErrorz7 Base exception for all IDNA-encoding related problems N)__name__ __module__ __qualname____doc__r r 0/tmp/pip-target-avibdbtm/lib/python/idna/core.pyr src@seZdZdZdS) IDNABidiErrorz= Exception when bidirectional requirements are not satisfied N)r r r r r r r rrsrc@seZdZdZdS)InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used N)r r r r r r r rrsrc@seZdZdZdS)InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used N)r r r r r r r rrsr)cpreturncCs0tt|}|dkr,tt|s,td|S)Nrz Unknown character in unicodedata) unicodedata combiningchrname ValueError)rvr r r_combining_class s r)rscriptrcCstt|tj|S)N)rordrscripts)rrr r r _is_script'sr)srcCs |dS)Npunycode)encode)rr r r _punycode*sr"cCs d|S)NzU+{:04X})format)rr r r_unot-sr$)labelrcCst|dkrdSdS)N?FT)len)r%r r rvalid_label_length1s r()r% trailing_dotrcCst||rdndkrdSdS)NFT)r')r%r)r r rvalid_string_length7sr,F)r% check_ltrrc Csfd}xHt|dD]:\}}t|}|dkr>tdt|||dkrd}qW|sZ|sZdSt|d}|dkrvd}n |d krd}ntd t|d}d}xt|dD]\}}t|}|r|d krtd ||d krd}n |dkrd}|dkrP|s|}n||krPtdq|dkr4td||dkrDd}q|dkrd}qW|sbtddS)NFrz1Unknown directionality in label {} at position {})RALANTr)r/r0Lz=First codepoint in label {} must be directionality L, R or AL) r/r0r1ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r/r0r3r1r9)r1r3z2Can not mix numeral types in a right-to-left label)r2r3r4r5r6r7r8r9zGInvalid direction for codepoint at position {} in a left-to-right label)r2r3z0Label ends with illegal codepoint directionality) enumerater bidirectionalrr#repr) r%r- bidi_labelidxr directionrtl valid_ending number_typer r r check_bidi=sP       rCcCs"t|dddkrtddS)NrMz0Label begins with an illegal combining characterT)rcategoryr)r%r r rcheck_initial_combinerxsrFcCs<|dddkrtd|ddks0|ddkr8tdd S) Nz--z4Label has disallowed hyphens in 3rd and 4th positionr-z)Label must not start or end with a hyphenT)r)r%r r rcheck_hyphen_ok~s rKcCstd||krtddS)NNFCz%Label must be in Normalization Form C)r normalizer)r%r r r check_nfcsrN)r%posrcCs8t||}|dkr|dkr8tt||dtkr8dSd}xTt|dddD]@}tjt||}|tdkrtqN|tdtd gkrNd}PqNW|sdSd}xVt|dt|D]@}tjt||}|tdkrq|td td gkrd}PqW|S|d kr0|dkr,tt||dtkr,dSdSdSdS) Ni rrTFrJTr2Dr/i )rr_virama_combining_classranger joining_typesgetr')r%rOcp_valueoki joining_typer r rvalid_contextjs<     rZ)r%rO exceptionrcCst||}|dkrdd|kr0t|dkr`nn,t||ddkr`t||ddkr`dSdS|dkr|t|dkrt|dkrt||ddSdS|d ks|d kr|dkrt||dd SdS|d krx<|D]4}|d krqt|ds t|ds t|drdSqWdSd|kr0dkrlnn8x2|D]*}dt|krZdkr:nndSq:WdSd|krdkrnn8x2|D]*}dt|krdkrnndSqWdSdS)NrrlTFiuGreekiiHebrewi0u・HiraganaKatakanaHani`iiii)rr'r)r%rOr[rVrr r rvalid_contextos@  (  "      rcc CsPt|ttfr|d}t|dkr,tdt|t|t|xt |D]\}}t |}t |t j drrqNqNt |t j dry,t||stdt||dt|Wn2tk rtdt||dt|YnXqNt |t j d r"t||s@td t||dt|qNtd t||dt|qNWt|dS) Nzutf-8rz Empty LabelPVALIDCONTEXTJz*Joiner {} not allowed at position {} in {}rz|nt||dfd}|d} d} t|dkrt|d} | d ks| d kr|r| d kr|s| dkr||7}n@| dk r| d ks| d kr|r| d kr|r|| 7}n| d krtWqtk rtdt ||dt |YqXqWt d|S)zBRe-map the characters in the string according to UTS46 processing.r) uts46datar.ZNrGVrQ3rDIz-Codepoint {} not allowed at position {} in {}rL) rzr:rbisect bisect_leftr' IndexErrorrr#r$r<rrM) rwrxryrzoutputrOchar code_pointuts46rowstatus replacementr r r uts46_remap4s4        "r)rstrictuts46rxryrc Cst|ttfr|d}|r(t|||}d}g}|r@|d}n t|}|rX|dgkr`td|ddkrv|d=d}x,|D]$}t|}|r| |q|tdq|W|r| d d |}t ||std |S) NrmF.r.z Empty domainrJTz Empty label.zDomain too long) rgrhrirjrsplit_unicode_dots_rerrsappendjoinr,) rrrrxryr)resultlabelsr%r r rr!Ts2           r!)rrrrxrcCsyt|ttfr|d}Wntk r8tdYnX|rJt||d}d}g}|sbt|}n |d}|rz|dgkrtd|ds|d=d}x,|D]$}t |}|r| |qtd qW|r| dd |S) NrmzInvalid ASCII in A-labelFrr.z Empty domainrJTz Empty label) rgrhrirjUnicodeDecodeErrorrrrrrnrr)rrrrxr)rrr%r r rrjrs2       rj)F)F)TF)FFFF)FFF)*r.rrrretypingrr intrangesrrRrqcompilerrvrrrrintrrpboolrrhr"r$r(r,rCrFrKrNrZrcrirlrsrnrr!rjr r r rs<   ;+* $