hyb
2026-01-30 44480e71b27aa9d4cb8441f50c873f1b110e9691
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Ë
ê^ie;ãó€—ddlmZddlZddlZddlmZddlmZdZejd«Z
ejd    «Z ejd
ejejz«Zd Zd Zd j#ee¬«ZeedœZgd¢ZdZddj-eDcgc]}|ez‘Œ    c}«zdzZdezdzZdezdzezdzZdZejd«Zejdezdz«Zejdezdz«Zejdezdz«Zejdeddzdz«Zejdezdz«Z d e›de›de›d!Z!eje!ejejz«Z"e#d"«Z$e#d#«Z%e$e%zd$hzZ&e&d%d&hzZ'e'd'hzxZ(Z)Gd(„d)ejTd)d*ejVe,fd+ejVe,fd,ejVe,fd-ejVe-fd.ejVe,fd/ejVe,fd0ejVe,fg««Z.ej^                        d;d1„«Z0ej^                        d<d2„«Z0                        d=d3„Z0d>d4„Z1ej^d?d5„«Z2ej^d@d6„«Z2dAd7„Z2dBd8„Z3dCd9„Z4dDd:„Z5ycc}w)Eé)Ú annotationsNé)ÚLocationParseErroré)Úto_str)ÚhttpÚhttpsNz%[a-fA-F0-9]{2}z^(?:[a-zA-Z][a-zA-Z0-9+-]*:|/)zS^(?:([a-zA-Z][a-zA-Z0-9+.-]*):)?(?://([^\\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?$z(?:[0-9]{1,3}\.){3}[0-9]{1,3}z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))ÚhexÚipv4)r
Úls32)    z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._\-~z(?:ú|ú)z (?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z!(?:[^\[\]%:/?#]|%[a-fA-F0-9]{2})*z!^(/[^?#]*)(?:\?([^#]*))?(?:#.*)?$ú^ú$éþÿÿÿú(z)\]$z^(z)(?::0*?(|0|[1-9][0-9]{0,4}))?$zBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-~z !$&'()*+,;=ú:ú@ú/ú?c󰇗eZdZdZ                            d                                                        d
ˆfd„ Zed d„«Zed d„«Zed d„«Zed d„«Z    ed d„«Z
d d„Z ˆxZ S) ÚUrlzÍ
    Data structure for representing an HTTP URL. Used as a return value for
    :func:`parse_url`. Both the scheme and host are normalized as they are
    both case-insensitive according to RFC 3986.
    c
ó„•—|r|jd«sd|z}||j«}t‰| ||||||||«S)Nr)Ú
startswithÚlowerÚsuperÚ__new__)    ÚclsÚschemeÚauthÚhostÚportÚpathÚqueryÚfragmentÚ    __class__s            €õcH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\urllib3/util/url.pyrz Url.__new__dsJø€ñ ˜Ÿ™¨Ô,ؘ‘:ˆDØ Ð Ø—\‘\“^ˆF܉w‰˜s F¨D°$¸¸dÀEÈ8ÓTÐTócó—|jS)z@For backwards-compatibility with urlparse. We're nice like that.)r!©Úselfs r'Úhostnamez Url.hostnamets€ðy‰yÐr(cób—|jxsd}|j|d|jzz }|S)z)Absolute path including the query string.rr)r#r$)r+Úuris  r'Ú request_urizUrl.request_uriys4€ði‰iÒ˜3ˆà :‰:Ð !Ø 3˜Ÿ™Ñ#Ñ #ˆCàˆ
r(cóL—|j}|j}||€|S|›d|›S)z¤
        Authority component as defined in RFC 3986 3.2.
        This includes userinfo (auth), host and port.
 
        i.e.
            userinfo@host:port
        r)r Únetloc)r+Úuserinfor1s   r'Ú    authorityz Url.authorityƒs6€ð—9‘9ˆØ—‘ˆØ ˆ>˜XÐ-؈MàZ˜q  Ð)Ð )r(có‚—|j€y|jr|j›d|j›S|jS)z­
        Network location including host and port.
 
        If you need the equivalent of urllib.parse's ``netloc``,
        use the ``authority`` property instead.
        Nr)r!r"r*s r'r1z
