
    h                        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JrJ	r	  S SK
r
SSKJr   S SKr\
R                  r S SKr\R&                  rSrSrS	r\	" \R0                  R2                  5      r\	S
 5       r\	S 5       r\ " S S5      5       r " S S5      rg! \ a    \
R"                  r Nqf = f! \ a    \rSr Nnf = f)    )	dataclassN   )safe_makedirscached_function)__version__z.gz z.zipi  @c                    [         R                  R                  U 5      nS[        U5      U4-  R	                  S5      n[
        R                  " U5      n[        US5       nUR                  S5      nU(       a+  UR                  U5        UR                  S5      nU(       a  M+  S S S 5        UR                  5       $ ! , (       d  f       UR                  5       $ = f)Nz%d:%sUTF-8rbi  )ospathnormpathlenencodehashlibsha256openreadupdate	hexdigest)filenamer   prefixmfdatas         L/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Build/Cache.py	file_hashr   "   s    77H%DTD))11':FvA	dD	Qvve}HHTN66%=D d 

 ;;= 
	
 ;;=s   !AB==
Cc                     S[         R                  ;   a  [         R                  S   $ Sn [         R                  S:X  aS  [        R                  S:X  a   [         R
                  R                  S5      n O[         R                  R                  S5      n U (       a0  [         R
                  R                  U 5      (       a  [        U S5      $ [         R
                  R                  [        SS	5      5      $ )
z
Return the base directory containing Cython's caches.

Priority:

1. CYTHON_CACHE_DIR
2. (OS X): ~/Library/Caches/Cython
   (posix not OS X): XDG_CACHE_HOME/cython if XDG_CACHE_HOME defined
3. ~/.cython

CYTHON_CACHE_DIRNposixdarwinz~/Library/CachesXDG_CACHE_HOMEcython~z.cython)
r   environnamesysplatformr   
expandusergetisdir	join_path)parents    r   get_cython_cache_dirr.   /   s     RZZ'zz,--F	ww'<<8#WW''(:;F ZZ^^$45F"''--''** 77iY788    c                   F    \ rS rSr% Sr\\S'   Sr\\S'   Sr	\\S'   S r
Srg	)
FingerprintFlagsN   clanguageFpy_limited_api
np_pythranc                 Z    [        U R                  U R                  U R                  45      $ N)strr4   r5   r6   )selfs    r   get_fingerprint FingerprintFlags.get_fingerprintT   s"    DMM4#6#6HIIr/    N)__name__
__module____qualname____firstlineno__r4   r9   __annotations__r5   boolr6   r;   __static_attributes__r=   r/   r   r1   r1   N   s&    Hc ND JJr/   r1   c                   V    \ rS rSrSS jr\" 5       4S jrS rS rS r	S r
SS	 jrS
rg)CacheX   Nc                    Uc  [        [        5       S5      U l        OXl        Ub  UO[        U l        [
        R                  R                  U R                  5      (       d!  [
        R                  " U R                  5        g g )Ncompiler)r,   r.   r   MAX_CACHE_SIZE
cache_sizer   existsmakedirs)r:   r   rK   s      r   __init__Cache.__init__Y   sX    <!"6"8*EDII(2(>*Nww~~dii((KK		" )r/   c                 h    [         R                  " [        R                  " S5      5      nUR	                  [        U5      R                  S5      5        [        U5       HT  n[        R                  R                  U5      S   S;  d  M+  UR	                  [        U5      R                  S5      5        MV     UR	                  UR                  5       R                  S5      5        UR	                  UR                  5       R                  S5      5        UR                  5       $ ! [         a     gf = f)a  
Return a fingerprint of a cython file that is about to be cythonized.

Fingerprints are looked up in future compilations. If the fingerprint
is found, the cythonization can be skipped. The fingerprint must
incorporate everything that has an influence on the generated code.
r
      )z.cz.cppz.hN)r   r   r   r   r   r   sortedr   r   splitextr;   r   OSError)r:   r   dependenciescompilation_optionsflagsr   xs          r   transitive_fingerprintCache.transitive_fingerprintb   s    	{11':;AHHYx(//89L)77##A&q)1EEHHYq\009: * HHU**,33G<=HH(88:AA'JK;;=  		s   BD$ BD$ $
D10D1c                 |    [        U R                  [        R                  R                  U5      < SU< 35      U-   $ )N-)r,   r   r   basename)r:   cfilefingerprintexts       r   fingerprint_fileCache.fingerprint_file}   s/    diiBGG,<,<U,C[!QRUXX	
r/   c                 z   [         R                  R                  U R                  5      (       d  [        U R                  5        U R	                  X[
        5      n[         R                  R                  U5      (       a  U$ U R	                  X[        5      n[         R                  R                  U5      (       a  U$ g r8   )r   r   rL   r   ra   gzip_extzip_ext)r:   c_filer_   gz_fingerprint_filezip_fingerprint_files        r   lookup_cacheCache.lookup_cache   s     ww~~dii(($))$"33FR77>>-..&&#44V'R77>>.//''r/   c           	         [         R                  R                  U5      S   nU[        :X  aX  [         R                  " US 5        [        US5       n[        US5       n[        R                  " XE5        S S S 5        S S S 5        g U[        :X  a  [         R                  " US 5        [         R                  R                  U5      n[        R                  " U5       nUR                  5        H  nUR                  U[        Xh5      5        M      S S S 5        g [!        SU 35      e! , (       d  f       N= f! , (       d  f       g = f! , (       d  f       g = f)NrQ   r   wbz"Unsupported cache file extension: )r   r   rS   rd   utime	gzip_openr   shutilcopyfileobjre   dirnamezipfileZipFilenamelistextractr,   
ValueError)	r:   rf   cachedr`   gr   rq   zartifacts	            r   load_from_cacheCache.load_from_cache   s    ggv&q)(?HHVT"64(A&$'1&&q, ( )( G^HHVT"ggoof-G(A !

HIIh	'(DE !- )( A#GHH (' )( )(s0   D6D%4D63E%
D3	/D66
E
Ec                 |   UR                  5       n[        U5      S:X  aZ  U R                  X[        5      n[	        US5       n[        US-   S5       n[        R                  " Xg5        S S S 5        S S S 5        OvU R                  X[        5      n[        R                  " US-   S[        5       nU H2  n	UR                  U	[        R                  R                  U	5      5        M4     S S S 5        [        R                   " US-   U5        g ! , (       d  f       N= f! , (       d  f       N:= f! , (       d  f       NK= f)NrQ   r   z.tmprl   w)get_generated_source_filesr   ra   rd   r   rn   ro   rp   re   rr   rs   zipfile_compression_modewriter   r   r]   rename)
r:   rf   r_   compilation_result	artifactsra   r   rx   ziprz   s
             r   store_to_cacheCache.store_to_cache   s    &AAC	y>Q#44V(Sfd#q/&8$?1&&q, @ $#  $44V'R 6)30H )HIIh(8(8(BC !*
 			"V+-=> @? $#
 s0   DD)D/9D-
D	D
D*-
D;c                 R    [         R                  " SSS[        R                  R	                  U R                  5      /[         R
                  S9nUR                  nUR                  S:X  a=  S[        UR                  5       R                  5       S   5      -  nX@R                  :  a  g Sn/ n[        R                  " U R                  5       He  n[        U R                  U5      n[        R                   " U5      nXHR"                  -  nUR%                  UR&                  UR"                  U45        Mg     X@R                  :  aM  [)        [+        U5      5       H4  u  pn[        R,                  " U5        XJ-  nX@R                  U-  :  d  M4    g    g g ! [        [        4 a     Nf = f)Nduz-sz-k)stdoutr   i   )
subprocessrunr   r   abspathPIPEr   
returncodeintstripsplitrK   rT   rv   listdirr,   statst_sizeappendst_atimereversedrR   unlink)r:   ratiocompleted_processr   
total_sizeallfiler   stimesizes              r   cleanup_cacheCache.cleanup_cache   sR   
	 *tT277??499#=>z! '--F ++q0!C(<(<(>q(A$BB
/ 
JJtyy)DTYY-DA))#JJJ

AIIt45	 *
 '$,VC[$9 D		$"
% 77	 %: ( $ 		s   B&F F&%F&)rK   r   r8   )g333333?)r>   r?   r@   rA   rN   r1   rY   ra   ri   r{   r   r   rD   r=   r/   r   rF   rF   X   s0    # BRAS6

I ? r/   rF   )dataclassesr   r'   r   r   ro   r   Utilsr   r   rr   r   r   zlibZIP_DEFLATEDr   ImportError
ZIP_STOREDgzipr   rn   rd   re   rJ   r   joinr,   r   r.   r1   rF   r=   r/   r   <module>r      s    ! 
 	    2  2&33		IH
 "BGGLL)	 	 	 9 9< J J Jo oS  2&112  IHs"   B B3 B0/B03
C ?C 