+
    |DiN[                    $   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ R	I H!t!H"t" ^ R
I#H$t$H%t%H&t&H't'H(t(H)t)H*t* ^ RI+H,t, ^ RI-H.t. ^ RI/H0t0 ^ RI1H2t2H3t3 ^ RI4H5t5 ^ RI6H7t7 ^ RI8H9t9 ^ RI:H;t; . R}Ot<]Pz                  ! ]>4      t?])! R4      t@]A]B]C,          ]C]"3,          tD]A]E]E]E3,          tF]A]G]A]']G,          ]']G,          3,          3,          tH]&]!]]C.]$3,          tI]&]!]]D.]$3,          tJR~tKR R ltLR R ltMR R ltNR R ltO]9! ^RR7      RR R  ll4       tPR! R" ltQR# R$ ltRR%]R/R& R' lltSR( R) ltTRR* R+ lltUR, R- ltVR. R/ ltWR0 R1 ltXR2 R3 ltYR4 R5 ltZR6 R7 lt[R8 R9 lt\R: R; lt]R< R= lt^]K3R> R? llt_RRA RB llt`RC RD ltaRE RF ltbRG RH ltcRI RJ ltd ! RK RL]4      teRM RN ltfRO RP ltgRRQ RR llthRS RT ltiRU RV ltjRW RX ltkRY RZ ltlR[ R\ ltmR] R^ ltnR_ R` ltoRa Rb ltpRc Rd ltqRe Rf ltr]! R@Rg7       ! Rh Ri4      4       tsRj Rk lttRl Rm ltuRn Ro ltvRp Rq ltwRr Rs ltxRRt Ru lltyRv Rw ltzRx Ry lt{ ! Rz R].4      t|R{ R| lt}R# )    )annotationsN)	GeneratorIterableIteratorMappingSequence)	dataclass)partial)StringIO)filterfalseteezip_longest)Path)FunctionTypeTracebackType)AnyBinaryIOCallableOptionalTextIOTypeVarcast)Requirement)BuildBackendHookCaller)__version__)CommandErrorExternallyManagedEnvironment)get_major_minor_version)WINDOWS)retry)running_under_virtualenv ConfiguredBuildBackendHookCallerTc                   V ^8  d   QhRR/#    returnstr )formats   "v/Users/tonyclaw/.openclaw/workspace/services/omi-webhook/venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py__annotate__r,   F   s     X X X    c                     \         P                  P                  \         P                  P                  \        4      R R 4      p \         P                  P                  V 4      p R\         RV  R\        4        R2# )z..zpip z from z	 (python ))ospathjoindirname__file__abspathr   r   )pip_pkg_dirs    r+   get_pip_versionr7   F   sX    '',,rwwx8$EK''//+.K+f[M;R;T:UUVWWr-   c                    V ^8  d   QhRRRR/# )r&   py_version_infoztuple[int, ...]r'   ztuple[int, int, int]r)   )r*   s   "r+   r,   r,   M   s     0 0O 0@T 0r-   c                    \        V 4      ^8  d"   V ^\        V 4      ,
          R,          ,          p M\        V 4      ^8  d
   V R,          p \        RV 4      # )a\  
Convert a tuple of ints representing a Python version to one of length
three.

:param py_version_info: a tuple of ints representing a Python version,
    or None to specify no version. The tuple can have any length.

:return: a tuple of length three if `py_version_info` is non-None.
    Otherwise, return `py_version_info` unchanged (i.e. None).
:N   NVersionInfo)r   )lenr   )r9   s   &r+   normalize_version_infor>   M   sN     ?aAO 44<<	_		!)"-//r-   c                    V ^8  d   QhRRRR/# )r&   r1   r(   r'   Noner)   )r*   s   "r+   r,   r,   `   s      S T r-   c                     \         P                  ! V 4       R#   \         dQ   pTP                  \        P                  8w  d'   TP                  \        P
                  8w  d   h  Rp?R#  Rp?R# Rp?ii ; i)z os.path.makedirs without EEXIST.N)r0   makedirsOSErrorerrnoEEXIST	ENOTEMPTY)r1   es   & r+   
ensure_dirrH   `   sN    
D 77ell"qww%//'A (B"s    A5?A00A5c                   V ^8  d   QhRR/# r%   r)   )r*   s   "r+   r,   r,   j   s     	 	# 	r-   c                      \         P                  P                  \        P                  ^ ,          4      p V R9   d   \        P
                   R2# V #   \        \        \        3 d     R# i ; i)r   z -m pippip)z__main__.pyz-c)	r0   r1   basenamesysargv
