+
    <j[                         ^ 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 ^ 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"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+ ^ R	I,H-t- ^ R
I.H/t/ ^ RI0H1t1 ^ RI2H3t3H4t4 ^ RI5H6t6 ^ RI7H8t8 ^ RI9H:t: ^ RI;H<t< . R{Ot=]P|                  ! ]?4      t@])! R4      tA]'](]B,          ]B]3,          tC]']D]D]D3,          tE]']F]']$]F,          ]$]F,          3,          3,          tG]]]]B.]3,          tH]]]]C.]3,          tIR|tJR R ltKR R ltLR R ltMR R ltN]:! ^RR7      R}R R ll4       tOR R  ltPR! R" ltQR#]Q/R$ R% lltRR& R' ltSR~R( R) lltTR* R+ 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]]J3R< R= llt^RR? R@ llt_RA RB lt`RC RD ltaRE RF ltbRG RH ltc ! RI RJ]4      tdRK RL lteRM RN ltfRRO RP lltgRQ RR 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tq]! R>Re7       ! Rf Rg4      4       trRh Ri ltsRj Rk lttRl Rm ltuRn Ro ltvRp Rq ltwRRr Rs lltxRt Ru ltyRv Rw ltz ! Rx R]/4      t{Ry Rz lt|R# )    N)	dataclass)partial)StringIO)filterfalseteezip_longest)Path)FunctionTypeTracebackType)AnyBinaryIOCallable	GeneratorIterableIteratorListMappingOptionalSequenceTextIOTupleTypeTypeVarUnioncast)Requirement)BuildBackendHookCaller)__version__)CommandErrorExternallyManagedEnvironment)get_major_minor_version)WINDOWS)retry)running_under_virtualenv ConfiguredBuildBackendHookCallerTc                $    V ^8  d   QhR\         /#    returnstr)formats   "M/opt/headortail/venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py__annotate__r/   L   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_versionr:   L   sX    '',,rwwx8$EK''//+.K+f[M;R;T:UUVWWr0   c                v    V ^8  d   QhR\         \        R3,          R\         \        \        \        3,          /# )r)   py_version_info.r*   )r   int)r-   s   "r.   r/   r/   S   s.     0 0E#s(O 0c3PSm@T 0r0   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   )r<   s   &r.   normalize_version_inforB   S   sN     ?aAO 44<<	_		!)"-//r0   c                (    V ^8  d   QhR\         RR/# )r)   r4   r*   Nr+   )r-   s   "r.   r/   r/   f   s      S T r0   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)r3   makedirsOSErrorerrnoEEXIST	ENOTEMPTY)r4   es   & r.   
ensure_dirrK   f   sN    
D 77ell"qww%//'A (B"s    A5?A00A5c                $    V ^8  d   QhR\         /# r(   r+   )r-   s   "r.   r/   r/   p   s     	 	# 	r0   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)	r3   r4   basenamesysargv
executableAttributeError	TypeError
IndexError)progs    r.   get_progrW   p   s_    ww,((nn%W--KIz2 s   AA A A,+A,g      ?)stop_after_delaywaitc                V    V ^8  d   QhR\         R\        R\        \        ,          RR/# )r)   dirignore_errorsonexcr*   N)r,   boolr   OnExc)r-   s   "r.   r/   r/   ~   s0     , ,	,!,2:5/,	,r0   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_errorhandlerrP   version_infoshutilrmtree)r[   r\   r]   handlers   &&& r.   rh   rh   }   sI     } 0>G
7"c)c+r0   c                (    V ^8  d   QhR\         RR/# r)   _argsr*   Nr   )r-   s   "r.   r/   r/      s     	 	C 	D 	r0   c                      R # N rl   s   *r.   rc   rc      s    r0   c                (    V ^8  d   QhR\         RR/# rk   rm   )r-   s   "r.   r/   r/      s     
 
S 
T 
r0   c                      h ro   rp   rq   s   *r.   rd   rd      s    	r0   r]   c          
      n    V ^8  d   QhR\         R\        R\        \        \        3,          R\
        RR/# )r)   funcr4   exc_infor]   r*   N)r
   r	   r   ExcInfoBaseExceptionr_   )r-   s   "r.   r/   r/      sD     &  & 
