
    q"hD*                     2   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	SSK
Jr  SSKJrJrJr  \R                   " \5      rSq " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r\" S5      \\	R8                  \0r  S SKr\\\RD                  '   \\\RF                  '   \\\RH                  '   CS r&0 r'S r(\RR                  " \*" S5      5      r+S r,g! \  a    S SK!r N^f = f! \ \%4 a     N>f = f)    )unicode_literalsN   )DistlibException)cached_propertyget_cache_baseCachec                   8   ^  \ rS rSrSU 4S jjrS rS rSrU =r$ )ResourceCache   c                    > Uc1  [         R                  R                  [        5       [	        S5      5      n[
        [        U ]  U5        g )Nzresource-cache)ospathjoinr   strsuperr
   __init__)selfbase	__class__s     O/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/distlib/resources.pyr   ResourceCache.__init__   s4    <77<< 0#6F2GHDmT+D1    c                     g)z
Is the cache stale for the given resource?

:param resource: The :class:`Resource` being cached.
:param path: The path of the resource in the cache.
:return: True if the cache is stale.
T r   resourcer   s      r   is_staleResourceCache.is_stale"   s     r   c                 z   UR                   R                  U5      u  p#Uc  UnU$ [        R                  R	                  U R
                  U R                  U5      U5      n[        R                  R                  U5      n[        R                  R                  U5      (       d  [        R                  " U5        [        R                  R                  U5      (       d  SnOU R                  X5      nU(       a2  [        US5       nUR                  UR                  5        SSS5        U$ U$ ! , (       d  f       U$ = f)z
Get a resource into the cache,

:param resource: A :class:`Resource` instance.
:return: The pathname of the resource in the cache.
NTwb)finderget_cache_infor   r   r   r   prefix_to_dirdirnameisdirmakedirsexistsr   openwritebytes)r   r   prefixr   resultr$   stalefs           r   getResourceCache.get-   s      55h?>F  WW\\$))T-?-?-GNFggoof-G77==))G$77>>&))h5&$'1GGHNN+ (v ('s   D++
D:r   N)	__name__
__module____qualname____firstlineno__r   r   r/   __static_attributes____classcell__r   s   @r   r
   r
      s    2	 r   r
   c                       \ rS rSrS rSrg)ResourceBaseG   c                     Xl         X l        g r1   r!   name)r   r!   r>   s      r   r   ResourceBase.__init__H   s    	r   r=   N)r2   r3   r4   r5   r   r6   r   r   r   r:   r:   G   s    r   r:   c                   R    \ rS rSrSrSrS r\S 5       r\S 5       r	\S 5       r
Srg	)
ResourceM   z
A class representing an in-package resource, such as a data file. This is
not normally instantiated by user code, but rather by a
:class:`ResourceFinder` which manages the resource.
Fc                 8    U R                   R                  U 5      $ )zr
Get the resource as a stream.