executableAttributeError	TypeError
IndexError)progs    r+   get_progrT   j   s_    ww,((nn%W--KIz2 s   AA A A,+A,g      ?)stop_after_delaywaitc               (    V ^8  d   QhRRRRRRRR/# )	r&   dirr(   ignore_errorsboolonexczOnExc | Noner'   r@   r)   )r*   s   "r+   r,   r,   x   s)     
, 
, 
,D 
, 
,QU 
,r-   c                    V'       d   \         pVf   \        p\        \        VR7      p\        P
                  R8  d   \        P                  ! WR7       R # \        P                  ! WR7       R # )N)r[   )onerror)r;      )_onerror_ignore_onerror_reraiser
   rmtree_errorhandlerrM   version_infoshutilrmtree)rX   rY   r[   handlers   &&& r+   rd   rd   w   sG    } 0>G
7"c)c+r-   c                    V ^8  d   QhRRRR/# r&   _argsr   r'   r@   r)   )r*   s   "r+   r,   r,      s     	 	C 	D 	r-   c                     R # Nr)   rh   s   *r+   r_   r_      s    r-   c                    V ^8  d   QhRRRR/# rg   r)   )r*   s   "r+   r,   r,      s     
 
S 
T 
r-   c                     h rj   r)   rk   s   *r+   r`   r`      s    	r-   r[   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r&   funcr   r1   r   exc_infozExcInfo | BaseExceptionr[   OnExcr'   r@   r)   )r*   s   "r+   r,   r,      s:     &  & 
& 
&  && 
 &  
& r-   c                   \         P                  ! V4      P                  pT\        P                  ,          '       g8    \         P
                  ! Y\        P                  ,          4        T ! T4       R# \        T\        4      '       g   Tw  rRpT! YT4       R#   \         d     R# i ; i  \         d     LEi ; i  \         d     LVi ; i)a  
`rmtree` error handler to 'force' a file remove (i.e. like `rm -f`).

* If a file is readonly then it's write flag is set and operation is
  retried.

* `onerror` is the original callback from `rmtree(... onerror=onerror)`
  that is chained at the end if the "rm -f" still fails.
N)r0   statst_moderC   S_IWRITEchmod
isinstanceBaseException)ro   r1   rp   r[   rt   _s   &&&$  r+   ra   ra      s     ''$-''
 T]]""
	HHTT]]23
T
 h..!Q	$h)      		s5    B  +B? ,B. B+*B+.B<;B<?CCc                    V ^8  d   QhRRRR/# )r&   r1   r(   r'   r)   )r*   s   "r+   r,   r,      s      s s r-   c                `   \         P                  P                  \         P                  P                  V 4      4      p V P	                  \         P
                  ! 4       \         P                  P                  ,           4      '       d)   RV \        \         P
                  ! 4       4      R ,           p V # )zPGives the display value for a given path, making it relative to cwd
if possible..N)r0   r1   normcaser5   
startswithgetcwdsepr=   r1   s   &r+   display_pathr      si     77BGGOOD12Dryy{RWW[[011T#biik*,--Kr-   c               $    V ^8  d   QhRRRRRR/# )r&   rX   r(   extr'   r)   )r*   s   "r+   r,   r,      s!      C c s r-   c                    ^pTp\         P                  P                  W,           4      '       d   V^,          pV\        V4      ,           pKH  W,           # )zXFigure out the name of a directory to back up the given dir to
(adding .bak, .bak2, etc))r0   r1   existsr(   )rX   r   n	extensions   &&  r+   
backup_dirr      sA     	
AI
''..
)
)	Q#a&L	?r-   c               $    V ^8  d   QhRRRRRR/# r&   messager(   optionszIterable[str]r'   r)   )r*   s   "r+   r,   r,      s!     ! !S != !S !r-   c                    \         P                  P                  R R4      P                  4        F  pW!9   g   K  Vu # 	  \	        W4      # )PIP_EXISTS_ACTION )r0   environgetsplitask)r   r   actions   && r+   ask_path_existsr      s>    **..!4b9??AM B w  r-   c                    V ^8  d   QhRRRR/# )r&   r   r(   r'   r@   r)   )r*   s   "r+   r,   r,      s     
 