& 
&  G]*+& 
 &  
& r0   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)r3   statst_moderF   S_IWRITEchmod
isinstancerx   )ru   r4   rv   r]   r{   _s   &&&$  r.   re   re      s     ''$-''
 T]]""
	HHTT]]23
T
 h..!Q	$h)      		s5    B  +B? ,B. B+*B+.B<;B<?CCc                0    V ^8  d   QhR\         R\         /# r)   r4   r*   r+   )r-   s   "r.   r/   r/      s      s s r0   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)r3   r4   normcaser8   
startswithgetcwdseprA   r4   s   &r.   display_pathr      si     77BGGOOD12Dryy{RWW[[011T#biik*,--Kr0   c                <    V ^8  d   QhR\         R\         R\         /# )r)   r[   extr*   r+   )r-   s   "r.   r/   r/      s!      C c s r0   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))r3   r4   existsr,   )r[   r   n	extensions   &&  r.   
backup_dirr      sA     	
AI
''..
)
)	Q#a&L	?r0   c                R    V ^8  d   QhR\         R\        \         ,          R\         /# r)   messageoptionsr*   r,   r   )r-   s   "r.   r/   r/      s%     ! !S !8C= !S !r0   c                     \         P                  P                  R R4      P                  4        F  pW!9   g   K  Vu # 	  \	        W4      # )PIP_EXISTS_ACTION )r3   environgetsplitask)r   r   actions   && r.   ask_path_existsr      s>    **..!4b9??AM B w  r0   c                (    V ^8  d   QhR\         RR/# )r)   r   r*   Nr+   )r-   s   "r.   r/   r/      s     
 
S 
T 
r0   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)r3   r   r   	Exceptionr   s   &r.   _check_no_inputr      s1    	zz~~n%%CG9M
 	
 &r0   c                R    V ^8  d   QhR\         R\        \         ,          R\         /# r   r   )r-   s   "r.   r/   r/      s%       x}  r0   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-   r5   )r   r   responses   && r.   r   r      sZ    
 >>>#))+"VHdii&89
 Or0   c                0    V ^8  d   QhR\         R\         /# r)   r   r*   r+   )r-   s   "r.   r/   r/      s      s s r0   c                .    \        V 4       \        V 4      # )zAsk for input interactively.)r   r   r   s   &r.   	ask_inputr      s    G>r0   c                0    V ^8  d   QhR\         R\         /# r   r+   )r-   s   "r.   r/   r/      s     $ $# $# $r0   c                D    \        V 4       \        P                  ! V 4      # )z!Ask for a password interactively.)r   getpassr   s   &r.   ask_passwordr      s    G??7##r0   c                0    V ^8  d   QhR\         R\        /# )r)   valr*   )r,   r=   )r-   s   "r.   r/   r/      s     9 93 93 9r0   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8r0   c                0    V ^8  d   QhR\         R\        /# )r)   bytesr*   )floatr,   )r-   s   "r.   r/   r/     s     % %u % %r0   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$$r0   c                    V ^8  d   QhR\         \         \        ,          ,          R\        \        \        ,          \        \
        ,          3,          /# )r)   rowsr*   )r   r   r   r   r,   r=   )r-   s   "r.   r/   r/     s5      8HSM* uT#YS	5I/J r0   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   maxrA   r5   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                0    V ^8  d   QhR\         R\        /# r   r,   r^   )r-   s   "r.   r/   r/   %  s      S T r0   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)r3   r4   isdirisfiler5   r   s   &r.   is_installable_dirr   %  sh     77==	ww~~bggll4)9:;;	ww~~bggll4455r0   c          	      X    V ^8  d   QhR\         R\        R\        \        RR3,          /# )r)   filesizer*   N)r   r=   r   r   )r-   s   "r.   r/   r/   6  s0      
