3 ]-@s>ddlmZddlZddlZddlZddlZddlmZdZdZ ej dZ ej ddkr`e ZeZGd d d eZGd d d eZGd ddeZGdddeZddZddZddZddZddZddZd7ddZd d!Zd"d#Zd$d%Zd&d'Z d8d(d)Z!d*d+Z"d,d-Z#d.d/Z$d9d1d2Z%d:d3d4Z&d;d5d6Z'dS)<)idnadataN)intranges_contain sxn--u [.。.。]c@seZdZdZdS) IDNAErrorz7 Base exception for all IDNA-encoding related problems N)__name__ __module__ __qualname____doc__r r )/tmp/pip-build-el9acr48/idna/idna/core.pyrsrc@seZdZdZdS) IDNABidiErrorz= Exception when bidirectional requirements are not satisfied N)rr r r r r r r rsrc@seZdZdZdS)InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used N)rr r r r r r r rsrc@seZdZdZdS)InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used N)rr r r r r r r rsrcCs0tjt|}|dkr,tjt|s,td|S)Nrz Unknown character in unicodedata) unicodedata combiningunichrname ValueError)cpvr r r _combining_class$s rcCstt|tj|S)N)rordrscripts)rscriptr r r _is_script+srcCs |jdS)Npunycode)encode)sr r r _punycode.sr cCs dj|S)Nz U+{0:04X})format)rr r r _unot1sr"cCst|dkrdSdS)N?FT)len)labelr r r valid_label_length5s r&cCst||rdndkrdSdS)NFT)r$)r% trailing_dotr r r valid_string_length<sr*Fc Csnd}xHt|dD]:\}}tj|}|dkr>tdjt|||dkrd}qW| r^| r^dStj|d }|dkrzd}n |d krd}ntd jt|d}d}xt|dD]\}}tj|}|r$|dkrtdj||dkrd}n|dkrd}|dkrX|s|}n||krXtdq|dkrFirst codepoint in label {0} must be directionality L, R or ALENESCSETONBNNSMzHInvalid direction for codepoint at position {0} in a right-to-left labelz2Can not mix numeral types in a right-to-left labelzHInvalid direction for codepoint at position {0} in a left-to-right labelz0Label ends with illegal codepoint directionality)r,r-r.)r,r-) r,r-r.r0r1r2r3r4r5r6)r,r-r0r.)r.r0)r/r0r1r2r3r4r5r6)r/r0) enumerater bidirectionalrr!repr) r% check_ltr bidi_labelidxr directionrtl valid_ending number_typer r r check_bidiCsP          rAcCs"tj|dddkrtddS)NrMz0Label begins with an illegal combining characterT)rcategoryr)r%r r r check_initial_combinersrDcCs<|dddkrtd|ddks0|d dkr8tdd S) Nz--z4Label has disallowed hyphens in 3rd and 4th positionr-rz)Label must not start or end with a hyphenT)r)r%r r r check_hyphen_oks rIcCstjd||krtddS)NNFCz%Label must be in Normalization Form C)r normalizer)r%r r r check_nfcsrLcCs:t||}|dkr|dkr:tt||dtkr:dSd}xTt|dd d D]@}tjjt||}|tdkrvqP|tdtdgkrPd}PqPW|sdSd}xVt|dt|D]@}tjjt||}|tdkrq|td tdgkrd}PqW|S|d kr2|dkr.tt||dtkr.dSdSdSdS) Ni rrTFTr/Dr,i rHrH)rr_virama_combining_classranger joining_typesgetr$)r%poscp_valueoki joining_typer r r valid_contextjs<      rXcCst||}|dkrdd|ko.t|dknr`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|ko,dknrlx2|D]*}dt|koVdknr:dSq:WdSd|kodknrx2|D]*}dt|kodknrdSqWdSdS)NrrlTFiuGreekiiHebrewi0u・HiraganaKatakanaHani`iiii)rr$r)r%rS exceptionrTrr r r valid_contextos>  (  "      rac CsRt|ttfr|jd}t|dkr,tdt|t|t|xt |D]\}}t |}t |t j drtqPqPt |t j dry,t||stdjt||dt|Wn2tk rtdjt||dt|YnXqPt |t j d r$t||sBtd jt||dt|qPtd jt||dt|qPWt|dS) Nzutf-8rz Empty LabelPVALIDCONTEXTJz-Joiner {0} not allowed at position {1} in {2}rz?Unknown codepoint adjacent to joiner {0} at position {1} in {2}CONTEXTOz0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed) isinstancebytes bytearraydecoder$rrLrIrDr7rrrcodepoint_classesrXrr!r"r9rrarrA)r%rSrrTr r r check_labels0      "rjc Cs|y&|jd}t|t|s$td|Stk r:YnX|sHtdt|}t|t|}t|}t|sxtd|S)NasciizLabel too longzNo Input) rulabelr&rUnicodeEncodeErrorunicoderjr _alabel_prefix)r%r r r alabel s" rpc Cst|ttfs:y|jd}Wntk r8t||SX|j}|jtr^|t td}nt||j dS|j d}t||S)Nrkr) rerfrgrrmrjlower startswithror$rh)r%r r r rl#s   rlTc Cs0ddlm}d}yxt|D]\}}t|}||dkr:|ntj||dfd}|d} t|dkrl|dnd} | d ks| d kr| s| d kr| r| dkr||7}q| dk r| d ks| d kr| s| d kr|r|| 7}q| d krtqWtjd|Stk r*t dj t ||dt |YnXdS)zBRe-map the characters in the string according to UTS46 processing.r) uts46datar+ZrrENVrN3rBIrJz0Codepoint {0} not allowed at position {1} in {2}) rsr7rbisect bisect_leftr$ IndexErrorrrKrr!r"r9) domain std3_rules transitionalrsoutputrSchar code_pointuts46rowstatus replacementr r r uts46_remap8s0      rc Cst|ttfr|jd}|r(t|||}d}g}|r@|jd}n tj|}| sZ|dgkrbtd|d dkrx|d =d}x,|D]$}t|}|r|j |q~tdq~W|r|j d d j |}t ||std |S)NrkF.r+z Empty domainrTz Empty label.zDomain too longrHrH) rerfrgrhrsplit_unicode_dots_rerrpappendjoinr*) rstrictuts46r}r~r)resultlabelsr%r r r rTs2           rcCst|ttfr|jd}|r(t||d}d}g}|s@tj|}n |jd}| sZ|dgkrbtd|d st|d =d}x,|D]$}t|}|r|j |qztdqzW|r|j ddj |S) NrkFrr+z Empty domainrTz Empty labelrHrH) rerfrgrhrrrrrlrr)rrrr}r)rrr%r r r rhss,        rh)F)F)TF)FFFF)FFF)(r+rryrresys intrangesrrOrocompiler version_infostrrnchrr UnicodeErrorrrrrrrr r"r&r*rArDrIrLrXrarjrprlrrrhr r r r sB    < , )