B k #@s`ddlZddlZddlZdddddddd 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 d8d9d:gZ d;Z iZdZd?Zd@dAZeefdBdCZeefdDdEZdFdGZGdHdIdIeZGdJdKdKeZGdLdMdMeZGdNdOdOeeZGdPdQdQeeZddRlmZeddSZeddTZeddUZdVe_ dWej!_ dXej"_ dYe_ dZej#_ d[ej$_ d\ej%_ d]ej&_ d^ej"_ d_e_ ej#j ej#_ ej$j ej$_ ej%j ej%_ d`ej'_ ej&j ej&_ ej"j ej"_ eZ(GdaddeeZ)GdbddeeZ*GdcddeeZ+GddddeeZ,GdeddeeZ-GdfddeeZ.dgdhZ/e/[/ddjdZ0dkdlZ1ddmdnZ2dodpZ3dqdrZ4ddsdZ5dtdZ6dudZ7ddvdZ8dwdZ9dxZ:da;dydZdd}dZ?ddd Z@ddd ZAdddZBeCdZDeEeDZFiZGGdddejHZIddd ZJddd ZKddd ZLd~dddeKfddZMddZNddZOdaPddZQdaRddZSddZTddZUdaVddZWdddZXddZYddZZddZ[ddZ\dS)Nurlparse urlunparseurljoin urldefragurlsplit urlunsplit urlencodeparse_qs parse_qslquote quote_plusquote_from_bytesunquote unquote_plusunquote_to_bytes DefragResult ParseResult SplitResultDefragResultBytesParseResultBytesSplitResultBytesZftphttpZgopherZnntpZimapZwaisfileZhttpsZshttpZmmsZprosperoZrtspZrtspuZsftpZsvnzsvn+sshZwsZwssZtelnetZsnewsZrsyncZnfsZgitzgit+sshZhdlZsipZsipsZtelZmailtoZnewszAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.z!     cCsttdS)N) _parse_cacheclear _safe_quotersr!r!//opt/alt/python37/lib/python3.7/urllib/parse.py clear_cache^sr#asciistrictcCs|S)Nr!)objr!r!r"_noopmsr'cCs |||S)N)encode)r&encodingerrorsr!r!r"_encode_resultpsr+cstfdd|DS)Nc3s"|]}|r|ndVqdS)rN)decode).0x)r)r*r!r" vsz_decode_args..)tuple)argsr)r*r!)r)r*r" _decode_argstsr2cGsZt|dt}x.|ddD]}|rt|t|krtdqW|rL|tfSt|tfS)Nrz$Cannot mix str and non-str arguments) isinstancestr TypeErrorr'r2r+)r1Z str_inputargr!r!r" _coerce_argsxs  r8c@seZdZdZdddZdS)_ResultMixinStrr!r$r%cs|jfdd|DS)Nc3s|]}|VqdS)N)r()r-r.)r)r*r!r"r/sz)_ResultMixinStr.encode..)_encoded_counterpart)selfr)r*r!)r)r*r"r(sz_ResultMixinStr.encodeN)r$r%)__name__ __module__ __qualname__ __slots__r(r!r!r!r"r9sr9c@seZdZdZdddZdS)_ResultMixinBytesr!r$r%cs|jfdd|DS)Nc3s|]}|VqdS)N)r,)r-r.)r)r*r!r"r/sz+_ResultMixinBytes.decode..)_decoded_counterpart)r;r)r*r!)r)r*r"r,sz_ResultMixinBytes.decodeN)r$r%)r<r=r>r?r,r!r!r!r"r@sr@c@s@eZdZdZeddZeddZeddZedd Zd S) _NetlocResultMixinBaser!cCs |jdS)Nr) _userinfo)r;r!r!r"usernamesz_NetlocResultMixinBase.usernamecCs |jdS)Nr3)rC)r;r!r!r"passwordsz_NetlocResultMixinBase.passwordcCsD|jd}|sdSt|tr dnd}||\}}}|||S)Nr%%) _hostinfor4r5 partitionlower)r;hostname separatorpercentZzoner!r!r"rKs  z_NetlocResultMixinBase.hostnamecCs>|jd}|dk r:t|d}d|kr0dks:ntd|S)Nr3 rizPort out of range 0-65535)rHint ValueError)r;portr!r!r"rQs   z_NetlocResultMixinBase.portN) r<r=r>r?propertyrDrErKrQr!r!r!r"rBs    rBc@s(eZdZdZeddZeddZdS)_NetlocResultMixinStrr!cCsD|j}|d\}}}|r4|d\}}}|sr?rRrCrHr!r!r!r"rSs rSc@s(eZdZdZeddZeddZdS)_NetlocResultMixinBytesr!cCsD|j}|d\}}}|r4|d\}}}|sr?rRrCrHr!r!r!r"ras ra) namedtuplez url fragmentz!scheme netloc path query fragmentz(scheme netloc path params query fragmentz DefragResult(url, fragment) A 2-tuple that contains the url without fragment identifier and the fragment identifier as a separate argument. z$The URL with no fragment identifier.z Fragment identifier separated from URL, that allows indirect identification of a secondary resource by reference to a primary resource and additional identifying information. z SplitResult(scheme, netloc, path, query, fragment) A 5-tuple that contains the different components of a URL. Similar to ParseResult, but does not split params. z%Specifies URL scheme for the request.z0 Network location where the request is made to. z@ The hierarchical path, such as the path to a file to download. z The query component, that contains non-hierarchical data, that along with data in path component, identifies a resource in the scope of URI's scheme and network location. z Fragment identifier, that allows indirect identification of a secondary resource by reference to a primary resource and additional identifying information. zr ParseResult(scheme, netloc, path, params, query, fragment) A 6-tuple that contains components of a parsed URL. z Parameters for last path element used to dereference the URI in order to provide access to perform some operation on the resource. c@seZdZdZddZdS)rr!cCs |jr|jd|jS|jSdS)N#)fragmenturl)r;r!r!r"geturlCszDefragResult.geturlN)r<r=r>r?rjr!r!r!r"rAsc@seZdZdZddZdS)rr!cCst|S)N)r)r;r!r!r"rjKszSplitResult.geturlN)r<r=r>r?rjr!r!r!r"rIsc@seZdZdZddZdS)rr!cCst|S)N)r)r;r!r!r"rjPszParseResult.geturlN)r<r=r>r?rjr!r!r!r"rNsc@seZdZdZddZdS)rr!cCs |jr|jd|jS|jSdS)N#)rhri)r;r!r!r"rjVszDefragResultBytes.geturlN)r<r=r>r?rjr!r!r!r"rTsc@seZdZdZddZdS)rr!cCst|S)N)r)r;r!r!r"rj^szSplitResultBytes.geturlN)r<r=r>r?rjr!r!r!r"r\sc@seZdZdZddZdS)rr!cCst|S)N)r)r;r!r!r"rjcszParseResultBytes.geturlN)r<r=r>r?rjr!r!r!r"rascCs8ttfttfttff}x|D]\}}||_||_qWdS)N)rrrrrrr:rA)Z _result_pairsZ_decodedZ_encodedr!r!r"_fix_result_transcodinggs  rlTc Csft||\}}}t|||}|\}}}}}|tkrHd|krHt|\}}nd}t||||||} || S)N;r)r8r uses_params _splitparamsr) rischemeallow_fragments_coerce_resultZ splitresultrVqueryrhparamsresultr!r!r"rts cCsRd|kr,|d|d}|dkr6|dfSn |d}|d|||ddfS)N/rmrrr3)findrfind)riir!r!r"ros   rocCsLt|}x*dD]"}|||}|dkrt||}qW|||||dfS)Nz/?#r)lenrwmin)ristartdelimcZwdelimr!r!r" _splitnetlocs   rcCs|r |rdSddl}|dd}|dd}|dd}|dd}|d|}||kr`dSx(dD] }||krftd |d d qfWdS) NrrTrrUrg?NFKCz/?#@:znetloc 'z' contains invalid z#characters under NFKC normalization)isascii unicodedatareplace normalizerP)rVrnZnetloc2r~r!r!r" _checknetlocs        rcCsxtD]}||d}qW|S)Nr)_UNSAFE_URL_BYTES_TO_REMOVEr)ribr!r!r"_remove_unsafe_bytes_from_urls rc Cst||\}}}t|}t|}|t}|t}t|}|||t|t|f}t|d}|rj||St tt kr|t d}}}| d} | dkr|d| dkrn|| dd}|dddkr t |d\}}d|krd |ksd |kr d|kr td |r,d |kr,|d d\}}d |krF|d d\}}t|td||||} | t|<|| Sxb|d| D]} | tkr|Pq|W|| dd} | rtd d| Dr|d| | }}|dddkr"t |d\}}d|krd |ksd |kr"d|kr"td |rBd |krB|d d\}}d |kr\|d d\}}t|t|||||} | t|<|| S)NrrUrrr3z//r\r]zInvalid IPv6 URLrgrcss|]}|dkVqdS) 0123456789Nr!)r-r~r!r!r"r/szurlsplit..)r8rlstrip_WHATWG_C0_CONTROL_OR_SPACEstripbooltypergetrzMAX_CACHE_SIZEr#rwrrPsplitrr scheme_charsanyrJ) rirprqrrkeycachedrVrsrhryvr~restr!r!r"rsb          cCs<t|\}}}}}}}|r&d||f}|t|||||fS)Nz%s;%s)r8r) componentsrprVrirtrsrhrrr!r!r"rs cCst|\}}}}}}|s4|r`|tkr`|dddkr`|rP|dddkrPd|}d|pXd|}|rp|d|}|r|d|}|r|d|}||S) Nrz//r3rvrrUrrg)r8 uses_netloc)rrprVrirsrhrrr!r!r"rs    c Cs|s|S|s|St||\}}}t|d|\}}}}}} t|||\} } } } }}| |ks`| tkrh||S| tkr| r|t| | | | ||fS|} | s| s|} |} |s|}|t| | | | ||fS|d}|ddkr|d=| dddkr| d}n(|| d}td|dd|dd<g}xX|D]P}|dkr^y |Wntk rZYnXn|dkrnq*n | |q*W|ddkr| d|t| | d |pd| ||fS)Nrrvr3z...)rz..) r8r uses_relativerrrfilterpop IndexErrorappendjoin)baserirqrrZbschemeZbnetlocZbpathZbparamsZbqueryZ bfragmentrprVpathrtrsrhZ base_partsZsegmentsZ resolved_pathZsegr!r!r"r sT           c CsTt|\}}d|kr>t|\}}}}}}t|||||df}nd}|}|t||S)Nrgr)r8rrr) rirrsrpaqZfragZdefragr!r!r"rNs Z0123456789ABCDEFabcdefc Cs|s|jdSt|tr"|d}|d}t|dkr<|S|dg}|j}tdkrbddtDaxb|ddD]R}y(|t|dd||ddWqptk r|d||YqpXqpWd |S) Nzutf-8rGr3rcSs.i|]&}tD]}t||||q qSr!)_hexdigbytesfromhexr()r-rrr!r!r" tsz$unquote_to_bytes..r) rr4r5r(rzr _hextobyterKeyErrorr)stringbitsresritemr!r!r"ras*     z([-]+)utf-8rcCsd|kr|j|S|dkrd}|dkr*d}t|}|dg}|j}x@tdt|dD],}|t|||||||dqVWd|S)NrFzutf-8rrr3rr)r_asciirerrangerzrr,r)rr)r*rrrryr!r!r"rs   F&c CsRi}t|||||||d}x2|D]*\} } | |kr@|| | q | g|| <q W|S)N)r)r*max_num_fieldsrL)r r) qskeep_blank_valuesstrict_parsingr)r*rrLZ parsed_resultpairsnamevaluer!r!r"r s cCs&t|\}}|rt|ttfs&td|dk rLd||}||krLtddd||D} g} x| D]} | sx|sxqj| dd} t| dkr|rtd| f|rj| d nqjt| ds|rj| d  d d } t | ||d } || } | d d d }t |||d }||}| | |fqjW| S)Nz*Separator must be of type string or bytes.r3zMax number of fields exceededcSsg|]}|qSr!r!)r-s1r!r!r" szparse_qsl..=rzbad query field: %rrr+ )r)r*) r8r4r5rrPcountrrzrrr)rrrr)r*rrLrr num_fieldsrrZ name_valueZnvrrr!r!r"r s8     cCs|dd}t|||S)Nrr)rr)rr)r*r!r!r"rs sBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-~c@s$eZdZddZddZddZdS)QuotercCst||_dS)N) _ALWAYS_SAFEunionsafe)r;rr!r!r"__init__szQuoter.__init__cCsd|jjt|fS)Nz<%s %r>) __class__r<dict)r;r!r!r"__repr__#szQuoter.__repr__cCs(||jkrt|nd|}|||<|S)Nz%{:02X})rchrformat)r;rrr!r!r" __missing__'szQuoter.__missing__N)r<r=r>rrrr!r!r!r"rsrrvcCsbt|tr8|s|S|dkrd}|dkr*d}|||}n |dk rHtd|dk rXtdt||S)Nzutf-8r%z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r4r5r(r6r )rrr)r*r!r!r"r -s' cCsdt|trd|ks$t|tr2d|kr2t||||St|trBd}nd}t|||||}|ddS)Nr r)r4r5rr r)rrr)r*Zspacer!r!r"r cs cst|ttfstd|sdSt|tr6|dd}ntdd|D}|t|s^|Sy t |Wn&t k rt |j t |<YnXd fdd|DS)Nz!quote_from_bytes() expected bytesrr$ignorecSsg|]}|dkr|qS)r!)r-r~r!r!r"rsz$quote_from_bytes..csg|] }|qSr!r!)r-char)quoterr!r"rs)r4r bytearrayr6r5r(rstrip_ALWAYS_SAFE_BYTESr,r rr __getitem__r)bsrr!)rr"r ts  c Cst|dr|}nPyt|r0t|dts0tWn0tk rbt\}}}td|YnXg} |sxr|D]j\} } t| t r|| |} n|t | |||} t| t r|| |} n|t | |||} | | d| qrWn,x(|D]\} } t| t r|| |} n|t | |||} t| t rJ|| |} | | d| qt| t rx|| |||} | | d| qy t| } Wn:tk r|t | |||} | | d| YqXxJ| D]B} t| t r|| |} n|t | |||} | | d| qWqWd | S)Nitemsrz1not a valid non-string sequence or mapping objectrr) hasattrrrzr4r0r6sysexc_infowith_tracebackrr5rr)rsZdoseqrr)r*Z quote_viaZtyZvatblkrr.Zeltr!r!r"rsP                cCsJt|trFy|d}Wn(tk rDtdt|dYnX|S)NASCIIzURL z contains non-ASCII characters)r4r5r(r, UnicodeErrorrepr)rir!r!r"to_bytess  rcCs`t|}|dddkr<|dddkr<|dd}|dddkr\|dd}|S)Nr3zURL:)r5r)rir!r!r"unwraps   rcCsDtdkrtdtjat|}|r<|\}}||fSd|fS)Nz ([^/:]+):(.*)) _typeprogrecompileDOTALLmatchgroupsrJ)rirrpdatar!r!r" splittypes   rcCsXtdkrtdtjat|}|rP|\}}|rH|ddkrHd|}||fSd|fS)Nz//([^/#?]*)(.*)rrv) _hostprogrrrrr)rirZ host_portrr!r!r" splithosts  rcCs |d\}}}|r|nd|fS)NrT)rW)hostuserr}r!r!r" splituser srcCs |d\}}}||r|ndfS)NrU)rI)rr}Zpasswdr!r!r" splitpasswdsrcCsDtdkrtdtjat|}|r<|\}}|r<||fS|dfS)Nz (.*):([0-9]*)) _portprogrrr fullmatchr)rrrQr!r!r" splitports  rrcCsT|d\}}}|s|}n2|rLy t|}Wntk rBd}YnX||fS||fS)NrU)rWrOrP)rZdefportr}rQZnportr!r!r" splitnport$s  rcCs$|d\}}}|r||fS|dfS)Nr)rW)rirr}rsr!r!r" splitquery4srcCs$|d\}}}|r||fS|dfS)Nrg)rW)rirr}tagr!r!r"splittag;srcCs|d}|d|ddfS)Nrmrr3)r)riZwordsr!r!r" splitattrBs rcCs |d\}}}||r|ndfS)Nr)rI)attrr}rr!r!r" splitvalueHsr)rT)r)rT)T)rr)FFrrNr)FFrrNr)rr)rvNN)rNN)rv)r)]rr collections__all__rrrnZnon_hierarchicalZ uses_queryZ uses_fragmentrrrrrr#Z_implicit_encodingZ_implicit_errorsr'r+r2r8objectr9r@rBrSrarfZ_DefragResultBaseZ_SplitResultBaseZ_ParseResultBase__doc__rirhrprVrrsrtZ ResultBaserrrrrrrlrrorrrrrrrrrrrrrrr r r frozensetrrrr defaultdictrr r r rrrrrrrrrrrrrrrrr!r!r!r""s                 !           ?  E   ) A  6   O