udD !r0   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   6  s"      		$s   %%Tc                <    V ^8  d   QhR\         R\        R\         /# )r)   r4   resolve_symlinksr*   r   )r-   s   "r.   r/   r/   A  s!     
" 
" 
" 
" 
"r0   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.

)r3   r4   
expanduserrealpathr8   r   )r4   r   s   &&r.   normalize_pathr   A  sV    
 77d#Dww%wwt$77D!!r0   c                R    V ^8  d   QhR\         R\        \         \         3,          /# r   r,   r   )r-   s   "r.   r/   r/   N  s"      3 5c? r0   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)r4   baser   s   &  r.   r   r   N  sM    ""4(IDzz|V$$23i#oCRy9r0   c                4    V ^8  d   QhR\         R\         RR/# )r)   oldnewr*   Nr+   )r-   s   "r.   r/   r/   W  s!       3 4 r0   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)	r3   r4   r   r   rE   rg   move
removedirsrF   )r   r   headtails   &&  r.   renamesr   W  s     s#JDRWW^^D11
D
KKs#JD	MM$ t  		s   5C C C c                0    V ^8  d   QhR\         R\        /# r   r   )r-   s   "r.   r/   r/   h  s     7 73 74 7r0   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   rP   prefixr   s   &r.   is_localr   h  s(     $%%??>#**566r0   c                4    V ^8  d   QhR\         R\         RR/# )r)   msgargsr*   Nrm   )r-   s   "r.   r/   r/   v  s!      c # $ r0   c                 6    \         P                  ! V .VO5!   R # ro   )loggerinfo)r  r  s   &*r.   write_outputr  v  s    
KKdr0   c                   d   a  ] tR tRt o ]V 3R lR l4       t]V 3R lR l4       tV 3R ltRt	V t
R# )	StreamWrapperiz  c                $   < V ^8  d   QhRS[ RR/# )r)   orig_streamr*   r  r   )r-   __classdict__s   "r.   r/   StreamWrapper.__annotate__~  s      f  r0   c                     V ! 4       pWn         V# ro   )r
  )clsr
  rets   && r.   from_streamStreamWrapper.from_stream}  s    e%
r0   c                    < V ^8  d   QhRS[ /# r(   r+   )r-   r  s   "r.   r/   r    s     ) )# )r0   c                .    V P                   P                  # ro   )r
  encodingselfs   &r.   r  StreamWrapper.encoding  s    (((r0   c                &   < V ^8  d   Qh/ S[ ;R&   # )r)   r
  r  )r-   r  s   "r.   r/   r  z  s      r0   rp   N)__name__
__module____qualname____firstlineno__classmethodr  propertyr  __annotate_func____static_attributes____classdictcell__r  s   @r.   r  r  z  s4        ) )  r0   r  c                R    V ^8  d   QhR\         R\         R\        \         ,          /# )r)   
sequentialnamedr*   )r   r   )r-   s   "r.   r/   r/     s%     # #c #C #DI #r0   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Enumrp   )dictziprangerA   itemstype)r%  r&  enumskeyvaluereverses   *,    r.   enumr3    s\    Zs:!78BEBE,1KKM:MjcuzMG:&
E"" ;s   Ac                R    V ^8  d   QhR\         R\        \        ,          R\         /# )r)   hostportr*   )r,   r   r=   )r-   s   "r.   r/   r/     s%     	 	s 	(3- 	C 	r0   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
:[]rp   )r5  r6  s   &&r.   build_netlocr;    s3     |
d{4&{V1TFr0   c                <    V ^8  d   QhR\         R\         R\         /# )r)   netlocschemer*   r+   )r-   s   "r.   r/   r/     s!     " "# "s " "r0   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.
r8  @r9  r:  z://)count)r=  r>  s   &&r.   build_url_from_netlocrB    sA     ||CA#V"368IVHAXS!!r0   c                ~    V ^8  d   QhR\         R\        \        \         ,          \        \        ,          3,          /# r)   r=  r*   )r,   r   r   r=   )r-   s   "r.   r/   r/     s,     ( ( (x}hsm'C!D (r0   c                    \        V 4      p\        P                  P                  V4      pVP                  VP
                  3# )z*
Return the host-port pair from a netloc.
)rB  urllibparseurlparsehostnamer6  )r=  urlparseds   &  r.   parse_netlocrL    s5      
'C\\""3'F??FKK''r0   c                0    V ^8  d   QhR\         R\        /# rD  r,   NetlocTuple)r-   s   "r.   r/   r/     s      3 ; r0   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)).
r@  Nr8  NN)rsplitr   rF  rG  unquote)r=  authpwusers   &   r.   split_auth_from_netlocrW    s     &|##
 ==a(LDB
d{ ::c1%bb<<%D	~\\!!"%":r0   c                0    V ^8  d   QhR\         R\         /# rD  r+   )r-   s   "r.   r/   r/     s     ( (# (# (r0   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:****r@  )rW  rF  rG  quote)r=  rV  passwords   &  r.   redact_netlocr]    s^      6f=FT|||!!$'VH:Qvh''r0   c                    V ^8  d   QhR\         R\        \         .\        \        R3,          3,          R\        \         \        3,          /# )r)   rJ  transform_netloc.r*   )r,   r   r   r   rO  )r-   s   "r.   r/   r/     sB     3 3	3 (#c3h)? @3
33r0   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.
rO  )
rF  rG  urlsplitr=  r>  r4   queryfragment
urlunsplitr   )rJ  r_  purlnetloc_tuple
url_piecessurls   &&    r.   _transform_urlri    sp     <<  %D#DKK0L++|A		4::t}}UJ<<"":.Dm\222r0   c                0    V ^8  d   QhR\         R\        /# rD  rN  )r-   s   "r.   r/   r/     s     * * * *r0   c                     \        V 4      # ro   )rW  r=  s   &r.   _get_netlocrm    s    !&))r0   c                F    V ^8  d   QhR\         R\        \         ,          /# rD  r   )r-   s   "r.   r/   r/     s     $ $3 $5: $r0   c                     \        V 4      3# ro   )r]  rl  s   &r.   _redact_netlocrp    s    &!##r0   c          
          V ^8  d   QhR\         R\        \         \         \        \        \         ,          \        \         ,          3,          3,          /# r)   rJ  r*   )r,   r   r   )r-   s   "r.   r/   r/     s:     	* 	*		*