Url.netloc“s;€ð 9‰9Ð ØØ 9Š9Ø—i‘i[  $§)¡) Ð-Ð -؏y‰yÐr(có°—|\}}}}}}}d}|||dzz }|||dzz }|||z }||dt|«zz }|||z }||d|zz }||d|zz }|S)a2
        Convert self into a url
 
        This function should more or less round-trip with :func:`.parse_url`. The
        returned url may not be exactly the same as the url inputted to
        :func:`.parse_url`, but it should be equivalent by the RFC (e.g., urls
        with a blank port will have : removed).
 
        Example:
 
        .. code-block:: python
 
            import urllib3
 
            U = urllib3.util.parse_url("https://google.com/mail/")
 
            print(U.url)
            # "https://google.com/mail/"
 
            print( urllib3.util.Url("https", "username:password",
                                    "host.com", 80, "/path", "query", "fragment"
                                    ).url
                )
            # "https://username:password@host.com:80/path?query#fragment"
        Úz://rrrú#)Ústr)    r+rr r!r"r#r$r%Úurls             r'r9zUrl.url¡sª€ð6;?Ñ7ˆd˜D $¨¨x؈ð Ð Ø 6˜E‘>Ñ !ˆCØ Ð Ø 4˜#‘:Ñ ˆCØ Ð Ø 4‰KˆCØ Ð Ø 3œ˜T›‘?Ñ "ˆCØ Ð Ø 4‰KˆCØ Ð Ø 3˜‘;Ñ ˆCØ Ð Ø 3˜‘>Ñ !ˆCàˆ
r(có—|jS©N)r9r*s r'Ú__str__z Url.__str__Ñs €Øx‰xˆr()NNNNNNN)rú
str | Noner r=r!r=r"z
int | Noner#r=r$r=r%r=)Úreturnr=)r>r8) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rÚpropertyr,r/r3r1r9r<Ú __classcell__)r&s@r'rrPsÚø„ñð"ØØØØØ Ø#ðUàðUððUðð    Uð
ð Uð ð UððUðõUð òóððòóððò *óð *ðò óð ðò-óð-÷^r(rrr r!r"r#r$r%có—yr;©©Ú    componentÚ allowed_charss  r'Ú_encode_invalid_charsrJÕó€ðr(có—yr;rFrGs  r'rJrJÜrKr(có —|€|St|«}tjd„|«\}}|jdd«}||j    d«k(}t «}t dt|««D]„}|||dz}t|«}|r|dk(s|dkr|j«|vr||z }Œ:|jdt|«d    dj«jd    «j«z«Œ†|j«S)
zfPercent-encodes a URI component without reapplying
    onto an already percent-encoded component.
    Ncó@—|jd«j«S)Nr)ÚgroupÚupper)Úmatchs r'ú<lambda>z'_encode_invalid_chars.<locals>.<lambda>òs€e—k‘k !“n×*Ñ*Ó,€r(zutf-8Ú surrogatepassó%rré€r)rÚ _PERCENT_REÚsubnÚencodeÚcountÚ    bytearrayÚrangeÚlenÚordÚdecodeÚextendr
