
    0h6                     x    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rSSK	J
r
  SrS r " S S\5      rg)    N   )utilsz.cache-versionc                     [         R                  R                  [        R                  5      n [
        R
                  " [         R                  R                  U S5      5      nUR                  [        R                  S   5        S U 5       n[        R                  " SR                  U5      R                  S5      5      R                  5       $ )Nz*.pyr   c              3   t   #    U  H.  n[        [        R                  " U5      R                  5      v   M0     g 7fN)strosstatst_mtime).0sources     2/lib/gobject-introspection/giscanner/cachestore.py	<genexpr>#_get_versionhash.<locals>.<genexpr>+   s&     B'c"''&/**++'s   68 ascii)r	   pathdirname	giscanner__file__globjoinappendsysargvhashlibsha1encode	hexdigest)toplevelsourcesmtimess      r   _get_versionhashr#   &   s    wwy112HiiXv67GNN388A;B'BF<<..w78BBDD    c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)
CacheStore0   c                 N    U R                  5       U l        U R                  5         g r   )_get_cachedir
_directory_check_cache_version)selfs    r   __init__CacheStore.__init__2   s    ,,.!!#r$   c                 \    S[         R                  ;   a  g [        R                  " S5      nU$ )NGI_SCANNER_DISABLE_CACHEzg-ir-scanner)r	   environr   get_user_cache_dir)r,   cachedirs     r   r)   CacheStore._get_cachedir6   s&    %3//?HOr$   c                    U R                   c  g [        5       n[        R                  R	                  U R                   [
        5      n [        USSS9 nUR                  5       nS S S 5        UW:X  a  g U R                  5         [        R                  " SS9u  pg [        R                  " USSS9 nUR!                  U5        S S S 5        ["        R$                  " Xr5        g ! , (       d  f       N= f! [        [        4 a+  nUR                  [        R                  :X  a  Sn S nANe S nAff = f! , (       d  f       Nt= f! [        [        4 a)  nUR                  [        R&                  :X  a   S nAg e S nAff = f)Nrutf-8)encodingr   zg-ir-scanner-cache-version-prefixw)r*   r#   r	   r   r   _CACHE_VERSION_FILENAMEopenreadIOErrorOSErrorerrnoENOENT_cleantempfilemkstempfdopenwriteshutilmoveEACCES)	r,   current_hashversionversion_file
cache_hashetmp_fdtmp_filenametmp_files	            r   r+   CacheStore._check_cache_version=   s    ??"')'',,t0GH	gsW5)..0
 6 :%'//7TU	639X|, :
 KK.+ 65! 	ww%,,&
	 :9 ! 	ww%,,&	sr   C2 C!$C2 E 0D0E !
C/+C2 /C2 2D- D('D((D-0
D>:E E:E54E55E:c                     U R                   c  g [        R                  " UR                  S5      5      R	                  5       n[
        R                  R                  U R                   U5      $ )Nr7   )r*   r   r   r   r   r	   r   r   )r,   filenamer   s      r   _get_filenameCacheStore._get_filenamea   sL     ??" LL!9:DDF	ww||DOOY77r$   c                      [         R                  " U5      R                  nU[         R                  " U5      R                  :  $ ! [         a     gf = f)NF)r	   r
   r   FileNotFoundError)r,   store_filenamerU   store_mtimes       r   _cache_is_validCacheStore._cache_is_validl   sK    	''.1::K bggh/8888 ! 		s    A 
AAc                      [         R                  " U5        g ! [        [        4 a9  nUR                  [        R
                  [        R                  4;   a   S nAg e S nAff = fr   )r	   unlinkr?   r@   rA   rJ   rB   )r,   rU   rO   s      r   _remove_filenameCacheStore._remove_filenamet   sG    	IIh! 	ww5<<66	s    A".AAA"c                     [         R                  " U R                  5       HH  nU[        :X  a  M  U R	                  [         R
                  R                  U R                  U5      5        MJ     g r   )r	   listdirr*   r<   r`   r   r   )r,   rU   s     r   rC   CacheStore._clean~   sF    

4??3H22!!"'',,t"IJ 4r$   c                 z   U R                  U5      nUc  g U R                  X15      (       a  g [        R                  " SS9u  pE [        R
                  " US5       n[        R                  " X&5        S S S 5         [        R                  " XS5        g ! , (       d  f       N&= f! [        [        4 a:  nUR                  [        R                  :X  a  U R                  U5         S nAg e S nAff = f! [        [        4 a:  nUR                  [        R                  :X  a  U R                  U5         S nAg e S nAff = f)Nzg-ir-scanner-cache-r9   wb)rV   r\   rD   rE   r	   rF   pickledumpr?   r@   rA   ENOSPCr`   rH   rI   rJ   )r,   rU   datarZ   rP   rQ   rR   rO   s           r   storeCacheStore.store   s    ++H5!99'//7LM		64(HD+ )	KK5 )(! 	ww%,,&%%l3	 ! 	ww%,,&%%l33	sZ   B# B2B# ;C0 
B B#  B# #C-3/C('C((C-0D: /D54D55D:c                    U R                  U5      nUc  g  [        US5      nU   U R                  X!5      (       d
   S S S 5        g  [        R                  " U5      nUsS S S 5        $ ! [        [        4 a)  nUR                  [        R
                  :X  a   S nAg e S nAff = f! [         a    U R                  U5        S n Nff = f! , (       d  f       g = f)Nrb)rV   r=   r?   r@   rA   rB   r\   rg   load	Exceptionr`   )r,   rU   rZ   fdrO   rj   s         r   ro   CacheStore.load   s    ++H5!	nd+B ''AA R{{2
  R ! 	ww%,,&		  %%n5 RsL   A( CB$C(B!8BBB!$CCCC
C)r*   N)__name__
__module____qualname____firstlineno__r-   r)   r+   rV   r\   r`   rC   rk   ro   __static_attributes__ r$   r   r&   r&   0   s1    $"H	89K:r$   r&   )rA   r   r   r	   rH   r   rD   rg   r   r   r   r<   r#   objectr&   rx   r$   r   <module>rz      sA   *    	  
     + EF Fr$   