S 
T 
r-   c                l    \         P                  P                  R4      '       d   \        RV  24      hR# )z&Raise an error if no input is allowed.PIP_NO_INPUTz5No input was expected ($PIP_NO_INPUT set); question: N)r0   r   r   	Exceptionr   s   &r+   _check_no_inputr      s1    	zz~~n%%CG9M
 	
 &r-   c               $    V ^8  d   QhRRRRRR/# r   r)   )r*   s   "r+   r,   r,      s!       }  r-   c                     \        V 4       \        V 4      pVP                  4       P                  4       pW!9  d-   \	        RP                  VRP                  V4      4      4       Kg  V# )z@Ask the message interactively, with the given possible responsesz>Your response ({!r}) was not one of the expected responses: {}z, )r   inputstriplowerprintr*   r2   )r   r   responses   && r+   r   r      sZ    
 >>>#))+"VHdii&89
 Or-   c                    V ^8  d   QhRRRR/# r&   r   r(   r'   r)   )r*   s   "r+   r,   r,      s      s s r-   c                .    \        V 4       \        V 4      # )zAsk for input interactively.)r   r   r   s   &r+   	ask_inputr      s    G>r-   c                    V ^8  d   QhRRRR/# r   r)   )r*   s   "r+   r,   r,      s     $ $# $# $r-   c                D    \        V 4       \        P                  ! V 4      # )z!Ask for a password interactively.)r   getpassr   s   &r+   ask_passwordr      s    G??7##r-   c                    V ^8  d   QhRRRR/# )r&   valr(   r'   intr)   )r*   s   "r+   r,   r,      s     9 93 93 9r-   c                d    V P                  4       p V R9   d   ^# V R9   d   ^ # \        RV : 24      h)zConvert a string representation of truth to true (1) or false (0).

True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
'val' is anything else.
zinvalid truth value )yyesttrueon1)r   noffalseoff0)r   
ValueError)r   s   &r+   	strtoboolr      s:     ))+C
22	5	5/w788r-   c                    V ^8  d   QhRRRR/# )r&   bytesfloatr'   r(   r)   )r*   s   "r+   r,   r,     s     % %u % %r-   c                    V R8  d   V R,          R ,          R R2# V R8  d   \        V R ,          4       R2# V R 8  d   V R,          R R2# \        V 4       R2# )i  g     @@z.1fz MBz kBz bytesi@B i'  )r   )r   s   &r+   format_sizer     sn    {&.4',C00		edl#$C((	&.%S))e*V$$r-   c                    V ^8  d   QhRRRR/# )r&   rowszIterable[Iterable[Any]]r'   ztuple[list[str], list[int]]r)   )r*   s   "r+   r,   r,     s      * /J r-   c           
     d   V  Uu. uF  p\        \        \        V4      4      NK  	  p p\        V RR/  Uu. uF  p\	        \        \
        V4      4      NK  	  ppV  Uu. uF:  pRP                  \        \        P                  W4      4      P                  4       NK<  	  ppWC3# u upi u upi u upi )zReturn a list of formatted rows and a list of column sizes.

For example::

>>> tabulate([['foobar', 2000], [0xdeadbeef]])
(['foobar     2000', '3735928559'], [10, 4])
	fillvaluer    )	tuplemapr(   r   maxr=   r2   ljustrstrip)r   rowcolsizestables   &    r+   tabulater     s     -11DSE#c3- DD1+6+K+KL+KCSS#+KELFJKdsSXXc#))S0188:dEK< 2LKs   "B#"B(A B-c                    V ^8  d   QhRRRR/# r&   r1   r(   r'   rZ   r)   )r*   s   "r+   r,   r,     s      S T r-   c                h   \         P                  P                  V 4      '       g   R# \         P                  P                  \         P                  P	                  V R4      4      '       d   R# \         P                  P                  \         P                  P	                  V R4      4      '       d   R# R# )a`  Is path is a directory containing pyproject.toml or setup.py?