ÚzfillrP)    rHrIÚpercent_encodingsÚ    uri_bytesÚis_percent_encodedÚencoded_componentÚiÚbyteÚbyte_ords             r'rJrJãs€ð ÐØÐäyÓ!€Iô
$/×#3Ñ#3Ù,¨ió$Ñ €IРð× Ñ  ¨/Ó:€IØ*¨i¯o©o¸dÓ.CÑCÐÜ!› Ðä 1”c˜)“nÓ %ò    Wˆà˜˜Q ™UÐ#ˆÜt“9ˆÙ  4¨4¢<Ø sŠN˜tŸ{™{›}° Ñ=à  Ñ %Ð Ø Ø× Ñ  ¬¨X«°q°rÐ):×)AÑ)AÓ)C×)IÑ)IÈ!Ó)L×)RÑ)RÓ)TÑ!UÕVð    Wð × #Ñ #Ó %Ð%r(cóP—|jd«}g}|D]2}|dk(rŒ    |dk7r|j|«Œ |sŒ#|j«Œ4|jd«r|r|dr|j    dd«|j d«r|jd«dj |«S)Nrú.z..rr6)z/.z/..)ÚsplitÚappendÚpoprÚinsertÚendswithÚjoin)r#ÚsegmentsÚoutputÚsegments    r'Ú_remove_path_dot_segmentsrss›€àz‰z˜#‹€HØ €Fàò
ˆà cŠ>Ø à dŠ?Ø M‰M˜'Õ "òØ J‰JLð
𠇁sÔ¡V¨v°aªy؏ ‰ a˜Ôð ‡}}]Ô#؏ ‰ bÔà 8‰8FÓ Ðr(có—yr;rF©r!rs  r'Ú_normalize_hostrv%s€Ø=@r(có—yr;rFrus  r'rvrv)s€Ø;>r(c
ó—|r|tvrûtj|«}|rŽtj    |«}|rg|j d«\}}|||}|j d«r |dk7r|dd}n|dd}t|t«}|d|j«›d|›||d›S|j«Stj|«sAtdj|jd«Dcgc] }t|«‘Œc}«d«S|Scc}w)Nrz%25éú%ó.riÚascii)Ú_NORMALIZABLE_SCHEMESÚ_IPV6_ADDRZ_RErQÚ _ZONE_ID_REÚsearchÚspanrrJÚ_UNRESERVED_CHARSrÚ_IPV4_RErrorjÚ _idna_encode)r!rÚis_ipv6rQÚstartÚendÚzone_idÚlabels        r'rvrv-s€Ú Ø Ô*Ñ *Ü$×*Ñ*¨4Ó0ˆGÙô$×*Ñ*¨4Ó0ÙØ!&§¡¨A£‘JE˜3Ø" 5¨˜oGà×)Ñ)¨%Ô0°WÀÒ5EØ")¨!¨" +™à")¨!¨" +˜Ü3°GÔ=NÓOGØ" 6 E˜l×0Ñ0Ó2Ð3°1°W°I¸dÀ3À4¸j¸\ÐJÐJàŸ:™:›<Ð'Ü—^‘^ DÔ)ÜØ—I‘IÀÇ
Á
È3ÃÖP°uœ|¨EÕ2ÒPÓQØóðð €KùòQsÃ)D     có(—|j«s(    ddl}    |j    |j «dd¬«S|j «j    d«S#t$r td«d‚wxYw#|j $rtd|›d«d‚wxYw)Nrz-Unable to parse URL without the 'idna' moduleT)ÚstrictÚ
std3_ruleszName 'z' is not a valid IDNA labelr|)ÚisasciiÚidnaÚ ImportErrorrrXrÚ    IDNAError)ÚnamerŽs  r'r„r„Js¡€Ø <‰<Œ>ð    Û ð     Ø—;‘;˜tŸz™z›|°DÀT;ÓJÐ Jð :‰:‹<× Ñ ˜wÓ 'Ð'øôò    Ü$Ø?óàð ð    ûð~‰~ò    Ü$ؘ˜Ð9Ð:óàð ð    ús’A—!A1ÁA.Á1 Bcóʗtj|«}|st|›d«‚|j«\}}t    |t
«}|t    |t «}|d|zz }|S)zÝPercent-encodes a request target so that there are no invalid characters
 
    Pre-condition for this function is that 'target' must start with '/'.
    If that is the case then _TARGET_RE will always produce a match.
    z is not a valid request URIr)Ú
_TARGET_RErQrÚgroupsrJÚ _PATH_CHARSÚ _QUERY_CHARS)ÚtargetrQr#r$Úencoded_targets     r'Ú_encode_targetr™]sk€ô × Ñ ˜VÓ $€EÙ Ü  F :Ð-HÐ!IÓJÐJà—,‘,“.K€Dˆ%Ü*¨4´Ó=€NØ ÐÜ% e¬\Ó:ˆØ˜# ™+Ñ%ˆØ Ðr(c    óT—|s
t«S|}tj|«sd|z}    tj    |«j «\}}}}}|duxs|j «tv}|r|j «}|r]|jd«\}}    }
|xsd}tj    |
«j «\} } |r|rt|t«}| dk(r    d} nd\}} } | -t| «} d| cxkrdkst|«‚t|«‚d} t| |«} |r|rt|«}t|t «}|r|rt|t"«}|r|rt|t$«}|s    |€|d}nd}t||| | |||¬«S#t&t(f$r}t|«|‚d}~wwxYw)    aŒ
    Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is
    performed to parse incomplete urls. Fields not provided will be None.
    This parser is RFC 3986 and RFC 6874 compliant.
 
    The parser logic and helper functions are based heavily on
    work done in the ``rfc3986`` module.
 
    :param str url: URL to parse into a :class:`.Url` namedtuple.
 
    Partly backwards-compatible with :mod:`urllib.parse`.
 
    Example:
 
    .. code-block:: python
 
        import urllib3
 
        print( urllib3.util.parse_url('http://google.com/mail/'))
        # Url(scheme='http', host='google.com', port=None, path='/mail/', ...)
 
        print( urllib3.util.parse_url('google.com:80'))
        # Url(scheme=None, host='google.com', port=80, path=None, ...)
 
        print( urllib3.util.parse_url('/foo?bar'))
        # Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...)
    z//Nrr6)NNNriÿÿ)rr r!r"r#r$r%)rÚ