3U8C=(3-7889	*r0   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))
ri  rm  )rJ  url_without_authr=  rT  s   &   r.   split_auth_netloc_from_urlrv    s#     (6c;'G$nvT))r0   c                0    V ^8  d   QhR\         R\         /# rr  r+   )r-   s   "r.   r/   r/   
  s     / /c /c /r0   c                0    \        V \        4      ^ ,          # )z7Return a copy of url with 'username:password@' removed.rt  rJ  s   &r.   remove_auth_from_urlrz  
  s     #{+A..r0   c                0    V ^8  d   QhR\         R\         /# rr  r+   )r-   s   "r.   r/   r/     s     2 2c 2c 2r0   c                0    \        V \        4      ^ ,          # )z.Replace the password in a given url with ****.)ri  rp  ry  s   &r.   redact_auth_from_urlr}    s    #~.q11r0   c                0    V ^8  d   QhR\         R\        /# )r)   reqr*   )r   r,   )r-   s   "r.   r/   r/     s     D Dk Dc Dr0   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 ****.)rJ  r,   replacer}  )r  s   &r.   redact_auth_from_requirementr    s9    7773xs8CGG%9#''%BCCr0   )frozenc                   b   a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R ltR	tV t	R
# )
HiddenTexti  c                    < V ^8  d   QhRS[ /# r(   r+   )r-   r  s   "r.   r/   HiddenText.__annotate__"  s     - -# -r0   c                "    R \        V 4      : R2# )z<HiddenText >r+   r  s   &r.   __repr__HiddenText.__repr__"  s    c$i]!,,r0   c                    < V ^8  d   QhRS[ /# r(   r+   )r-   r  s   "r.   r/   r  %  s       r0   c                    V P                   # ro   redactedr  s   &r.   __str__HiddenText.__str__%  s    }}r0   c                &   < V ^8  d   QhRS[ RS[/# )r)   otherr*   )r   r^   )r-   r  s   "r.   r/   r  )  s     + +C +D +r0   c                h    \        V 4      \        V4      Jd   R # V P                  VP                  8H  # )F)r.  secret)r  r  s   &&r.   __eq__HiddenText.__eq__)  s*    :T%[( {{ell**r0   c                2   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   # )r)   r  r  r+   )r-   r  s   "r.   r/   r    s     K  M r0   rp   N)
r  r  r  r  r  r  r  r   r!  r"  r#  s   @r.   r  r    s*     
- - + +  r0   r  c                0    V ^8  d   QhR\         R\        /# )r)   r1  r*   r,   r  )r-   s   "r.   r/   r/   2  s     . .c .j .r0   c                     \        V R R7      # )rZ  r  )r  )r1  s   &r.   
hide_valuer  2  s    ef--r0   c                0    V ^8  d   QhR\         R\        /# rr  r  )r-   s   "r.   r/   r/   6  s     . .# .* .r0   c                 0    \        V 4      p\        WR 7      # )r  )r}  r  )rJ  r  s   & r.   hide_urlr  6  s    #C(Hc--r0   c                (    V ^8  d   QhR\         RR/# )r)   modifying_pipr*   Nr^   )r-   s   "r.   r/   r/   ;  s     
 
D 
T 
r0   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 ...
rN   r   z-m:   NNz3To modify pip, please run the following command:
{}r   N)rP   rf   majorminorr"   r3   r4   rO   rQ   rR   r   r-   r5   )r  	pip_namesshould_show_use_python_msgnew_commands   &   r.   (protect_pip_from_modification_on_windowsr  ;  s     	
c$$%&
c$$%Qs'7'7'='=&>?I 	PP'PPbgg&6&6sxx{&Cy&P  "~~tU3chhrlBBII%
 	
 "r0   c                    V ^8  d   QhRR/# r)   r*   Nrp   )r-   s   "r.   r/   r/   U  s     ; ;$ ;r0   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$   r3   r4   r5   	sysconfigget_pathr   r    from_config)markers    r.   check_externally_managedr  U  sW      !!WW\\),,X68LMF77>>&!!