If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for
a legacy setuptools layout by identifying setup.py. We don't check for the
setup.cfg because using it without setup.py is only available for PEP 517
projects, which are already covered by the pyproject.toml check.
Fzpyproject.tomlTzsetup.py)r0   r1   isdirisfiler2   r   s   &r+   is_installable_dirr     sh     77==	ww~~bggll4)9:;;	ww~~bggll4455r-   c               $    V ^8  d   QhRRRRRR/# )r&   filer   sizer   r'   zGenerator[bytes, None, None]r)   )r*   s   "r+   r,   r,   .  s$      
!r-   c              #  N   "    V P                  V4      pV'       g   R# Vx  K"  5i)z7Yield pieces of data from a file-like object until EOF.N)read)r   r   chunks   && r+   read_chunksr   .  s"      		$s   %%Tc               $    V ^8  d   QhRRRRRR/# )r&   r1   r(   resolve_symlinksrZ   r'   r)   )r*   s   "r+   r,   r,   9  s!     
" 
" 
" 
" 
"r-   c                   \         P                  P                  V 4      p V'       d!   \         P                  P                  V 4      p M\         P                  P	                  V 4      p \         P                  P                  V 4      # )zF
Convert a path to its canonical, case-normalized, absolute version.

)r0   r1   
expanduserrealpathr5   r}   )r1   r   s   &&r+   normalize_pathr   9  sV    
 77d#Dww%wwt$77D!!r-   c                    V ^8  d   QhRRRR/# )r&   r1   r(   r'   ztuple[str, str]r)   )r*   s   "r+   r,   r,   F  s      3 ? r-   c                    \         P                  ! V 4      w  rVP                  4       P                  R4      '       d   VRR V,           pVRR pW3# )z,Like os.path.splitext, but take off .tar tooz.tarN)	posixpathsplitextr   endswith)r1   baser   s   &  r+   r   r   F  sM    ""4(IDzz|V$$23i#oCRy9r-   c               $    V ^8  d   QhRRRRRR/# )r&   oldr(   newr'   r@   r)   )r*   s   "r+   r,   r,   O  s!       3 4 r-   c                   \         P                  P                  V4      w  r#V'       dD   V'       d<   \         P                  P                  V4      '       g   \         P                  ! V4       \
        P                  ! W4       \         P                  P                  V 4      w  r#V'       d$   V'       d    \         P                  ! V4       R# R# R#   \         d     R# i ; i)z7Like os.renames(), but handles renaming across devices.N)	r0   r1   r   r   rB   rc   move
removedirsrC   )r   r   headtails   &&  r+   renamesr   O  s     s#JDRWW^^D11
D
KKs#JD	MM$ t  		s   5C C C c                    V ^8  d   QhRRRR/# r   r)   )r*   s   "r+   r,   r,   `  s     7 73 74 7r-   c                v    \        4       '       g   R# V P                  \        \        P                  4      4      # )z
Return True if path is within sys.prefix, if we're running in a virtualenv.

If we're not in a virtualenv, all paths are considered "local."