_SCHEME_REr€Ú_URI_RErQr”rr}Ú
rpartitionÚ _HOST_PORT_RErJÚ_USERINFO_CHARSÚintrrvrsr•r–Ú_FRAGMENT_CHARSÚ
ValueErrorÚAttributeError)r9Ú
source_urlrr3r#r$r%Ú normalize_urir Ú_Ú    host_portr!r"Úport_intÚes               r'Ú    parse_urlrªosÇ€ñ8 ä‹uˆ à€JÜ × Ñ ˜SÔ !ؐS‰jˆð$4Ü3:·=±=ÀÓ3E×3LÑ3LÓ3NÑ0ˆ    ˜4 ¨Ø $˜ÒQ¨&¯,©,«.Ô<QÐ*Qˆ á Ø—\‘\“^ˆFá Ø!*×!5Ñ!5°cÓ!:Ñ ˆD!YØ’<˜4ˆDÜ&×,Ñ,¨YÓ7×>Ñ>Ó@‰JˆD$Ù™ Ü,¨T´?ÓCØrŠzØ‘à/Ñ ˆD$˜à Рܘ4“yˆHؘÔ* UÒ*Ü(¨Ó-Ð-ð+Ü(¨Ó-Ð-àˆHä˜t VÓ,ˆá ™TÜ,¨TÓ2ˆDÜ(¨¬{Ó;ˆDÙ ™UÜ)¨%´Ó>ˆEÙ ™XÜ,¨X´ÓGˆHñ Ø Ð  Р4؉DàˆDä ØØ Ø Ø Ø ØØô ðøô œÐ 'ò4Ü  Ó,°!Ð3ûð4úsªEFÆF'Æ F"Æ"F')rHr8rIútyping.Container[str]r>r8)rHÚNonerIr«r>r¬)rHr=rIr«r>r=)r#r8r>r8)r!r¬rr=r>r¬)r!r8rr=r>r8)r!r=rr=r>r=)r‘r8r>Úbytes)r—r8r>r8)r9r8r>r)6Ú
__future__rÚreÚtypingÚ
exceptionsrÚutilrr}ÚcompilerVr›ÚUNICODEÚDOTALLrœÚ    _IPV4_PATÚ_HEX_PATÚformatÚ    _LS32_PATÚ_subsÚ _variationsÚ_UNRESERVED_PATroÚ    _IPV6_PATÚ _ZONE_ID_PATÚ_IPV6_ADDRZ_PATÚ _REG_NAME_PATr“rƒÚ_IPV6_REr~Ú_BRACELESS_IPV6_ADDRZ_RErÚ_HOST_PORT_PATržÚsetr‚Ú_SUB_DELIM_CHARSrŸr•r–r¡Ú
NamedTupleÚOptionalr8r rÚoverloadrJrsrvr„r™rª)Úxs0r'ú<module>rÊspðÝ"ã    Û å+Ýð0Ððˆbj‰jÐ+Ó,€ Ø ˆRZ‰ZÐ9Ó :€
Ø
ˆ"*‰*ðð
‡JJ—‘Ñó  €ð -€    Ø €Ø $× +Ñ +°¸yÐ +Ó I€    Ø )Ñ,€ò€ ð*Y€Ø C—H‘H°Ö=¨A˜a %›iÒ=Ó>Ñ >ÀÑ D€    Ø Ñ0Ð3HÑH€ ؘ)Ñ# fÑ,¨|Ñ;¸gÑE€Ø4€ Ø ˆRZ‰ZÐ<Ó =€
à ˆ2:‰:c˜I‘o¨Ñ+Ó ,€Ø ˆ2:‰:c˜I‘o¨Ñ+Ó ,€Ø—‘˜C /Ñ1°CÑ7Ó8€Ø%˜2Ÿ:™: c¨O¸A¸bÐ,AÑ&AÀCÑ&GÓHÐØˆbj‰j˜˜|Ñ+¨gÑ5Ó6 òÚ Úð€ð
—
‘
˜>¨2¯:©:¸¿    ¹    Ñ+AÓB€ áØHóÐñ}Ó%ÐØ#Ð&6Ñ6¸#¸Ñ>€Ø  c 
Ñ*€ Ø!,°¨uÑ!4Ð4€ ˆôBØ€F×ÑØ à v—‘ sÑ+Ð ,Ø V—_‘_ SÑ)Ð *Ø V—_‘_ SÑ)Ð *Ø V—_‘_ SÑ)Ð *Ø V—_‘_ SÑ)Ð *Ø f—o‘o cÑ*Ð +Ø ˜Ÿ™¨Ñ-Ð .ð    
ó ôBðJ‡ðØðØ#8ðàòóð𠇁ðØðØ$9ðà    òóðð !&Øð!&Ø*?ð!&àó!&óHð<‡Ú@óØ@ð‡Ú>óØ>óó:(ó&ô$fùòw    >s J;