
    z	i                         S r SSKrSSKrSSKr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\	R                  " S5      rS rS rS rS rS r " S	 S
5      r\" 5       r\R.                  r\R0                  r\R2                  rg)z3Use a cache layer in front of entry point scanning.    Nzstevedore._cachec                  P   [         R                  S:X  az  [        R                  S:w  af  [         R                  R                  SS5      =(       d    [         R                  R                  S5      n [         R                  R                  U S5      $ [        R                  S:X  a  [         R                  R                  S5      $ [         R                  R                  SS5      =(       d    [         R                  R                  S	5      n [         R                  R                  U S
5      $ )zhLocate a platform-appropriate cache directory to use.

Does not ensure that the cache directory exists.
posixdarwinXDG_CACHE_HOMENz~/.cachezpython-entrypointsz$~/Library/Caches/Python Entry PointsLOCALAPPDATAz~\AppData\LocalzPython Entry Points)	osnamesysplatformenvirongetpath
expanduserjoin)	base_paths    J/home/james-whalen/.local/lib/python3.13/site-packages/stevedore/_cache.py_get_cache_dirr      s     
ww'cllh6JJNN#3T: .ww!!*- 	ww||I';<< 
	!ww!!"HII JJNN>48 7ww!!"56 	ww||I'<==    c                      [         R                  " U 5      nUR                  $ ! [         a9  nUR                  [        R
                  [        R                  1;  a  e  S nAgS nAff = f)Ng      )r   statst_mtimeOSErrorerrnoENOENTENOTDIR)r	   serrs      r   
_get_mtimer   6   sR    GGDMzz 99U\\5==99 :s   !$ 
A'/A""A'c                 L    [         R                  " S5      R                  U 5      $ )Nf)structStructpack)r    s    r   	_ftobytesr$   @   s    ==""1%%r   c                    / n[         R                  " 5       nUR                  [        R                  R                  S5      5        UR                  [        R                  R                  S5      5        U  GH6  n[        U5      nUR                  UR                  S5      5        UR                  [        U5      5        UR                  X445        [        R                  " [        R                  " [        R                  R!                  USS5      5      [        R                  " [        R                  R!                  USS5      5      5       HZ  n[        U5      nUR                  UR                  S5      5        UR                  [        U5      5        UR                  XT45        M\     GM9     UR#                  5       U4$ )z4Return a hash and the path settings that created it.zutf-8z*.dist-infozentry_points.txtz
*.egg-info)hashlibsha256updater
   
executableencodeprefixr   r$   append	itertoolschainglobiglobr   r   r   	hexdigest)r   pathshentrymtimeep_files         r   _hash_settings_for_pathr7   D   sB   EA HHS^^""7+,HHSZZw'(5!	g&'	5!"e^$ 

277<<(5(:< = 

277<<(4(:< =	
G w'EHHW^^G,-HHYu%&LL')*
 & KKM5!!r   c                     [         R                  " 5       n [        U [        5      (       d)  U R                   Vs0 s H  nXR                  US9_M     n n0 nU R                  5        Hj  u  p4[        5       n/ nXbU'   U HO  nUR                  UR                  UR                  4nX;   a  M-  UR                  U5        UR                  U5        MQ     Ml     U[        R                  [        R                  S.$ s  snf )N)group)groupszsys.executablez
sys.prefix)importlib_metadataentry_points
isinstancedictr:   selectitemssetr	   valuer9   addr,   r
   r)   r+   )	real_groupsr9   r:   r	   
group_dataexistingmembersepitems	            r   _build_cacheable_datarJ   d   s    $113Kk4((
 %++
+ %%E%22+ 	 
 F'--/5tB
 77BHHbhh.DLLNN4  	 0 ..jj +
s   C6c                   B    \ rS rSrS	S jrS rS	S jrS	S jrS	S jrSr	g)
Cache   Nc                 ,   Uc
  [        5       nXl        0 U l        SU l        [	        [
        R                  R                  [
        R                  R                  U R                  S5      5      [        R                  SS S:H  /5      (       a  SU l        g g )NFz.disabler      z/tmpT)r   _dir	_internal_disable_cachinganyr   r   isfiler   r
   r)   )self	cache_dirs     r   __init__Cache.__init__   sz    &(I	 %
 rww||DIIzBCq#v-/ 0 0$(D!0r   c                 :   Uc  [         R                  n[        U5      nX R                  ;   a  U R                  U   $ [	        U5      u  p4[
        R                  R                  U R                  U5      n [        R                  SU5        [        U5       n[        R                  " U5      nS S S 5        WU R                  U'   U$ ! , (       d  f       N= f! [        [        R                  4 a    [        5       nXGS'   U R                   (       d   [        R                  SU5        [
        R"                  " U R                  SS9  [        US5       n[        R$                  " Xv5        S S S 5         M  ! , (       d  f        N= f! [         a      Nf = f Nf = f)Nz
reading %spath_valueszwriting to %sT)exist_okw)r
   r   tuplerQ   r7   r   r   rP   logdebugopenjsonloadr   JSONDecodeErrorrJ   rR   makedirsdump)rU   r   internal_keydigestrZ   filenamer    datas           r   _get_data_for_pathCache._get_data_for_path   s6   <88DT{>>)>>,//5d;77<<		62	IIlH-h1yy|   (,|$!  --. 	(*D"-((IIox8KK		D9h,		$* -,,,  )	sm   5!C C-C 
CC C 9FAFE4)F4
F	>FF
FFFFFc                     / nU R                  U5      nUR                  S0 5      R                  U/ 5      nU H%  nUR                  [        R                  " U6 5        M'     U$ )Nr:   )rj   r   r,   r;   
EntryPoint)rU   r9   r   resultri   rE   valss          r   get_group_allCache.get_group_all   s[    &&t,XXh+//r:
DMM,77>? r   c                 v    0 nU R                  XS9 H#  nUR                  U;  d  M  XCUR                  '   M%     U$ )Nr   )rp   r	   )rU   r9   r   rn   rH   s        r   get_group_namedCache.get_group_named   s=    $$U$6Bwwf$"$rww 7 r   c                     U R                  XS9R                  5        H  u  p$X":X  d  M  Us  $    [        SR                  X5      5      e)Nrs   z No entrypoint {!r} in group {!r})rt   r@   
ValueErrorformat)rU   r9   r	   r   rH   s        r   
get_singleCache.get_single   sP    ,,U,>DDFHD|	 G ;BB  	r   )rP   rR   rQ   )N)
__name__
__module____qualname____firstlineno__rW   rj   rp   rt   ry   __static_attributes__ r   r   rL   rL      s    )<r   rL   )__doc__r   r/   r&   importlib.metadatametadatar;   r-   ra   loggingr   os.pathr!   r
   	getLoggerr^   r   r   r$   r7   rJ   rL   _crp   rt   ry   r   r   r   <module>r      s    :    /    	   
 *+>.&"@DB BJ W  $$]]
r   