Caution: this function assumes the head of path has been normalized
with normalize_path.
T)r!   r~   r   rM   prefixr   s   &r+   is_localr   `  s(     $%%??>#**566r-   c               $    V ^8  d   QhRRRRRR/# )r&   msgr   argsr'   r@   r)   )r*   s   "r+   r,   r,   n  s!      c # $ r-   c                6    \         P                  ! V .VO5!   R # rj   )loggerinfo)r   r   s   &*r+   write_outputr   n  s    
KKdr-   c                  N    ] tR tRt$ R]R&   ]R R l4       t]R R l4       tRt	R	# )
StreamWrapperir  r   orig_streamc                    V ^8  d   QhRRRR/# )r&   r  r   r'   r   r)   )r*   s   "r+   r,   StreamWrapper.__annotate__v  s      f  r-   c                	     V ! 4       pWn         V# rj   )r  )clsr  rets   && r+   from_streamStreamWrapper.from_streamu  s    e%
r-   c                   V ^8  d   QhRR/# r%   r)   )r*   s   "r+   r,   r  ~  s     ) )# )r-   c                	.    V P                   P                  # rj   )r  encodingselfs   &r+   r  StreamWrapper.encoding}  s    (((r-   r)   N)
__name__
__module____qualname____firstlineno____annotations__classmethodr  propertyr  __static_attributes__r)   r-   r+   r   r   r  s.      ) )r-   r   c               $    V ^8  d   QhRRRRRR/# )r&   
sequentialr   namedr'   z	type[Any]r)   )r*   s   "r+   r,   r,     s!     # #c #C #I #r-   c            
         \        \        V \        \        V 4      4      4      3/ VB pVP	                  4        UUu/ uF  w  r4WCbK	  	  pppWRR &   \        RRV4      # u uppi )reverse_mappingEnumr)   )dictzipranger=   itemstype)r  r  enumskeyvaluereverses   *,    r+   enumr&    s\    Zs:!78BEBE,1KKM:MjcuzMG:&
E"" ;s   Ac               $    V ^8  d   QhRRRRRR/# )r&   hostr(   portz
int | Noner'   r)   )r*   s   "r+   r,   r,     s!     	 	s 	* 	 	r-   c                6    Vf   V # RV 9   d   RV  R2p V  RV 2# )z&
Build a netloc from a host-port pair
:[]r)   )r(  r)  s   &&r+   build_netlocr.    s3     |
d{4&{V1TFr-   c               $    V ^8  d   QhRRRRRR/# )r&   netlocr(   schemer'   r)   )r*   s   "r+   r,   r,     s!     " "# "s " "r-   c                d    V P                  R4      ^8  d   RV 9  d   RV 9  d   RV  R2p V RV  2# )z!
Build a full URL from a netloc.
r+  @r,  r-  z://)count)r0  r1  s   &&r+   build_url_from_netlocr5    sA     ||CA#V"368IVHAXS!!r-   c                    V ^8  d   QhRRRR/# )r&   r0  r(   r'   ztuple[str | None, int | None]r)   )r*   s   "r+   r,   r,     s     ( ( (!> (r-   c                    \        V 4      p\        P                  P                  V4      pVP                  VP
                  3# )z*
Return the host-port pair from a netloc.
)r5  urllibparseurlparsehostnamer)  )r0  urlparseds   &  r+   parse_netlocr>    s5      
'C\\""3'F??FKK''r-   c                    V ^8  d   QhRRRR/# r&   r0  r(   r'   NetlocTupler)   )r*   s   "r+   r,   r,     s      3 ; r-   c                   RV 9  d   V R3# V P                  R^4      w  rRpRV9   d   VP                  R^4      w  r2MTRr#\        P                  P	                  V4      pVe    \        P                  P	                  V4      pWV33# )zd
Parse out and remove the auth information from a netloc.

Returns: (netloc, (username, password)).
r3  Nr+  NN)rsplitr   r8  r9  unquote)r0  authpwusers   &   r+   split_auth_from_netlocrI    s     &|##
 ==a(LDB
d{ ::c1%bb<<%D	~\\!!"%":r-   c                    V ^8  d   QhRRRR/# )r&   r0  r(   r'   r)   )r*   s   "r+   r,   r,     s     ( (# (# (r-   c                    \        V 4      w  p w  rVf   V # Vf   RpRpM!\        P                  P                  V4      pRpV V RV  2# )z
Replace the sensitive data in a netloc with "****", if it exists.

For example:
    - "user:pass@example.com" returns "user:****@example.com"
    - "accesstoken@example.com" returns "****@example.com"
****r   z:****r3  )rI  r8  r9  quote)r0  rH  passwords   &  r+   redact_netlocrO    s^      6f=FT|||!!$'VH:Qvh''r-   c               $    V ^8  d   QhRRRRRR/# )r&   r<  r(   transform_netlocz Callable[[str], tuple[Any, ...]]r'   ztuple[str, NetlocTuple]r)   )r*   s   "r+   r,   r,     s$     3 3	3 @33r-   c                *   \         P                  P                  V 4      pV! VP                  4      pVP                  V^ ,          VP
                  VP                  VP                  3p\         P                  P                  V4      pV\        RV4      3# )a:  Transform and replace netloc in a url.

transform_netloc is a function taking the netloc and returning a
tuple. The first element of this tuple is the new netloc. The
entire tuple is returned.

Returns a tuple containing the transformed url as item 0 and the
original tuple returned by transform_netloc as item 1.
rA  )
r8  r9  urlsplitr0  r1  r1   queryfragment
urlunsplitr   )r<  rQ  purlnetloc_tuple
url_piecessurls   &&    r+   _transform_urlr[    sp     <<  %D#DKK0L++|A		4::t}}UJ<<"":.Dm\222r-   c                    V ^8  d   QhRRRR/# r@  r)   )r*   s   "r+   r,   r,     s     * * * *r-   c                    \        V 4      # rj   )rI  r0  s   &r+   _get_netlocr_    s    !&))r-   c                    V ^8  d   QhRRRR/# )r&   r0  r(   r'   z
tuple[str]r)   )r*   s   "r+   r,   r,     s     $ $3 $: $r-   c                    \        V 4      3# rj   )rO  r^  s   &r+   _redact_netlocrb    s    &!##r-   c                    V ^8  d   QhRRRR/# )r&   r<  r(   r'   z.tuple[str, str, tuple[str | None, str | None]]r)   )r*   s   "r+   r,   r,     s     	* 	*		*3	*r-   c                4    \        V \        4      w  pw  r#WV3# )zz
Parse a url into separate netloc, auth, and url with no auth.

Returns: (url_without_auth, netloc, (username, password))
r[  r_  )r<  url_without_authr0  rF  s   &   r+   split_auth_netloc_from_urlrg    s#     (6c;'G$nvT))r-   c                    V ^8  d   QhRRRR/# r&   r<  r(   r'   r)   )r*   s   "r+   r,   r,     s     / /c /c /r-   c                0    \        V \        4      ^ ,          # )z7Return a copy of url with 'username:password@' removed.re  r<  s   &r+   remove_auth_from_urlrl    s     #{+A..r-   c                    V ^8  d   QhRRRR/# ri  r)   )r*   s   "r+   r,   r,   	  s     2 2c 2c 2r-   c                0    \        V \        4      ^ ,          # )z.Replace the password in a given url with ****.)r[  rb  rk  s   &r+   redact_auth_from_urlro  	  s    #~.q11r-   c                    V ^8  d   QhRRRR/# )r&   reqr   r'   r(   r)   )r*   s   "r+   r,   r,     s     D Dk Dc Dr-   c                    V P                   '       g   \        V 4      # \        V 4      P                  V P                   \        V P                   4      4      # )z:Replace the password in a given requirement url with ****.)r<  r(   replacero  )rq  s   &r+   redact_auth_from_requirementrt    s9    7773xs8CGG%9#''%BCCr-   )frozenc                  P    ] tR tRt$ R]R&   R]R&   R R ltR R ltR	 R
 ltRtR# )
HiddenTexti  r(   secretredactedc                   V ^8  d   QhRR/# r%   r)   )r*   s   "r+   r,   HiddenText.__annotate__  s     - -# -r-   c                	"    R \        V 4      : R2# )z<HiddenText >)r(   r  s   &r+   __repr__HiddenText.__repr__  s    c$i]!,,r-   c                   V ^8  d   QhRR/# r%   r)   )r*   s   "r+   r,   r{    s       r-   c                	    V P                   # rj   ry  r  s   &r+   __str__HiddenText.__str__  s    }}r-   c                    V ^8  d   QhRRRR/# )r&   otherr   r'   rZ   r)   )r*   s   "r+   r,   r{  !  s     + +C +D +r-   c                	h    \        V 4      \        V4      Jd   R # V P                  VP                  8H  # )F)r!  rx  )r  r  s   &&r+   __eq__HiddenText.__eq__!  s*    :T%[( {{ell**r-   r)   N)	r  r  r  r  r  r~  r  r  r  r)   r-   r+   rw  rw    s     KM-+ +r-   rw  c                    V ^8  d   QhRRRR/# )r&   r$  r(   r'   rw  r)   )r*   s   "r+   r,   r,   *  s     . .c .j .r-   c                    \        V R R7      # )rL  r  )rw  )r$  s   &r+   
hide_valuer  *  s    ef--r-   c                    V ^8  d   QhRRRR/# )r&   r<  r(   r'   rw  r)   )r*   s   "r+   r,   r,   .  s     . .# .* .r-   c                0    \        V 4      p\        WR 7      # )r  )ro  rw  )r<  ry  s   & r+   hide_urlr  .  s    #C(Hc--r-   c                    V ^8  d   QhRRRR/# )r&   modifying_piprZ   r'   r@   r)   )r*   s   "r+   r,   r,   3  s     
 
D 
T 
r-   c                   RR\         P                  P                   2R\         P                  P                   R\         P                  P                   2.pT ;'       dF    \        ;'       d8    \
        P                  P                  \         P                  ^ ,          4      V9   pV'       dY   \         P                  RR.\         P                  R,          ,           p\        RP                  RP                  V4      4      4      hR# )zProtection of pip.exe from modification on Windows

On Windows, any operation modifying pip should be run as:
    python -m pip ...
rK   r|   z-m:   NNz3To modify pip, please run the following command:
{}r   N)rM   rb   majorminorr   r0   r1   rL   rN   rO   r   r*   r2   )r  	pip_namesshould_show_use_python_msgnew_commands   &   r+   (protect_pip_from_modification_on_windowsr  3  s     	
c$$%&
c$$%Qs'7'7'='=&>?I 	PP'PPbgg&6&6sxx{&Cy&P  "~~tU3chhrlBBII%
 	
 "r-   c                   V ^8  d   QhRR/# r&   r'   r@   r)   )r*   s   "r+   r,   r,   M  s     ; ;$ ;r-   c                    \        4       '       d   R# \        P                  P                  \        P
                  ! R4      R4      p \        P                  P                  V 4      '       g   R# \        P                  ! V 4      h)zCheck whether the current environment is externally managed.

If the ``EXTERNALLY-MANAGED`` config file is found, the current environment
is considered externally managed, and an ExternallyManagedEnvironment is
raised.
NstdlibzEXTERNALLY-MANAGED)	r!   r0   r1   r2   	sysconfigget_pathr   r   from_config)markers    r+   check_externally_managedr  M  sW      !!WW\\),,X68LMF77>>&!!
&
2
26
::r-   c                   V ^8  d   QhRR/# )r&   r'   rZ   r)   )r*   s   "r+   r,   r,   \  s     8 8 8r-   c                 r    \         P                  RJ;'       d    \         P                  P                  4       # )zIs this console interactive?N)rM   stdinisattyr)   r-   r+   is_console_interactiver  \  s&    99D 77SYY%5%5%77r-   c               $    V ^8  d   QhRRRRRR/# )r&   r1   r(   	blocksizer   r'   ztuple[Any, int]r)   )r*   s   "r+   r,   r,   a  s!     	 	C 	C 	o 	r-   c                   \         P                  ! 4       p^ p\        V R4      ;_uu_ 4       p\        WAR7       F&  pV\	        V4      ,          pVP                  V4       K(  	  RRR4       W#3#   + '       g   i     Y#3# ; i)z5Return (hash, length) for path using hashlib.sha256()rb)r   N)hashlibsha256openr   r=   update)r1   r  hlengthr   blocks   &&    r+   	hash_filer  a  sn     	AF	dD		Q 3Ec%j FHHUO 4 
 9	 
	 9s   7A..B 	c                    V ^8  d   QhRRRR/# )r&   iterablezIterable[Any]r'   zIterator[tuple[Any, Any]]r)   )r*   s   "r+   r,   r,   m  s     + +} +)B +r-   c                .    \        V 4      p \        W 4      # )zR
Return paired elements.

For example:
    s -> (s0, s1), (s2, s3), (s4, s5), ...
)iterr   )r  s   &r+   pairwiser  m  s     H~Hx**r-   c               $    V ^8  d   QhRRRRRR/# )r&   predzCallable[[T], bool]r  zIterable[T]r'   ztuple[Iterable[T], Iterable[T]]r)   )r*   s   "r+   r,   r,   x  s$     
3 
3

3)4
3$
3r-   c                H    \        V4      w  r#\        W4      \        W4      3# )z
Use a predicate to partition entries into false entries and true entries,
like

    partition(is_odd, range(10)) --> 0 2 4 6 8   and  1 3 5 7 9
)r   r   filter)r  r  t1t2s   &&  r+   	partitionr  x  s$     ]FBt &"222r-   c                     a  ] tR tRtRR V 3R llltRR V 3R llltRR V 3R llltRR V 3R	 llltRR
 V 3R llltRR V 3R lllt	RR V 3R lllt
RR V 3R llltRR V 3R llltRtV ;t# )r"   i  c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r&   config_holderr   
source_dirr(   build_backendbackend_path
str | NonerunnerzCallable[..., None] | Nonepython_executabler)   )r*   s   "r+   r,   -ConfiguredBuildBackendHookCaller.__annotate__  sF     + ++ + 	+
 !+ ++ &+r-   c                	6   < \         SV `  W#WEV4       Wn        R # rj   )super__init__r  )r  r  r  r  r  r  r  	__class__s   &&&&&&&r+   r  )ConfiguredBuildBackendHookCaller.__init__  s"     	|=N	
 +r-   c               (    V ^8  d   QhRRRRRRRR/# r&   wheel_directoryr(   config_settingsMapping[str, Any] | Nonemetadata_directoryr  r'   r)   )r*   s   "r+   r,   r    2     	
 	
	
 2	
 '		

 
	
r-   c                	R   < V P                   P                  p\        SV `  WVR 7      # )r  r  )r  r  r  build_wheelr  r  r  r  csr  s   &&&& r+   r  ,ConfiguredBuildBackendHookCaller.build_wheel  s3     //w"DV # 
 	
r-   c               $    V ^8  d   QhRRRRRR/# )r&   sdist_directoryr(   r  r  r'   r)   )r*   s   "r+   r,   r    s-     H HH 2H 
	Hr-   c                	P   < V P                   P                  p\        SV `  WR 7      # )r  )r  r  r  build_sdist)r  r  r  r  r  s   &&& r+   r  ,ConfiguredBuildBackendHookCaller.build_sdist  s)    
 //w"?"GGr-   c               (    V ^8  d   QhRRRRRRRR/# r  r)   )r*   s   "r+   r,   r    r  r-   c                	R   < V P                   P                  p\        SV `  WVR 7      # r  )r  r  r  build_editabler  s   &&&& r+   r  /ConfiguredBuildBackendHookCaller.build_editable  s3     //w%DV & 
 	
r-   c                    V ^8  d   QhRRRR/# r&   r  r  r'   zSequence[str]r)   )r*   s   "r+   r,   r          H H7H	Hr-   c                	P   < V P                   P                  p\        SV `  VR 7      # r  )r  r  r  get_requires_for_build_wheelr  r  r  r  s   && r+   r  =ConfiguredBuildBackendHookCaller.get_requires_for_build_wheel  )     //w3B3GGr-   c                    V ^8  d   QhRRRR/# r  r)   )r*   s   "r+   r,   r    r  r-   c                	P   < V P                   P                  p\        SV `  VR 7      # r  )r  r  r  get_requires_for_build_sdistr  s   && r+   r  =ConfiguredBuildBackendHookCaller.get_requires_for_build_sdist  r  r-   c                    V ^8  d   QhRRRR/# r  r)   )r*   s   "r+   r,   r    s      K K7K	Kr-   c                	P   < V P                   P                  p\        SV `  VR 7      # r  )r  r  r  get_requires_for_build_editabler  s   && r+   r  @ConfiguredBuildBackendHookCaller.get_requires_for_build_editable  s)     //w6r6JJr-   c               (    V ^8  d   QhRRRRRRRR/# )r&   r  r(   r  r  _allow_fallbackrZ   r'   r)   )r*   s   "r+   r,   r    s2     
 

 2
 	

 

r-   c                	T   < V P                   P                  p\        SV `  VVVR 7      # )r  r  r  )r  r  r   prepare_metadata_for_build_wheelr  r  r  r  r  r  s   &&&& r+   r  AConfiguredBuildBackendHookCaller.prepare_metadata_for_build_wheel  s6     //w71+ 8 
 	
r-   c               (    V ^8  d   QhRRRRRRRR/# )	r&   r  r(   r  r  r  rZ   r'   r  r)   )r*   s   "r+   r,   r    s2     
 

 2
 	

 

r-   c                	T   < V P                   P                  p\        SV `  VVVR 7      # r  )r  r  r  #prepare_metadata_for_build_editabler  s   &&&& r+   r  DConfiguredBuildBackendHookCaller.prepare_metadata_for_build_editable  s6     //w:1+ ; 
 	
r-   )r  )NNNrC  rj   )NT)r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__)r  s   @r+   r"   r"     sj    + +	
 	