&
2
26
::r0   c                $    V ^8  d   QhR\         /# r(   r  )r-   s   "r.   r/   r/   d  s     8 8 8r0   c                 r    \         P                  RJ;'       d    \         P                  P                  4       # )zIs this console interactive?N)rP   stdinisattyrp   r0   r.   is_console_interactiver  d  s&    99D 77SYY%5%5%77r0   c                ^    V ^8  d   QhR\         R\        R\        \        \        3,          /# )r)   r4   	blocksizer*   )r,   r=   r   r   )r-   s   "r.   r/   r/   i  s)     	 	C 	C 	eCHo 	r0   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   rA   update)r4   r  hlengthr   blocks   &&    r.   	hash_filer  i  sn     	AF	dD		Q 3Ec%j FHHUO 4 
 9	 
	 9s   7A..B 	c                ~    V ^8  d   QhR\         \        ,          R\        \        \        \        3,          ,          /# )r)   iterabler*   )r   r   r   r   )r-   s   "r.   r/   r/   u  s+     + +x} +%S/)B +r0   c                .    \        V 4      p \        W 4      # )zR
Return paired elements.

For example:
    s -> (s0, s1), (s2, s3), (s4, s5), ...
)iterr   )r  s   &r.   pairwiser  u  s     H~Hx**r0   c          	          V ^8  d   QhR\         \        .\        3,          R\        \        ,          R\        \        \        ,          \        \        ,          3,          /# )r)   predr  r*   )r   r&   r^   r   r   )r-   s   "r.   r/   r/     sE     
3 
3
A39

3)1!
3
8A;#$
3r0   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    s$     ]FBt &"222r0   c                   "  a a ] tR tRt oRV3R lV 3R llltRV3R lV 3R llltRV3R lV 3R llltRV3R lV 3R	 llltRV3R
 lV 3R llltRV3R lV 3R lllt	RV3R lV 3R lllt