This is not a property to make it obvious that it returns a new stream
each time.
)r!   
get_streamr   s    r   	as_streamResource.as_streamU   s     {{%%d++r   c                 N    [         c
  [        5       q [         R                  U 5      $ r1   )cacher
   r/   rE   s    r   	file_pathResource.file_path^   s     =!OEyyr   c                 8    U R                   R                  U 5      $ r1   )r!   	get_bytesrE   s    r   r*   Resource.bytese   s    {{$$T**r   c                 8    U R                   R                  U 5      $ r1   )r!   get_sizerE   s    r   sizeResource.sizei   s    {{##D))r   r   N)r2   r3   r4   r5   __doc__is_containerrF   r   rJ   r*   rQ   r6   r   r   r   rA   rA   M   sO    
 L,   + + * *r   rA   c                   (    \ rS rSrSr\S 5       rSrg)ResourceContainern   Tc                 8    U R                   R                  U 5      $ r1   )r!   get_resourcesrE   s    r   	resourcesResourceContainer.resourcesq   s    {{((..r   r   N)r2   r3   r4   r5   rT   r   rZ   r6   r   r   r   rV   rV   n   s    L/ /r   rV   c                       \ rS rSrSr\R                  R                  S5      (       a  SrOSrS r	S r
S rS	 rS
 rS rS rS rS rS rS r\" \R,                  R.                  5      rS rSrg)ResourceFinderv   z,
Resource finder for file system resources.
java).pyc.pyoz.class)r`   ra   c                     Xl         [        USS 5      U l        [        R                  R                  [        USS5      5      U l        g )N
__loader____file__ )modulegetattrloaderr   r   r$   r   )r   rf   s     r   r   ResourceFinder.__init__   s4    flD9GGOOGFJ$CD	r   c                 @    [         R                  R                  U5      $ r1   )r   r   realpathr   r   s     r   _adjust_pathResourceFinder._adjust_path   s    ww%%r   c                     [        U[        5      (       a  SnOSnUR                  U5      nUR                  SU R                  5        [
        R                  R                  " U6 nU R                  U5      $ )N   //r   )	
isinstancer*   splitinsertr   r   r   r   rm   )r   resource_nameseppartsr,   s        r   
_make_pathResourceFinder._make_path   s`     mU++CC##C(Q		"u%  ((r   c                 @    [         R                  R                  U5      $ r1   )r   r   r'   rl   s     r   _findResourceFinder._find   s    ww~~d##r   c                     S UR                   4$ r1   )r   r   r   s     r   r"   ResourceFinder.get_cache_info   s    X]]""r   c                     U R                  U5      nU R                  U5      (       d  S nU$ U R                  U5      (       a  [        X5      nO[	        X5      nX#l        U$ r1   )rx   r{   _is_directoryrV   rA   r   )r   ru   r   r,   s       r   findResourceFinder.find   s\    }-zz$F  !!$''*4?!$6Kr   c                 .    [        UR                  S5      $ Nrb)r(   r   r~   s     r   rD   ResourceFinder.get_stream   s    HMM4((r   c                     [        UR                  S5       nUR                  5       sS S S 5        $ ! , (       d  f       g = fr   )r(   r   read)r   r   r.   s      r   rM   ResourceFinder.get_bytes   s'    (--&!668 '&&s   1
?c                 T    [         R                  R                  UR                  5      $ r1   )r   r   getsizer~   s     r   rP   ResourceFinder.get_size   s    wwx}}--r   c                    ^  U 4S jn[        [        R                  " UR                  5       Vs/ s H  o2" U5      (       d  M  UPM     sn5      $ s  snf )Nc                 \   > U S:g  =(       a     U R                  TR                  5      (       + $ )N__pycache__)endswithskipped_extensions)r.   r   s    r   allowed-ResourceFinder.get_resources.<locals>.allowed   s,    & 8JJt667,8 9r   )setr   listdirr   )r   r   r   r.   s   `   r   rY   ResourceFinder.get_resources   s<    	9 rzz(--8G8!GAJA8GHHGs   AAc                 8    U R                  UR                  5      $ r1   )r   r   r~   s     r   rT   ResourceFinder.is_container   s    !!(--00r   c              #     #    U R                  U5      nUb  U/nU(       a  UR                  S5      nUv   UR                  (       at  UR                  nUR                   HX  nU(       d  UnOSR                  XE/5      nU R                  U5      nUR                  (       a  UR                  U5        MT  Uv   MZ     U(       a  M  g g g 7f)Nr   rq   )r   poprT   r>   rZ   r   append)r   ru   r   todornamer>   new_namechilds           r   iteratorResourceFinder.iterator   s     99]+:D88A;(($MME ( 2 2$'+H'*xx'>H $		( 3 -- KK."'K !3 $  s   C CC)r   rh   rf   N)r2   r3   r4   r5   rS   sysplatform
startswithr   r   rm   rx   r{   r"   r   rD   rM   rP   rY   rT   staticmethodr   r   r%   r   r   r6   r   r   r   r]   r]   v   s|     ||v&&7-E
&
)$#
).I1 !/M(r   r]   c                   \   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )ZipResourceFinder   z.
Resource finder for resources in .zip files.
c                 P  > [         [        U ]  U5        U R                  R                  nS[        U5      -   U l        [        U R                  S5      (       a  U R                  R                  U l        O[        R                  U   U l        [        U R                  5      U l        g )Nr   _files)r   r   r   rh   archivelen
prefix_lenhasattrr   	zipimport_zip_directory_cachesortedindex)r   rf   r   r   s      r   r   ZipResourceFinder.__init__   sv    /7++%%c'l*4;;))++,,DK#88ADKDKK(
r   c                     U$ r1   r   rl   s     r   rm   ZipResourceFinder._adjust_path   s    r   c                    XR                   S  nXR                  ;   a  SnOqU(       a*  US   [        R                  :w  a  U[        R                  -   n[        R                  " U R
                  U5      n U R
                  U   R                  U5      nU(       d,  [        R                  SXR                  R                  5        U$ [        R                  SXR                  R                  5        U$ ! [         a    Sn Nmf = f)NTFz_find failed: %r %rz_find worked: %r %r)r   r   r   rv   bisectr   r   
IndexErrorloggerdebugrh   r+   )r   r   r,   is       r   r{   ZipResourceFinder._find   s    OO$%;;FRBFF*bff}djj$/AA11$7 LL.kk6H6HI  LL.kk6H6HI  s   4C1 1D ?D c                 j    U R                   R                  nUR                  S[        U5      -   S  nX#4$ )Nr   )rh   r   r   r   )r   r   r+   r   s       r   r"    ZipResourceFinder.get_cache_info   s2    $$}}QV_-.|r   c                 L    U R                   R                  UR                  5      $ r1   )rh   get_datar   r~   s     r   rM   ZipResourceFinder.get_bytes   s    {{##HMM22r   c                 L    [         R                  " U R                  U5      5      $ r1   )ioBytesIOrM   r~   s     r   rD   ZipResourceFinder.get_stream   s    zz$..233r   c                 X    UR                   U R                  S  nU R                  U   S   $ )N   )r   r   r   r   s      r   rP   ZipResourceFinder.get_size   s+    }}T__-.{{4 ##r   c                 L   UR                   U R                  S  nU(       a*  US   [        R                  :w  a  U[        R                  -  n[	        U5      n[        5       n[        R                  " U R                  U5      nU[	        U R                  5      :  a  U R                  U   R                  U5      (       d   U$ U R                  U   US  nUR                  UR                  [        R                  S5      S   5        US-  nU[	        U R                  5      :  a  M  U$ )Nr   r   r   )r   r   r   rv   r   r   r   r   r   addrs   )r   r   r   plenr,   r   ss          r   rY   ZipResourceFinder.get_resources  s    }}T__-.DH&BFFND4yMM$**d+#djj/!::a=++D11  

1de$AJJqwwrvvq)!,-FA #djj/! r   c                 *   XR                   S  nU(       a*  US   [        R                  :w  a  U[        R                  -  n[        R                  " U R                  U5      n U R                  U   R                  U5      nU$ ! [         a    Sn U$ f = f)Nr   F)r   r   rv   r   r   r   r   )r   r   r   r,   s       r   r   ZipResourceFinder._is_directory  s    OO$%DH&BFFNDMM$**d+	ZZ]--d3F   	F	s   "B BB)r   r   r   )r2   r3   r4   r5   rS   r   rm   r{   r"   rM   rD   rP   rY   r   r6   r7   r8   s   @r   r   r      s:    	)$
34$	 	r   r   c                 (    U[         [        U 5      '   g r1   )_finder_registrytype)rh   finder_makers     r   register_finderr   2  s    %1T&\"r   c                 d   U [         ;   a  [         U    nU$ U [        R                  ;  a  [        U 5        [        R                  U    n[	        USS5      nUc  [        S5      e[	        USS5      n[        R                  [        U5      5      nUc  [        SU -  5      eU" U5      nU[         U '   U$ )z
Return a resource finder for a package.
:param package: The name of the package.
:return: A :class:`ResourceFinder` instance for the package.
__path__Nz8You cannot get a finder for a module, only for a packagerc   zUnable to locate finder for %r)	_finder_cacher   modules
__import__rg   r   r   r/   r   )packager,   rf   r   rh   r   s         r   r!   r!   9  s     -w' M #++%wW%vz40<" $8 9 9t4'++DL9"#Cg#MNNf%!'gMr   	__dummy__c                 0   Sn[         R                  " U 5        [        R                  R	                  U 5      n[
        R	                  [        U5      5      nU(       a9  [        n[        R                  R                  U S5      Ul        X$l        U" U5      nU$ )z
Return a resource finder for a path, which should represent a container.

:param path: The path.
:return: A :class:`ResourceFinder` instance for the path.
Nre   )pkgutilget_importerr   path_importer_cacher/   r   r   _dummy_moduler   r   r   rd   rc   )r   r,   rh   r!   rf   s        r   finder_for_pathr   U  ss     F$$((.F!!$v,/F'',,tR0"Mr   )-
__future__r   r   r   loggingr   r   r   typesr   re   r   utilr   r   r   	getLoggerr2   r   rI   r
   objectr:   rA   rV   r]   r   r   zipimporterr   _frozen_importlib_external_fiImportError_frozen_importlibSourceFileLoader
FileFinderSourcelessFileLoaderAttributeErrorr   r   r!   
ModuleTyper   r   r   r   r   r   <module>r      sN   (  	  	  
    8 8			8	$ 	)E )X6 *| *B/ /W(V W(tK K^ 	J, 
	(0 .<S))*'5S^^$1?S--.
2 2   [!12]  ('( 	^$ 		s0   %C; ).D ;
DD DD DD