]!@sddlZddlZddlZdddddddd d d d d dddddddddgZdddddddddd d!d"d#d$d%d&d'd(d)gZdddddd*dddd!dd d+d"d#d$d,d&d'd%d-d.d/d(d)gZddd0d"dddd d#d$d1d2d!d%d3gZdd0d4d5d*ddd+d1d2g Zdddddd d!dd#d$d1d2g Zddd0ddd5dddd d+dd"g Z d6Z d7Z iZ d8d9Z d:Zd;Zd<d=Zeed>d?Zeed@dAZdBdCZGdDdEdEeZGdFdGdGeZGdHdIdIeZGdJdKdKeeZGdLdMdMeeZddNlmZeddOZeddPZeddQZeZGdRddeeZGdSddeeZ GdTddeeZ!GdUddeeZ"GdVddeeZ#GdWddeeZ$dXdYZ%e%[%ddZd[dZ&d\d]Z'dd^d_Z(d`daZ)ddZdbdZ*dcdZ+dddZ,dZdedZ-dfdZ.dgZ/da0dhdZ1ej2diZ3djdkdldZ4dmdmdjdkdnd Z5dmdmdjdkdod Z6djdkdpdZ7e8dqZ9e:e9Z;iZ<Gdrdsdsej=Z>dtdddud Z?ddddvd Z@dtdwd ZAdmddde@dxdZBdydzZCd{d|ZDdaEd}d~ZFdaGddZHddZIddZJdaKddZLdddZMddZNddZOddZPddZQdS)Nurlparse urlunparseurljoin urldefragurlsplit urlunsplit urlencodeparse_qs parse_qslquote quote_plusquote_from_bytesunquote unquote_plusunquote_to_bytes DefragResult ParseResult SplitResultDefragResultBytesParseResultBytesSplitResultBytesZftphttpZgopherZnntpimapZwaisfileZhttpsZshttpZmmsZprosperoZrtspZrtspuZsftpZsvnzsvn+sshZwsZwssZtelnetZsnewsZrsyncZnfsZgitzgit+sshZhdlZsipZsipsZtelZmailtoZnewszAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.cCstjtjdS)N) _parse_cacheclear _safe_quotersrr*/opt/alt/python35/lib64/python3.5/parse.py clear_cacheSs r!asciistrictcCs|S)Nr)objrrr _noopbsr%cCs|j||S)N)encode)r$encodingerrorsrrr _encode_resultesr)cs tfdd|DS)Nc3s-|]#}|r!|jndVqdS)rN)decode).0x)r'r(rr ksz_decode_args..)tuple)argsr'r(r)r'r(r _decode_argsisr0cGswt|dt}x?|ddD]-}|r$t|t|kr$tdq$W|rf|tfSt|tfS)Nrz$Cannot mix str and non-str arguments) isinstancestr TypeErrorr%r0r))r/Z str_inputargrrr _coerce_argsms r6c@s(eZdZfZddddZdS)_ResultMixinStrr"r#cs#|jfdd|DS)Nc3s!|]}|jVqdS)N)r&)r+r,)r'r(rr r-sz)_ResultMixinStr.encode..)_encoded_counterpart)selfr'r(r)r'r(r r&sz_ResultMixinStr.encodeN)__name__ __module__ __qualname__ __slots__r&rrrr r7~s r7c@s(eZdZfZddddZdS)_ResultMixinBytesr"r#cs#|jfdd|DS)Nc3s!|]}|jVqdS)N)r*)r+r,)r'r(rr r-sz+_ResultMixinBytes.decode..)_decoded_counterpart)r9r'r(r)r'r(r r*sz_ResultMixinBytes.decodeN)r:r;r<r=r*rrrr r>s r>c@s^eZdZfZeddZeddZeddZeddZd S) _NetlocResultMixinBasecCs |jdS)Nr) _userinfo)r9rrr usernamesz_NetlocResultMixinBase.usernamecCs |jdS)Nr1)rA)r9rrr passwordsz_NetlocResultMixinBase.passwordcCs8|jd}|sd}n|dk r4|j}|S)Nr) _hostinfolower)r9hostnamerrr rFs     z_NetlocResultMixinBase.hostnamecCsL|jd}|dk rHt|d}d|ko?dknsHdS|S)Nr1 ri)rDint)r9portrrr rIs   z_NetlocResultMixinBase.portN) r:r;r<r=propertyrBrCrFrIrrrr r@s  r@c@s:eZdZfZeddZeddZdS)_NetlocResultMixinStrcCsb|j}|jd\}}}|rN|jd\}}}|sXd}n d}}||fS)N@:)netloc rpartition partition)r9rNuserinfo have_infohostinforB have_passwordrCrrr rAs   z_NetlocResultMixinStr._userinfocCs|j}|jd\}}}|jd\}}}|rr|jd\}}}|jd\}}}n|jd\}}}|sd}||fS)NrL[]rM)rNrOrP)r9rN_rS have_open_br bracketedrFrIrrr rDs z_NetlocResultMixinStr._hostinfoN)r:r;r<r=rJrArDrrrr rKs  rKc@s:eZdZfZeddZeddZdS)_NetlocResultMixinBytescCsb|j}|jd\}}}|rN|jd\}}}|sXd}n d}}||fS)N@:)rNrOrP)r9rNrQrRrSrBrTrCrrr rAs   z!_NetlocResultMixinBytes._userinfocCs|j}|jd\}}}|jd\}}}|rr|jd\}}}|jd\}}}n|jd\}}}|sd}||fS)Nr[[]r\)rNrOrP)r9rNrWrSrXrYrFrIrrr rDs z!_NetlocResultMixinBytes._hostinfoN)r:r;r<r=rJrArDrrrr rZs  rZ) namedtuplez url fragmentz!scheme netloc path query fragmentz(scheme netloc path params query fragmentc@s"eZdZfZddZdS)rcCs&|jr|jd|jS|jSdS)N#)fragmenturl)r9rrr geturls zDefragResult.geturlN)r:r;r<r=rcrrrr rs c@s"eZdZfZddZdS)rcCs t|S)N)r)r9rrr rcszSplitResult.geturlN)r:r;r<r=rcrrrr rs c@s"eZdZfZddZdS)rcCs t|S)N)r)r9rrr rcszParseResult.geturlN)r:r;r<r=rcrrrr rs c@s"eZdZfZddZdS)rcCs&|jr|jd|jS|jSdS)N#)rarb)r9rrr rc s zDefragResultBytes.geturlN)r:r;r<r=rcrrrr r s c@s"eZdZfZddZdS)rcCs t|S)N)r)r9rrr rcszSplitResultBytes.geturlN)r:r;r<r=rcrrrr rs c@s"eZdZfZddZdS)rcCs t|S)N)r)r9rrr rcszParseResultBytes.geturlN)r:r;r<r=rcrrrr rs cCsNttfttfttff}x&|D]\}}||_||_q(WdS)N)rrrrrrr8r?)Z _result_pairsZ_decodedZ_encodedrrr _fix_result_transcodings    reTc Cst||\}}}t|||}|\}}}}}|tkrld|krlt|\}}nd}t||||||} || S)N;r)r6r uses_params _splitparamsr) rbschemeallow_fragments_coerce_resultZ splitresultrNqueryraparamsresultrrr r)scCsqd|kr@|jd|jd}|dkrO|dfSn|jd}|d|||ddfS)N/rfrrr1)findrfind)rbirrr rh9s    rhcCsht|}x;dD]3}|j||}|dkrt||}qW|||||dfS)Nz/?#r)lenrpmin)rbstartdelimcZwdelimrrr _splitnetlocBs    rxcCs| s!tdd|D r%dSddl}|jdd}|jdd}|jdd}|jdd}|jd |}||krdSx2d D]*}||krtd |d d qWdS)Ncss!|]}t|dkVqdS)N)ord)r+rwrrr r-Ksz_checknetloc..rrLrrMr`?ZNFKCz/?#@:znetloc 'z' contains invalid z#characters under NFKC normalization)any unicodedatareplace normalize ValueError)rNr}nZnetloc2rwrrr _checknetlocJs!    rc Cs8t||\}}}t|}|||t|t|f}tj|d}|rg||Stttkrtd}}}|jd} | dkrM|d| dkr|d| j }|| dd}|dddkrPt |d\}}d|kr,d |ksDd |krPd|krPt d |rzd |krz|j d d\}}d |kr|j d d\}}t |t|||||} | t|<|| Sxv|d| D]} | tkrPqW|| dd} | s0td d| DrM|d| j | }}|dddkrt |d\}}d|krd |ksd |krd|krt d |rd |kr|j d d\}}d |kr|j d d\}}t |t|||||} | t|<|| S)NrrMrrr1z//rUrVzInvalid IPv6 URLr`r{css|]}|dkVqdS) 0123456789Nr)r+rwrrr r-szurlsplit..)r6booltypergetrsMAX_CACHE_SIZEr!rprErxrsplitrr scheme_charsr|) rbrirjrkkeycachedrNrlrarrvrwrestrrr r\s\ !             cCsVt|\}}}}}}}|r7d||f}|t|||||fS)Nz%s;%s)r6r) componentsrirNrbrmrlrarkrrr rs!cCst|\}}}}}}|sL|r|tkr|dddkr|rr|dddkrrd|}d|p~d|}|r|d|}|r|d|}|r|d|}||S) Nrz//r1rorrMr{r`)r6 uses_netloc)rrirNrbrlrarkrrr rs. c CsR|s |S|s|St||\}}}t|d|\}}}}}} t|||\} } } } }}| |ks| tkr||S| tkr| r|t| | | | ||fS|} | r| r|} |} |s|}|t| | | | ||fS|jd}|ddkr>|d=| dddkrf| jd}n6|| jd}td|dd|dd s z$unquote_to_bytes..r) rr2r3r&rsr _hextobyterKeyErrorr)stringbitsresritemrrr r s*       z([-]+)zutf-8r~cCsd|kr|j|S|dkr)d}|dkr;d}tj|}|dg}|j}xRtdt|dD]8}|t||j|||||dqyWdj|S)N%zutf-8r~rr1rr)r_asciirerrangersrr*r)rr'r(rrrrrrrr r,s      Fc Csli}t|||d|d|}xA|D]9\}}||krW||j|q+|g||s zparse_qsl..&=r1rzbad query field: %rrr+ r'r()r6rrsrrr~r) rrrr'r(rkrrZ name_valueZnvrrrrr r is,   cCs"|jdd}t|||S)Nrr)r~r)rr'r(rrr rssAABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-c@s4eZdZddZddZddZdS)QuotercCstj||_dS)N) _ALWAYS_SAFEunionsafe)r9rrrr __init__szQuoter.__init__cCsd|jjt|fS)Nz<%s %r>) __class__r:dict)r9rrr __repr__szQuoter.__repr__cCs8||jkrt|n dj|}|||<|S)Nz%{:02X})rchrformat)r9rrrrr __missing__s* zQuoter.__missing__N)r:r;r<rrrrrrr rs   rrocCst|trR|s|S|dkr+d}|dkr=d}|j||}n0|dk rjtd|dk rtdt||S)Nzutf-8r#z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r2r3r&r4r )rrr'r(rrr r s      cCst|trd|ks6t|trId|krIt||||St|trad}nd}t|||||}|jddS)Nr r)r2r3rr r~)rrr'r(Zspacerrr r s c st|ttfs!td|s+dSt|trO|jdd}ntdd|D}|jt|s|jSyt |Wn)t k rt |j t |<YnXdj fdd|DS)Nz!quote_from_bytes() expected bytesrr"ignorecSs"g|]}|dkr|qS)r)r+rwrrr r s z$quote_from_bytes..csg|]}|qSrr)r+char)quoterrr rs )r2r bytearrayr4r3r&rstrip_ALWAYS_SAFE_BYTESr*rrr __getitem__r)bsrr)rr r s   cCst|dr|j}niy*t|rGt|dt rGtWn<tk rtj\}}}tdj|YnXg} |s:x |D]\} } t| t r|| |} n|t | |||} t| t r|| |} n|t | |||} | j | d| qWn|xy|D]q\} } t| t rn|| |} n|t | |||} t| t r|| |} | j | d| qAt| t r|| |||} | j | d| qAyt| } WnBtk rO|t | |||} | j | d| YqAXx_| D]W} t| t r~|| |} n|t | |||} | j | d| qWWqAWdj | S)Nitemsrz1not a valid non-string sequence or mapping objectrr) hasattrrrsr2r.r4sysexc_infowith_tracebackrr3rr)rlZdoseqrr'r(Z quote_viaZtyZvatblkrr,Zeltrrr rsP      c Cs[t|trWy|jdj}Wn,tk rVtdt|dYnX|S)NASCIIzURL z contains non-ASCII characters)r2r3r&r* UnicodeErrorrepr)rbrrr to_bytesbs rcCst|j}|dddkrT|dddkrT|ddj}|dddkr|ddj}|S)Nr1<>zURL:rr)r3strip)rbrrr unwrapos ,rcCsbtdkr!tjdtjatj|}|rX|j\}}|j|fSd|fS)Nz ([^/:]+):(.*)) _typeprogrecompileDOTALLmatchgroupsrE)rbrridatarrr splittypexs rcCs|tdkr!tjdtjatj|}|rr|j\}}|rh|ddkrhd|}||fSd|fS)Nz//([^/#?]*)(.*)rro) _hostprogrrrrr)rbrZ host_portrrrr splithosts   rcCs.|jd\}}}|r$|nd|fS)NrL)rO)hostuserrvrrr splitusersrcCs.|jd\}}}||r'|ndfS)NrM)rP)rrvZpasswdrrr splitpasswdsrcCsbtdkr!tjdtjatj|}|rX|j\}}|rX||fS|dfS)Nz(.*):([0-9]*)$) _portprogrrrrr)rrrIrrr splitports  rr1c Csl|jd\}}}|s'|}n;|rbyt|}Wntk rWd}YnX||fS||fS)NrM)rOrHr)rZdefportrvrIZnportrrr splitnports    rcCs2|jd\}}}|r(||fS|dfS)Nr{)rO)rbrrvrlrrr splitquerys rcCs2|jd\}}}|r(||fS|dfS)Nr`)rO)rbrrvtagrrr splittags rcCs'|jd}|d|ddfS)Nrfrr1)r)rbZwordsrrr splitattrsrcCs.|jd\}}}||r'|ndfS)Nr)rP)attrrvrrrr splitvaluesrr)Rrr collections__all__rrrgZnon_hierarchicalZ uses_queryZ uses_fragmentrrrr!Z_implicit_encodingZ_implicit_errorsr%r)r0r6objectr7r>r@rKrZr_Z_DefragResultBaseZ_SplitResultBaseZ_ParseResultBaseZ ResultBaserrrrrrrerrhrxrrrrrrrrrrrrr r r frozensetrrrr defaultdictrr r r rrrrrrrrrrrrrrrrrrrr s                   : E  "/  , O