RV3R lV 3R llltRV3R lV 3R llltRtVtV ;t# )r%   i  c                |   < V ^8  d   QhRS[ RS[RS[RS[S[,          RS[S[R,          ,          RS[S[,          /# )r)   config_holder
source_dirbuild_backendbackend_pathrunnerpython_executable).N)r   r,   r   r   )r-   r  s   "r.   r/   -ConfiguredBuildBackendHookCaller.__annotate__  sY     + ++ + 	+
 sm+ ),-+ $C=+r0   c                6   < \         SV `  W#WEV4       Wn        R # ro   )super__init__r  )r  r  r  r  r  r  r  	__class__s   &&&&&&&r.   r  )ConfiguredBuildBackendHookCaller.__init__  s"     	|=N	
 +r0   c                h   < V ^8  d   QhRS[ RS[S[S[ S[3,          ,          RS[S[ ,          RS[ /# r)   wheel_directoryconfig_settingsmetadata_directoryr*   r,   r   r   r   )r-   r  s   "r.   r/   r    E     	
 	
	
 "'#s("34	
 %SM		

 
	
r0   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 # 
 	
r0   c                R   < V ^8  d   QhRS[ RS[S[S[ S[3,          ,          RS[ /# )r)   sdist_directoryr  r*   r  )r-   r  s   "r.   r/   r    s<     H HH "'#s("34H 
	Hr0   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Gr0   c                h   < V ^8  d   QhRS[ RS[S[S[ S[3,          ,          RS[S[ ,          RS[ /# r  r  )r-   r  s   "r.   r/   r    r  r0   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 & 
 	
r0   c                \   < V ^8  d   QhRS[ S[S[S[3,          ,          RS[S[,          /# r)   r  r*   r   r   r,   r   r   )r-   r  s   "r.   r/   r    3     H H'S(9:H	#Hr0   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Gr0   c                \   < V ^8  d   QhRS[ S[S[S[3,          ,          RS[S[,          /# r  r  )r-   r  s   "r.   r/   r    r  r0   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  r0   c                \   < V ^8  d   QhRS[ S[S[S[3,          ,          RS[S[,          /# r  r  )r-   r  s   "r.   r/   r    s3     K K'S(9:K	#Kr0   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Jr0   c                X   < V ^8  d   QhRS[ RS[S[S[ S[3,          ,          RS[RS[ /# r)   r  r  _allow_fallbackr*   r,   r   r   r   r^   )r-   r  s   "r.   r/   r    sA     
 

 "'#s("34
 	

 

r0   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 
 	
r0   c          	      h   < V ^8  d   QhRS[ RS[S[S[ S[3,          ,          RS[RS[S[ ,          /# r  r
  )r-   r  s   "r.   r/   r    sE     
 

 "'#s("34
 	

 
#
r0   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+ ; 
 	
r0   )r  )NNNrQ  ro   )NT)r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r"  __classcell__)r  r  s   @@r.   r%   r%     sl     + +	
 	
H H	
 	
H HH HK K
 

 
 
r0   c                    V ^8  d   QhRR/# r  rp   )r-   s   "r.   r/   r/     s      T r0   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$   hasattrr3   rP   platformr  r  warningrp   r0   r.   warn_if_run_as_rootr    s^      !!2x   ||w#,,(":	yy{a
NN	)r0   )rh   r   r   r   r   r   r   r   r   rW   rK   rz  r  r%      )FN)z.bak)T)https)r  )}rG   r   r  loggingr3   r   rg   rz   rP   r  urllib.parserF  dataclassesr   	functoolsr   ior   	itertoolsr   r   r   pathlibr	   typesr
   r   typingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   "pip._vendor.packaging.requirementsr   pip._vendor.pyproject_hooksr   rN   r   pip._internal.exceptionsr   r    pip._internal.locationsr!   pip._internal.utils.compatr"   pip._internal.utils.retryr#   pip._internal.utils.virtualenvr$   __all__	getLoggerr  r  r&   rx   rw   r=   r@   r,   rO  r_   OnErrFILE_CHUNK_SIZEr:   rB   rK   rW   rh   rc   rd   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r3  r;  rB  rL  rW  r]  ri  rm  rp  rv  rz  r}  r  r  r  r  r  r  r  r  r  r  r%   r  rp   r0   r.   <module>r4     sU       	    
   !   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r0   