a *Na2@s0ddlmZddlZddlZddlZddlmZmZddlm Z dZ dZ e dZ Gd d d eZGd d d eZGd ddeZGdddeZddZddZddZddZddZddZd7ddZd d!Zd"d#Zd$d%Zd&d'Zd8d(d)Zd*d+Zd,d-Z d.d/Z!d9d1d2Z"d:d3d4Z#d;d5d6Z$dS)<)idnadataN)UnionOptional)intranges_contain sxn--u [.。.。]c@seZdZdZdS) IDNAErrorz7 Base exception for all IDNA-encoding related problems N__name__ __module__ __qualname____doc__rrd/private/var/folders/js/6pj4vh5d4zd0k6bxv74qrbhr0000gr/T/pip-target-22xwyzbs/lib/python/idna/core.pyr src@seZdZdZdS) IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr rrrrrsrc@seZdZdZdS)InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr rrrrrsrc@seZdZdZdS)InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr rrrrrsrcCs0tt|}|dkr,tt|s,td|S)Nrz Unknown character in unicodedata) unicodedata combiningchrname ValueError)cpvrrr_combining_class s rcCstt|tj|S)N)rordrscripts)rscriptrrr _is_script(srcCs |dS)Npunycode)encodesrrr _punycode,sr#cCs d|S)NzU+{:04X})formatr!rrr_unot0sr%cCst|dkrdSdS)N?FTlenlabelrrrvalid_label_length5s r+cCst||rdndkrdSdS)NFTr')r* trailing_dotrrrvalid_string_length<sr/Fc Cs^d}t|dD]:\}}t|}|dkrd}q|dkrd}q|sZtddS)NFrz1Unknown directionality in label {} at position {})RALANTr)r1r2Lz=First codepoint in label {} must be directionality L, R or AL) r1r2r3ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r1r2r5r3r;)r3r5z2Can not mix numeral types in a right-to-left label)r4r5r6r7r8r9r:r;zGInvalid direction for codepoint at position {} in a left-to-right label)r4r5z0Label ends with illegal codepoint directionality) enumerater bidirectionalrr$repr) r* check_ltr bidi_labelidxr directionrtl valid_ending number_typerrr check_bidiCsP       rFcCs"t|dddkrtddS)NrMz0Label begins with an illegal combining characterT)rcategoryrr)rrrcheck_initial_combinersrIcCs<|dddkrtd|ddks0|ddkr8tdd S) Nz--z4Label has disallowed hyphens in 3rd and 4th positionr-z)Label must not start or end with a hyphenT)rr)rrrcheck_hyphen_oks rNcCstd||krtddS)NNFCz%Label must be in Normalization Form C)r normalizerr)rrr check_nfcsrQcCs4t||}|dkr|dkr8tt||dtkr8dSd}t|dddD]B}tjt||}|tdkrrqL|tdtd fvrLd}qqL|sdSd}t|dt|D]B}tjt||}|tdkrq|td td fvrd}qq|S|d kr,|dkr(tt||dtkr(dSdSdSdS) Ni rrTFrMTr4Dr1i )rr_virama_combining_classranger joining_typesgetr()r*poscp_valueoki joining_typerrrvalid_contextjs<     r]cCst||}|dkrdd|kr0t|dkr`nn,t||ddkr`t||ddkr`dSdS|dkr|t|dkrt|dkrt||ddSdS|d ks|d kr|dkrt||dd SdS|d kr|D]6}|d krqt|ds t|ds t|drdSqdSd|kr.dkrhnn6|D],}dt|krVdkr6nndSq6dSd|krdkrnn6|D],}dt|krdkrnndSqdSdS)NrrlTFiuGreekiiHebrewi0u・HiraganaKatakanaHani`iiii)rr(r)r*rX exceptionrYrrrrvalid_contextos@  ( "    rfc CsJt|ttfr|d}t|dkr,tdt|t|t|t |D]\}}t |}t |t j drpqLqLt |t j drz,t||stdt||dt|Wn0tytdt||dt|Yn0qLt |t j d rt||srrfrrF)r*rXrrYrrr check_labels4        rpcCs|z(|d}t|t|s$td|WSty:Yn0|sHtdt|}t|t|}t|}t|sxtd|S)NasciizLabel too longzNo Input) r ulabelr+rUnicodeEncodeErrorstrrpr#_alabel_prefixr*Z label_bytesrrralabel s"  rwcCst|ttfs>z|d}WqBty:t||YS0n|}|}|tr|t td}|spt d| dddkrt dnt|| dS| d}t||S)Nrqz5Malformed A-label, no Punycode eligible content foundrMrLz"A-label must not end with a hyphenr) rkrlrmr rsrplower startswithrur(rrnrvrrrrr%s&      rrTc Cs$ddlm}d}t|D]\}}t|}z||dkr8|nt||dfd}|d} d} t|dkrn|d} | d ks| d kr|r| d kr|s| dur||7}n@| dur| d ks| d kr|r| d kr|r|| 7}n| d krtWqtytdt ||dt |Yq0qt d|S)zBRe-map the characters in the string according to UTS46 processing.r) uts46datar0ZNrJVrS3rGIrjrO) rzr<rbisect bisect_leftr( IndexErrorrr$r%r>rrP) domain std3_rules transitionalrzoutputrXchar code_pointuts46rowstatus replacementrrr uts46_remap@sV      rc Cst|ttfr|d}|r(t|||}d}g}|r@|d}n t|}|rX|dgkr`td|ddkrv|d=d}|D]$}t|}|r| |qztdqz|r| d d |}t ||std |S) NrqF.r0 Empty domainrMT Empty label.zDomain too long) rkrlrmrnrsplit_unicode_dots_rerrwappendjoinr/) r"strictuts46rrr.resultlabelsr*rrrr as2          r cCst|ttfr|d}|r(t||d}d}g}|s@t|}n |d}|rX|dgkr`td|dsr|d=d}|D]$}t|}|r| |qvtdqv|r| dd |S) NrqFrr0rrMTr) rkrlrmrnrrrrrrrr)r"rrrr.rrr*rrrrns,       rn)F)F)TF)FFFF)FFF)%r0rrrretypingrr intrangesrrTrucompiler UnicodeErrorrrrrrrr#r%r+r/rFrIrNrQr]rfrprwrrrr rnrrrrs<    < , +  !