a _b.@s>ddlmZddlZddlZddlZddlZddlmZdZdZ e 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 0/tmp/pip-target-4jja1joz/lib/python/idna/core.pyrsrc@seZdZdZdS) IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nrr r r rrsrc@seZdZdZdS)InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nrr r r rrsrc@seZdZdZdS)InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nrr r r rrsrcCs0tt|}|dkr,tt|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 |dS)Npunycode)encodesr r r _punycode.sr"cCs d|S)Nz U+{0:04X})formatr r r r_unot1sr$cCst|dkrdSdS)N?FTlenlabelr r rvalid_label_length5s r*cCst||rdndkrdSdS)NFTr&)r) trailing_dotr r rvalid_string_length<sr.Fc Cs^d}t|dD]:\}}t|}|dkrd}q|dkrd}q|sZtddS)NFrz3Unknown directionality in label {0} at position {1})RALANTr)r0r1Lz>First codepoint in label {0} must be directionality L, R or AL) r0r1r2ENESCSETONBNNSMzHInvalid direction for codepoint at position {0} in a right-to-left label)r0r1r4r2r:)r2r4z2Can not mix numeral types in a right-to-left label)r3r4r5r6r7r8r9r:zHInvalid direction for codepoint at position {0} in a left-to-right label)r3r4z0Label ends with illegal codepoint directionality) enumerater bidirectionalrr#repr) r) check_ltr bidi_labelidxr directionrtl valid_ending number_typer r r check_bidiCsP       rEcCs"t|dddkrtddS)NrMz0Label begins with an illegal combining characterT)rcategoryrr(r r rcheck_initial_combinersrHcCs<|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(r r rcheck_hyphen_oks rMcCstd||krtddS)NNFCz%Label must be in Normalization Form C)r normalizerr(r r r check_nfcsrPcCs4t||}|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 rrTFrLTr3Dr0i )rr_virama_combining_classranger joining_typesgetr')r)poscp_valueoki joining_typer r rvalid_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)rW exceptionrXrr r rvalid_contextos>  ( "    rec 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||ssB    < , )