H H	
 	
H HH HK K
 

 
 
r-   c                   V ^8  d   QhRR/# r  r)   )r*   s   "r+   r,   r,     s      T r-   c                    \        4       '       d   R# \        \        R4      '       g   R# \        P                  R8X  g   \        P                  R8X  d   R# \        P
                  ! 4       ^ 8w  d   R# \        P                  R4       R# )zOutput a warning for sudo users on Unix.

In a virtual environment, sudo pip still writes to virtualenv.
On Windows, users may run pip as Administrator without issues.
This warning only applies to Unix root users outside of virtualenv.
Ngetuidwin32cygwinab  Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.)r!   hasattrr0   rM   platformr  r   warningr)   r-   r+   warn_if_run_as_rootr
    s^      !!2x   ||w#,,(":	yy{a
NN	)r-   )rd   r   r   r   r   r   r   r   r   rT   rH   rl  r  r"      )FN)z.bak)T)https)r  )~
__future__r   rD   r   r  loggingr0   r   rc   rs   rM   r  urllib.parser8  collections.abcr   r   r   r   r   dataclassesr	   	functoolsr
   ior   	itertoolsr   r   r   pathlibr   typesr   r   typingr   r   r   r   r   r   r   "pip._vendor.packaging.requirementsr   pip._vendor.pyproject_hooksr   rK   r   pip._internal.exceptionsr   r   pip._internal.locationsr   pip._internal.utils.compatr   pip._internal.utils.retryr    pip._internal.utils.virtualenvr!   __all__	getLoggerr  r   r#   r   r!  rx   ExcInfor   r<   r(   rA  rq   OnErrFILE_CHUNK_SIZEr7   r>   rH   rT   rd   r_   r`   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&  r.  r5  r>  rI  rO  r[  r_  rb  rg  rl  ro  rt  rw  r  r  r  r  r  r  r  r  r"   r
  r)   r-   r+   <module>r$     sT   "     	    
   L L !   3 3  -   ; >  O ; . + C" 
		8	$CL
]#]MA
BCcM"Cx}hsm;<<=,m4c9:,g.34X0&	 $
, %
,	
& 
 $& R!
$9 %$ !0
""7)H )"#	"(:((3(*$	*/2
D $+ + +(..

4;8
	+
3W
'= W
tr-   